pax_global_header00006660000000000000000000000064123177676210014526gustar00rootroot0000000000000052 comment=c448eb034270a4f2840508e7e9a96d76121de977 pcsc-cyberjack-3.99.5final.sp05/000077500000000000000000000000001231776762100163205ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/.gitignore000066400000000000000000000000661231776762100203120ustar00rootroot00000000000000install-sh missing Makefile.in Makefile *.o *.lo *.la pcsc-cyberjack-3.99.5final.sp05/AUTHORS000066400000000000000000000000001231776762100173560ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/COPYING000066400000000000000000000431221231776762100173550ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) 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 this service 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 make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. 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. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), 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 distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the 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 a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE 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. 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 convey 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 2 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision 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, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This 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 Library General Public License instead of this License. pcsc-cyberjack-3.99.5final.sp05/COPYRIGHT.GPL000066400000000000000000000430761231776762100202460ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) 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 this service 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 make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. 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. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), 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 distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the 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 a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE 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. END OF TERMS AND CONDITIONS Appendix: 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 convey 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) 19yy 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 2 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, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision 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, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This 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 Library General Public License instead of this License. pcsc-cyberjack-3.99.5final.sp05/COPYRIGHT.LGPL000066400000000000000000000634761231776762100203700ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, 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 this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), 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 distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser 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 Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "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 LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY 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 LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey 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 library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! pcsc-cyberjack-3.99.5final.sp05/ChangeLog000066400000000000000000004624041231776762100201040ustar00rootroot00000000000000------------------------------------------------------------------ 2010-02-24 12:30:25 +0100 Martin Preuss Released 3.3.5. ------------------------------------------------------------------ 2010-02-12 22:51:21 +0100 Martin Preuss Fixed a few problems with 0x300er devices and libusb-1.x. ------------------------------------------------------------------ 2010-01-17 16:36:19 +0100 Martin Preuss Added dependencies. ------------------------------------------------------------------ 2010-01-13 22:46:19 +0100 Martin Preuss Added libfox-1.6 to build-depends. ------------------------------------------------------------------ 2010-01-13 22:12:29 +0100 Martin Preuss Releases 3.3.4. ------------------------------------------------------------------ 2010-01-13 22:12:19 +0100 Martin Preuss Correctly handle USB endpoints for 0x401. ------------------------------------------------------------------ 2009-12-20 00:00:19 +0100 Martin Preuss Released version 3.3.3. ------------------------------------------------------------------ 2009-12-20 00:00:07 +0100 Martin Preuss Use HAL on Debian again (needs the package "hal" to be installed). ------------------------------------------------------------------ 2009-12-19 23:59:34 +0100 Martin Preuss Removed error message which caused some support requests. ------------------------------------------------------------------ 2009-12-15 22:05:08 +0100 Martin Preuss Removed ausb_reset() for 0x300er devices. ------------------------------------------------------------------ 2009-12-15 22:04:49 +0100 Martin Preuss Released 3.3.3beta12. ------------------------------------------------------------------ 2009-12-15 22:04:36 +0100 Martin Preuss Fixed detection of recent Mandriva. ------------------------------------------------------------------ 2009-12-15 22:04:24 +0100 Martin Preuss Some build-system fixes. ------------------------------------------------------------------ 2009-12-04 21:02:06 +0100 Martin Preuss Adapted to Mandriva 10.0. ------------------------------------------------------------------ 2009-12-04 21:01:02 +0100 Martin Preuss Fixes for moneyplex. - sleep 5secs after calling libusb_reset_device because some applications (most notably Moneyplex) call CT_close() and CT_init() in fast succession so old cyberJack's (0x100) don't have enough time to perform their reset and thus will disappear from the view of the application. ------------------------------------------------------------------ 2009-11-23 20:07:12 +0100 Martin Preuss Releases 3.3.3beta9. No longer bail out if no kernel module is using the 0x100er cyberJack. ------------------------------------------------------------------ 2009-11-22 16:34:32 +0100 Martin Preuss Released 3.3.3beta8. ------------------------------------------------------------------ 2009-11-22 15:23:30 +0100 Martin Preuss Increased verbosity of aUSB framework. ------------------------------------------------------------------ 2009-11-22 15:23:03 +0100 Martin Preuss Ignore the previous flag for enabling the kernel module. Now the new driver ignores the old flag so it will always use the user space driver for old cyberJacks (0x100). However, the tool "cyberjack" still accepts this flag and sets the *new* flag accordingly. ------------------------------------------------------------------ 2009-11-21 00:10:59 +0100 Martin Preuss Prepared release 3.3.3beta7. ------------------------------------------------------------------ 2009-11-19 23:22:35 +0100 Martin Preuss Fixed a problem with determination of active kernel module. ------------------------------------------------------------------ 2009-11-19 21:41:31 +0100 Martin Preuss Made support for PC/SC optional. ------------------------------------------------------------------ 2009-11-15 17:58:50 +0100 Martin Preuss Removed HAL-includes no longer needed. ------------------------------------------------------------------ 2009-11-15 17:58:29 +0100 Martin Preuss Fixed a bug (was not initializing a variable later used). ------------------------------------------------------------------ 2009-11-15 17:58:03 +0100 Martin Preuss Use libusb1 instead of HAL for device enumeration on Debian systems. Ubuntu 9.10 no longer uses HAL so we have to change to another library. There is no easy way to use the DeviceKit preferred by Ubuntu so we use LibUSB1 instead. ------------------------------------------------------------------ 2009-11-15 00:39:03 +0100 Martin Preuss Major overhaul in USB subsystem. - now works with OpenSuSE 11.2 - simplified check suite (now uses already existing functions to enumerate readers) - removed dependency of libsysfs - now accepts libusb-1.x in addition to libusb-0.x - with libusb-1.x the user space driver now also supports 0x100 devices - check suite now uses user space mode for 0x100 devices - prepared release 3.3.3beta3 - fixed problem of 0x300 reader sometimes halting on 2nd access - use asynchronous API of libusb-1.0 - cjgeldkarte now performs more realistic tests (e.g. multiple CT_init and CT_close in one session) ------------------------------------------------------------------ 2009-10-31 17:32:06 +0100 Martin Preuss Prepared release 3.3.3beta2. ------------------------------------------------------------------ 2009-09-17 17:01:04 +0200 Martin Preuss Applied a patch by Harald Gantioler which makes the package compile under GCC 4.4.1. ------------------------------------------------------------------ 2009-09-17 16:48:26 +0200 Martin Preuss The CTAPI driver is now thread-safe. ------------------------------------------------------------------ 2009-08-10 23:08:01 +0200 Martin Preuss Fixed PC/SC detection for 64 bit archs. ------------------------------------------------------------------ 2009-08-10 23:07:35 +0200 Martin Preuss Stable version. ------------------------------------------------------------------ 2009-07-20 22:40:15 +0200 Martin Preuss Fixed a bug in tool "cyberjack". ------------------------------------------------------------------ 2009-07-01 11:55:17 +0200 Martin Preuss Released 3.3.2beta7. ------------------------------------------------------------------ 2009-07-01 11:54:58 +0200 Martin Preuss Accept values between 1000 and 1999 in addition to 0x9000+ for selection by serialnumber ------------------------------------------------------------------ 2009-06-28 20:10:20 +0200 Martin Preuss Added missing include for gcc-4.4. ------------------------------------------------------------------ 2009-06-13 12:09:28 +0200 Martin Preuss Added commands to the tool cyberjack: beep1 to beep3. ------------------------------------------------------------------ 2009-06-13 12:08:55 +0200 Martin Preuss Fixed a problem in non-serial mode. ------------------------------------------------------------------ 2009-06-04 12:51:36 +0200 Martin Preuss Improved detection of symbol visibility (only gcc4). ------------------------------------------------------------------ 2009-05-30 18:05:43 +0200 Martin Preuss Fixed a bug in output of date (month+1). ------------------------------------------------------------------ 2009-05-30 18:05:38 +0200 Martin Preuss Released 3.3.2beta5. ------------------------------------------------------------------ 2009-05-14 16:07:54 +0200 Martin Preuss Use correct image in reader details for Secoder. ------------------------------------------------------------------ 2009-05-12 22:51:29 +0200 Martin Preuss Details-window now shows the correct icon for "e-com plus RFID". ------------------------------------------------------------------ 2009-05-12 20:30:50 +0200 Martin Preuss Released 3.3.2beta4. ------------------------------------------------------------------ 2009-05-12 19:58:27 +0200 Martin Preuss Added icons for Ecom Plus and Secoder. ------------------------------------------------------------------ 2009-05-09 18:07:25 +0200 Martin Preuss Fixed a few problems related to case-sensitivity of header files. The Linux code now chooses the correct reader class to instantiate based on the product string. ------------------------------------------------------------------ 2009-05-05 20:26:19 +0200 Martin Preuss Released 3.3.2beta2 ------------------------------------------------------------------ 2009-05-03 20:09:19 +0200 Martin Preuss Log result of X11-check for beeping. ------------------------------------------------------------------ 2009-03-30 19:52:18 +0200 Martin Preuss Decreased verbosity. ------------------------------------------------------------------ 2009-03-30 19:38:00 +0200 Martin Preuss Added missing debian files. ------------------------------------------------------------------ 2009-03-30 19:31:05 +0200 Martin Preuss Fixed two bugs. ------------------------------------------------------------------ 2009-03-30 19:30:49 +0200 Martin Preuss Tool cyberjack now uses pcsc if available. ------------------------------------------------------------------ 2009-03-30 19:30:10 +0200 Martin Preuss Added some mor debian files to .gitignore ------------------------------------------------------------------ 2009-03-30 18:02:30 +0200 Martin Preuss Added some files to .gitignore ------------------------------------------------------------------ 2009-03-30 18:01:45 +0200 Martin Preuss Removed unneeded files. ------------------------------------------------------------------ 2009-03-30 13:05:58 +0000 mpreuss Added menu command for checking with readers. git-svn-id: svn://192.168.115.73:/cyberJack@720 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-03-30 12:50:03 +0000 mpreuss Checksuite now also lists the modules of each reader. For older cyberJacks "0" is returned as number of modules to simplify applications. git-svn-id: svn://192.168.115.73:/cyberJack@719 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-03-30 12:02:49 +0000 mpreuss Disable flashing for now (per request of Mr Bechtold). git-svn-id: svn://192.168.115.73:/cyberJack@718 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-03-30 11:39:41 +0000 mpreuss Prepared first beta release. git-svn-id: svn://192.168.115.73:/cyberJack@717 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-03-30 10:15:26 +0000 mpreuss Added an executable to .gitignore. git-svn-id: svn://192.168.115.73:/cyberJack@716 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-03-30 10:15:23 +0000 mpreuss Fixed a bug which shows when no PC/SC headers are installed. git-svn-id: svn://192.168.115.73:/cyberJack@715 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-03-30 10:13:02 +0000 mpreuss Removed files which had previously been moved two folders up. git-svn-id: svn://192.168.115.73:/cyberJack@714 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-03-30 10:09:17 +0000 mpreuss Strange... some of my updates didn't make it into svn... git-svn-id: svn://192.168.115.73:/cyberJack@713 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-03-30 10:06:43 +0000 mpreuss Added some more missing files. git-svn-id: svn://192.168.115.73:/cyberJack@712 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-03-30 10:05:00 +0000 mpreuss Added some missing files. git-svn-id: svn://192.168.115.73:/cyberJack@711 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-03-30 09:56:09 +0000 mpreuss Implemented graphical diagnosis tool which is able to use either PC/SC or CTAPI. git-svn-id: svn://192.168.115.73:/cyberJack@710 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-03-30 08:51:40 +0000 mpreuss Started working on tool fxcyberjack. - removed call to CtGetReaderInfo() in CT_init(). - added special APDU command GETREADERINFO - added bus type "PCSC" - use German descriptions in driver_ctapi.cpp - added M4-macros for FOX toolkit git-svn-id: svn://192.168.115.73:/cyberJack@709 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-03-30 08:51:33 +0000 mpreuss Gather serial number if possible. git-svn-id: svn://192.168.115.73:/cyberJack@708 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-03-30 08:51:30 +0000 mpreuss Added abstraction layer to be used by our tools. Added special command layer which allows us to issue flash-commands via APDUs. These two major changes will allow us later to flash via PC/SC. git-svn-id: svn://192.168.115.73:/cyberJack@707 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-03-30 08:51:25 +0000 mpreuss Prepared release of 3.3.2beta3 git-svn-id: svn://192.168.115.73:/cyberJack@706 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-03-30 08:51:16 +0000 mpreuss Fixed two problems in IFD driver: - fixed response to MCTUniversal - clamp maximum length of response to 65535 for IFD->CTAPI git-svn-id: svn://192.168.115.73:/cyberJack@705 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@704 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@703 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@702 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@701 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@700 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@699 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@698 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@697 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@696 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@695 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@694 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@693 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@692 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@691 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@690 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@689 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@688 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@687 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-03-05 07:58:53 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@686 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@685 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-02-26 15:08:10 +0000 Kupfer Noch ein Bug beim RFID ATR git-svn-id: svn://192.168.115.73:/cyberJack@684 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@683 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@682 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-02-26 08:03:49 +0000 Kupfer ATR für Mifare mini implementiert git-svn-id: svn://192.168.115.73:/cyberJack@681 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@680 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@679 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@678 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-02-19 11:08:52 +0000 Kupfer Bugfix: ATR für RFID wurde falsch gebildet. git-svn-id: svn://192.168.115.73:/cyberJack@677 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@676 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-02-16 10:52:13 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@675 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@674 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@673 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@672 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@671 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@670 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@669 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@668 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@667 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@666 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@665 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@664 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@663 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@662 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@661 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@660 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-01-28 09:26:54 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@659 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@658 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@657 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@656 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@655 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@654 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@653 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@652 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@651 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-01-20 13:34:00 +0000 mpreuss Copied new headers into driver source. git-svn-id: svn://192.168.115.73:/cyberJack@650 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-01-20 13:33:57 +0000 mpreuss Added missing newline GCC coplains about. git-svn-id: svn://192.168.115.73:/cyberJack@649 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-01-20 13:33:54 +0000 mpreuss Prepared release of 3.3.2beta1 git-svn-id: svn://192.168.115.73:/cyberJack@648 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-01-20 13:33:49 +0000 mpreuss Finished implementing FEATURE_MCT_UNIVERSAL. - added a debug message git-svn-id: svn://192.168.115.73:/cyberJack@647 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-01-20 13:33:45 +0000 mpreuss Fixed description of flags in LIESMICH.xml git-svn-id: svn://192.168.115.73:/cyberJack@646 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-01-20 13:33:42 +0000 mpreuss Fixed compiler warning, added missing include. git-svn-id: svn://192.168.115.73:/cyberJack@645 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-01-20 13:33:37 +0000 mpreuss Started working on non-serial setting of the driver. git-svn-id: svn://192.168.115.73:/cyberJack@644 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2009-01-20 13:33:33 +0000 mpreuss - released 3.3.0 - applied patches by Stanislav Brabec (detect SuSE11.x and fix potential buffer overflow). git-svn-id: svn://192.168.115.73:/cyberJack@643 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@642 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@641 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@640 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@639 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@638 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@637 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@636 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@635 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@634 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@633 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-12-12 16:23:32 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@632 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@631 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-12-11 14:20:53 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@630 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@629 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@628 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@627 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@626 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@625 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@624 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@623 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@622 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@621 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@620 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@619 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@618 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@617 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@616 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@615 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@614 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@613 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@612 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@611 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@610 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@609 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@608 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-10-07 08:12:25 +0000 Kupfer HHD Moduledescription changed git-svn-id: svn://192.168.115.73:/cyberJack@607 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-10-07 08:11:22 +0000 Kupfer IIC - Karten werden auch ohne ATR 82 xx xx xx akzeptiert git-svn-id: svn://192.168.115.73:/cyberJack@606 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-10-07 08:10:09 +0000 Kupfer Kernel 3.0.54 git-svn-id: svn://192.168.115.73:/cyberJack@605 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-10-07 08:09:01 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@604 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-10-07 08:05:52 +0000 Kupfer TGZ generiert git-svn-id: svn://192.168.115.73:/cyberJack@603 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-10-07 08:03:59 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@602 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@601 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@600 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-09-17 15:58:34 +0000 Kupfer Added HHD 1.3 git-svn-id: svn://192.168.115.73:/cyberJack@599 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@598 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@597 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@596 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@595 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-08-29 12:21:28 +0000 Kupfer Kernel expanded for unconnected Applications git-svn-id: svn://192.168.115.73:/cyberJack@594 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@593 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@592 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@591 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-08-29 09:14:04 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@590 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@589 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@588 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@587 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@586 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@585 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@584 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@583 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@582 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@581 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@580 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-08-19 08:08:07 +0000 Kupfer Bugfix: Interruptthread greift während Dekonstruktion auf Klasse zu -> Pure virtual function call. git-svn-id: svn://192.168.115.73:/cyberJack@579 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@578 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@577 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@576 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@575 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@574 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@573 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@572 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@571 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@570 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@569 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-07-15 12:45:06 +0000 Kupfer ecom(a) + Secoder: Kernel 3.0.50 Bugfix: PLL -> Slowclock im RAM Module Store 3.0.65 + 3.0.9 git-svn-id: svn://192.168.115.73:/cyberJack@568 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@567 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-07-15 12:42:22 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@566 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-07-15 12:37:48 +0000 Kupfer X-Update setzt update auch bei biometric fort git-svn-id: svn://192.168.115.73:/cyberJack@565 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@564 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@563 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@562 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-07-04 16:14:22 +0000 mpreuss - incremented version git-svn-id: svn://192.168.115.73:/cyberJack@561 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-07-04 16:11:50 +0000 mpreuss - copied modified header file back into driver folder git-svn-id: svn://192.168.115.73:/cyberJack@560 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-07-04 15:30:34 +0000 mpreuss - released version 3.3.0beta4 - add cjeca folder for includes for ifd driver - fixed use of debug flags in ifdhandler.c - adapted creation of MKT verify/modify pin structures to the WIN32 version - accept windows CTL code for GET_FEATURE git-svn-id: svn://192.168.115.73:/cyberJack@559 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-07-03 13:11:27 +0000 Kupfer AT91 Bugfix: Clockswitch cy_Secoder: Binaries encypted git-svn-id: svn://192.168.115.73:/cyberJack@558 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@557 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-07-03 13:06:06 +0000 Kupfer Bugfix: Initialisierungsfehler git-svn-id: svn://192.168.115.73:/cyberJack@556 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-07-03 12:59:34 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@555 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@554 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@553 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@552 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-06-27 08:43:27 +0000 SMellenthin Textänderungen git-svn-id: svn://192.168.115.73:/cyberJack@551 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@550 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-06-27 08:31:26 +0000 Kupfer Fehler bei MV Tag 50: Texte 1,4,5 sollen weitergegeben werden. git-svn-id: svn://192.168.115.73:/cyberJack@549 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@548 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@547 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@546 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@545 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@544 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@543 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@542 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@541 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@540 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-06-13 13:10:46 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@539 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@538 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@537 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@536 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-06-07 07:59:45 +0000 mpreuss - added some more entries to .gitignore git-svn-id: svn://192.168.115.73:/cyberJack@535 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-06-07 07:59:41 +0000 mpreuss added some entries to .gitignore git-svn-id: svn://192.168.115.73:/cyberJack@534 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-06-07 07:59:38 +0000 mpreuss - fixed file permissions for debian/rules git-svn-id: svn://192.168.115.73:/cyberJack@533 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-06-07 07:47:45 +0000 mpreuss - prepared release of 3.3.0beta2 - added build-depends for Debian git-svn-id: svn://192.168.115.73:/cyberJack@532 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-06-07 07:39:46 +0000 mpreuss - copied new version of memory_placements.h into driver git-svn-id: svn://192.168.115.73:/cyberJack@531 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-06-07 07:36:50 +0000 mpreuss - changed VERSION_TAG back to svn git-svn-id: svn://192.168.115.73:/cyberJack@530 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-06-07 07:36:42 +0000 mpreuss - recent releases of pcsclite use libhal to detect readers. Therefore they changed the default namespace for the reader names (from "libusb:" to "libhal:") which also has a new syntax. Therefore we are forced to support libhal as well. - added ECFReader.{h,cpp} and PCSC10.h - instantiate CECFReader() for 0x401 instead of CECAReader() - added check for libhal to configure.ac git-svn-id: svn://192.168.115.73:/cyberJack@529 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@528 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-06-06 10:05:35 +0000 Kupfer cyberJack ecom(a) + Secoder: Bugfix: WD hat beim booten von Rechnern mit großen Timeouts zugeschlagen. Bugfix: Aufschaltsequenz bei synchronen Karten korrigiert. git-svn-id: svn://192.168.115.73:/cyberJack@527 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@526 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-06-06 10:04:05 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@525 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-06-04 10:12:19 +0000 Kupfer X-Update auf Kernel 3.0.47 git-svn-id: svn://192.168.115.73:/cyberJack@524 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@523 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@522 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@521 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-06-03 09:06:34 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@520 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-31 02:37:16 +0000 mpreuss - pulled-in driver includes from ../include git-svn-id: svn://192.168.115.73:/cyberJack@519 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-31 02:33:31 +0000 mpreuss - implemented FEATURE_MCT_READERDIRECT git-svn-id: svn://192.168.115.73:/cyberJack@518 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@517 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-30 14:33:33 +0000 Kupfer cjeca32: Input gestrichen git-svn-id: svn://192.168.115.73:/cyberJack@516 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-30 14:29:22 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@515 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-30 13:35:24 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@514 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-30 13:26:05 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@513 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@512 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-29 13:56:36 +0000 Kupfer Added Link: driver/ecoma/inc --> include git-svn-id: svn://192.168.115.73:/cyberJack@511 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-29 13:40:39 +0000 Kupfer CReader::Connect bringt jetzt Fehlercode CJ_ERR_CONNECT_TIMEOUT zurück git-svn-id: svn://192.168.115.73:/cyberJack@510 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-29 10:40:29 +0000 Kupfer CReader::Connect bringt jetzt Fehlercode CJ_ERR_CONNECT_TIMEOUT zurück git-svn-id: svn://192.168.115.73:/cyberJack@509 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-27 18:29:09 +0000 mpreuss - added some more entries to .gitignore - fixed two typos in ifd/part10.c - added missing newline to ECFReader.h - copied Reader.h from svn/include to drivers include dir (we definately should have the version within the driver be the only one!) - added BingoError.h from the include/firmware folder (sigh) git-svn-id: svn://192.168.115.73:/cyberJack@508 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-27 17:53:05 +0000 mpreuss - added .gitignore git-svn-id: svn://192.168.115.73:/cyberJack@507 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-27 17:41:52 +0000 mpreuss - fixed a bug in ctapi.cpp (was using a false DEBUG_MASK for CTAPI) - improved error logging in ctapi.cpp - ifd/part10.c: Now check the endianess of ulDataLength in verify/modify pin structures - added ID 0x401 to list of recognized USB readers in USBLinux.cpp git-svn-id: svn://192.168.115.73:/cyberJack@506 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@505 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@504 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@503 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@502 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-16 16:19:56 +0000 kseybold BC 6.5.4b git-svn-id: svn://192.168.115.73:/cyberJack@501 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@500 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@499 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-09 07:16:47 +0000 Kupfer cyberJack Secode: tar.gz git-svn-id: svn://192.168.115.73:/cyberJack@498 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-08 14:07:26 +0000 kseybold tippfehler git-svn-id: svn://192.168.115.73:/cyberJack@497 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@496 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-08 12:22:35 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@495 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-07 16:16:26 +0000 Kupfer cjeca32: PV/MV ohne Karte --> 64 A1 PV/MV ohne Strom --> 64 A2 Kern 3.0: StdText aufruf nach Reaktivierung git-svn-id: svn://192.168.115.73:/cyberJack@494 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@493 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-07 15:05:23 +0000 Kupfer cjeca32: PV/MV ohne Karte --> 64 A1 PV/MV ohne Strom --> 64 A2 Kern 3.0: StdText aufruf nach Reaktivierung git-svn-id: svn://192.168.115.73:/cyberJack@492 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-07 14:49:15 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@491 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-07 12:02:03 +0000 kseybold Änderung Secoder Bild git-svn-id: svn://192.168.115.73:/cyberJack@490 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@489 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@488 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@487 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@486 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-07 08:11:31 +0000 kseybold BC 6.5.0c git-svn-id: svn://192.168.115.73:/cyberJack@485 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@484 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@483 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@482 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@481 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-06 16:40:34 +0000 Kupfer Bugfix: Result bleibt undefiniert. git-svn-id: svn://192.168.115.73:/cyberJack@480 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@479 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-06 16:29:40 +0000 Kupfer Fehlende html - Datei zu Modulestore eingefügt git-svn-id: svn://192.168.115.73:/cyberJack@478 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@477 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-06 10:09:10 +0000 Kupfer Korrektur ModulestoreInfo git-svn-id: svn://192.168.115.73:/cyberJack@476 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-05 14:33:51 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@475 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-05-05 09:47:55 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@474 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@473 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-04-30 14:32:25 +0000 Kupfer cjeca32.dll: Length=0; if(CtGetModulestoreInfo(NULL,&Length)==CJ_ERR_RBUFFER_TO_SMALL) { uint8_t *ptr=new uint8_t(Length); CtGetModulestoreInfo(ptr,&Length); } git-svn-id: svn://192.168.115.73:/cyberJack@472 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@471 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@470 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-04-30 10:30:47 +0000 Kupfer Unterstützung für e-com(f) git-svn-id: svn://192.168.115.73:/cyberJack@469 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-04-30 10:25:04 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@468 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-04-30 10:09:27 +0000 Kupfer Unterstützung für e-com(f) git-svn-id: svn://192.168.115.73:/cyberJack@467 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@466 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-04-23 14:48:01 +0000 Kupfer Modulestore V 3.0.56. Secoderauswahl eingeschränkt git-svn-id: svn://192.168.115.73:/cyberJack@465 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-04-23 14:46:22 +0000 Kupfer Modulestore V 3.0.56. Secoderauswahl eingeschränkt git-svn-id: svn://192.168.115.73:/cyberJack@464 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-04-23 13:47:19 +0000 Kupfer cjeca32.dll: V1.5.1 Bugfix: csusb.sys liefert auf manchen Systemen zu lange Produktstrings git-svn-id: svn://192.168.115.73:/cyberJack@463 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@462 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-04-03 19:06:19 +0000 mpreuss prepared release git-svn-id: svn://192.168.115.73:/cyberJack@461 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-04-03 18:57:21 +0000 mpreuss - pulled-in changes from the Windows driver - fixed a bug in usbdev with old versions of sysfs (like on SuSE10.0) - LIESMICH.xml: added section about Moneyplex on 64-bit systems - cjIoOpen_libusb(): - only try to detach kernel driver if claim_interface() doesn't work - don't set configuration (is done by the kernel anyway) - call ausb_reset() like driver 2.0.14 did if the corresponding flag is set in the configuration file - added some more debug messages - LIESMICH.xml: added description of flag RESET_BEFORE - updated LIESMICH.xml: it now contains a section about the tool "cyberjack", some other sections have been updated - ausb{1,3}.c: added timeout control to avoid infinite loops - ctapi.cpp: function _init_common1() now also checks for kernel mode when device name is given (not only for port values). Now works with libchipcard. - make libsysfs mandatory (we now depend on it) - added member "port" to struct rsct_usbdev_t - reenabled access via kernel module for 0x100 devices - enabled logging even when using kernel module for 0x100 devices - serial devices and /dev/ttyUSBx access is now availabe via rsct_init_name() - renamed config_*() functions to rsct_config_*() and export those functions - tool cyberjack: - added commands: - check: this is the default when missing, it performs the checks like before - addflags: adds flags in the configuration file - delflags: clears flags in the configuration file The latter two functions have been introduced to simplify setting/clearing of flags (these commands always find the correct configuration file). - don't bail out if the device file in /proc/bus/usb is not accessible git-svn-id: svn://192.168.115.73:/cyberJack@460 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-04-01 07:43:21 +0000 Kupfer ecoma(a):Secoder 1.2.11 Select Appl: Zu lange Inputs zulassen! git-svn-id: svn://192.168.115.73:/cyberJack@459 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-03-31 11:56:08 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@458 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@457 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-03-31 11:35:06 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@456 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@455 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-03-25 15:34:00 +0000 Kupfer cjeca32: Änderung T=0 case 4 short: GET RESPONSE CLA=0 git-svn-id: svn://192.168.115.73:/cyberJack@454 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@453 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@452 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@451 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-03-25 12:26:55 +0000 Kupfer PCSC10 <-> ecom(a) direkte Verbindung nicht über ctapi - Subsystem cjeca32.dll: V1.4.2 git-svn-id: svn://192.168.115.73:/cyberJack@450 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-03-25 12:14:45 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@449 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@448 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@447 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-03-25 08:47:52 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@446 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@445 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@444 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@443 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-03-20 14:12:21 +0000 Kupfer cjeca32: Anpassungen für Secoder (bNumberMessage git-svn-id: svn://192.168.115.73:/cyberJack@442 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@441 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@440 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@439 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-03-20 13:43:44 +0000 Kupfer ecom(a): Kernel 3.0.41 Callback MessageIndexes in PV/MV für Applicationen Callback Postprocessing in PV/MV für Applicationen Secoder 1.2.8 Implementation of Callbacks view above git-svn-id: svn://192.168.115.73:/cyberJack@438 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-03-20 13:35:36 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@437 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@436 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@435 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@434 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@433 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@432 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@431 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-03-10 14:41:04 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@430 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@429 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-03-10 08:52:21 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@428 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@427 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-03-05 09:43:02 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@426 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@425 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-02-28 10:23:52 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@424 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@423 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-02-26 13:59:09 +0000 Kupfer cjeca32: V1.3.8 Für Secoder Antwort 6985 bei geblockten PIN - Eingaben. git-svn-id: svn://192.168.115.73:/cyberJack@422 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@421 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-02-26 13:45:20 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@420 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@419 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@418 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@417 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-02-07 11:01:14 +0000 Kupfer ecom(a): TGZ auf Modulestore Version 3.0.45 gepackt git-svn-id: svn://192.168.115.73:/cyberJack@416 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-02-07 10:56:19 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@415 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@414 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@413 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@412 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@411 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@410 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@409 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@408 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@407 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@406 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-01-17 13:58:31 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@405 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@404 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@403 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-01-11 13:13:04 +0000 Kupfer cjeca32: Testfälle für IT-Tests hinzugefügt git-svn-id: svn://192.168.115.73:/cyberJack@402 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@401 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-01-11 13:06:19 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@400 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-01-11 11:09:50 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@399 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@398 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@397 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@396 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@395 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@394 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@393 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@392 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@391 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-01-10 08:16:42 +0000 mpreuss updated configure.ac to include the new tool cjBingo, prepared release git-svn-id: svn://192.168.115.73:/cyberJack@390 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-01-08 10:31:57 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@389 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@388 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-01-07 16:42:32 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@387 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@386 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2008-01-07 15:18:21 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@385 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@384 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@383 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@382 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-12-18 11:20:52 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@381 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@380 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@379 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-12-18 10:59:10 +0000 Kupfer cjeca32: V 1.3.6 Extensions for Bingo - Votine Bugfix: Access violation in Escape Bugfix: Incompatibility to Firmware Kernel < 3.0.24 cJBingo: V 1.0.0 Testtool for Bingo git-svn-id: svn://192.168.115.73:/cyberJack@378 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-12-13 15:28:34 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@377 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-12-13 15:11:31 +0000 Kupfer ecom(a): Modulestore V3.0.40 git-svn-id: svn://192.168.115.73:/cyberJack@376 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@375 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-12-12 20:15:22 +0000 mpreuss - ausb.c: changed ausb_init() to call usb_init() only once but usb_find_busses() and usb_find_devices() at every call git-svn-id: svn://192.168.115.73:/cyberJack@374 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@373 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@372 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-12-10 18:55:03 +0000 mpreuss - added support for readers connected via serial ports - added section about this new feature to LIESMICH.xml - fixed "cyberjack" tool module cm_reader (now creates a correct xml file). git-svn-id: svn://192.168.115.73:/cyberJack@371 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@370 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@369 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@368 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@367 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@366 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@365 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@364 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@363 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@362 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@361 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@360 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@359 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@358 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-12-06 16:20:35 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@357 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-12-06 11:46:56 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@356 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@355 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@354 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-29 12:21:20 +0000 mpreuss - fixed a bug in ecom_a code concerning APDU 20,10 git-svn-id: svn://192.168.115.73:/cyberJack@353 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-23 14:59:44 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@352 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@351 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-22 09:17:18 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@350 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-21 15:00:10 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@349 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-19 07:23:24 +0000 mpreuss released 3.0.6rc1 git-svn-id: svn://192.168.115.73:/cyberJack@348 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-17 17:18:53 +0000 mpreuss fixed a type git-svn-id: svn://192.168.115.73:/cyberJack@347 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-17 16:06:12 +0000 mpreuss - added code which enumerates readers using libsysfs - added special handling for CT_init() with port values of 0x9000: Now a configuration file is used to assign fixed port numbers to readers using their serial numbers. However, this doesn't work with ancient Cyberjacks (e.g. product id 0x100). - added documentation about this new feature to LIESMICH.xml git-svn-id: svn://192.168.115.73:/cyberJack@346 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-16 20:16:14 +0000 mpreuss prepared release git-svn-id: svn://192.168.115.73:/cyberJack@345 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-16 20:11:15 +0000 mpreuss - included a patch from Bernd Kupfer (adds ausb_reset_pipe()) git-svn-id: svn://192.168.115.73:/cyberJack@344 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-16 19:13:48 +0000 mpreuss minor fix git-svn-id: svn://192.168.115.73:/cyberJack@343 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-16 19:10:34 +0000 mpreuss - hopefully fixed communication problems with 0x100 and 0x400 git-svn-id: svn://192.168.115.73:/cyberJack@342 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@341 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-13 16:54:10 +0000 Kupfer test_mail git-svn-id: svn://192.168.115.73:/cyberJack@340 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-13 15:10:08 +0000 mpreuss - removed call to ausb_reset() for 0x400 (this led to problems) git-svn-id: svn://192.168.115.73:/cyberJack@339 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-13 14:50:20 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@338 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@337 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@336 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@335 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@334 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@333 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@332 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@331 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@330 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@329 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-13 12:27:17 +0000 kseybold Changes for WIN CE git-svn-id: svn://192.168.115.73:/cyberJack@328 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@327 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-08 20:05:32 +0000 mpreuss - fixed modifications to tool cjflash - no longer try to set configuration for 0x400 (we just use the only available configuration) - now also detach kernel module "cyberjack" from 0x400 when claiming the interface fails (for some odd reasons at least my kernel loads that module for the reader) git-svn-id: svn://192.168.115.73:/cyberJack@326 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-06 15:15:45 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@325 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-06 14:12:15 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@324 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@323 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@322 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-02 07:23:31 +0000 mpreuss removed autogenerated files git-svn-id: svn://192.168.115.73:/cyberJack@321 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-11-02 07:16:41 +0000 mpreuss - added environment variable "CJ_SLEEP_MS2" which inserts a waiting time (in milliseconds) directly after calling ausb_open() git-svn-id: svn://192.168.115.73:/cyberJack@320 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-10-30 22:28:02 +0000 mpreuss set BUILD version git-svn-id: svn://192.168.115.73:/cyberJack@319 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-10-30 22:24:33 +0000 mpreuss - added environment variable "CJ_SLEEP_MS1" which inserts a waiting time (in milliseconds) directly before calling ausb_open() git-svn-id: svn://192.168.115.73:/cyberJack@318 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-10-29 11:28:22 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@317 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@316 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@315 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@314 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-10-25 18:33:19 +0000 mpreuss allow keywoard substitution git-svn-id: svn://192.168.115.73:/cyberJack@313 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-10-25 18:26:08 +0000 mpreuss - tried a new solution in fixing the problem with new kernels and old readers git-svn-id: svn://192.168.115.73:/cyberJack@312 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-10-25 10:17:27 +0000 mpreuss - applied a patch provided by Daniel Golle which adapts our use of variadic macros so that newer versions of GCC work, too git-svn-id: svn://192.168.115.73:/cyberJack@311 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@310 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@309 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-10-23 12:14:08 +0000 kseybold Portierung auf Windows CE MIPS II git-svn-id: svn://192.168.115.73:/cyberJack@308 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-10-23 11:32:01 +0000 kseybold Portierung auf Windows Mobile 5.0 Pocket PC SDK (ARMV4I) git-svn-id: svn://192.168.115.73:/cyberJack@307 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@306 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@305 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@304 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-10-18 15:44:09 +0000 mpreuss released 3.0.5rc1 git-svn-id: svn://192.168.115.73:/cyberJack@303 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-10-18 15:34:39 +0000 mpreuss - CCIDReader.cpp: Fixed a bug in _CtData() about command 20/12 (REQUEST_ICC). For this command actually Le may be omitted and still means 0 (as opposed to "no data expected"). Without this fix Moneyplex is unable to request a card. git-svn-id: svn://192.168.115.73:/cyberJack@302 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-10-18 11:10:23 +0000 mpreuss - fixed some warnings about missing parentheses and deprecated pragmas git-svn-id: svn://192.168.115.73:/cyberJack@301 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@300 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@299 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@298 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@297 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@296 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-10-09 08:58:01 +0000 mpreuss - changed some char* arguments to "const char*" because automatic conversion from string constant to "const char*" is deprecated in recent versions of gcc - copied eca_defines.h from other SVN folder to the driver where it is also needed (the driver tree should be self-sufficient) git-svn-id: svn://192.168.115.73:/cyberJack@295 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-10-09 08:11:17 +0000 mpreuss Test commit from Kupfer as Preuss git-svn-id: svn://192.168.115.73:/cyberJack@294 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-10-09 06:46:40 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@293 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@292 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@291 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@290 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@289 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@288 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@287 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@286 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@285 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@284 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-09-27 08:32:24 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@283 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@282 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@281 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-09-25 11:15:08 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@280 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@279 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@278 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@277 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@276 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@275 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@274 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@273 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@272 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@271 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@270 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@269 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@268 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@267 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@266 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@265 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@264 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-09-13 11:05:19 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@263 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-09-13 10:42:09 +0000 Kupfer Noch ne Datei aus altem Repository git-svn-id: svn://192.168.115.73:/cyberJack@262 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-09-13 10:39:25 +0000 Kupfer Änderungen aus altem Repository eingearbeitet git-svn-id: svn://192.168.115.73:/cyberJack@261 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@260 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@259 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-09-11 15:39:48 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@258 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@257 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@256 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@255 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@254 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-09-07 15:37:53 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@253 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@252 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@251 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@250 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@249 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@248 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@247 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@246 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@245 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@244 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@243 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@242 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@241 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@240 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@239 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@238 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@237 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@236 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@235 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@234 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@233 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@232 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@231 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@230 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@229 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@228 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@227 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@226 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@225 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@224 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@223 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@222 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@221 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@220 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@219 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@218 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@217 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-08-31 14:07:40 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@216 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@215 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@214 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@213 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@212 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@211 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@210 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@209 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@208 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@207 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@206 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@205 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@204 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@203 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@202 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@201 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@200 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@199 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@198 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@197 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@196 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@195 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@194 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@193 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@192 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@191 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@190 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@189 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@188 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@187 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@186 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@185 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@184 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@183 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@182 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@181 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@180 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@179 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@178 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-08-15 09:55:35 +0000 SMellenthin Text verbessert git-svn-id: svn://192.168.115.73:/cyberJack@177 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@176 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@175 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@174 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@173 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@172 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@171 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@170 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@169 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-08-10 14:05:45 +0000 Kupfer Kt-Light module git-svn-id: svn://192.168.115.73:/cyberJack@168 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@167 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@166 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@165 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@164 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@163 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@162 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@161 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@160 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-08-09 15:37:13 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@159 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@158 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@157 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@156 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@155 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@154 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@153 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@152 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@151 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@150 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@149 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@148 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@147 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@146 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@145 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@144 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@143 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@142 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@141 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@140 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@139 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@138 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@137 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@136 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@135 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@134 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@133 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@132 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@131 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@130 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@129 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@128 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-07-23 15:30:04 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@127 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@126 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@125 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@124 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@123 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@122 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@121 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@120 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@119 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@118 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@117 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@116 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@115 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@114 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@113 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@112 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@111 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@110 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@109 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@108 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@107 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-07-05 14:51:52 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@106 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@105 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-07-04 11:27:03 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@104 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-26 13:42:32 +0000 Kupfer ECA - Modulestore 3.0.17 git-svn-id: svn://192.168.115.73:/cyberJack@103 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@102 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@101 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@100 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@99 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-26 10:31:42 +0000 Kupfer external test2 git-svn-id: svn://192.168.115.73:/cyberJack@98 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-26 10:22:55 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@97 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-22 07:14:00 +0000 Kupfer ecom(a) - Modulestore - Tippfehler korrigiert git-svn-id: svn://192.168.115.73:/cyberJack@96 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@95 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@94 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@93 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@92 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@91 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-20 13:24:14 +0000 Kupfer Modulestore 3.0.15 git-svn-id: svn://192.168.115.73:/cyberJack@90 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@89 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@88 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@87 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-18 19:52:55 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@86 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-15 17:15:36 +0000 Kupfer svn test end git-svn-id: svn://192.168.115.73:/cyberJack@85 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-15 17:08:36 +0000 Kupfer svn test git-svn-id: svn://192.168.115.73:/cyberJack@84 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-15 17:02:24 +0000 Kupfer svn test git-svn-id: svn://192.168.115.73:/cyberJack@83 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-15 16:59:32 +0000 Kupfer svn test git-svn-id: svn://192.168.115.73:/cyberJack@82 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-15 16:44:05 +0000 Kupfer svn test git-svn-id: svn://192.168.115.73:/cyberJack@81 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-15 16:40:38 +0000 Kupfer svn test git-svn-id: svn://192.168.115.73:/cyberJack@80 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-15 16:35:13 +0000 Kupfer svn test git-svn-id: svn://192.168.115.73:/cyberJack@79 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-15 16:21:34 +0000 Kupfer svn test git-svn-id: svn://192.168.115.73:/cyberJack@78 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-15 16:05:00 +0000 Kupfer svn test git-svn-id: svn://192.168.115.73:/cyberJack@77 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-15 15:50:49 +0000 Kupfer svn test git-svn-id: svn://192.168.115.73:/cyberJack@76 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-15 11:31:01 +0000 Kupfer svn test git-svn-id: svn://192.168.115.73:/cyberJack@75 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@74 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-15 09:21:10 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@73 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@72 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-15 09:14:48 +0000 Kupfer modulestor 3.0.13 git-svn-id: svn://192.168.115.73:/cyberJack@71 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-15 08:57:11 +0000 kseybold git-svn-id: svn://192.168.115.73:/cyberJack@70 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-15 08:56:12 +0000 kseybold git-svn-id: svn://192.168.115.73:/cyberJack@69 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-15 08:48:03 +0000 kseybold Inital / 3.0.12 git-svn-id: svn://192.168.115.73:/cyberJack@68 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@67 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@66 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@65 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-13 19:24:08 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@64 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@63 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@62 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@61 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@60 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-12 11:41:36 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@59 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@58 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@57 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-06-12 09:03:30 +0000 Kupfer .\include für firmware git-svn-id: svn://192.168.115.73:/cyberJack@56 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@55 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@54 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@53 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@52 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@51 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@50 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@49 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@48 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@47 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@46 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@45 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@44 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@43 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@42 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@41 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@40 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@39 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 16:16:12 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@38 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@37 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@36 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@35 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@34 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@33 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@32 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@31 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@30 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 1970-01-01 00:00:00 +0000 (no author) git-svn-id: svn://192.168.115.73:/cyberJack@29 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 15:32:55 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@28 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 15:32:43 +0000 Kupfer Moved remotely git-svn-id: svn://192.168.115.73:/cyberJack@27 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 15:32:22 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@26 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 15:32:10 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@25 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 15:31:54 +0000 Kupfer Moved remotely git-svn-id: svn://192.168.115.73:/cyberJack@24 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 15:31:40 +0000 Kupfer Moved remotely git-svn-id: svn://192.168.115.73:/cyberJack@23 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 15:31:14 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@22 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 14:20:22 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@21 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 14:20:03 +0000 Kupfer Created folder remotely git-svn-id: svn://192.168.115.73:/cyberJack@20 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 13:58:02 +0000 kseybold git-svn-id: svn://192.168.115.73:/cyberJack@19 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 13:51:18 +0000 kseybold Removed file/folder git-svn-id: svn://192.168.115.73:/cyberJack@18 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 13:49:08 +0000 kseybold MyREV 1.0.0 git-svn-id: svn://192.168.115.73:/cyberJack@17 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 13:32:35 +0000 kseybold git-svn-id: svn://192.168.115.73:/cyberJack@16 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 13:04:11 +0000 ORepp acl.cpp wurde an 5 Stellen geändert. statt iterator = &data[i] auf iterator = data.begin() + i git-svn-id: svn://192.168.115.73:/cyberJack@15 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 12:16:31 +0000 kseybold git-svn-id: svn://192.168.115.73:/cyberJack@14 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 11:45:49 +0000 kseybold test1 git-svn-id: svn://192.168.115.73:/cyberJack@13 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 11:05:56 +0000 kseybold First Checkin git-svn-id: svn://192.168.115.73:/cyberJack@12 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 09:37:57 +0000 kseybold First Check in git-svn-id: svn://192.168.115.73:/cyberJack@11 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 08:53:30 +0000 kseybold Removed file/folder git-svn-id: svn://192.168.115.73:/cyberJack@10 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 08:52:30 +0000 kseybold Added a folder remotely git-svn-id: svn://192.168.115.73:/cyberJack@9 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 08:49:49 +0000 kseybold Removed file/folder git-svn-id: svn://192.168.115.73:/cyberJack@8 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 08:49:29 +0000 kseybold Added a folder remotely git-svn-id: svn://192.168.115.73:/cyberJack@7 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 08:49:11 +0000 kseybold Removed file/folder git-svn-id: svn://192.168.115.73:/cyberJack@6 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-30 08:48:37 +0000 kseybold Removed file/folder git-svn-id: svn://192.168.115.73:/cyberJack@5 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-24 12:34:35 +0000 Kupfer BC_6_1_5 git-svn-id: svn://192.168.115.73:/cyberJack@4 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-14 09:08:59 +0000 Kupfer Firmwarepfade angepaßt git-svn-id: svn://192.168.115.73:/cyberJack@3 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-11 16:27:40 +0000 Kupfer eca files added git-svn-id: svn://192.168.115.73:/cyberJack@2 07e09712-72bc-834b-90ef-673f4adad8ed ------------------------------------------------------------------ 2007-05-11 13:42:07 +0000 Kupfer git-svn-id: svn://192.168.115.73:/cyberJack@1 07e09712-72bc-834b-90ef-673f4adad8ed pcsc-cyberjack-3.99.5final.sp05/ChangeLog.old000066400000000000000000000511601231776762100206520ustar00rootroot00000000000000 =========================================================================== MARK: released ctapi-cyberjack-3.3.0 (2008/07/23) =========================================================================== =========================================================================== MARK: released ctapi-cyberjack-3.3.0beta4 (2008/07/03) =========================================================================== 2008/07/03: Martin Preuss ------------------------------------------------ - IFD: accept WIN32 code for GET_FEATURE (now works with rdesktop) - IFD: fixed a problem with VERIFY_PIN =========================================================================== MARK: released ctapi-cyberjack-3.3.0beta3 (2008/06/11) =========================================================================== Fixed a problem in implementation of FEATURE_MCT_READER_DIRECT. =========================================================================== MARK: released ctapi-cyberjack-3.3.0beta2 (2008/06/07) =========================================================================== 2008/06/04: Martin Preuss ------------------------------------------------ - recent releases of pcsclite use libhal to detect readers. Therefore they changed the default namespace for the reader names (from "libusb:" to "libhal:") which also has a new syntax. Therefore we are forced to support libhal as well. =========================================================================== MARK: released ctapi-cyberjack-3.3.0beta1 (2008/06/02) =========================================================================== 2008/05/31: Martin Preuss ------------------------------------------------ - implemented FEATURE_MCT_READERDIRECT 2008/05/27: Martin Preuss ------------------------------------------------ - fixed two typos in ifd/part10.c - added missing newline to ECFReader.h - copied Reader.h from svn/include to drivers include dir (we definately should have the version within the driver be the only one!) - added BingoError.h from the include/firmware folder (sigh) - fixed a bug in ctapi.cpp (was using a false DEBUG_MASK for CTAPI) - improved error logging in ctapi.cpp - ifd/part10.c: Now check the endianess of ulDataLength in verify/modify pin structures - added ID 0x401 to list of recognized USB readers in USBLinux.cpp =========================================================================== MARK: released ctapi-cyberjack-3.2.0 (2008/04/03) =========================================================================== 2008/04/03: Martin Preuss ------------------------------------------------ - pulled-in changes from the Windows driver 2008/03/25: Martin Preuss ------------------------------------------------ - fixed a bug in usbdev with old versions of sysfs (like on SuSE10.0) 2008/02/12: Martin Preuss ------------------------------------------------ - LIESMICH.xml: added section about Moneyplex on 64-bit systems =========================================================================== MARK: released ctapi-cyberjack-3.2.0beta2 (2008/02/12) =========================================================================== 2008/02/12: Martin Preuss ------------------------------------------------ - cjIoOpen_libusb(): - only try to detach kernel driver if claim_interface() doesn't work - don't set configuration (is done by the kernel anyway) - call ausb_reset() like driver 2.0.14 did if the corresponding flag is set in the configuration file - added some more debug messages - LIESMICH.xml: added description of flag RESET_BEFORE =========================================================================== MARK: released ctapi-cyberjack-3.2.0beta1 (2008/02/08) =========================================================================== 2008/02/08: Martin Preuss ------------------------------------------------ - updated LIESMICH.xml: it now contains a section about the tool "cyberjack", some other sections have been updated 2008/02/06: Martin Preuss ------------------------------------------------ - ausb{1,3}.c: added timeout control to avoid infinite loops - ctapi.cpp: function _init_common1() now also checks for kernel mode when device name is given (not only for port values). Now works with libchipcard. 2008/02/05: Martin Preuss ------------------------------------------------ - make libsysfs mandatory (we now depend on it) - added member "port" to struct rsct_usbdev_t - reenabled access via kernel module for 0x100 devices - enabled logging even when using kernel module for 0x100 devices - serial devices and /dev/ttyUSBx access is now availabe via rsct_init_name() - renamed config_*() functions to rsct_config_*() and export those functions - tool cyberjack: - added commands: - check: this is the default when missing, it performs the checks like before - addflags: adds flags in the configuration file - delflags: clears flags in the configuration file The latter two functions have been introduced to simplify setting/clearing of flags (these commands always find the correct configuration file). - don't bail out if the device file in /proc/bus/usb is not accessible =========================================================================== MARK: released ctapi-cyberjack-3.1.0 (2008/01/10) =========================================================================== =========================================================================== MARK: released ctapi-cyberjack-3.0.6rc4 (2007/12/12) =========================================================================== =========================================================================== MARK: released ctapi-cyberjack-3.0.6rc3 (2007/12/12) =========================================================================== 2007/12/12: Martin Preuss ------------------------------------------------ - ausb.c: changed ausb_init() to call usb_init() only once but usb_find_busses() and usb_find_devices() at every call 2007/12/10: Martin Preuss ------------------------------------------------ - added support for readers connected via serial ports - added section about this new feature to LIESMICH.xml - fixed "cyberjack" tool module cm_reader (now creates a correct xml file). =========================================================================== MARK: released ctapi-cyberjack-3.0.6rc2 (2007/12/03) =========================================================================== 2007/11/29: Martin Preuss ------------------------------------------------ - fixed a bug in ecom_a code concerning APDU 20,10 =========================================================================== MARK: released ctapi-cyberjack-3.0.6rc1 (2007/11/19) =========================================================================== 2007/11/17: Martin Preuss ------------------------------------------------ - added code which enumerates readers using libsysfs - added special handling for CT_init() with port values of 0x9000: Now a configuration file is used to assign fixed port numbers to readers using their serial numbers. However, this doesn't work with ancient Cyberjacks (e.g. product id 0x100). - added documentation about this new feature to LIESMICH.xml 2007/11/16: Martin Preuss ------------------------------------------------ - hopefully fixed communication problems with 0x100 and 0x400 - included a patch from Bernd Kupfer (adds ausb_reset_pipe()) 2007/11/13: Martin Preuss ------------------------------------------------ - removed call to ausb_reset() for 0x400 (this led to problems) 2007/11/06: Martin Preuss ------------------------------------------------ - fixed modifications to tool cjflash - no longer try to set configuration for 0x400 (we just use the only available configuration) - now also detach kernel module "cyberjack" from 0x400 when claiming the interface fails (for some odd reasons at least my kernel loads that module for the reader) 2007/11/02: Martin Preuss ------------------------------------------------ - added environment variable "CJ_SLEEP_MS2" which inserts a waiting time (in milliseconds) directly after calling ausb_open() 2007/10/30: Martin Preuss ------------------------------------------------ - added environment variable "CJ_SLEEP_MS1" which inserts a waiting time (in milliseconds) directly before calling ausb_open() 2007/10/25: Martin Preuss ------------------------------------------------ - applied a patch provided by Daniel Golle which adapts our use of variadic macros so that newer versions of GCC work, too - tried a new solution in fixing the problem with new kernels and old readers =========================================================================== MARK: released ctapi-cyberjack-3.0.5rc1 (2007/10/18) =========================================================================== 2007/10/18: Martin Preuss ------------------------------------------------ - fixed some warnings about missing parentheses and deprecated pragmas - CCIDReader.cpp: Fixed a bug in _CtData() about command 20/12 (REQUEST_ICC). For this command actually Le may be omitted and still means 0 (as opposed to "no data expected"). Without this fix Moneyplex is unable to request a card. =========================================================================== MARK: released ctapi-cyberjack-3.0.5beta5 (2007/10/08) =========================================================================== 2007/10/05: Martin Preuss ------------------------------------------------ - changed some char* arguments to "const char*" because automatic conversion from string constant to "const char*" is deprecated in recent versions of gcc - copied eca_defines.h from other SVN folder to the driver where it is also needed (the driver tree should be self-sufficient) 2007/10/01: Martin Preuss ------------------------------------------------ - log file is automatically truncated upon CT_init() if its size exceeds a given limit (currenty 10 MB) 2007/09/21: Martin Preuss ------------------------------------------------ - tool cyberjack: added check for ancient kernels =========================================================================== MARK: released ctapi-cyberjack-3.0.5beta1 (2007/09/19) =========================================================================== 2007/09/19: Martin Preuss ------------------------------------------------ - call ausb_reset() prior to ausb_close() to workaround hanging reader =========================================================================== MARK: released ctapi-cyberjack-3.0.4 (2007/09/16) =========================================================================== 2007/09/16: Martin Preuss ------------------------------------------------ - cyberjack (diagnosis tool): added a check for CT_data() which reads firmware information (makes it easier for the Linux support) =========================================================================== MARK: released ctapi-cyberjack-3.0.4beta1 (2007/08/16) =========================================================================== 2007/08/16: Martin Preuss ------------------------------------------------ - fixed a bug in Debug.cpp (was mangling with the stack given special circumstances) 2007/07/27: Martin Preuss ------------------------------------------------ - removed debug-setting of debug level mask (was set to all-on) =========================================================================== MARK: released ctapi-cyberjack-3.0.3 (2007/07/20) =========================================================================== 2007/07/18: Martin Preuss ------------------------------------------------ - fixed a bug regarding Ecom (0x100) readers 2007/07/17: Martin Preuss ------------------------------------------------ - improved AUSB logging (should give more information): Now all drivers are able to provide USB logging - more debugging of ecom code 2007/07/16: Martin Preuss ------------------------------------------------ - fixed a bug with APDU responses which exceed 262 bytes with old Ecom's =========================================================================== MARK: released ctapi-cyberjack-3.0.2 (2007/07/16) =========================================================================== 2007/07/16: Martin Preuss ------------------------------------------------ - some major memory checking with valgrind: - fixed some possible memory leaks (e.g. by using correct delete notations, adding some delete's where missing etc) - CT_init() now internally reads vendor specific information (e.g. firmware version etc) to make the log files more usefull - if "$SYSCONFDIR/cyberjack.conf" does not exist try to load "$SYSCONFDIR/cyberjack.conf.default" which is installed by default on any system (simplifies support) - Debian packages no longer remove the group "cyberjack" - "getenv()" in USBLinux.cpp has big issues with the driver: When it is used the driver crashes, when commented-out the driver works. Since I don't need it here anyway (since there are no Ecom(a) with firmware prior to 3.0.6) I just commented it out completely 2007/07/12: Martin Preuss ------------------------------------------------ - found correct place for call to usb_reset(), now opening and closing the new Cyberjack many times in a row now works 2007/07/11: Martin Preuss ------------------------------------------------ - fixed return type in tool cjgeldkarte =========================================================================== MARK: released ctapi-cyberjack-3.0.1 (2007/07/10) =========================================================================== 2007/07/10: Martin Preuss ------------------------------------------------ - introduced a hotfix for the USB suspend problem with Kernel 2.6.20: It seems like libusb does not detect the cyberjack 0x400 correctly when the reader is suspended (e.g. libusb only detects the reader when it currently is not suspended, but the reader needs some time to become active after resuming and Libusb does not wait for this time... Now we just try for about 5 secs to enumerate the USB devices via libusb which keeps the reader active until it has completed its initialization). This fix is only needed as long as Libusb has these problems, maybe they will fix this... =========================================================================== MARK: released ctapi-cyberjack-3.0.0 (2007/06/22) =========================================================================== 2007/06/22: Martin Preuss ------------------------------------------------ - addes some necessary files for Debian - introduce check for SuSE10.x: Apparently those systems do not like the call to "getenv()" we use in USBLinux.cpp. On all SuSE10 systems this makes the driver crash. So for now this call is just disabled on affected systems. - fixed Info.plist 2007/06/21: Martin Preuss ------------------------------------------------ - fixed usbdropdir for RPM packages - added diagnosis tool "cyberjack" - prepared release of version 3.0.0 (Linux) 2007/06/06: Martin Preuss ------------------------------------------------ - changed Debug.cpp again: Really, we cannot include ctapi_config_l.h due to circular dependencies (the CTAPI stuff is a layer above the code in Debug.cpp). Since the MAC people seem to insist on including it anyway (since they reverted my latest modification in that field) I wrapped an #ifdef around that include 2007/05/12: Martin Preuss ------------------------------------------------ - changed Debug.cpp: Cannot include ctapi_config_l.h due to circular dependencies (the CTAPI stuff is a layer above the code in Debug.cpp, so we can't use it here). It was used for setting the initial debug layer anyway, and this can also be achieved by using the method CDebug::setLevelMask() - latest changes introduced SCARD_CTL_CODE which wasn't previously available to the Linux code (we don't include PC/SC stuff to stay independent from it) - added definition for type SCARD_IO_REQUEST (same reason) - what the heck is this newly introduced "#pragma message"??? =========================================================================== MARK: released ctapi-cyberjack-3.0.0beta1 (2007/05/08) =========================================================================== 2007/05/07: Martin Preuss ------------------------------------------------ - added driver for pinpad_a (heavily adapted it to enable it to work with the new USB framework) - renamed files with suffix "2" back to names without this suffix since this driver will succeed the old driver - use version from configure.ac instead of Windows code version (we still use that in log messages) - adapted files for PC/SC to now additionally support older readers - set version to 3.0.0beta1 (for first beta release) - ausb_l.h: added missing include 2007/05/04: Martin Preuss ------------------------------------------------ - added envrionment variable "CJ_USB_MODE" which can be used with the tool cjflash to force the USB implementation to be used (because they differ very much and at least the flash tool needs to be able to work with old firmware) - added section to README.xml and LIESMICH.xml about flashing the cyberjack ecom_a - changed prototype for CTAPI key callback handler (now also has a key value as an argument) - added driver for old ECOM 2007/05/02: Martin Preuss ------------------------------------------------ - added IFD handler from old Cyberjack driver and adapted it to this new driver - moved filenames in order to allow this driver to be installed in parallel with the old driver (as long as the new driver doesn't support the older readers) - added basic packaging files (RPM, DEB) - added documentation (basically copied over from old driver) - added tool cjgeldkarte2 (basically copied over from old driver) - prepared first beta release 2007/04/30: Martin Preuss ------------------------------------------------ - halt interrupt pipe upon USBLinux::Open() - now always uses USB implementation 3 for 0x400er devices - fixed incompatibilities introduced by SVN merge 2007/04/27: Martin Preuss ------------------------------------------------ - added tool for flashing the reader under Linux - added yet another approach to the USB interface - completed CTAPI driver for Linux - now only exports CTAPI functions and class CReader - modified ausb module: Now the Linux implementation can choose between 3 different implementation. This is needed to allow the flash tool to work with any firmware so we can now flash any Ecom A regardless of the firmware version - configure.ac: Now checks whether thread-support is requested, only compile thread-related modules in case it is 2007/04/26: Martin Preuss ------------------------------------------------ - improved logging for Linux (new log file format allows for better filtering, so users may now send full logs and I will still be able to filter out the important parts) - implemented CTAPI driver - added a CTAPI test tool - tried a thread-based approach to the interrupt pipe problem - beeping now works with X11 also! 2007/04/25: Martin Preuss ------------------------------------------------ - Debug.{h,cpp}: - implemented code for Linux - added DEBUG_MASK_CTAPI - added DEBUG_MASK_IFD - added function rsct_debug_out() to allow for debugging output from C (previously it only worked with C++) - added method setLevelMask() to allow for runtime modification of the level mask (on Linux) - added method setLogFileName() to allow for runtime modification of the logfile (on Linux) - fixed definition of DEBUG_MASK_IFD - only use #pragma(warning) on Windows (gets rid of warnings under Linux) - added ausb/ (lowlevel asynchronous communication via USB on Linux) - implemented USBLinux.cpp (now COM via USB works on Linux) - started working on CTAPI pcsc-cyberjack-3.99.5final.sp05/Makefile.am000066400000000000000000000013601231776762100203540ustar00rootroot00000000000000DIST_SUBDIRS=etc m4 include cjeca32 ifd libcyberjack tools doc SUBDIRS=m4 include cjeca32 if IS_LINUX SUBDIRS+=etc endif ACLOCAL_AMFLAGS=-I m4 #SUBDIRS+=ifd libcyberjack checksuite tools debian doc SUBDIRS+=ifd libcyberjack tools doc EXTRA_DIST=\ ifd-cyberjack.spec.in ifd-cyberjack.spec \ COPYRIGHT.GPL COPYRIGHT.LGPL \ ChangeLog ChangeLog.old rpm: ifd-cyberjack.spec dist rpmbuild="rpm" && \ if [ `rpm --version | awk '{ print $$3 }'` > /dev/null ]; then rpmbuild="rpmbuild"; fi && \ $$rpmbuild -ta ifd-cyberjack-$(VERSION).tar.gz ChangeLog: git log --pretty="format:------------------------------------------------------------------%n%ai %an%n%s%n%b" >ChangeLog #dist-hook: # rm -f ChangeLog 2>/dev/null # $(MAKE) ChangeLog pcsc-cyberjack-3.99.5final.sp05/Makefile.cvs000066400000000000000000000030721231776762100205540ustar00rootroot00000000000000 #MY_CFLAGS=-W -pedantic -std=c99 -ggdb -Wall -O -ggdb MY_CFLAGS=-ggdb -Wall default: all cvsclean:: rm -f `find . -name \*~` rm -f `find . -name Makefile` rm -f `find . -name Makefile.in` rm -Rf apidoc rm -f INSTALL rm -f aclocal.m4 rm -rf autom4te.cache/ rm -f config.guess rm -f config.h.in rm -f config.sub rm -f configure rm -f debian/autoreconf.after rm -f debian/autoreconf.before rm -f depcomp rm -f ltmain.sh rm -f m4/libtool.m4 rm -f m4/ltoptions.m4 rm -f m4/ltversion.m4 rm -f m4/lt~obsolete.m4 rm -f debian/files rm -f debian/fxcyberjack.debhelper.log rm -f debian/fxcyberjack.substvars rm -rf debian/fxcyberjack/ rm -f debian/libifd-cyberjack6.debhelper.log rm -f debian/libifd-cyberjack6.postinst.debhelper rm -f debian/libifd-cyberjack6.postrm.debhelper rm -f debian/libifd-cyberjack6.preinst.debhelper rm -f debian/libifd-cyberjack6.substvars rm -rf debian/libifd-cyberjack6/ rm -rf debian/tmp/ macall: glibtoolize -f --automake --copy aclocal -I ./m4 autoheader automake --add-missing --copy -i autoconf all: libtoolize -f --automake --copy aclocal -I ./m4 autoheader automake --add-missing --copy autoconf mp: libtoolize -f --automake --copy aclocal -I ./m4 autoheader automake --add-missing --foreign --copy autoconf CFLAGS="$(MY_CFLAGS)" CXXFLAGS="-ggdb -Wall" ./configure --disable-static clang: libtoolize -f --automake --copy aclocal -I ./m4 autoheader automake --add-missing --foreign --copy autoconf CFLAGS="$(MY_CFLAGS)" CXXFLAGS="-ggdb -Wall" \ CC=clang \ CXX=clang \ ./configure --disable-static pcsc-cyberjack-3.99.5final.sp05/NEWS000066400000000000000000000221271231776762100170230ustar00rootroot00000000000000 =========================================================================== ctapi-cyberjack-3.3.0 (2008/07/23) =========================================================================== This release improves support for rdesktop, fixes some PC/SC-related bugs, implemente FEATURE_MCT_READER_DIRECT and adds support for latest versions of pcsclite which rely on libHAL. =========================================================================== ctapi-cyberjack-3.3.0beta4 (2008/07/03) =========================================================================== This release fixes problems with PC/SC part10 verify/modify pin and improves support for rdesktop. =========================================================================== ctapi-cyberjack-3.3.0beta3 (2008/06/11) =========================================================================== This release fixes a problem in implementation of FEATURE_MCT_READER_DIRECT. =========================================================================== ctapi-cyberjack-3.3.0beta2 (2008/06/07) =========================================================================== This release adds support for the latest version of pcsclite. For this to work this driver now depends on libhal. However, if libHAL isn't present then support for it will not be compiled. =========================================================================== ctapi-cyberjack-3.3.0beta1 (2008/06/02) =========================================================================== This release adds support for the PC/SC part10 feature MCT_READERDIRECT. It also fixes a problem with PC/SC part10 VERIFY_DIRECT. This driver now recognizes older Ecom's with new firmware (product id 0x401). =========================================================================== ctapi-cyberjack-3.2.0 (2008/04/03) =========================================================================== This release fixes some bugs and adds workarounds for ancient cyberJack readers (0x100). The documentation in LIESMICH.xml has been updated. =========================================================================== ctapi-cyberjack-3.2.0beta2 (2008/02/12) =========================================================================== This release tries to fix the problems reported by some users regarding the old cyberJack pinpad/ecom (0x100). =========================================================================== ctapi-cyberjack-3.2.0beta1 (2008/02/08) =========================================================================== This release needs libsysfs to scan for devices. It also allows for the kernel module to be used to drive older Cyberjack Ecom/Pinpad. The tool "cyberjack" now has two commands to easily set and clear flags in the configuration file. =========================================================================== ctapi-cyberjack-3.1.0 (2008/01/10) =========================================================================== This is the next stable release of this driver. It introduces a new method of selecting devices by serial number and supports Cyberjacks connected via serial ports (COMx). It is because of these features that the minor version has been incremented (->3.0.x to 3.1.0). =========================================================================== ctapi-cyberjack-3.0.6rc4 (2007/12/12) =========================================================================== This release fixes some bugs. =========================================================================== ctapi-cyberjack-3.0.6rc3 (2007/12/12) =========================================================================== This release adds support for Cyberjack Ecom A connected via serial cable. =========================================================================== ctapi-cyberjack-3.0.6rc2 (2007/12/03) =========================================================================== This release fixes a problem with the APDU 20,10 and Ecom(a). =========================================================================== ctapi-cyberjack-3.0.6rc1 (2007/11/19) =========================================================================== This release adds special handling for port values 0x9000 and above. Those values are used to assign fixed port values to particular readers by using the serial number available with Cyberjack readers with productId >=0x300. =========================================================================== ctapi-cyberjack-3.0.6beta1 (2007/11/16) =========================================================================== This release in combination with the latest firmware should fix the problems reported with Ubuntu 7.xx and the Cyberjack Ecom (a). =========================================================================== ctapi-cyberjack-3.0.5 (2007/10/20) =========================================================================== Stable release. =========================================================================== ctapi-cyberjack-3.0.5rc1 (2007/10/18) =========================================================================== This release fixes a bug which makes Moneyplex unable to read cards with new ecoms (introduced by 3.0.5beta5). This version is considered a release candidate. =========================================================================== ctapi-cyberjack-3.0.5beta5 (2007/10/08) =========================================================================== This release enables reading of German medical cards with 0x400 devices. Logfiles are now truncated to 10MB. =========================================================================== ctapi-cyberjack-3.0.5beta1 (2007/09/19) =========================================================================== This release introduces a workaround for hanging USB hardware. =========================================================================== ctapi-cyberjack-3.0.4 (2007/09/16) =========================================================================== This release fixes a bug in the USB logging code. The diagnosis tool cyberjack now shows some firmware information. =========================================================================== ctapi-cyberjack-3.0.4beta1 (2007/08/16) =========================================================================== This release fixes bug which can cause the driver to crash. =========================================================================== ctapi-cyberjack-3.0.3 (2007/07/20) =========================================================================== This release fixes problems of old Ecom readers with APDUs and their response when exceeding 262 bytes. It also enables logging at USB level. =========================================================================== ctapi-cyberjack-3.0.2 (2007/07/16) =========================================================================== This release removes some memory leaks found by valgrind. It also fixes the problem of the reader sometimes being unresponsive (i.e. sometimes it just hung up when trying to open it for the second time with CT_open()). =========================================================================== ctapi-cyberjack-3.0.1 (2007/07/10) =========================================================================== This is a hotfix for the USB suspend problem with Kernel 2.6.20: It seems like libusb does not detect the cyberjack 0x400 correctly when the reader is suspended (e.g. libusb only detects the reader when it currently is not suspended, but the reader needs some time to become active after resuming and Libusb does not wait for this time... Now we just try for about 5 secs to enumerate the USB devices via libusb which keeps the reader active until it has completed its initialization). This fix is only needed as long as Libusb has these problems, maybe they will fix this... =========================================================================== ctapi-cyberjack-3.0.0 (2007/06/21) =========================================================================== This is the first non-beta release of the next generation Cyberjack driver. It contains a small diagnosis tool (called cyberjack) which tries to detect the most common configuration problems and gives some hints on how to overcome them. =========================================================================== ctapi-cyberjack-3.0.0beta1 (2007/05/08) =========================================================================== This is the first beta release of 3.0.0. It supports all curently known Cyberjack USB readers (including the latest Ecom A). Beeping now works using XBell on X11 systems and the USB lowlevel interface has been partially rewritten. This version contains a flash tool for the latest Cyberjack Ecom A. pcsc-cyberjack-3.99.5final.sp05/README000066400000000000000000000000001231776762100171660ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/cjeca32/000077500000000000000000000000001231776762100175325ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/cjeca32/BaseCommunication.cpp000066400000000000000000000201561231776762100236420ustar00rootroot00000000000000#include "Platform.h" #include "BaseCommunication.h" #include #include "Debug.h" #include "ECAReader.h" #include "ECBReader.h" #include "ECRReader.h" #include "ECPReader.h" #include "SECReader.h" #include "ECFReader.h" #include "ECFReader.h" #include "EFBReader.h" #include "PPAReader.h" #include "RFKReader.h" #include "RFSReader.h" #include "CPTReader.h" #include "CGOReader.h" #include "WAVReader.h" CBaseCommunication::CBaseCommunication(const char *cDeviceName,CReader *Owner) { m_cDeviceName=strdup(cDeviceName); m_Owner=Owner; m_Reader=NULL; m_InterruptPipeState=UnInit; m_pid=0; } CBaseCommunication::~CBaseCommunication(void) { free(m_cDeviceName); } void CBaseCommunication::Close() {} int CBaseCommunication::Write(void *Message,uint32_t len) { if(IsConnected()) { Debug.Out(m_cDeviceName,DEBUG_MASK_COMMUNICATION_OUT,"CCID OUT:",Message,len); } return ((!IsConnected())?CJ_ERR_DEVICE_LOST:CJ_SUCCESS); } int CBaseCommunication::Read(void *Response,uint32_t *len) { if(IsConnected()) { Debug.Out(m_cDeviceName,DEBUG_MASK_COMMUNICATION_IN,"CCID IN:",Response,*len); } return ((!IsConnected())?CJ_ERR_DEVICE_LOST:CJ_SUCCESS); } void CBaseCommunication::FreeIFDHandlerDeviceName(char *DeviceName) { if(DeviceName!=NULL) delete DeviceName; } CBaseReader *CBaseCommunication::_buildUsbReaderObject(uint16_t pid, const char *readerName) { int len; char *ptr; len=strlen(readerName); ptr=strdup(readerName); Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INFO, "Reader Productstring: [%s]", ptr); switch(pid) { #ifndef _WINDOWS case 0x300: if (len>=18 && memcmp(ptr, "cyberJack pinpad(a)", 19)==0) { ptr[18]='\0'; m_Reader = new CPPAReader(m_Owner, this); Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INFO, "Recognized device %04x [%s]", pid, ptr); } else { Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_ERROR, "Device [%s] ist not a known cyberJack 0x300, assuming pinpad(a)", ptr); m_Reader = new CPPAReader(m_Owner, this); } m_pid=pid; m_productString=ptr; free(ptr); return m_Reader; #endif case 0x400: if (len>=18 && memcmp(ptr, "cyberJack e-com(a)", 18)==0) { ptr[18]='\0'; m_Reader = new CECAReader(m_Owner, this); Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INFO, "Recognized device %04x [%s]", pid, ptr); } else if(len>=24 && memcmp(ptr, "cyberJack e-com plus DUO", 24)==0){ ptr[24]='\0'; m_Reader = new CECBReader(m_Owner, this); Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INFO, "Recognized device %04x [%s]", pid, ptr); } else if(len>=24 && memcmp(ptr, "cyberJack e-com plus BIO", 24)==0){ ptr[24]='\0'; m_Reader = new CECBReader(m_Owner, this); Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INFO, "Recognized device %04x [%s]", pid, ptr); } else if(len>=25 && memcmp(ptr, "cyberJack e-com plus RFID", 25)==0){ ptr[25]='\0'; m_Reader = new CECRReader(m_Owner, this); Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INFO, "Recognized device %04x [%s]", pid, ptr); } else if(len>=20 && memcmp(ptr, "cyberJack e-com plus", 20)==0) { ptr[20]='\0'; m_Reader = new CECPReader(m_Owner, this); Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INFO, "Recognized device %04x [%s]", pid, ptr); } else if(len>=17 && memcmp(ptr, "cyberJack Secoder", 17)==0){ ptr[17]='\0'; m_Reader = new CSECReader(m_Owner, this); Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INFO, "Recognized device %04x [%s]", pid, ptr); } else { Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_ERROR, "Device [%s] ist not a known cyberJack 0x400, assuming e-com(a)", ptr); m_Reader = new CECAReader(m_Owner, this); } m_pid=pid; m_productString=ptr; free(ptr); return m_Reader; case 0x401: if(len>=18 && memcmp(ptr, "cyberJack e-com(f)", 18)==0) { ptr[18]='\0'; m_Reader = new CECFReader(m_Owner, this); Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INFO, "Recognized device %04x [%s]", pid, ptr); } else if (len>=19 && memcmp(ptr, "cyberJack e-com BIO", 19)==0){ ptr[19]='\0'; m_Reader = new CEFBReader(m_Owner, this); Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INFO, "Recognized device %04x [%s]", pid, ptr); } else { Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_ERROR, "Device [%s] ist not a known cyberJack 0x401, assuming e-com(f)", ptr); m_Reader=new CECFReader(m_Owner, this); } m_pid=pid; m_productString=ptr; free(ptr); return m_Reader; case 0x0500: if (len>=23 && memcmp(ptr, "cyberJack RFID standard", 23)==0) { ptr[23]='\0'; m_Reader = new CRFSReader(m_Owner, this); Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INFO, "Recognized device %04x [%s]", pid, ptr); } else { Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_ERROR, "Device [%s] ist not a known cyberJack 0x500, assuming RFID standard", ptr); m_Reader = new CRFSReader(m_Owner, this); } m_pid=pid; m_productString=ptr; free(ptr); return m_Reader; case 0x0501: if (len>=22 && memcmp(ptr, "cyberJack RFID komfort", 22)==0) { ptr[22]='\0'; m_Reader = new CRFKReader(m_Owner, this); Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INFO, "Recognized device %04x [%s]", pid, ptr); } else { Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_ERROR, "Device [%s] ist not a known cyberJack 0x501, assuming RFID standard", ptr); m_Reader = new CRFSReader(m_Owner, this); } m_pid=pid; m_productString=ptr; free(ptr); return m_Reader; case 0x0502: if (len>=17 && memcmp(ptr, "cyberJack compact", 17)==0) { ptr[17]='\0'; m_Reader = new CCPTReader(m_Owner, this); Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INFO, "Recognized device %04x [%s]", pid, ptr); } else { Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_ERROR, "Device [%s] ist not a known cyberJack 0x502, assuming cyberJack compact", ptr); m_Reader = new CCPTReader(m_Owner, this); } m_pid=pid; m_productString=ptr; free(ptr); return m_Reader; case 0x0504: if (len>=12 && memcmp(ptr, "cyberJack go / go plus", 22)==0) { ptr[22]='\0'; m_Reader = new CCGOReader(m_Owner, this); Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INFO, "Recognized device %04x [%s]", pid, ptr); } else { Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_ERROR, "Device [%s] ist not a known cyberJack 0x504, assuming cyberjack go / go plus", ptr); m_Reader = new CCGOReader(m_Owner, this); } m_pid=pid; m_productString=ptr; free(ptr); return m_Reader; case 0x0505: if (len>=13 && memcmp(ptr, "cyberJack wav", 13)==0) { ptr[13]='\0'; m_Reader = new CWAVReader(m_Owner, this); Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INFO, "Recognized device %04x [%s]", pid, ptr); } else { Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_ERROR, "Device [%s] ist not a known cyberJack 0x505, assuming cyberjack wav", ptr); m_Reader = new CCGOReader(m_Owner, this); } m_pid=pid; m_productString=ptr; free(ptr); return m_Reader; /* add more readers here */ default: Debug.varLog(m_cDeviceName, DEBUG_MASK_COMMUNICATION_ERROR, "Device %04x [%s] ist not a known cyberJack\n", pid, ptr); free(ptr); return NULL; } } pcsc-cyberjack-3.99.5final.sp05/cjeca32/BaseCommunication.h000066400000000000000000000042561231776762100233120ustar00rootroot00000000000000 #ifndef ECA_BASECOMM_H #define ECA_BASECOMM_H #include "cjeca32.h" #include "RSCTCriticalSection.h" #include class CBaseReader; class CReader; class CBaseCommunication { public: CBaseCommunication(const char *cDeviceName,CReader *Owner); virtual ~CBaseCommunication(void); public: // Transmitting Data to the Reader: virtual int Write(void *Message,uint32_t len)=0; // Receiving Data from the Reader virtual int Read(void *Response,uint32_t *ResponseLen)=0; // Filling all Parts of the cj_ReaderInfo struct that can be retrieved by the driver without communication with the reader virtual void SetCommunicationString(cj_ReaderInfo *ReaderInfo)=0; // Depending on the driver information, this function has to create the correct instance of an CBaseReader object: // This function has to set the m_Reader member. // For USB - devices the PID can be used for this decision // For serial devives the devicename and a database can be used for this decision // For LPT Readers same as PID 100 for USB Readers virtual CBaseReader *BuildReaderObject()=0; // Determing wether the connection is still alive virtual bool IsConnected()=0; // Next functions will be implemented later // virtual int InstallIFDHandler(); // virtual int RemoveIFDHandler(); // virtual int GetIFDHandlerDeviceName(char *DeviceName); void FreeIFDHandlerDeviceName(char *DeviceName); virtual int StartInterruptPipe()=0; virtual int HaltInterruptPipe()=0; virtual int Open()=0; virtual void Close(); public: char *m_cDeviceName; protected: /** * build a reader object depending on pid and readerName. This method can be used by * @ref BuildReaderObject. */ CBaseReader *_buildUsbReaderObject(uint16_t pid, const char *readerName); protected: // Used in the derived classes for synconisation CRSCTCriticalSection m_CritSec; CRSCTCriticalSection m_CritClose; // Pointer to the reader implementation object CBaseReader *m_Reader; // Pointer to the reader interface object CReader *m_Owner; typedef enum _tInterruptPipeState{UnInit,Running,HaltRequest,Halted}tInterruptPipeState; tInterruptPipeState m_InterruptPipeState; uint16_t m_pid; std::string m_productString; }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/BaseReader.cpp000066400000000000000000000460161231776762100222420ustar00rootroot00000000000000#include "Platform.h" #include "BaseReader.h" #include "Reader.h" #include "ntstatus.h" #define CASE_DEBUG(a) {\ case a:\ m_Owner->DebugResult("%s:%d --> %s", __FUNCTION__, __LINE__ ,#a);\ } #define RET_RESULT(a) {\ m_Owner->DebugResult("%s --> %s", __FUNCTION__, #a);\ return (a);\ } #define SET_CT_DATA_ERROR(a) {\ *response_len=2;\ *((uint16_t*)response)=htons(a);\ m_Owner->DebugErrorSW1SW2("%s --> %d", __FUNCTION__, a);\ } CBaseReader::CBaseReader(CReader *Owner,CBaseCommunication *Communicator) { m_Owner=Owner; m_pCommunicator=Communicator; m_pModuleInfo=NULL; m_ModuleInfoCount=0; m_KeyCallbackCtx=NULL; m_KeyIntCallback=NULL; m_ChangeCallbackCtx=NULL; m_ChangeIntCallback=NULL; m_p_Slot=NULL; m_maxSlot=1; } CJ_RESULT CBaseReader::PostCreate() { CJ_RESULT Res; m_p_Slot=new tCardParam[m_maxSlot]; memset(m_p_Slot,0,sizeof(tCardParam) * m_maxSlot); if((Res=BuildReaderInfo())==CJ_SUCCESS) Res=BuildModuleInfo(); return Res; } uint8_t *CBaseReader::GetTag(uint8_t *start,int len,uint8_t tagvalue,int *taglen) { uint8_t tag; uint8_t tlen; *taglen=0; while(len>2) { tag=*start++; tlen=*start++; if(tag==tagvalue) { *taglen=tlen; return start; } start+=tlen; len-=tlen+2; } return NULL; } void CBaseReader::Unconnect(void) { CBaseCommunication *merk=m_pCommunicator; m_pCommunicator=0; if (merk) delete merk; } CBaseReader::~CBaseReader(void) { Unconnect(); if(m_pModuleInfo) delete [] m_pModuleInfo; delete [] m_p_Slot; } char CBaseReader::CtData(uint8_t *sad,uint8_t *dad,const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len) { *sad=1; *dad=2; SET_CT_DATA_ERROR(0x6D00); return -10; } RSCT_IFD_RESULT CBaseReader::IfdPower(uint32_t Mode,uint8_t *ATR,uint32_t *ATR_Length,uint8_t Slot) { return _IfdPower(Mode,ATR,ATR_Length,0,Slot); } RSCT_IFD_RESULT CBaseReader::IfdSetProtocol(uint32_t *Protocol,uint8_t Slot) { *Protocol=0; m_p_Slot[Slot].m_ActiveProtocol=0; RET_RESULT(STATUS_NO_MEDIA); } RSCT_IFD_RESULT CBaseReader::IfdGetState(uint32_t *State,uint8_t Slot) { *State=SCARD_UNKNOWN; return STATUS_SUCCESS; } RSCT_IFD_RESULT CBaseReader::IfdSetAttribute(const uint8_t *Input,uint32_t InputLength) { RET_RESULT(STATUS_NOT_SUPPORTED); } RSCT_IFD_RESULT CBaseReader::IfdGetAttribute(uint32_t Tag,uint8_t *Attribute,uint32_t *AttributeLength) { *AttributeLength=0; RET_RESULT(STATUS_NOT_SUPPORTED); } RSCT_IFD_RESULT CBaseReader::IfdSwallow(uint8_t Slot) { RET_RESULT(STATUS_NOT_SUPPORTED); } RSCT_IFD_RESULT CBaseReader::IfdEject(uint8_t Slot) { RET_RESULT(STATUS_NOT_SUPPORTED); } RSCT_IFD_RESULT CBaseReader::IfdVendor(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength) { *OutputLength=0; RET_RESULT(STATUS_NOT_SUPPORTED); } RSCT_IFD_RESULT CBaseReader::IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot) { RET_RESULT(STATUS_NO_MEDIA); } RSCT_IFD_RESULT CBaseReader::_IfdPower(uint32_t Mode,uint8_t *ATR,uint32_t *ATR_Length,uint32_t Timeout,uint8_t Slot) { m_p_Slot[Slot].m_ReaderState=0; RET_RESULT(STATUS_NO_MEDIA); } RSCT_IFD_RESULT CBaseReader::IfdIoControl(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength) { #ifdef _WINDOWS switch(IoCtrlCode) { CASE_DEBUG(IOCTL_SMARTCARD_POWER) { uint32_t mode; if(InputLength=SCARD_CTL_CODE(2048) && IoCtrlCode<=SCARD_CTL_CODE(4095)) { return IfdVendor(IoCtrlCode,Input,InputLength,Output,OutputLength); } else { return STATUS_NOT_SUPPORTED; } } #else return IfdVendor(IoCtrlCode,Input,InputLength,Output,OutputLength); #endif } CJ_RESULT CBaseReader::CtLoadModule(uint8_t *pData,uint32_t DataLength,uint8_t *pSgn,uint32_t SgnLength,uint32_t *Result) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtKeyUpdate(uint8_t *pData,uint32_t DataLength,uint32_t *Result) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtIsKeyUpdateRecommended(uint8_t *pData,uint32_t DataLength,uint32_t *EstimatedUpdateTime) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtDeleteModule(uint32_t ModuleID,uint32_t *Result) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtActivateModule(uint32_t ModuleID,uint32_t *Result) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtDeactivateModule(uint32_t ModuleID,uint32_t *Result) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtDeleteALLModules(uint32_t *Result) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtSetModulestoreInfo(uint8_t *Info,uint8_t InfoLength) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtGetModulestoreInfo(uint8_t *Info,uint8_t *InfoLength) { *InfoLength=0; RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtListModules(uint32_t *Count,cj_ModuleInfo *ModuleInfo) { cj_ModuleInfo *Info=ModuleInfo; if(*Count==SCARD_AUTOALLOCATE) { Info=new cj_ModuleInfo[m_ModuleInfoCount]; *Count=m_ModuleInfoCount; *(cj_ModuleInfo **)ModuleInfo=Info; } if(*CountID==ModuleID) break; } if(i==m_ModuleInfoCount) return NULL; return Info; } cj_ModuleInfo *CBaseReader::FindModuleWithMask(uint32_t ModuleID,uint32_t Mask) { cj_ModuleInfo *Info=m_pModuleInfo; uint32_t i; if(Info==NULL) return NULL; for(i=0;iID & Mask)==ModuleID) break; } if(i==m_ModuleInfoCount) return NULL; return Info; } CJ_RESULT CBaseReader::CtGetModuleInfoFromFile(uint8_t *pData,uint32_t DataLength,cj_ModuleInfo *ModuleInfo,uint32_t *EstimatedUpdateTime) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtFreeModuleInfoList(cj_ModuleInfo *pModuleInfo) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtIsModuleUpdateRecommended(uint8_t *pData,uint32_t DataLength,uint32_t *EstimatedUpdateTime) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtGetActiveModuleID(uint32_t *ID,uint32_t *Result) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtGetActivationID(uint32_t *ID,uint32_t *Result) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtApplicationData(uint32_t ApplicationID,uint16_t Function,uint8_t *InputData, uint32_t InputLen, uint32_t *Result, uint8_t *ResponseData, uint32_t *ResponseLen, uint8_t *ApplicationError,uint32_t *ApplicationErrorLength) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtSelfTest(void) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtSelfTest2(const uint8_t *TransportKey,uint8_t KeyNr) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtShowAuth(void) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtGetReaderInfo(cj_ReaderInfo *pReaderInfo) { uint32_t min=(pReaderInfo->SizeOfStructSizeOfStruct:sizeof(m_ReaderInfo); memcpy(pReaderInfo,&m_ReaderInfo,min); pReaderInfo->SizeOfStruct=min; return SCARD_S_SUCCESS; } CJ_RESULT CBaseReader::InstallAndStartIFDHandler() { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::StopIFDHandler() { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::IntroduceReaderGroups() { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } uint16_t CBaseReader::ReaderToHostShort(uint16_t Value) { return HostToReaderShort(Value); } uint32_t CBaseReader::ReaderToHostLong(uint32_t Value) { return HostToReaderLong(Value); } void CBaseReader::SetChangeInterruptCallback(fctChangeIntCallback ChangeIntCallback,ctxPtr ChangeCallbackCtx) { m_ChangeIntCallback=ChangeIntCallback; m_ChangeCallbackCtx=ChangeCallbackCtx; } void CBaseReader::SetKeyInterruptCallback(fctKeyIntCallback KeyIntCallback,ctxPtr KeyCallbackCtx) { m_KeyIntCallback=KeyIntCallback; m_KeyCallbackCtx=KeyCallbackCtx; } int CBaseReader::Write(void *Message,uint32_t len) { int res; if(m_pCommunicator) { if(len>GetReadersInputBufferSize()) return CJ_ERR_INTERNAL_BUFFER_OVERFLOW; res=m_pCommunicator->Write(Message,len); if(res!=CJ_SUCCESS) ConnectionError(); return res; } return CJ_ERR_DEVICE_LOST; } int CBaseReader::Read(void *Response,uint32_t *ResponseLen) { int res; if(m_pCommunicator) { res=m_pCommunicator->Read(Response,ResponseLen); if(res!=CJ_SUCCESS) ConnectionError(); return res; } return CJ_ERR_DEVICE_LOST; } void CBaseReader::ConnectionError() { if(m_pCommunicator) { delete m_pCommunicator; m_pCommunicator=NULL; } } bool CBaseReader::IsConnected() { if(m_pCommunicator==NULL) return false; else if (m_pCommunicator->IsConnected()==false) { return false; } return true; } uint32_t CBaseReader::GetEnviroment(const char *Name,uint32_t Default) { /* use platform specific function to get the value */ return rsct_get_environment(Name, Default); } bool CBaseReader::IsNotSet(void *ptr,int len) { uint8_t *p=(uint8_t *)ptr; while(len--) { if(*p++!=0xff) return false; } return true; } uint16_t CBaseReader::InversByteOrderShort(uint16_t Value) { return (uint16_t)((Value << 8) | (Value >> 8)); } uint32_t CBaseReader::InversByteOrderLong(uint32_t Value) { return (uint32_t)((Value << 24) | ((Value << 8) & 0x00ff0000) | ((Value >> 8) & 0x0000ff00) | (Value >> 24)); } static int GetBits(uint8_t Value) { int Res=0; while(Value) { if(Value & 1) Res++; Value>>=1; } return Res; } int CBaseReader::check_len(uint8_t *atr,uint32_t buf_len,uint8_t **historical,uint32_t *hist_len) { uint8_t *ptr; uint8_t len; uint8_t len1; uint8_t v; int t1=0; ptr=atr+1; v=*ptr; len1=(uint8_t)((*hist_len=(uint8_t)(v & 0x0f))+2); len=0; do { v=(uint8_t)GetBits((uint8_t)((*ptr) & 0xf0)); len+=v; if(buf_len>=len && ((*ptr)&0x80)) { ptr+=v; if(!t1 && ((*ptr) & 0x0f)!=0) { len1++; t1=1; } } else { *historical=ptr+v+1; break; } }while(buf_len>len); if(t1) { uint32_t i; uint8_t lrc=0; for(i=1;i 0 && (m_p_Slot[Slot].m_ATR[0]==0x3b || m_p_Slot[Slot].m_ATR[0]==0x3f)) { if(check_len(m_p_Slot[Slot].m_ATR,m_p_Slot[Slot].m_ATR_Length,&(m_p_Slot[Slot].m_Historical),&(m_p_Slot[Slot].m_Historical_Length))==1) { ptr=m_p_Slot[Slot].m_ATR+1; Dx=*ptr++; if(Dx & 0x10) { m_p_Slot[Slot].m_TA1=*ptr++; hasTA1=1; } if(Dx & 0x20) { if(*ptr!=0 && !warm) { error=1; } ptr++; } else { if(!warm) error=1; } if(Dx & 0x40) { m_p_Slot[Slot].m_TC1=*ptr++; } if(Dx & 0x80) { TD1=Dx=*ptr++; protocol=1<<(Dx & 0x0f); if((Dx & 0x0f)>1) error=1; if(Dx & 0x10) { if(*ptr++ & 0x10) error=1; specific=1; } if(Dx & 0x20) { error=1; ptr++; } if(Dx & 0x40) { if((m_p_Slot[Slot].m_TC2=*ptr++)==0) error=1; } if(Dx & 0x80) { Dx=*ptr++; if((Dx & 0x0f)!=1 && (protocol!=1 || (Dx & 0x0e)!=0x0e)) error=1; protocol|=1<<(Dx & 0x0f); if((Dx & 0x0f)==1) { if(Dx & 0x10) { if((m_p_Slot[Slot].m_TA3=*ptr++)<0x10 || m_p_Slot[Slot].m_TA3==0xff) error=1; } if(Dx & 0x20) { //check this for emv m_p_Slot[Slot].m_TB3=*ptr; if(m_p_Slot[Slot].m_ApduNorm==NORM_EMV) { if(m_p_Slot[Slot].m_TB3>0x45 || (m_p_Slot[Slot].m_TB3&0x0f)>0x05 || ((1<<(m_p_Slot[Slot].m_TB3&0x0f))<=m_p_Slot[Slot].m_TC1+1 && m_p_Slot[Slot].m_TC1!=0xff)) error=1; } ptr++; } else if(m_p_Slot[Slot].m_ApduNorm==NORM_EMV) error=1; if(Dx & 0x40) { m_p_Slot[Slot].m_TC3=*ptr; if(m_p_Slot[Slot].m_TC3!=0) error=1; } } } else if(protocol&2) error=1; } } else if(check_len(m_p_Slot[Slot].m_ATR,m_p_Slot[Slot].m_ATR_Length,&(m_p_Slot[Slot].m_Historical),&(m_p_Slot[Slot].m_Historical_Length))==2) { error=1; } else { error=2; } if(error==2 || (error==1 && warm)) { IfdPower(SCARD_POWER_DOWN,0,0,Slot); error=2; } } else error=2; if(error==0) { if(specific) { if((TD1 & 0x0f)==0) { m_p_Slot[Slot].m_PossibleProtocols=SCARD_PROTOCOL_T0; m_p_Slot[Slot].m_ActiveProtocol=SCARD_PROTOCOL_T0; m_p_Slot[Slot].m_ReaderState=SCARD_SPECIFIC; } else if((TD1 & 0x0f)==1) { m_p_Slot[Slot].m_PossibleProtocols=SCARD_PROTOCOL_T1; m_p_Slot[Slot].m_ActiveProtocol=SCARD_PROTOCOL_T1; m_p_Slot[Slot].m_ReaderState=SCARD_SPECIFIC; } else { error=1; } } else { if(protocol&1) { m_p_Slot[Slot].m_PossibleProtocols|=SCARD_PROTOCOL_T0; m_p_Slot[Slot].m_ReaderState=SCARD_NEGOTIABLE; } if(protocol&2) { m_p_Slot[Slot].m_PossibleProtocols|=SCARD_PROTOCOL_T1; m_p_Slot[Slot].m_ReaderState=SCARD_NEGOTIABLE; } } } else if(m_p_Slot[Slot].m_ATR_Length == 4 && (m_p_Slot[Slot].m_ATR[0]==0x2c || m_p_Slot[Slot].m_ATR[0]==0x92 || m_p_Slot[Slot].m_ATR[0]==0xa2 || m_p_Slot[Slot].m_ATR[0]==0x82)) { m_p_Slot[Slot].m_Historical_Length=0; m_p_Slot[Slot].m_PossibleProtocols=SCARD_PROTOCOL_RAW; m_p_Slot[Slot].m_ActiveProtocol=SCARD_PROTOCOL_RAW; m_p_Slot[Slot].m_ReaderState=SCARD_SPECIFIC; if(m_p_Slot[Slot].m_ATR[0]==0x82) { if((m_p_Slot[Slot].m_ATR[1]&0x07)>3) m_p_Slot[Slot].m_iic_pagesize=1<<((m_p_Slot[Slot].m_ATR[1]&0x07)-3); else m_p_Slot[Slot].m_iic_pagesize=1; if(m_p_Slot[Slot].m_iic_pagesize * (0x0080<<(((m_p_Slot[Slot].m_ATR[1] & 0x78)>>3)-1))>2048) m_p_Slot[Slot].m_iic_offset_bytes=2; else m_p_Slot[Slot].m_iic_offset_bytes=1; } SetSyncParameters(m_p_Slot[Slot].m_iic_offset_bytes,m_p_Slot[Slot].m_iic_pagesize,Slot); } else if(m_p_Slot[Slot].m_ATR_Length == 4 && (m_p_Slot[Slot].m_ATR[0]==0xff || (m_p_Slot[Slot].m_ATR[0] & 0xf0)==0x80)) { m_p_Slot[Slot].m_Historical_Length=0; m_p_Slot[Slot].m_PossibleProtocols=SCARD_PROTOCOL_RAW; m_p_Slot[Slot].m_ActiveProtocol=SCARD_PROTOCOL_RAW; m_p_Slot[Slot].m_ReaderState=SCARD_NEGOTIABLE; } else if(m_p_Slot[Slot].m_ATR[0]==0x41) { m_p_Slot[Slot].m_Historical_Length=0; m_p_Slot[Slot].m_Historical=NULL; m_p_Slot[Slot].m_PossibleProtocols=SCARD_PROTOCOL_RAW; m_p_Slot[Slot].m_ActiveProtocol=SCARD_PROTOCOL_RAW; m_p_Slot[Slot].m_ReaderState=SCARD_SPECIFIC; } return error; } CJ_RESULT CBaseReader::CtSetAPDUNorm(const EApduNorm Norm,uint8_t Slot) { m_p_Slot[Slot].m_ApduNorm=Norm; return CJ_SUCCESS; } CJ_RESULT CBaseReader::CtSetContrast(EContrast eContrast,uint32_t *Result) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtSetBacklight(EBacklight eBacklight,uint32_t *Result) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtSetSilentMode(bool boolMode,bool *pboolMode,uint32_t *Result) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } CJ_RESULT CBaseReader::CtGetSilentMode(bool *pboolMode,uint32_t *Result) { RET_RESULT(SCARD_E_UNSUPPORTED_FEATURE); } uint8_t CBaseReader::GetDefaultVoltageClass(uint8_t Slot) { uint8_t Power; if(Slot>0) { char buffer[16]; sprintf(buffer,"PowerClass%d",Slot); Power=(uint8_t)GetEnviroment(buffer,1); } else { Power=(uint8_t)GetEnviroment("PowerClass",1); } if(Power<1 || Power>3) Power=1; return Power; } pcsc-cyberjack-3.99.5final.sp05/cjeca32/BaseReader.h000066400000000000000000000143611231776762100217050ustar00rootroot00000000000000 #ifndef ECA_BASEREADER_H #define ECA_BASEREADER_H #include "cjeca32.h" #include "BaseCommunication.h" class CReader; class CBaseCommunication; typedef struct { uint32_t m_ReaderState; uint32_t m_ActiveProtocol; uint8_t m_ATR[33]; uint32_t m_ATR_Length; uint8_t *m_Historical; uint32_t m_Historical_Length; uint8_t m_TA1; //speed uint8_t m_TC1; //XGT uint8_t m_TC2; //WT uint8_t m_TA3; //IFSC uint8_t m_TB3; //BWI/CWI uint8_t m_TC3; //LRC/CRC uint32_t m_PossibleProtocols; EApduNorm m_ApduNorm; uint8_t m_iic_deviceaddr; uint8_t m_iic_offset_bytes; uint8_t m_iic_pagesize; bool m_bIsRF; uint8_t m_SerialNumber[10]; int m_SerialNumberLength; }tCardParam; class CBaseReader { public: CBaseReader(CReader *Owner,CBaseCommunication *Communicator); virtual CJ_RESULT PostCreate(); virtual ~CBaseReader(void); void Unconnect(void); public: virtual char CtData(uint8_t *sad,uint8_t *dad,const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len); public: RSCT_IFD_RESULT IfdPower(uint32_t Mode,uint8_t *ATR,uint32_t *ATR_Length,uint8_t Slot=0); virtual RSCT_IFD_RESULT IfdSetProtocol(uint32_t *Protocol,uint8_t Slot=0); virtual RSCT_IFD_RESULT IfdGetState(uint32_t *State,uint8_t Slot=0); virtual RSCT_IFD_RESULT IfdSetAttribute(const uint8_t *Input,uint32_t InputLength); virtual RSCT_IFD_RESULT IfdGetAttribute(uint32_t Tag,uint8_t *Attribute,uint32_t *AttributeLength); virtual RSCT_IFD_RESULT IfdSwallow(uint8_t Slot=0); virtual RSCT_IFD_RESULT IfdEject(uint8_t Slot=0); virtual RSCT_IFD_RESULT IfdVendor(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength); virtual RSCT_IFD_RESULT IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot=0); virtual RSCT_IFD_RESULT IfdIoControl(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength); protected: virtual RSCT_IFD_RESULT _IfdPower(uint32_t Mode,uint8_t *ATR,uint32_t *ATR_Length,uint32_t Timeout,uint8_t Slot); int Write(void *Message,uint32_t len); int Read(void *Response,uint32_t *ResponseLen); uint8_t *GetTag(uint8_t *start,int len,uint8_t tagvalue,int *taglen); virtual CJ_RESULT SetSyncParameters(uint8_t AddrByteCount, uint16_t PageSize,uint8_t Slot=0)=0; virtual uint32_t GetReadersInputBufferSize()=0; public: virtual CJ_RESULT CtLoadModule(uint8_t *pData,uint32_t DataLength,uint8_t *pSgn,uint32_t SgnLength,uint32_t *Result); virtual CJ_RESULT CtKeyUpdate(uint8_t *pData,uint32_t DataLength,uint32_t *Result); virtual CJ_RESULT CtIsKeyUpdateRecommended(uint8_t *pData,uint32_t DataLength,uint32_t *EstimatedUpdateTime); virtual CJ_RESULT CtDeleteModule(uint32_t ModuleID,uint32_t *Result); virtual CJ_RESULT CtActivateModule(uint32_t ModuleID,uint32_t *Result); virtual CJ_RESULT CtDeactivateModule(uint32_t ModuleID,uint32_t *Result); virtual CJ_RESULT CtDeleteALLModules(uint32_t *Result); CJ_RESULT CtListModules(uint32_t *Count,cj_ModuleInfo *ModuleInfo); virtual CJ_RESULT CtGetModuleInfoFromFile(uint8_t *pData,uint32_t DataLength,cj_ModuleInfo *ModuleInfo,uint32_t *EstimatedUpdateTime); CJ_RESULT CtFreeModuleInfoList(cj_ModuleInfo *pModuleInfo); virtual CJ_RESULT CtIsModuleUpdateRecommended(uint8_t *pData,uint32_t DataLength,uint32_t *EstimatedUpdateTime); virtual CJ_RESULT CtGetActiveModuleID(uint32_t *ID,uint32_t *Result); virtual CJ_RESULT CtGetActivationID(uint32_t *ID,uint32_t *Result); virtual CJ_RESULT CtApplicationData(uint32_t ApplicationID,uint16_t Function,uint8_t *InputData, uint32_t InputLen, uint32_t *Result, uint8_t *ResponseData, uint32_t *ResponseLen, uint8_t *ApplicationError,uint32_t *ApplicationErrorLength); virtual CJ_RESULT CtSelfTest(void); virtual CJ_RESULT CtSelfTest2(const uint8_t *TransportKey,uint8_t KeyNr); virtual CJ_RESULT CtShowAuth(void); virtual CJ_RESULT CtSetContrast(EContrast eContrast,uint32_t *Result); virtual CJ_RESULT CtSetBacklight(EBacklight eBacklight,uint32_t *Result); virtual CJ_RESULT CtSetSilentMode(bool boolMode,bool *pboolMode,uint32_t *Result); virtual CJ_RESULT CtGetSilentMode(bool *pboolMode,uint32_t *Result); virtual CJ_RESULT CtSetModulestoreInfo(uint8_t *Info,uint8_t InfoLength); virtual CJ_RESULT CtGetModulestoreInfo(uint8_t *Info,uint8_t *InfoLength); CJ_RESULT CtSetAPDUNorm(const EApduNorm Norm,uint8_t Slot=0); virtual CJ_RESULT InstallAndStartIFDHandler(); virtual CJ_RESULT StopIFDHandler(); virtual CJ_RESULT IntroduceReaderGroups(); CJ_RESULT CtGetReaderInfo(cj_ReaderInfo *pReaderInfo); protected: virtual CJ_RESULT BuildReaderInfo()=0; virtual CJ_RESULT BuildModuleInfo()=0; virtual uint16_t HostToReaderShort(uint16_t Value) = 0; virtual uint32_t HostToReaderLong(uint32_t Value) = 0; virtual uint16_t ReaderToHostShort(uint16_t Value); virtual uint32_t ReaderToHostLong(uint32_t Value); uint16_t InversByteOrderShort(uint16_t Value); uint32_t InversByteOrderLong(uint32_t Value); virtual void SetHWString(char *String)=0; virtual cj_ModuleInfo *FindModule(uint32_t ModuleID); cj_ModuleInfo *FindModuleWithMask(uint32_t ModuleID,uint32_t Mask); bool IsConnected(); bool IsNotSet(void *ptr,int len); int AnalyseATR(bool warm,uint8_t Slot=0); virtual void ConnectionError(); public: uint32_t GetEnviroment(const char *Name,uint32_t Default); void SetChangeInterruptCallback(fctChangeIntCallback ChangeIntCallback,ctxPtr ChangeOwner); void SetKeyInterruptCallback(fctKeyIntCallback KeyIntCallback,ctxPtr KeyOwner); virtual void DoInterruptCallback(uint8_t *Data,uint32_t ulDataLen)=0; uint8_t m_maxSlot; protected: virtual uint8_t GetDefaultVoltageClass(uint8_t Slot=0); CBaseCommunication *m_pCommunicator; cj_ReaderInfo m_ReaderInfo; cj_ModuleInfo *m_pModuleInfo; uint32_t m_ModuleInfoCount; CReader *m_Owner; ctxPtr m_KeyCallbackCtx; fctKeyIntCallback m_KeyIntCallback; ctxPtr m_ChangeCallbackCtx; fctChangeIntCallback m_ChangeIntCallback; tCardParam *m_p_Slot; uint8_t m_reader_path_len; uint8_t m_reader_path[10]; uint8_t m_reader_file[2]; private: int check_len(uint8_t *atr,uint32_t buf_len,uint8_t **historical,uint32_t *hist_len); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/BaseTranslater.cpp000066400000000000000000000003201231776762100231430ustar00rootroot00000000000000#include "Platform.h" #include "BaseTranslater.h" CBaseTranslater::CBaseTranslater(CBaseCommunication *Communicator) { m_Communicator=Communicator; } CBaseTranslater::~CBaseTranslater(void) { } pcsc-cyberjack-3.99.5final.sp05/cjeca32/BaseTranslater.h000066400000000000000000000004331231776762100226150ustar00rootroot00000000000000#ifndef ECA_BASETRANSLATER_H #define ECA_BASETRANSLATER_H class CBaseCommunication; class CBaseTranslater { public: CBaseTranslater(CBaseCommunication *Communicator); public: virtual ~CBaseTranslater(void); private: CBaseCommunication *m_Communicator; }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/CCIDReader.cpp000066400000000000000000002473271231776762100221020ustar00rootroot00000000000000#include "Platform.h" #include "CCIDReader.h" #include "Reader.h" #include "BaseCommunication.h" #include #include #include "memory_placements.h" #define base CBaseReader using namespace std; CCCIDReader::CCCIDReader(CReader *Owner,CBaseCommunication *Communicator) :CBaseReader(Owner,Communicator) ,cmd_buffer(NULL) ,cmd_buffer_len(0) ,ifd_in_buffer(NULL) ,ifd_in_buffer_len(0) ,m_SequenceNo(0) { } CCCIDReader::~CCCIDReader(void) { if(cmd_buffer_len>0) delete [] cmd_buffer; if(ifd_in_buffer_len>0) delete [] ifd_in_buffer; } #ifdef IT_TEST2 int CCCIDReader::Transfer(CCID_Message *Message, CCID_Response *Response, uint8_t Slot) { int Res; CCID_Message InternalMessage; CCID_Response InternalResponse; CheckReaderDepended(*Message); memset(&InternalMessage,0,sizeof(InternalMessage)); InternalMessage.bMessageType=PC_TO_RDR_GETSLOTSTATUS; InternalMessage.bSeq=m_SequenceNo+1; memset(&InternalResponse,0,sizeof(InternalResponse)); uint32_t Length=Message->dwLength; Message->bSeq=m_SequenceNo; /* if(Message->bMessageType==PC_TO_RDR_ESCAPE && Message->dwLength>12) { if(Message->Data.Escape.Reader.EC30.dwApplication==0x55555555 && Message->Data.Escape.Reader.EC30.wFunction==0) { uint16_t lFilter=(uint16_t)((((uint16_t)Message->Data.Escape.Reader.EC30.Data.abDate[0])<<8)+((uint16_t)Message->Data.Escape.Reader.EC30.Data.abDate[1]))); uint16_t lMatch =(uint16_t)((((uint16_t)Message->Data.Escape.Reader.EC30.Data.abDate[1])<<8)+((uint16_t)Message->Data.Escape.Reader.EC30.Data.abDate[3]))); uint16_t lPost=(uint16_t)((((uint16_t)Message->Data.Escape.Reader.EC30.Data.abDate[2])<<8)+((uint16_t)Message->Data.Escape.Reader.EC30.Data.abDate[5]))); if(Message->dwLength==12+lFilter+lMatch+lPost) { if(lFilter>m_lFilter) { if(m_lFilter) { delete[] m_bFilter; m_lFilter=0; } m_bFilter=new uint16_t[ } } }*/ #ifdef IT_TEST if(Message->bMessageType!=PC_TO_RDR_SECURE) #endif Message->bSlot=Slot; if(!m_pCommunicator) return CJ_ERR_DEVICE_LOST; Message->dwLength=HostToReaderLong(Length); if((Res=Write(Message,10+Length))!=CJ_SUCCESS) { return Res; } if(Message->bMessageType==PC_TO_RDR_SECURE) { if((Res=Write(&InternalMessage,10))!=CJ_SUCCESS) { return Res; } } Length=sizeof(CCID_Response); if((Res=m_pCommunicator->Read(Response,&Length))!=CJ_SUCCESS) { return Res; } if(Message->bMessageType==PC_TO_RDR_SECURE) { uint32_t L=sizeof(InternalResponse); if((Res=m_pCommunicator->Read(&InternalResponse,&L))!=CJ_SUCCESS) { return Res; } } if(m_SequenceNo!=Response->bSeq) { return CJ_ERR_SEQ; } if((Response->bStatus & 3)!=0) { m_p_Slot[Slot].m_ActiveProtocol=0; m_p_Slot[Slot].m_ATR_Length=0; } if((Response->bStatus & 3)==2) m_p_Slot[Slot].m_ReaderState=SCARD_ABSENT; m_SequenceNo++; if(Message->bMessageType==PC_TO_RDR_SECURE) m_SequenceNo++; Response->dwLength=ReaderToHostLong(Response->dwLength); return CJ_SUCCESS; } #else int CCCIDReader::Transfer(CCID_Message *Message, CCID_Response *Response,uint8_t Slot) { int Res; uint32_t Length; CheckReaderDepended(*Message); Length=Message->dwLength; Message->bSeq=m_SequenceNo; #ifdef IT_TEST if(Message->bMessageType!=PC_TO_RDR_SECURE) #endif Message->bSlot=Slot; if(!m_pCommunicator) return CJ_ERR_DEVICE_LOST; Message->dwLength=HostToReaderLong(Length); if((Res=Write(Message,10+Length))!=CJ_SUCCESS) { return Res; } do { Length=sizeof(CCID_Response); if((Res=m_pCommunicator->Read(Response,&Length))!=CJ_SUCCESS) { return Res; } while(m_SequenceNo!=Response->bSeq) { Length=sizeof(CCID_Response); if((Res=m_pCommunicator->Read(Response,&Length))!=CJ_SUCCESS) { return CJ_ERR_SEQ; } } }while(Message->bMessageType==PC_TO_RDR_XFRBLOCK && Response->bMessageType==RDR_TO_PC_DATABLOCK && Response->bStatus==0x80 && Response->dwLength==0 && Length==10); if((Response->bStatus & 3)!=0) { m_p_Slot[Slot].m_ActiveProtocol=0; m_p_Slot[Slot].m_ATR_Length=0; } if((Response->bStatus & 3)==2) m_p_Slot[Slot].m_ReaderState=SCARD_ABSENT; m_SequenceNo++; Response->dwLength=ReaderToHostLong(Response->dwLength); return CJ_SUCCESS; } #endif void CCCIDReader::DoInterruptCallback(uint8_t *Data,uint32_t ulDataLen) { if(ulDataLen==2) { m_CriticalCallback.Enter(); switch(Data[0]) { case RDR_TO_PC_NOTIFYSLOTCHANGE: if(Data[1] & 1) m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_INT,"NOTIFY: Slotstatus changed -- Inserted"); else m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_INT,"NOTIFY: Slotstatus changed -- Removed"); if(m_ChangeIntCallback!=NULL) m_ChangeIntCallback(m_ChangeCallbackCtx,Data[1] & 1); break; case RDR_TO_PC_KEYEVENT: m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_INT,"NOTIFY: Key event"); if(m_KeyIntCallback!=NULL) m_KeyIntCallback(m_KeyCallbackCtx,Data[1]); break; default: m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_INT | DEBUG_MASK_COMMUNICATION_ERROR,"Unknown Interrupt"); } m_CriticalCallback.Leave(); } } RSCT_IFD_RESULT CCCIDReader::IfdGetState(uint32_t *State,uint8_t Slot) { CCID_Message Message; CCID_Response Response; memset(&Message,0,sizeof(Message)); *State=SCARD_UNKNOWN; Message.bMessageType=PC_TO_RDR_GETSLOTSTATUS; if(Transfer(&Message,&Response,Slot)==CJ_SUCCESS) { if(Response.bMessageType!=RDR_TO_PC_SLOTSTATUS) return STATUS_SUCCESS; switch(Response.bStatus & 3) { case 0: *State=m_p_Slot[Slot].m_ReaderState; break; case 1: *State=SCARD_SWALLOWED; m_p_Slot[Slot].m_ReaderState=SCARD_SWALLOWED; break; default: *State=SCARD_ABSENT; m_p_Slot[Slot].m_ReaderState=SCARD_ABSENT; } } else return STATUS_DEVICE_NOT_CONNECTED; return STATUS_SUCCESS; } RSCT_IFD_RESULT CCCIDReader::IfdSetProtocol(uint32_t *pProtocol,uint8_t Slot) { CCID_Message Message; CCID_Response Response; memset(&Message,0,sizeof(Message)); uint32_t Protocol=*pProtocol; *pProtocol=0; Message.bMessageType=PC_TO_RDR_SETPARAMETERS; if(m_p_Slot[Slot].m_ReaderState==SCARD_ABSENT) return STATUS_NO_MEDIA; if(m_p_Slot[Slot].m_ReaderState==SCARD_NEGOTIABLE) { char bufferTA1[128]; char bufferTC1[128]; char bufferc[3]; if(m_p_Slot[Slot].m_ATR[0]==0xff || (m_p_Slot[Slot].m_ATR[0] & 0xf0)==0x80) { *pProtocol=SCARD_PROTOCOL_RAW; return STATUS_SUCCESS; } sprintf(bufferTA1,"ReplaceTA1_%02X",(int)m_p_Slot[Slot].m_TA1); strcpy(bufferTC1,"ReplaceTC1_"); for(unsigned int i=0;i0) delete cmd_buffer; cmd_buffer_len=lenc+4096; cmd_buffer=new uint8_t[cmd_buffer_len]; if(cmd_buffer==NULL) return -11; } memcpy(cmd_buffer,cmd,lenc); return _CtData(sad,dad,cmd_buffer,lenc,response,lenr); } bool CCCIDReader::CopyIfdInput(const uint8_t *Input,uint32_t Length) { if(ifd_in_buffer_len0) delete ifd_in_buffer; ifd_in_buffer_len=Length+4096; ifd_in_buffer=new uint8_t[ifd_in_buffer_len]; if(ifd_in_buffer==NULL) ifd_in_buffer_len=0; } if(ifd_in_buffer) memcpy(ifd_in_buffer,Input,Length); return (ifd_in_buffer==NULL); } bool CCCIDReader::IsClass3(void) { return false; } void CCCIDReader::TransformText(uint8_t *tag,int len) { while(len) { len--; if(*tag=='\r') *tag='\n'; tag++; } } CJ_RESULT CCCIDReader::cjOutput(uint8_t timeout,uint8_t *tag50,int tag50len) { return CJ_SUCCESS; } CJ_RESULT CCCIDReader::KTLightCall(uint8_t *sad,uint8_t *dad,uint8_t *cmd, uint16_t lenc,int32_t Lc,uint8_t *data_ptr,int32_t Le,uint8_t *response,uint16_t *lenr) { *sad=2; *dad=2; *lenr=2; memcpy(response,"\x6d\x00",2); return CJ_SUCCESS; } char CCCIDReader::_CtData(uint8_t *sad,uint8_t *dad,uint8_t *cmd, uint16_t lenc,uint8_t *response,uint16_t *lenr) { uint8_t *data_ptr=NULL; int32_t Lc=-1; int32_t Le=-1; int i; if(*dad==1 && *sad==2) { if(*lenr<2) { *lenr=0; return -11; } if(lenc==5) { Le=cmd[4]; } else if(lenc==5+cmd[4]) { Lc=cmd[4]; data_ptr=cmd+5; #if defined(_LINUX) /* bugfix 20071018 MPreuss: in case of REQUEST_ICC it is ok to omit Le in APDU */ if (cmd[0]==0x20 && cmd[1]==0x12) Le=0; #endif } else if(lenc==6+cmd[4] && cmd[4]!=0) { Lc=cmd[4]; data_ptr=cmd+5; Le=cmd[lenc-1]; } else if(lenc>=7 && cmd[4]==0) { if(lenc==7) { Le=((int32_t)cmd[5]<<8)+cmd[6]; } else if(lenc==7+((uint32_t)cmd[5]<<8)+cmd[6]) { Lc=((int32_t)cmd[5]<<8)+cmd[6]; data_ptr=cmd+7; } else if(lenc==9+((uint32_t)cmd[5]<<8)+cmd[6] && (cmd[5]!=0 || cmd[6]!=0)) { Lc=((int32_t)cmd[5]<<8)+cmd[6]; data_ptr=cmd+7; Le=((int32_t)cmd[lenc-2]<<8)+cmd[lenc-1]; } else { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } } else if(lenc!=4) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } *dad=2; *sad=1; if(cmd[0]==0x00) { if(cmd[1]==0xa4) { if(cmd[2]!=0 || cmd[3]!=0) { response[0]=0x6A; response[1]=0x00; *lenr=2; return 0; } if(Lc!=2) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } if(memcmp(data_ptr,"\x3f\x00",2)==0) { if(*lenr<12) { return -11; } memcpy(m_reader_path,cmd+5,2); m_reader_path_len=2; memset(m_reader_file,0,2); memcpy(response,"\x00\x2d\x00\x2d\x88\x00\x00\x00\x00\x00\x90\x00",12); *lenr=12; return 0; } if(memcmp(data_ptr,"\x00\x20",2)==0 && m_reader_path_len==2 && memcmp(m_reader_path,"\x3f\x00",2)==0) { if(*lenr<12) { return -11; } memcpy(m_reader_file,cmd+5,2); memcpy(response,"\x00\x0e\x00\x0e\x08\x00\x00\x00\x00\x00\x90\x00",12); *lenr=12; return 0; } if(memcmp(data_ptr,"\x7f\x60",2)==0 && m_reader_path_len==2 && memcmp(m_reader_path,"\x3f\x00",2)==0) { if(*lenr<12) { return -11; } memcpy(m_reader_path+2,cmd+5,2); m_reader_path_len=4; memset(m_reader_file,0,2); memcpy(response,"\x00\x05\x00\x05\x88\x00\x00\x00\x00\x00\x90\x00",12); *lenr=12; return 0; } if(memcmp(data_ptr,"\x60\x20",2)==0 && m_reader_path_len==4 && memcmp(m_reader_path,"\x3f\x00\x7F\x60",4)==0) { if(*lenr<12) { return -11; } memcpy(m_reader_file,cmd+5,2); memcpy(response,"\x00\x10\x00\x10\x08\x00\x00\x00\x00\x00\x90\x00",12); *lenr=12; return 0; } if(memcmp(data_ptr,"\x60\x21",2)==0 && m_reader_path_len==4 && memcmp(m_reader_path,"\x3f\x00\x7F\x60",4)==0) { if(*lenr<12) { return -11; } memcpy(m_reader_file,cmd+5,2); memcpy(response,"\x00\x10\x00\x10\x08\x00\x00\x00\x00\x00\x90\x00",12); *lenr=12; return 0; } if(memcmp(data_ptr,"\x60\x30",2)==0 && m_reader_path_len==4 && memcmp(m_reader_path,"\x3f\x00\x7F\x60",4)==0) { if(*lenr<12) { return -11; } memcpy(m_reader_file,cmd+5,2); memcpy(response,"\x00\x04\x00\x04\x08\x00\x00\x00\x00\x00\x90\x00",12); *lenr=12; return 0; } if(memcmp(data_ptr,"\x60\x31",2)==0 && m_reader_path_len==4 && memcmp(m_reader_path,"\x3f\x00\x7F\x60",4)==0) { if(*lenr<12) { return -11; } memcpy(m_reader_file,cmd+5,2); memcpy(response,"\x00\x03\x00\x03\x08\x00\x00\x00\x00\x00\x90\x00",12); *lenr=12; return 0; } if(memcmp(data_ptr,"\x7f\x70",2)==0 && m_reader_path_len==2 && memcmp(m_reader_path,"\x3f\x00",2)==0) { if(*lenr<12) { return -11; } memcpy(m_reader_path+2,cmd+5,2); m_reader_path_len=4; memset(m_reader_file,0,2); memcpy(response,"\x00\x19\x00\x19\x88\x00\x00\x00\x00\x00\x90\x00",12); *lenr=12; return 0; } if(memcmp(data_ptr,"\x70\x20",2)==0 && m_reader_path_len==4 && memcmp(m_reader_path,"\x3f\x00\x7F\x70",4)==0) { if(*lenr<12) { return -11; } memcpy(m_reader_file,cmd+5,2); memcpy(response,"\x00\x0f\x00\x0f\x08\x00\x00\x00\x00\x00\x90\x00",12); *lenr=12; return 0; } if(memcmp(data_ptr,"\x70\x21",2)==0 && m_reader_path_len==4 && memcmp(m_reader_path,"\x3f\x00\x7F\x70",4)==0) { if(*lenr<12) { return -11; } memcpy(m_reader_file,cmd+5,2); memcpy(response,"\x00\x10\x00\x10\x08\x00\x00\x00\x00\x00\x90\x00",12); *lenr=12; return 0; } response[0]=0x6A; response[1]=0x82; *lenr=2; return 0; } else if(cmd[1]==0xb0) { if(m_reader_path_len==2 && memcmp(m_reader_path,"\x3f\x00",2)==0 && memcmp(m_reader_file,"\x00\x20",2)==0) { if(*lenr<16) return -11; memcpy(response,"\x01\x05\x43\x4a\x50\x50\x41\x02\01\00\x03\x02\x20\x00\x90\x00",16); *lenr=16; return 0; } if(m_reader_path_len==4 && memcmp(m_reader_path,"\x3f\x00\x7f\x60",4)==0 && memcmp(m_reader_file,"\x60\x20",2)==0) { if(*lenr<18) return -11; memcpy(response,"\x03\x02\x20\x00\x10\x01\x00\x11\x01\x00\x12\x01\x00\x13\x01\x00\x90\x00",18); *lenr=18; return 0; } if(m_reader_path_len==4 && memcmp(m_reader_path,"\x3f\x00\x7f\x60",4)==0 && memcmp(m_reader_file,"\x60\x21",2)==0) { if(*lenr<18) return -11; memcpy(response,"\x03\x02\x20\x00\x10\x01\x00\x11\x01\x00\x12\x01\x00\x13\x01\x00\x90\x00",18); *lenr=18; return 0; } if(m_reader_path_len==4 && memcmp(m_reader_path,"\x3f\x00\x7f\x60",4)==0 && memcmp(m_reader_file,"\x60\x30",2)==0) { if(*lenr<6) return -11; memcpy(response,"\x30\x02\x01\x03\x90\x00",6); *lenr=6; return 0; } if(m_reader_path_len==4 && memcmp(m_reader_path,"\x3f\x00\x7f\x60",4)==0 && memcmp(m_reader_file,"\x60\x31",2)==0) { if(*lenr<5) return -11; memcpy(response,"\x30\x01\xff\x90\x00",5); *lenr=5; return 0; } if(m_reader_path_len==4 && memcmp(m_reader_path,"\x3f\x00\x7f\x70",4)==0 && memcmp(m_reader_file,"\x70\x20",2)==0) { if(*lenr<17) return -11; memcpy(response,"\x03\x02\x20\x00\x20\x01\x81\x22\x06\01\x02\x03\x80\x81\x82\x90\x00",17); *lenr=17; return 0; } if(m_reader_path_len==4 && memcmp(m_reader_path,"\x3f\x00\x7f\x70",4)==0 && memcmp(m_reader_file,"\x70\x21",2)==0) { if(*lenr<18) return -11; memcpy(response,"\x03\x02\x20\x00\x21\x02\x01\x89\x22\x06\01\x02\x03\x80\x81\x82\x90\x00",17); *lenr=18; return 0; } response[0]=0x69; response[1]=0x82; *lenr=2; return 0; } else { response[0]=0x6D; response[1]=0x00; *lenr=2; return 0; } } else if(cmd[0]==0x20) { if(cmd[1]==0x10) /*B1*/ { if(cmd[2]>m_maxSlot || cmd[2]==0 && cmd[3]!=0 || cmd[2]>=1 && cmd[2]<=m_maxSlot && cmd[3]>2) { response[0]=0x6A; response[1]=0x00; *lenr=2; return 0; } /* FIX 2007/11/29: Seems like this expression is incorrect, at least it deviates from "0x20, 0x11" */ /*if(cmd[2]==1 && cmd[3]>0 || Lc!=-1 || Le!=0)*/ if(cmd[2]==1 && cmd[3]>0 && (Lc!=-1 || Le!=0)) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } if(cmd[2]==0) { for(i=0;i=1 && cmd[2]<=m_maxSlot) { uint8_t atr[250]; uint8_t historical[15]; uint8_t hist_len=sizeof(historical); uint8_t atr_len=(uint8_t)sizeof(atr); switch(ctBcsReset(atr,&atr_len,historical,&hist_len,0,0,cmd[2]-1)) { case CJ_SUCCESS: if(cmd[3]==0) { if(atr[0]==0x3b || atr[0]==0x3f) { response[0]=0x90; response[1]=0x01; } else { response[0]=0x90; response[1]=0x00; } *lenr=2; } else if(cmd[3]==1) { if(atr_len+2>*lenr) { IfdPower(SCARD_POWER_DOWN,0,0,cmd[2]-1); return -11; } else { memcpy(response,atr,atr_len); if(atr[0]==0x3b || atr[0]==0x3f) { response[atr_len]=0x90; response[atr_len+1]=0x01; } else { response[atr_len]=0x90; response[atr_len+1]=0x00; } *lenr=(uint16_t)(atr_len+2); } } else { if(hist_len+2>*lenr) { IfdPower(SCARD_POWER_DOWN,0,0,cmd[2]-1); *lenr=0; return -11; } else { memcpy(response,historical,hist_len); if(atr[0]==0x3b || atr[0]==0x3f) { response[hist_len]=0x90; response[hist_len+1]=0x01; } else { response[hist_len]=0x90; response[hist_len+1]=0x00; } *lenr=(uint16_t)(hist_len+2); } } return 0; case CJ_ERR_PARITY: case CJ_ERR_TIMEOUT: case CJ_ERR_PROT: response[0]=0x64; response[1]=0x00; *lenr=2; return 0; case CJ_ERR_NO_ICC: response[0]=0x64; response[1]=0xA1; *lenr=2; return 0; default: IfdPower(SCARD_POWER_DOWN,0,0,cmd[2]-1); return -128; } } else { response[0]=0x90; response[1]=0x00; *lenr=2; return 0; } } else if(cmd[1]==0x11) { if(cmd[2]>m_maxSlot || cmd[2]==0 && cmd[3]!=0 || cmd[2]>=1 && cmd[2]<=m_maxSlot && cmd[3]>2) { response[0]=0x6A; response[1]=0x00; *lenr=2; return 0; } if(cmd[2]>=1 && cmd[2]<=m_maxSlot && cmd[3]>0 && (Lc!=-1 || Le!=0)) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } if(cmd[2]==0) { for(i=0;i=1 && cmd[2]<=m_maxSlot) { uint8_t atr[250]; uint8_t historical[15]; uint8_t hist_len=sizeof(historical); uint8_t atr_len=(uint8_t)sizeof(atr); switch(ctBcsReset(atr,&atr_len,historical,&hist_len,0,0,cmd[2]-1)) { case CJ_SUCCESS: if(cmd[3]==0) { if(atr[0]==0x3b || atr[0]==0x3f) { response[0]=0x90; response[1]=0x01; } else { response[0]=0x90; response[1]=0x00; } *lenr=2; } else if(cmd[3]==1) { if(atr_len+2>*lenr) { IfdPower(SCARD_POWER_DOWN,0,0,cmd[2]-1); *lenr=0; return -11; } else { memcpy(response,atr,atr_len); if(atr[0]==0x3b || atr[0]==0x3f) { response[atr_len]=0x90; response[atr_len+1]=0x01; } else { response[atr_len]=0x90; response[atr_len+1]=0x00; } *lenr=(uint16_t)(atr_len+2); } } else { if(hist_len+2>*lenr) { IfdPower(SCARD_POWER_DOWN,0,0,cmd[2]-1); *lenr=0; return -11; } else { memcpy(response,historical,hist_len); if(atr[0]==0x3b || atr[0]==0x3f) { response[hist_len]=0x90; response[hist_len+1]=0x01; } else { response[hist_len]=0x90; response[hist_len+1]=0x00; } *lenr=(uint16_t)(hist_len+2); } } return 0; case CJ_ERR_PARITY: case CJ_ERR_TIMEOUT: case CJ_ERR_PROT: response[0]=0x64; response[1]=0x00; *lenr=2; return 0; case CJ_ERR_NO_ICC: response[0]=0x64; response[1]=0xA1; *lenr=2; return 0; default: IfdPower(SCARD_POWER_DOWN,0,0,cmd[2]-1); return -128; } } else { response[0]=0x90; response[1]=0x00; *lenr=2; return 0; } } else if(cmd[1]==0x12) { uint32_t State; int Timeout=0; cmd[3]&=0x0f; if(cmd[2]<1 || cmd[2]>m_maxSlot || cmd[3]>2) { response[0]=0x6A; response[1]=0x00; *lenr=2; return 0; } if(cmd[3]>0 && (Le!=0)) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } if(IfdGetState(&State,cmd[2]-1)==STATUS_DEVICE_NOT_CONNECTED) { *lenr=0; return -128; } if(State==SCARD_SPECIFIC) { response[0]=0x62; response[1]=0x01; *lenr=2; return 0; } if(Lc!=-1) { uint8_t *tag80; int taglen; if((tag80=GetTag(data_ptr,Lc,0x80,&taglen))!=NULL || Lc==1) { if(Lc==1) Timeout=data_ptr[0]; else { if(taglen!=1) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } Timeout=*tag80; } } } { uint8_t atr[250]; uint8_t historical[15]; uint8_t hist_len=sizeof(historical); uint8_t atr_len=(uint8_t)sizeof(atr); Timeout*=1000; switch(ctBcsReset(atr,&atr_len,historical,&hist_len,0,Timeout,cmd[2]-1)) { case CJ_SUCCESS: if(cmd[3]==0) { if(atr[0]==0x3b || atr[0]==0x3f) { response[0]=0x90; response[1]=0x01; } else { response[0]=0x90; response[1]=0x00; } *lenr=2; } else if(cmd[3]==1) { if(atr_len+2>*lenr) { IfdPower(SCARD_POWER_DOWN,0,0,cmd[2]-1); return -11; } else { memcpy(response,atr,atr_len); if(atr[0]==0x3b || atr[0]==0x3f) { response[atr_len]=0x90; response[atr_len+1]=0x01; } else { response[atr_len]=0x90; response[atr_len+1]=0x00; } *lenr=(uint16_t)(atr_len+2); } } else { if(hist_len+2>*lenr) { IfdPower(SCARD_POWER_DOWN,0,0,cmd[2]-1); return -11; } else { memcpy(response,historical,hist_len); if(atr[0]==0x3b || atr[0]==0x3f) { response[hist_len]=0x90; response[hist_len+1]=0x01; } else { response[hist_len]=0x90; response[hist_len+1]=0x00; } *lenr=(uint16_t)(hist_len+2); } } return 0; case CJ_ERR_PARITY: case CJ_ERR_TIMEOUT: case CJ_ERR_PROT: response[0]=0x64; response[1]=0x00; *lenr=2; return 0; case CJ_ERR_PIN_CANCELED: response[0]=0x64; response[1]=0x01; *lenr=2; return 0; case CJ_ERR_NO_ICC: response[0]=0x62; response[1]=0x00; *lenr=2; return 0; default: IfdPower(SCARD_POWER_DOWN,0,0,cmd[2]-1); *lenr=0; return -128; } } } else if(cmd[1]==0x13) { if(lenc==4 && cmd[2]>=0x01 && cmd[2]<= m_maxSlot && cmd[3]==0x00) { if(*lenr<8) { *lenr=0; return -11; } response[0] = 0x71; response[1] = 0x01; response[2] = 0x00; response[3] = 0x72; response[4] = 0x01; switch(m_p_Slot[cmd[2]-1].m_ActiveProtocol) { case SCARD_PROTOCOL_T0: response[5]=0; break; case SCARD_PROTOCOL_T1: response[5]=1; break; default: response[5]=0; } response[6] = 0x90; response[7] = 0x00; *lenr=8; return 0; } else if(Lc!=-1 || Le!=0) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } if(cmd[2]>m_maxSlot || (cmd[2]==0 && cmd[3]!=0x46 && cmd[3]!=0x80 && cmd[3]!=0x81) || (cmd[2]>=1 && cmd[2]<=m_maxSlot && cmd[3]!=0x80)) { response[0]=0x6A; response[1]=0x00; *lenr=2; return 0; } if(cmd[3]==0x80) { uint32_t State; if(cmd[2]==0) { uint8_t i; if(*lenr<4+m_maxSlot) { *lenr=0; return -11; } response[0]=0x80; response[1]=1; for(i=0;i>4),(int)(m_ReaderInfo.Version & 0x0f)); else sprintf((char *)(response+12)," V%1d.%1d",(int)(2),(int)(0)); if(IsClass3() && *lenr>=29) { memcpy(response+17,"; Rev. ",7); sprintf((char *)(response+24),"%3d",(int)Info->Revision); response[1]=25; response[27]=0x90; response[28]=0x00; *lenr=29; } else { response[1]=15; response[17]=0x90; response[18]=0x00; *lenr=19; } } return 0; } else if(cmd[1]==0x14) { if(Lc!=-1 || Le!=0) { response[0]=0x6A; response[1]=0x00; *lenr=2; return 0; } if(cmd[2]<1 || cmd[2]>m_maxSlot || cmd[3]!=0) { response[0]=0x6A; response[1]=0x00; *lenr=2; return 0; } if(IfdPower(SCARD_POWER_DOWN,0,0,cmd[2]-1)!=STATUS_SUCCESS) return -10; if(m_p_Slot[cmd[2]-1].m_ReaderState!=SCARD_ABSENT) { response[0]=0x90; response[1]=0x00; } else { response[0]=0x64; response[1]=0xA1; } *lenr=2; return 0; } else if(cmd[1]==0x15) { if(cmd[2]<1 || cmd[2]>m_maxSlot) { response[0]=0x6A; response[1]=0x00; *lenr=2; return 0; } if(lenc!=4 && (Lc==-1 || Le!=-1)) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } if(IfdPower(SCARD_POWER_DOWN,0,0,cmd[2]-1)!=STATUS_SUCCESS) return -10; if((cmd[3]&0x04)!=0x04 && lenc>4) { uint8_t *tag80; int taglen; int Timeout=0; uint32_t State; if((tag80=GetTag(data_ptr,Lc,0x80,&taglen))!=NULL || Lc==1) { if(Lc==1) Timeout=data_ptr[0]; else { if(taglen!=1) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } Timeout=*tag80; } Timeout*=1000; _IfdPower(SCARD_POWER_DOWN,0,0,Timeout,cmd[2]-1); if(IfdGetState(&State,cmd[2]-1)==STATUS_DEVICE_NOT_CONNECTED) return -10; if(State==SCARD_ABSENT) { response[0]=0x90; response[1]=0x01; } else { response[0]=0x62; response[1]=0x00; } } else { response[0]=0x90; response[1]=0x00; } } else { response[0]=0x90; response[1]=0x00; } *lenr=2; return 0; } else if(cmd[1]==0x16 && IsClass2() && (!IsClass3() || FindModule(MODULE_ID_MKT_COMP))) { int charlen; uint8_t timeout=15; uint8_t *tag80; uint8_t *tag50; int taglen; int taglen50; int i,j; uint8_t buffer[256]; uint8_t text[256]; uint8_t key; fctKeyIntCallback merkcallback; ctxPtr Context; if(Le==-1) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } if(cmd[2]!=0x50 || (cmd[3]&0x0f)>0x02 || (cmd[3]&0xf0)>0x10 || (cmd[3]&0xf0)==0x10 && Le!=01) { response[0]=0x6A; response[1]=0x00; *lenr=2; return 0; } merkcallback=m_KeyIntCallback; Context=m_KeyCallbackCtx; SetKeyInterruptCallback(NULL,NULL); if(Lc!=-1 && ((tag80=GetTag(data_ptr,Lc,0x80,&taglen))!=NULL || Lc==1)) { if(Lc==1) timeout=data_ptr[0]; else { if(taglen!=1) { response[0]=0x67; response[1]=0x00; *lenr=2; SetKeyInterruptCallback(merkcallback,Context); return 0; } timeout=*tag80; } } charlen=Le; if(charlen==0) charlen=256; tag50=GetTag(data_ptr,Lc,0x50,&taglen50); if(tag50) { TransformText(tag50,taglen50); } for(i=0;im_maxSlot) cmd[2]=1; if(CheckUpdate()) { // MessageBox(NULL,"Bitte Leser updaten.\nPlease update your reader.","Warnung - Warning",MB_ICONSTOP | MB_OK); response[0]=0x6A; response[1]=0x03; *lenr=2; return 0; } if(Lc<8 || Le!=-1) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } else { uint8_t *tag80; uint8_t *tag51; int taglen; if((tag80=GetTag(data_ptr,Lc,0x80,&taglen))!=NULL) { if(taglen!=1) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } timeout=*tag80; } if((tag80=GetTag(data_ptr,Lc,0x52,&taglen))!=NULL) { uint8_t PinLength; uint8_t Min; uint8_t Max; uint8_t PinType; uint8_t Condition; uint8_t PinPosition; uint8_t PinLengthPosition=0; uint8_t PinLengthSize=0; int outlen; int inlen; int use_MV=0; uint8_t buffer[260]; uint8_t rbuffer[260]; uint8_t Prologue[3]; int Res; if(taglen<6) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } memcpy(buffer,tag80+2,taglen-2); PinLength=tag80[0]>>4; if(tag80[1]>5) PinPosition=tag80[1]-6; else { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } if(taglen==6) { buffer[4]=0; taglen++; } else { if(PinPosition>taglen-7) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } } switch(tag80[0] & 3) { case 0: PinType=1; if(taglen==7) { if(PinLength==0) { Min=1; Max=30; Condition=2; PinLength=15; buffer[4]=0; outlen=5; } else { Min=PinLength; Max=PinLength; PinLength=PinLength/2+(PinLength & 1); Condition=1; //memset(buffer+5,0xff,PinLength); outlen=5; buffer[4]=0; } } else { if(PinLength==0) { Min=1; Max=30; Condition=2; PinLength=15; outlen=(taglen-2); buffer[4]=0; } else { /* if(PinLength/2+(PinLength & 1)+PinPosition>taglen-7) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; }*/ Min=PinLength; Max=PinLength; PinLength=PinLength/2+(PinLength & 1); Condition=1; buffer[4]=0; outlen=taglen-2; } } break; case 1: PinType=2; if(taglen==7) { if(PinLength==0) { Min=1; Max=15; Condition=2; PinLength=15; outlen=5; } else { Min=PinLength; Max=PinLength; Condition=1; outlen=5; } } else { if(PinLength==0) { Min=1; Max=15; Condition=2; PinLength=15; buffer[4]=0; outlen=(taglen-2); } else { Min=PinLength; Max=PinLength; Condition=1; buffer[4]=0; outlen=taglen-2; } } break; case 2: PinType=1; PinLengthPosition=4; PinLengthSize=4; PinPosition++; if(PinPosition>1) { use_MV=1; } if(buffer[4]12) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } PinLength=7; Condition=1; } break; default: response[0]=0x6A; response[1]=0x00; *lenr=2; return 0; } Prologue[0]=0; /* if(((cjccidHANDLE)hDevice)->PCB_seq&0x01) Prologue[1]=0x40; else Prologue[1]=0; Prologue[2]=outlen;*/ inlen=sizeof(rbuffer); if((tag51=GetTag(data_ptr,Lc,0x51,&taglen))!=NULL) { if(taglen==2) { if(tag51[0]>=4 || (tag80[0] & 3)!=2) Min=tag51[0]; if(tag51[1]>=Min) Max=tag51[1]; if(Max>12 && (tag80[0] & 3)==2) { Max=12; } } } tag50[0]=GetTag(data_ptr,Lc,0x50,&(taglen50[0])); if(tag50[0]) { TextCount=3; TransformText(tag50[0],taglen50[0]); btaglen50[2]=btaglen50[1]=btaglen50[0]=(uint8_t)taglen50[0]; tag50[2]=tag50[1]=tag50[0]; } tag53=GetTag(data_ptr,Lc,0x53,&taglen53); if(tag53) { if(taglen53==1) { bMessageIndex=tag53[0]; bMessageArray[1]=tag53[0]; } } if(use_MV) bNumberMessage=0xff; else bNumberMessage=0x01; tag54=GetTag(data_ptr,Lc,0x54,&taglen54); if(tag54) { if(taglen54==1) { bNumberMessage=tag54[0]; } } #ifdef IT_TEST switch(Res=cjccid_SecurePV(timeout,PinPosition,PinType, PinLengthSize,PinLength, PinLengthPosition, Min,Max, Condition,Prologue, buffer,outlen,rbuffer,&inlen,cmd[2]-1,tag50[0],taglen50[0],bMessageIndex,bNumberMessage)) #else switch(Res=((use_MV==0)?cjccid_SecurePV(timeout,PinPosition,PinType, PinLengthSize,PinLength, PinLengthPosition, Min,Max, Condition,Prologue, buffer,outlen,rbuffer,&inlen,tag50[0],taglen50[0],bMessageIndex,bNumberMessage,cmd[2]-1): cjccid_SecureMV(timeout,1,PinType, PinLengthSize,PinLength, PinLengthPosition, Min,Max, 0, Condition,Prologue, 0,PinPosition-1, buffer,outlen,rbuffer,&inlen,TextCount,tag50,btaglen50,bMessageArray,bNumberMessage,cmd[2]-1))) #endif { case CJ_SUCCESS: case CJ_ERR_PIN_EXTENDED: if(*lenrm_maxSlot || cmd[3]!=0) { response[0]=0x6A; response[1]=0x00; *lenr=2; return 0; } if(CheckUpdate()) { // MessageBox(NULL,"Bitte Leser updaten.\nPlease update your reader.","Warnung - Warning",MB_ICONSTOP | MB_OK); response[0]=0x6A; response[1]=0x03; *lenr=2; return 0; } if(Lc<9 || Le!=-1) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } else { uint8_t *tag80; uint8_t *tag51; int taglen; if((tag80=GetTag(data_ptr,Lc,0x80,&taglen))!=NULL) { if(taglen!=1) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } timeout=*tag80; } if((tag80=GetTag(data_ptr,Lc,0x52,&taglen))!=NULL) { uint8_t PinLength; uint8_t Min; uint8_t Max; uint8_t PinType; uint8_t Condition; uint8_t PinPositionOld; uint8_t PinPositionNew; uint8_t PinPosition=0; uint8_t PinLengthPosition=0; uint8_t PinLengthSize=0; int outlen; int inlen; uint8_t buffer[260]; uint8_t rbuffer[260]; uint8_t Prologue[3]; uint8_t bConfirmPIN; int Res; if(taglen<7) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } memcpy(buffer,tag80+3,taglen-3); PinLength=tag80[0]>>4; if(tag80[1]>5 && tag80[1]!=tag80[2]) { PinPositionOld=tag80[1]-6; bConfirmPIN=2; } else if(tag80[2]>5 && tag80[1]==tag80[2]) { PinPositionOld=0; bConfirmPIN=0; } else { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } if(tag80[2]>5) { PinPositionNew=tag80[2]-6; } else if(tag80[2]==0) { if((tag80[0] & 3)==2 && tag80[1]!=0) PinPositionNew=PinPositionOld+8; else PinPositionNew=0; } else { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } if(taglen==7) { buffer[4]=0; taglen++; } switch(tag80[0] & 3) { case 0: PinType=1; if(taglen==8) { if(PinLength==0) { Min=1; if(tag80[1]>5 && tag80[1]!=tag80[2]) { Max=2*abs(PinPositionNew-PinPositionOld); if(Max>30) Max=30; } else Max=30; if(Max==0) Max=30; Condition=2; PinLength=(Max>>1)+(Max&1); buffer[4]=0; outlen=5; } else { Min=PinLength; Max=PinLength; PinLength=PinLength/2+(PinLength & 1); Condition=1; buffer[4]=0; outlen=5; } } else { if(PinLength==0) { Min=1; if(tag80[1]>5 && tag80[1]!=tag80[2]) { Max=2*abs(PinPositionNew-PinPositionOld); if((taglen-8-max(PinPositionNew,PinPositionOld))*2>Max) Max=(taglen-8-max(PinPositionNew,PinPositionOld))*2; if(Max>30) Max=30; } else Max=30; if(Max==0) Max=30; PinLength=(Max>>1)+(Max&1); buffer[4]=0; Condition=2; outlen=(taglen-3); } else { Min=PinLength; Max=PinLength; PinLength=PinLength/2+(PinLength & 1); Condition=1; outlen=taglen-3; buffer[4]=0; } } break; case 1: PinType=2; if(taglen==8) { if(PinLength==0) { Min=1; if(tag80[1]>5 && tag80[1]!=tag80[2]) { Max=abs(PinPositionNew-PinPositionOld); if(Max>15) Max=15; } else Max=15; if(Max==0) Max=15; PinLength=Max; Condition=2; buffer[4]=0; outlen=5; } else { Min=PinLength; Max=PinLength; Condition=1; buffer[4]=0; outlen=5; } } else { if(PinLength==0) { Min=1; if(tag80[1]>5 && tag80[1]!=tag80[2]) { Max=abs(PinPositionNew-PinPositionOld); if(taglen-8-max(PinPositionNew,PinPositionOld)>Max) Max=taglen-8-max(PinPositionNew,PinPositionOld); if(Max>15) Max=15; } else Max=15; if(Max==0) Max=15; PinLength=Max; Condition=2; outlen=(taglen-3); buffer[4]=0; } else { Min=PinLength; Max=PinLength; Condition=1; buffer[4]=0; outlen=taglen-3; } } break; case 2: PinType=1; // PinPositionNew++; // PinPositionOld++; PinPosition=1; PinLengthPosition=4; PinLengthSize=4; if(PinPositionNew>240 || PinPositionOld>240) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } if(buffer[4]12) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } PinLength=7; Condition=1; } break; default: response[0]=0x6A; response[1]=0x00; *lenr=2; return 0; } Prologue[0]=0; /* if(((cjccidHANDLE)hDevice)->PCB_seq&0x01) Prologue[1]=0x40; else Prologue[1]=0; Prologue[2]=outlen;*/ inlen=sizeof(rbuffer); if((tag51=GetTag(data_ptr,Lc,0x51,&taglen))!=NULL) { if(taglen==2) { if(tag51[0]>=4 || (tag80[0] & 3)!=2) Min=tag51[0]; if(tag51[1]>=Min) Max=tag51[1]; if(Max>12 && (tag80[0] & 3)==2) { Max=12; } } } cmd_ptr=data_ptr; cmd_len=Lc; int j=0; for(int i=0;i<5;i++) { tag50[j]=GetTag(cmd_ptr,cmd_len,0x50,&(taglen50[j])); if(tag50[j]) { cmd_ptr+=2+taglen50[j]; if(cmd_len<2+taglen50[j]) break; cmd_len-=2+taglen50[j]; if(i==0 || i==3 || i==4) { TextCount++; TransformText(tag50[j],taglen50[j]); btaglen50[j]=(uint8_t)taglen50[j]; j++; } } else break; } tag53=GetTag(data_ptr,Lc,0x53,&taglen53); if(tag53) { if(taglen53==3) { memcpy(bMessageIndex,tag53,3); } } if(bMessageIndex[1]==0) { bMessageIndex[1]=1; } bNumberMessage=0xff; tag54=GetTag(data_ptr,Lc,0x54,&taglen54); if(tag54) { if(taglen54==1) { bNumberMessage=tag54[0]; } } #ifdef IT_TEST switch(Res=cjccid_SecureMV(timeout,PinPosition,PinType, PinLengthSize,PinLength, PinLengthPosition, Min,Max, (bConfirmPIN | 1), Condition,Prologue, PinPositionOld,PinPositionNew, buffer,outlen,rbuffer,&inlen,cmd[2]-1,TextCount,tag50,btaglen50,bMessageIndex,bNumberMessage)) #else switch(Res=cjccid_SecureMV(timeout,PinPosition,PinType, PinLengthSize,PinLength, PinLengthPosition, Min,Max, (bConfirmPIN | 1), Condition,Prologue, PinPositionOld,PinPositionNew, buffer,outlen,rbuffer,&inlen,TextCount,tag50,btaglen50,bMessageIndex,bNumberMessage,cmd[2]-1)) #endif { case CJ_SUCCESS: case CJ_ERR_PIN_EXTENDED: /* if(((cjccidHANDLE)hDevice)->Protokoll==1) { Res=PVMVT1(hDevice,Res,rbuffer,inlen,&inlen); }*/ if(*lenr=0x70 && cmd[1]<=0x76 && IsClass3() && FindModuleWithMask(MODULE_ID_KT_LIGHT,0xfffffeff)) { switch(KTLightCall(sad,dad,cmd,lenc,Lc,data_ptr,Le,response,lenr)) { case CJ_ERR_WRITE_DEVICE: case CJ_ERR_DEVICE_LOST: *lenr=0; return -128; case CJ_ERR_RBUFFER_TO_SMALL: *lenr=0; return -11; case CJ_SUCCESS: return 0; default: *lenr=0; return -10; } } else { response[0]=0x6D; response[1]=0x00; *lenr=2; return 0; } } else if(cmd[0]==0x80) { if(cmd[1]==0x60) { uint8_t *tag44; int taglen; if(cmd[2]<0x01 || cmd[2]>m_maxSlot || cmd[3]!=0x00) { response[0]=0x6A; response[1]=0x00; *lenr=2; return 0; } if(cmd[4]<3) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } if((tag44=GetTag(cmd+5,cmd[4],0x44,&taglen))!=NULL) { if(taglen!=1) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } if((*tag44 & 0xf0)==0x90) { m_p_Slot[cmd[2]-1].m_iic_offset_bytes=2; } else { m_p_Slot[cmd[2]-1].m_iic_offset_bytes=1; } m_p_Slot[cmd[2]-1].m_iic_pagesize=1<<(*tag44 & 0x0f); SetSyncParameters(m_p_Slot[cmd[2]-1].m_iic_offset_bytes,m_p_Slot[cmd[2]-1].m_iic_pagesize,cmd[2]-1); } if((tag44=GetTag(cmd+5,cmd[4],0x45,&taglen))!=NULL) { if(taglen!=1) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } m_p_Slot[cmd[2]-1].m_iic_deviceaddr=*tag44; } if((tag44=GetTag(cmd+5,cmd[4],0x22,&taglen))!=NULL) { if(taglen!=1) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } if(m_p_Slot[cmd[2]-1].m_ActiveProtocol != SCARD_PROTOCOL_T0 && m_p_Slot[cmd[2]-1].m_ActiveProtocol != SCARD_PROTOCOL_T1) { response[0]=0x90; response[1]=0x00; *lenr=2; return 0; } if(m_p_Slot[cmd[2]-1].m_ActiveProtocol==SCARD_PROTOCOL_T0 && *tag44!=1 || m_p_Slot[cmd[2]-1].m_ActiveProtocol==SCARD_PROTOCOL_T1 && *tag44!=2) { uint8_t atr[250]; uint8_t historical[15]; uint8_t hist_len=sizeof(historical); uint8_t atr_len=(uint8_t)sizeof(atr); IfdPower(SCARD_POWER_DOWN,0,0,cmd[2]-1); switch(ctBcsReset(atr,&atr_len,historical,&hist_len,*tag44,0,cmd[2]-1)) { case CJ_SUCCESS: if(m_p_Slot[cmd[2]-1].m_ActiveProtocol==SCARD_PROTOCOL_T0 && *tag44==1 || m_p_Slot[cmd[2]-1].m_ActiveProtocol==SCARD_PROTOCOL_T1 && *tag44==2) { if(atr[0]==0x3b || atr[0]==0x3f) { response[0]=0x90; response[1]=0x01; } else { response[0]=0x90; response[1]=0x00; } *lenr=2; } else { response[0]=0x64; response[1]=0xA3; } break; default: response[0]=0x64; response[1]=0xA3; } *lenr=2; return 0; } response[0]=0x90; response[1]=0x01; *lenr=2; return 0; } response[0]=0x90; response[1]=0x00; *lenr=2; return 0; } /* else if(cmd[1]==0x61 && cmd[2]==0x81 && cmd[3]==0 && ((cjccidHANDLE)hDevice)->Protokoll==6 || ((cjccidHANDLE)hDevice)->Protokoll==7 && lenc>=6) { int le=0; if(lenc==cmd[4]+6) { le=cmd[lenc-1]; if(le==0) le=256; } if(*lenrInfo.Flags & 1)==0 && cmd[1]==0x61 && cmd[2]==0x82 && cmd[3]==0 && cmd[4]==0) { uint16_t Counter; if(*lenr<4) { *lenr=0; return -11; } switch(cjccid_GetStackSignCounter(hDevice,&Counter)) { case CJ_SUCCESS: response[0]=(uint8_t)(Counter>>8); response[1]=(uint8_t)(Counter); response[2]=0x90; response[3]=0x00; *lenr=4; return 0; default: response[0]=0x60; response[1]=0x00; *lenr=2; return 0; } }*/ else { response[0]=0x6D; response[1]=0x00; *lenr=2; return 0; } } else { response[0]=0x6E; response[1]=0x00; *lenr=2; return 0; } } else if((*dad!=1 && *dad<=m_maxSlot) && *sad==2) { *sad=*dad; *dad=2; if(*lenr<2) return -11; switch(_IfdTransmit(cmd,lenc,response,lenr,(*sad>1)?(*sad-1):0)) { case STATUS_SUCCESS: return 0; case STATUS_IO_TIMEOUT: case STATUS_DEVICE_PROTOCOL_ERROR: *sad=1; response[0]=0x6f; response[1]=0x00; *lenr=2; return 0; case STATUS_INVALID_PARAMETER: *sad=1; response[0]=0x67; response[1]=0x00; *lenr=2; return 0; case STATUS_INVALID_DEVICE_STATE: if(m_p_Slot[(*sad>1)?(*sad-1):0].m_ReaderState==SCARD_ABSENT) { *sad=1; response[0]=0x64; response[1]=0xA1; *lenr=2; return 0; } else { *sad=1; response[0]=0x64; response[1]=0xA2; *lenr=2; return 0; } case STATUS_BUFFER_TOO_SMALL: *lenr=0; return -11; case STATUS_DEVICE_NOT_CONNECTED: *lenr=0; return -128; default: *lenr=0; return -1; } } else { *lenr=0; return -1; } } int CCCIDReader::ExecuteSecureResult(CCID_Response *Response,uint8_t *in,int *in_len,int offs) { if(Response->bStatus & 0x02) return CJ_ERR_NO_ICC; else if(Response->bStatus & 0x01) return CJ_ERR_NO_ACTIVE_ICC; if(Response->bStatus & 0x40) { if(Response->bError==XFR_PARITY_ERROR) return CJ_ERR_PARITY; else if(Response->bError==ICC_MUTE) return CJ_ERR_TIMEOUT; else if(Response->bError==PIN_TIMEOUT) return CJ_ERR_PIN_TIMEOUT; else if(Response->bError==PIN_CANCELED) return CJ_ERR_PIN_CANCELED; else if(Response->bError==PIN_DIFFERENT) return CJ_ERR_PIN_DIFFERENT; else if(Response->bError==EXT_ERROR) { if(*in_len<(int)Response->dwLength) return CJ_ERR_RBUFFER_TO_SMALL; memcpy(in,Response->Data.abData,Response->dwLength); *in_len=Response->dwLength; return CJ_ERR_PIN_EXTENDED; } else if(Response->bError==5) return CJ_ERR_WRONG_PARAMETER; else if(Response->bError==21+offs) return CJ_ERR_WRONG_PARAMETER; else if(Response->bError==26+offs) return CJ_ERR_CONDITION_OF_USE; else if(Response->bError==DEACTIVATED_PROTOCOL) { if(Response->bStatus & 0x02) return CJ_ERR_NO_ICC; else if(Response->bStatus & 0x01) return CJ_ERR_NO_ACTIVE_ICC; } else return CJ_ERR_LEN; } if(*in_len<(int)Response->dwLength) return CJ_ERR_RBUFFER_TO_SMALL; memcpy(in,Response->Data.abData,Response->dwLength); *in_len=Response->dwLength; return CJ_SUCCESS; } #ifdef IT_TEST int CCCIDReader::cjccid_SecurePV(uint8_t Timeout, uint8_t PinPosition,uint8_t PinType, uint8_t PinLengthSize,uint8_t PinLength, uint8_t PinLengthPosition, uint8_t Min, uint8_t Max, uint8_t Condition,uint8_t *Prologue, uint8_t *out,int out_len,uint8_t *in,int *in_len,uint8_t Slot,uint8_t *Text,uint8_t Textlen,uint8_t bMessageIndex,uint8_t bNumberMessage) #else int CCCIDReader::cjccid_SecurePV(uint8_t Timeout, uint8_t PinPosition,uint8_t PinType, uint8_t PinLengthSize,uint8_t PinLength, uint8_t PinLengthPosition, uint8_t Min, uint8_t Max, uint8_t Condition,uint8_t *Prologue, uint8_t *out,int out_len,uint8_t *in,int *in_len,uint8_t *Text,uint8_t Textlen,uint8_t bMessageIndex,uint8_t bNumberMessage,uint8_t Slot) #endif { CCID_Message Message; CCID_Response Response; int Res; cj_ModuleInfo *Info; Message.bMessageType=PC_TO_RDR_SECURE; Message.dwLength=out_len+15; #ifdef IT_TEST Message.bSlot=Slot; #endif Message.Header.Secure.bBWI=0; Message.Header.Secure.wLevelParameter=HostToReaderShort(0); Message.Data.Secure.bPINOperation=0; Message.Data.Secure.bTimeOut=Timeout; Message.Data.Secure.bmFormatString=(uint8_t)(0x80 | (PinPosition<<3) | PinType); Message.Data.Secure.bmPINBlockString=(uint8_t)((PinLengthSize<<4) | PinLength); Message.Data.Secure.bmPINLengthFormat=PinLengthPosition; Message.Data.Secure.Data.Verify.wPINMaxExtraDigit=HostToReaderShort((((uint16_t)Min)<<8)+Max); Message.Data.Secure.Data.Verify.bEntryValidationCondition=Condition; Message.Data.Secure.Data.Verify.bNumberMessage=bNumberMessage; Message.Data.Secure.Data.Verify.wLangId=HostToReaderShort(0x0409); Message.Data.Secure.Data.Verify.bMsgIndex=bMessageIndex; memcpy(Message.Data.Secure.Data.Verify.bTeoPrologue,Prologue,3); memcpy(Message.Data.Secure.Data.Verify.abData,out,out_len); #ifdef _INSERT_KEY_EVENTS { uint8_t buffer[2]; buffer[0]=RDR_TO_PC_KEYEVENT; buffer[1]=0xa0; DoInterruptCallback(buffer,2); } #endif Info=FindModule(MODULE_ID_KT_LIGHT_GC); if(Info!=NULL && Info->Status==MODULE_READY) SetSMModeAndCount(MODULE_ID_KT_LIGHT_GC,1); Res=Transfer(&Message,&Response,Slot); #ifdef _INSERT_KEY_EVENTS if(Info!=NULL && Info->Status==MODULE_READY) SetSMModeAndCount(0,0); if(Res==CJ_SUCCESS) { if((Response.bStatus & 0x03)==0 && (((Response.bStatus & 0x40) && Response.bError==PIN_CANCELED) || (Response.bStatus & 0x40)==0)) { uint8_t buffer[2]; buffer[0]=RDR_TO_PC_KEYEVENT; if(Response.bError==PIN_CANCELED) buffer[1]=0x01; else buffer[1]=0x02; DoInterruptCallback(buffer,2); } } { uint8_t buffer[2]; buffer[0]=RDR_TO_PC_KEYEVENT; buffer[1]=0xa1; DoInterruptCallback(buffer,2); } #endif if(Res) return Res; return ExecuteSecureResult(&Response,in,in_len,0); } #ifdef IT_TEST int CCCIDReader::cjccid_SecureMV(uint8_t Timeout, uint8_t PinPosition,uint8_t PinType, uint8_t PinLengthSize,uint8_t PinLength, uint8_t PinLengthPosition, uint8_t Min, uint8_t Max, uint8_t bConfirmPIN, uint8_t Condition,uint8_t *Prologue, uint8_t OffsetOld,uint8_t OffsetNew, uint8_t *out,int out_len,uint8_t *in,int *in_len,uint8_t Slot,int TextCount,uint8_t *Text[3],uint8_t Textlen[3],uint8_t bMessageIndex[3],uint8_t bNumberMessage) #else int CCCIDReader::cjccid_SecureMV(uint8_t Timeout, uint8_t PinPosition,uint8_t PinType, uint8_t PinLengthSize,uint8_t PinLength, uint8_t PinLengthPosition, uint8_t Min, uint8_t Max, uint8_t bConfirmPIN, uint8_t Condition,uint8_t *Prologue, uint8_t OffsetOld,uint8_t OffsetNew, uint8_t *out,int out_len,uint8_t *in,int *in_len,int TextCount,uint8_t *Text[3],uint8_t Textlen[3],uint8_t bMessageIndex[3],uint8_t bNumberMessage,uint8_t Slot) #endif { CCID_Message Message; CCID_Response Response; int Res; //cj_ModuleInfo *Info=FindModule(MODULE_ID_KERNEL); Message.bMessageType=PC_TO_RDR_SECURE; Message.dwLength=out_len+20; #ifdef IT_TEST Message.bSlot=Slot; #else Message.bSlot=0; #endif Message.Header.Secure.bBWI=0; Message.Header.Secure.wLevelParameter=HostToReaderShort(0); Message.Data.Secure.bPINOperation=1; Message.Data.Secure.bTimeOut=Timeout; Message.Data.Secure.bmFormatString=(uint8_t)(0x80 | (PinPosition<<3) | PinType); Message.Data.Secure.bmPINBlockString=(uint8_t)((PinLengthSize<<4) | PinLength); Message.Data.Secure.bmPINLengthFormat=PinLengthPosition; Message.Data.Secure.Data.Modify.bInsertionOffsetOld=OffsetOld; Message.Data.Secure.Data.Modify.bInsertionOffsetNew=OffsetNew; Message.Data.Secure.Data.Modify.wPINMaxExtraDigit=HostToReaderShort((((uint16_t)Min)<<8)+Max); Message.Data.Secure.Data.Modify.bConfirmPIN= bConfirmPIN; Message.Data.Secure.Data.Modify.bEntryValidationCondition=Condition; Message.Data.Secure.Data.Modify.bNumberMessage=bNumberMessage; Message.Data.Secure.Data.Modify.wLangId=HostToReaderShort(0x0409); Message.Data.Secure.Data.Modify.bMsgIndex1=bMessageIndex[0]; Message.Data.Secure.Data.Modify.bMsgIndex2=bMessageIndex[1]; Message.Data.Secure.Data.Modify.bMsgIndex3=bMessageIndex[2]; memcpy(Message.Data.Secure.Data.Modify.bTeoPrologue,Prologue,3); memcpy(Message.Data.Secure.Data.Modify.abData,out,out_len); #ifdef _INSERT_KEY_EVENTS { uint8_t buffer[2]; buffer[0]=RDR_TO_PC_KEYEVENT; buffer[1]=0xa0; DoInterruptCallback(buffer,2); } #endif Res=Transfer(&Message,&Response,Slot); if(Res!=0) { #ifdef _INSERT_KEY_EVENTS uint8_t buffer[2]; buffer[0]=RDR_TO_PC_KEYEVENT; buffer[1]=0xa1; DoInterruptCallback(buffer,2); #endif return Res; } #ifdef _INSERT_KEY_EVENTS if((Response.bStatus & 0x03)==0 && (((Response.bStatus & 0x40) && Response.bError==PIN_CANCELED) || (Response.bStatus & 0x40)==0)) { uint8_t buffer[2]; buffer[0]=RDR_TO_PC_KEYEVENT; if(Response.bError==PIN_CANCELED) buffer[1]=0x01; else buffer[1]=0x02; DoInterruptCallback(buffer,2); } { uint8_t buffer[2]; buffer[0]=RDR_TO_PC_KEYEVENT; buffer[1]=0xa1; DoInterruptCallback(buffer,2); } #endif return ExecuteSecureResult(&Response,in,in_len,5); } RSCT_IFD_RESULT CCCIDReader::IfdVendor(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength) { uint8_t dad,sad; uint16_t Len; switch(IoCtrlCode) { case CJPCSC_VEN_IOCTRL_ESCAPE: switch(CCID_Escape(Input,InputLength,Output,OutputLength)) { case CJ_SUCCESS: return STATUS_SUCCESS; case CJ_ERR_INTERNAL_BUFFER_OVERFLOW: return STATUS_INSUFFICIENT_RESOURCES; case CJ_ERR_DEVICE_LOST: return STATUS_DEVICE_NOT_CONNECTED; case CJ_ERR_RBUFFER_TO_SMALL: return STATUS_BUFFER_TOO_SMALL; case CJ_ERR_SEQ: return STATUS_DEVICE_PROTOCOL_ERROR; default: return STATUS_UNHANDLED_EXCEPTION; } break; case CJPCSC_VEN_IOCTRL_VERIFY_PIN_DIRECT: if(InputLengthulDataLength) return STATUS_INVALID_BUFFER_SIZE; return IfdVerifyPinDirect((PIN_VERIFY_STRUCTURE *)Input,Output,OutputLength); case CJPCSC_VEN_IOCTRL_MODIFY_PIN_DIRECT: if(InputLengthulDataLength) return STATUS_INVALID_BUFFER_SIZE; return IfdModifyPinDirect((PIN_MODIFY_STRUCTURE *)Input,Output,OutputLength); case CJPCSC_VEN_IOCTRL_SET_NORM: if(InputLength<1) return STATUS_INVALID_BUFFER_SIZE; else CtSetAPDUNorm((EApduNorm)(Input[0])); if(OutputLength!=NULL) *OutputLength=0; return STATUS_SUCCESS; case CJPCSC_VEN_IOCTRL_MCT_READERDIRECT: dad=1; sad=2; if(*OutputLength>0xffff) Len=0xffff; else Len=(USHORT)*OutputLength; switch(CtData(&sad,&dad,Input,InputLength,Output,&Len)) { case 0: *OutputLength=Len; return STATUS_SUCCESS; case -11: *OutputLength=0; return STATUS_BUFFER_TOO_SMALL; default: *OutputLength=0; return STATUS_DEVICE_NOT_CONNECTED; } default: return base::IfdVendor(IoCtrlCode,Input,InputLength,Output,OutputLength); } } CJ_RESULT CCCIDReader::CCID_Escape(uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength) { CJ_RESULT Res; CCID_Message Message; CCID_Response Response; memset(&Message,0,sizeof(Message)); Message.bMessageType=PC_TO_RDR_ESCAPE; Message.dwLength=InputLength; if(InputLength>sizeof(Message.Data.abData)) { *OutputLength=0; return CJ_ERR_INTERNAL_BUFFER_OVERFLOW; } if(InputLength>0) memcpy(&Message.Data.abData,Input,InputLength); if((Res=Transfer(&Message,&Response))!=CJ_SUCCESS) { *OutputLength=0; return Res; } if(Response.bMessageType!=RDR_TO_PC_ESCAPE) { delete m_pCommunicator; m_pCommunicator=NULL; return CJ_ERR_DEVICE_LOST; } else if(Response.dwLength>*OutputLength) { *OutputLength=0; return CJ_ERR_RBUFFER_TO_SMALL; } memcpy(Output,Response.Data.abData,Response.dwLength); *OutputLength=Response.dwLength; return CJ_SUCCESS; } bool CCCIDReader::PinDirectSupported() { cj_ModuleInfo *Info=FindModule(MODULE_ID_KERNEL); if(Info==NULL) return false; if(Info->Version<0x30 || Info->Version==0x30 && Info->Revision<42) return false; return true; } RSCT_IFD_RESULT CCCIDReader::IfdVerifyPinDirect(PIN_VERIFY_STRUCTURE *Input,uint8_t *Output,uint32_t *OutputLength) { CCID_Message Message; CCID_Response Response; int Res; cj_ModuleInfo *Info; if(!PinDirectSupported()) return STATUS_NOT_SUPPORTED; Info=FindModule(MODULE_ID_KT_LIGHT_GC); if(Info!=NULL && Info->Status==MODULE_READY) SetSMModeAndCount(MODULE_ID_KT_LIGHT_GC,1); Message.bMessageType=PC_TO_RDR_SECURE; Message.dwLength=Input->ulDataLength+15; if(Input->ulDataLength>sizeof(Message.Data.Secure.Data.Verify.abData)) return STATUS_INVALID_BUFFER_SIZE; if(*OutputLength<2) return STATUS_BUFFER_TOO_SMALL; Message.bSlot=0; Message.Header.Secure.bBWI=0; Message.Header.Secure.wLevelParameter=HostToReaderShort(0); Message.Data.Secure.bPINOperation=0; Message.Data.Secure.bTimeOut=Input->bTimerOut; Message.Data.Secure.bmFormatString=Input->bmFormatString; Message.Data.Secure.bmPINBlockString=Input->bmPINBlockString; Message.Data.Secure.bmPINLengthFormat=Input->bmPINLengthFormat; Message.Data.Secure.Data.Verify.wPINMaxExtraDigit=HostToReaderShort(Input->wPINMaxExtraDigit); Message.Data.Secure.Data.Verify.bEntryValidationCondition=Input->bEntryValidationCondition; Message.Data.Secure.Data.Verify.bNumberMessage=Input->bNumberMessage; Message.Data.Secure.Data.Verify.wLangId=HostToReaderShort(Input->wLangId); Message.Data.Secure.Data.Verify.bMsgIndex=Input->bMsgIndex; FillTeoPrologue(Message.Data.Secure.Data.Verify.bTeoPrologue); memcpy(Message.Data.Secure.Data.Verify.abData,Input->abData,Input->ulDataLength); Res=Transfer(&Message,&Response); if(Info!=NULL && Info->Status==MODULE_READY) SetSMModeAndCount(0,0); if(Res) { *OutputLength=0; if(Res==CJ_ERR_DEVICE_LOST) return STATUS_DEVICE_NOT_CONNECTED; return STATUS_DEVICE_PROTOCOL_ERROR; } if(Response.bStatus & 0x40) { if(Response.bError==XFR_PARITY_ERROR) { *OutputLength=0; return STATUS_IO_TIMEOUT; } else if(Response.bError==ICC_MUTE) { *OutputLength=0; return STATUS_IO_TIMEOUT; } else if(Response.bError==PIN_TIMEOUT) { memcpy(Output,"\x64\x00",2); *OutputLength=2; return STATUS_SUCCESS; } else if(Response.bError==PIN_CANCELED) { memcpy(Output,"\x64\x01",2); *OutputLength=2; return STATUS_SUCCESS; } else if(Response.bError==PIN_DIFFERENT) { memcpy(Output,"\x64\x02",2); *OutputLength=2; return STATUS_SUCCESS; } else if(Response.bError==EXT_ERROR) { if(*OutputLengthulDataLength+20; if(Input->ulDataLength>sizeof(Message.Data.Secure.Data.Modify.abData)) return STATUS_INVALID_BUFFER_SIZE; if(*OutputLength<2) return STATUS_BUFFER_TOO_SMALL; Message.bSlot=0; Message.Header.Secure.bBWI=0; Message.Header.Secure.wLevelParameter=HostToReaderShort(0); Message.Data.Secure.bPINOperation=1; Message.Data.Secure.bTimeOut=Input->bTimerOut; Message.Data.Secure.bmFormatString=Input->bmFormatString; Message.Data.Secure.bmPINBlockString=Input->bmPINBlockString; Message.Data.Secure.bmPINLengthFormat=Input->bmPINLengthFormat; Message.Data.Secure.Data.Modify.bInsertionOffsetOld=Input->bInsertionOffsetOld; Message.Data.Secure.Data.Modify.bInsertionOffsetNew=Input->bInsertionOffsetNew; Message.Data.Secure.Data.Modify.wPINMaxExtraDigit=HostToReaderShort(Input->wPINMaxExtraDigit); Message.Data.Secure.Data.Modify.bConfirmPIN=Input->bConfirmPIN; Message.Data.Secure.Data.Modify.bEntryValidationCondition=Input->bEntryValidationCondition; Message.Data.Secure.Data.Modify.bNumberMessage=Input->bNumberMessage; Message.Data.Secure.Data.Modify.wLangId=HostToReaderShort(Input->wLangId); Message.Data.Secure.Data.Modify.bMsgIndex1=Input->bMsgIndex1; Message.Data.Secure.Data.Modify.bMsgIndex2=Input->bMsgIndex2; Message.Data.Secure.Data.Modify.bMsgIndex3=Input->bMsgIndex3; FillTeoPrologue(Message.Data.Secure.Data.Modify.bTeoPrologue); memcpy(Message.Data.Secure.Data.Modify.abData,Input->abData,Input->ulDataLength); Res=Transfer(&Message,&Response); if(Res) { *OutputLength=0; if(Res==CJ_ERR_DEVICE_LOST) return STATUS_DEVICE_NOT_CONNECTED; return STATUS_DEVICE_PROTOCOL_ERROR; } if(Response.bStatus & 0x40) { if(Response.bError==XFR_PARITY_ERROR) { *OutputLength=0; return STATUS_IO_TIMEOUT; } else if(Response.bError==ICC_MUTE) { *OutputLength=0; return STATUS_IO_TIMEOUT; } else if(Response.bError==PIN_TIMEOUT) { memcpy(Output,"\x64\x00",2); *OutputLength=2; return STATUS_SUCCESS; } else if(Response.bError==PIN_CANCELED) { memcpy(Output,"\x64\x01",2); *OutputLength=2; return STATUS_SUCCESS; } else if(Response.bError==PIN_DIFFERENT) { memcpy(Output,"\x64\x02",2); *OutputLength=2; return STATUS_SUCCESS; } else if(Response.bError==EXT_ERROR) { if(*OutputLength #include #include "CGOReader.h" #include "BaseCommunication.h" #define base CEC30Reader CCGOReader::CCGOReader(CReader *Owner,CBaseCommunication *Communicator) :base(Owner,Communicator) { } CCGOReader::~CCGOReader(void) { } uint16_t CCGOReader::HostToReaderShort(uint16_t Value) { return InversByteOrderShort(htons(Value)); } uint32_t CCGOReader::HostToReaderLong(uint32_t Value) { return InversByteOrderLong(htonl(Value)); } void CCGOReader::SetHWString(char *String) { strcpy(String,"CGO_"); } void CCGOReader::GetProductString(uint8_t *Product) { memcpy(Product,"CJ-GO",5); } CJ_RESULT CCGOReader::CtSetContrast(EContrast eContrast,uint32_t *Result) { CJ_RESULT Res; switch(eContrast) { case ContrastVeryLow: Res=_CtSetContrast(0,Result); break; case ContrastLow: Res=_CtSetContrast(70,Result); break; case ContrastMedium: Res=_CtSetContrast(120,Result); break; case ContrastHigh: Res=_CtSetContrast(160,Result); break; case ContrastVeryHigh: Res=_CtSetContrast(255,Result); break; default: Res=CJ_ERR_WRONG_PARAMETER; } return Res; } CJ_RESULT CCGOReader::CtSetBacklight(EBacklight eBacklight,uint32_t *Result) { CJ_RESULT Res; switch(eBacklight) { case BacklightOff: Res=_CtSetBacklight(0,Result); break; case BacklightVeryLow: Res=_CtSetBacklight(70,Result); break; case BacklightLow: Res=_CtSetBacklight(100,Result); break; case BacklightMedium: Res=_CtSetBacklight(120,Result); break; case BacklightHigh: Res=_CtSetBacklight(160,Result); break; case BacklightVeryHigh: Res=_CtSetBacklight(255,Result); break; default: Res=CJ_ERR_WRONG_PARAMETER; } return Res; } bool CCGOReader::HastModulestoreInfo() { return true; } CJ_RESULT CCGOReader::CtSetSilentMode(bool boolMode,bool *pboolMode,uint32_t *Result) { if(pboolMode) *pboolMode=boolMode; if(Result) *Result=0; return CJ_SUCCESS; } CJ_RESULT CCGOReader::CtGetSilentMode(bool *pboolMode,uint32_t *Result) { if(pboolMode) *pboolMode=0; if(Result) *Result=0; return CJ_SUCCESS; } CJ_RESULT CCGOReader::SpecialLess3_0_41() { return CJ_SUCCESS; } bool CCGOReader::PinDirectSupported() { return true; } pcsc-cyberjack-3.99.5final.sp05/cjeca32/CGOReader.h000066400000000000000000000015541231776762100214430ustar00rootroot00000000000000#ifndef CGOREADER_H #define CGOREADER_H #include "EC30Reader.h" class CCGOReader : public CEC30Reader { public: CCGOReader(CReader *Owner,CBaseCommunication *Communicator); virtual ~CCGOReader(void); virtual CJ_RESULT CtSetContrast(EContrast eContrast,uint32_t *Result); protected: virtual uint16_t HostToReaderShort(uint16_t Value); virtual uint32_t HostToReaderLong(uint32_t Value); virtual void SetHWString(char *String); virtual void GetProductString(uint8_t *Product); virtual bool HastModulestoreInfo(); virtual CJ_RESULT CtSetBacklight(EBacklight eBacklight,uint32_t *Result); virtual CJ_RESULT CtSetSilentMode(bool boolMode,bool *pboolMode,uint32_t *Result); virtual CJ_RESULT CtGetSilentMode(bool *pboolMode,uint32_t *Result); virtual CJ_RESULT SpecialLess3_0_41(); virtual bool PinDirectSupported(); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/CPTReader.cpp000066400000000000000000000044701231776762100220140ustar00rootroot00000000000000#include "Platform.h" #include #include #include "CPTReader.h" #include "BaseCommunication.h" #define base CEC30Reader CCPTReader::CCPTReader(CReader *Owner,CBaseCommunication *Communicator) :base(Owner,Communicator) { } CCPTReader::~CCPTReader(void) { } uint16_t CCPTReader::HostToReaderShort(uint16_t Value) { return InversByteOrderShort(htons(Value)); } uint32_t CCPTReader::HostToReaderLong(uint32_t Value) { return InversByteOrderLong(htonl(Value)); } void CCPTReader::SetHWString(char *String) { strcpy(String,"CPT_"); } void CCPTReader::GetProductString(uint8_t *Product) { memcpy(Product,"CJCPT",5); } CJ_RESULT CCPTReader::CtSetContrast(EContrast eContrast,uint32_t *Result) { CJ_RESULT Res; switch(eContrast) { case ContrastVeryLow: Res=_CtSetContrast(0,Result); break; case ContrastLow: Res=_CtSetContrast(70,Result); break; case ContrastMedium: Res=_CtSetContrast(120,Result); break; case ContrastHigh: Res=_CtSetContrast(160,Result); break; case ContrastVeryHigh: Res=_CtSetContrast(255,Result); break; default: Res=CJ_ERR_WRONG_PARAMETER; } return Res; } CJ_RESULT CCPTReader::CtSetBacklight(EBacklight eBacklight,uint32_t *Result) { CJ_RESULT Res; switch(eBacklight) { case BacklightOff: Res=_CtSetBacklight(0,Result); break; case BacklightVeryLow: Res=_CtSetBacklight(70,Result); break; case BacklightLow: Res=_CtSetBacklight(100,Result); break; case BacklightMedium: Res=_CtSetBacklight(120,Result); break; case BacklightHigh: Res=_CtSetBacklight(160,Result); break; case BacklightVeryHigh: Res=_CtSetBacklight(255,Result); break; default: Res=CJ_ERR_WRONG_PARAMETER; } return Res; } bool CCPTReader::HastModulestoreInfo() { return true; } CJ_RESULT CCPTReader::CtSetSilentMode(bool boolMode,bool *pboolMode,uint32_t *Result) { if(pboolMode) *pboolMode=boolMode; if(Result) *Result=0; return CJ_SUCCESS; } CJ_RESULT CCPTReader::CtGetSilentMode(bool *pboolMode,uint32_t *Result) { if(pboolMode) *pboolMode=0; if(Result) *Result=0; return CJ_SUCCESS; } CJ_RESULT CCPTReader::SpecialLess3_0_41() { return CJ_SUCCESS; } bool CCPTReader::PinDirectSupported() { return true; } pcsc-cyberjack-3.99.5final.sp05/cjeca32/CPTReader.h000066400000000000000000000015541231776762100214610ustar00rootroot00000000000000#ifndef CPTREADER_H #define CPTREADER_H #include "EC30Reader.h" class CCPTReader : public CEC30Reader { public: CCPTReader(CReader *Owner,CBaseCommunication *Communicator); virtual ~CCPTReader(void); virtual CJ_RESULT CtSetContrast(EContrast eContrast,uint32_t *Result); protected: virtual uint16_t HostToReaderShort(uint16_t Value); virtual uint32_t HostToReaderLong(uint32_t Value); virtual void SetHWString(char *String); virtual void GetProductString(uint8_t *Product); virtual bool HastModulestoreInfo(); virtual CJ_RESULT CtSetBacklight(EBacklight eBacklight,uint32_t *Result); virtual CJ_RESULT CtSetSilentMode(bool boolMode,bool *pboolMode,uint32_t *Result); virtual CJ_RESULT CtGetSilentMode(bool *pboolMode,uint32_t *Result); virtual CJ_RESULT SpecialLess3_0_41(); virtual bool PinDirectSupported(); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/Debug.cpp000066400000000000000000000163301231776762100212670ustar00rootroot00000000000000#include "Platform.h" #include #include "Debug.h" #include void CDebug::varLog(const char *devName, unsigned int nLevelMask, const char *format, ...) { va_list args; char dbg_buffer[1024]; va_start(args, format); vsnprintf(dbg_buffer, sizeof(dbg_buffer)-1, format, args); dbg_buffer[sizeof(dbg_buffer)-1] = 0; CDebug::Out(devName, nLevelMask, dbg_buffer, NULL, 0); va_end(args); } #ifdef _WINDOWS typedef bool (RSCT_STDCALL *FUNC_SIIMONEX_PROC_OUT)(uint32_t p_nMsgType, LPCSTR p_zSource, LPCSTR p_zText); static HMODULE module; static FUNC_SIIMONEX_PROC_OUT debuger; CDebug::CDebug(unsigned int nLevelMask) { HKEY hKey; unsigned long Result=0; module=0; m_nLevelMask=0; debuger=NULL; if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("Software\\REINER SCT\\cyberJack Base Components"),0,KEY_READ,&hKey)==ERROR_SUCCESS) { DWORD dwLength; DWORD sCTHelp; dwLength=sizeof(sCTHelp); if(RegQueryValueEx(hKey,TEXT("DebugMask"),NULL,NULL,(LPBYTE)&sCTHelp,&dwLength)==ERROR_SUCCESS) { Result=sCTHelp; } RegCloseKey(hKey); } if(Result) { m_nLevelMask=Result; } if((module=LoadLibrary(TEXT("SiiMonEx.dll")))!=NULL) { debuger=(FUNC_SIIMONEX_PROC_OUT)GetProcAddress(module,TEXT("ProtOut")); } else { debuger=NULL; } } CDebug::~CDebug(void) { if(module) { debuger=NULL; FreeLibrary(module); module=NULL; } } void CDebug::Out(const char *cDeviceName, unsigned int nLevelMask, const char *cCaption, void *pData, uint32_t ulDataLen) { if(m_nLevelMask & nLevelMask) { if(debuger) { char filter[32]; char text[512]; unsigned int i=0; uint8_t *ptr=(uint8_t *)pData; char pure_text[17]; char *pure; strcpy(filter,"CJECA32_"); strncat(filter,cDeviceName,32); filter[31]='\0'; sprintf(text,"%s --- MASK: %08X\n",cCaption,nLevelMask); debuger(0,filter,text); if (ulDataLen>0) { sprintf(text,"%11s ","DATA:"); pure=pure_text; memset(pure_text,0,sizeof(pure_text)); for(i=0;i32 && *ptr<128) *pure++=*ptr; else *pure++='.'; ptr++; if((i%16)==15 || i==ulDataLen-1) { while((i%16)!=15) { i++; sprintf(text+12+(i%16)*3," "); } strcat(text,"--- "); strcat(text,pure_text); strcat(text,"\n"); debuger(0,filter,text); pure=pure_text; memset(pure_text,0,sizeof(pure_text)); sprintf(text,"%11s ",""); } } } } } } CDebug Debug(0xffffffff); #elif defined(OS_LINUX) || defined(OS_DARWIN) #if defined(OS_DARWIN) # define DEBUG_DEFAULT_LOGFILE "/Library/Logs/cj.log" #else # define DEBUG_DEFAULT_LOGFILE "/tmp/cj.log" #endif #include #include CDebug::CDebug(unsigned int nLevelMask) :m_nLevelMask(nLevelMask) ,m_logFileName(strdup(DEBUG_DEFAULT_LOGFILE)) { } CDebug::~CDebug(void){ if (m_logFileName) free(m_logFileName); } void CDebug::setLevelMask(unsigned int nLevelMask) { m_nLevelMask=nLevelMask; } void CDebug::setLogFileName(const char *fname) { if (m_logFileName) free(m_logFileName); if (fname) m_logFileName=strdup(fname); else m_logFileName=NULL; } void CDebug::Out(const char *cDeviceName, unsigned int nLevelMask, const char *cCaption, void *pData, uint32_t ulDataLen){ #if 1 if (m_nLevelMask & nLevelMask){ char devName[8]; const char *mask; struct timeval tv; struct tm *tm; int pid; uint32_t i=0; uint8_t *ptr=(uint8_t *)pData; const char *p; FILE *f=NULL; if (m_logFileName) f=fopen(m_logFileName, "a+"); if (f==NULL) f=stderr; /* sample header data */ i=strlen(cDeviceName); if (i>=sizeof(devName)) { p=cDeviceName+(i-(sizeof(devName)-1)); i=sizeof(devName)-1; } else p=cDeviceName; strncpy(devName, p, i); devName[i]=0; switch(nLevelMask) { case DEBUG_MASK_COMMUNICATION_OUT: mask="COMOUT"; break; case DEBUG_MASK_COMMUNICATION_IN: mask="COMIN "; break; case DEBUG_MASK_COMMUNICATION_ERROR: mask="COMERR"; break; case DEBUG_MASK_COMMUNICATION_INT: mask="COMINT"; break; case DEBUG_MASK_COMMUNICATION_INFO: mask="COMINF"; break; case DEBUG_MASK_TRANSLATION: mask="TRANS "; break; case DEBUG_MASK_RESULTS: mask="RESULT"; break; case DEBUG_MASK_INPUT: mask="INPUT "; break; case DEBUG_MASK_OUTPUT: mask="OUTPUT"; break; case DEBUG_MASK_CTAPI: mask="CTAPI "; break; case DEBUG_MASK_IFD: mask="IFD "; break; case DEBUG_MASK_CJECOM: mask="CJECOM"; break; case DEBUG_MASK_PPA: mask="PPA "; break; default: mask="UNKNWN"; break; } pid=getpid(); gettimeofday(&tv, NULL); tm=localtime(&tv.tv_sec); if (cCaption) { i=strlen(cCaption); if (i && cCaption[i-1]=='\n') fprintf(f, "%s:[%08x]:%04d/%02d/%02d %02d:%02d:%02d:%06d:[%s]:%s", mask, pid, tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, (int)tv.tv_usec, devName, cCaption); else fprintf(f, "%s:[%08x]:%04d/%02d/%02d %02d:%02d:%02d:%06d:[%s]:%s\n", mask, pid, tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, (int)tv.tv_usec, devName, cCaption); } else fprintf(f, "%s:[%08x]:%04d/%02d/%02d %02d:%02d:%02d:%06d:[%s]:(no text)\n", mask, pid, tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, (int)tv.tv_usec, devName); /* show data if any */ if (ulDataLen>0 && pData) { fprintf(f, "%s: DATA: ", mask); for (i=0; i126) c='.'; fprintf(f, "%c", c); } else break; } fprintf(f, "\n"); } } if (f!=stderr) fclose(f); } #endif } CDebug Debug(0); #endif /* for all platforms */ extern "C" { void rsct_debug_out(const char *cDeviceName, unsigned int nLevelMask, const char *cCaption, void *pData, uint32_t ulDataLen) { Debug.Out(cDeviceName, nLevelMask, cCaption, pData, ulDataLen); } } /* extern "C" */ pcsc-cyberjack-3.99.5final.sp05/cjeca32/EC30Reader.cpp000066400000000000000000001674631231776762100220340ustar00rootroot00000000000000#include "Platform.h" #include #include #include "EC30Reader.h" #include "Reader.h" #include "eca_defines.h" #include "eca_module_errors.h" #define base CCCIDReader #ifdef UNDER_CE time_t time( time_t *inTT ) { SYSTEMTIME sysTimeStruct; FILETIME fTime; ULARGE_INTEGER int64time; time_t locTT = 0; if (inTT==NULL) { inTT = &locTT; } GetSystemTime(&sysTimeStruct); if (SystemTimeToFileTime(&sysTimeStruct, &fTime)) { memcpy( &int64time, &fTime, sizeof( FILETIME ) ); int64time.QuadPart -= 0x19db1ded53e8000; int64time.QuadPart /= 10000000; *inTT = (time_t)int64time.QuadPart; } return *inTT; } tm _tmc; tm * __cdecl localtime(const time_t *) { SYSTEMTIME sysTimeStruct; GetSystemTime(&sysTimeStruct); _tmc.tm_sec=sysTimeStruct.wSecond; _tmc.tm_min=sysTimeStruct.wMinute; _tmc.tm_hour=sysTimeStruct.wHour; _tmc.tm_mday=sysTimeStruct.wDayOfWeek; _tmc.tm_mon=sysTimeStruct.wMonth; _tmc.tm_year=sysTimeStruct.wYear; _tmc.tm_wday=0; _tmc.tm_yday=0; _tmc.tm_isdst=0; return &_tmc; }; #endif CEC30Reader::CEC30Reader(CReader *Owner,CBaseCommunication *Communicator) :base(Owner,Communicator) ,m_pApplicationResponse(NULL) ,m_nApplicationResponseLength(0) { SecoderBufferLen=0; SecoderBuffer=NULL; } CEC30Reader::~CEC30Reader(void) { if(m_pApplicationResponse!=NULL) delete m_pApplicationResponse; if(SecoderBufferLen) delete[] SecoderBuffer; } CJ_RESULT CEC30Reader::PostCreate() { CJ_RESULT Res; if((Res=base::PostCreate())==CJ_SUCCESS) if(SetReaderConstants()) Res=BuildReaderInfo(); return Res; } int CEC30Reader::Escape(uint32_t ApplicationID,uint16_t Function,uint8_t *InputData, uint32_t InputLen, uint32_t *Result, uint8_t *ResponseData, uint32_t *ResponseLen,uint8_t Slot) { int Res; uint32_t nResult; CCID_Message Message; CCID_Response Response; memset(&Message,0,sizeof(Message)); Message.bMessageType=PC_TO_RDR_ESCAPE; Message.Data.Escape.Reader.EC30.dwApplication=HostToReaderLong(ApplicationID); Message.Data.Escape.Reader.EC30.wFunction=HostToReaderShort(Function); Message.dwLength=6+InputLen; if(InputLen>GetReadersInputBufferSize()-16) return CJ_ERR_INTERNAL_BUFFER_OVERFLOW; if(InputLen>0) memcpy(&Message.Data.Escape.Reader.EC30.Data,InputData,InputLen); if((Res=Transfer(&Message,&Response,Slot))!=CJ_SUCCESS) { if(ResponseLen!=NULL) *ResponseLen=0; return Res; } if(Response.bMessageType!=RDR_TO_PC_ESCAPE) { if(ResponseLen!=NULL) *ResponseLen=0; delete m_pCommunicator; m_pCommunicator=NULL; return CJ_ERR_DEVICE_LOST; } nResult=ReaderToHostLong(Response.Data.Escape.Result); if(Result) *Result=nResult; if(ResponseLen) { if(Response.dwLength>*ResponseLen+4) { if(ResponseData==NULL) { *ResponseLen=Response.dwLength-4; } else { *ResponseLen=0; delete m_pCommunicator; m_pCommunicator=NULL; } return CJ_ERR_RBUFFER_TO_SMALL; } *ResponseLen=Response.dwLength-4; if(ResponseData) memcpy(ResponseData,Response.Data.Escape.Function.abData,*ResponseLen); } else if(Response.dwLength!=4) { delete m_pCommunicator; m_pCommunicator=NULL; return CJ_ERR_RBUFFER_TO_SMALL; } if(nResult!=0) { if(ResponseLen!=NULL) *ResponseLen=0; return CJ_ERR_CHECK_RESULT; } return CJ_SUCCESS; } uint32_t CEC30Reader::GetReadersInputBufferSize() { return 1024; } CJ_RESULT CEC30Reader::CtApplicationData(uint32_t ApplicationID,uint16_t Function,uint8_t *InputData, uint32_t InputLen, uint32_t *Result, uint8_t *ResponseData, uint32_t *ResponseLen, uint8_t *ApplicationError,uint32_t *ApplicationErrorLength,uint8_t Slot) { int Res; uint32_t Len; uint16_t wLenRsp=0; uint16_t wLenErr=0; if(ResponseLen!=0) wLenRsp=(uint16_t)*ResponseLen; if(ApplicationErrorLength!=NULL) wLenErr=(uint16_t)*ApplicationErrorLength; if(m_nApplicationResponseLength<(uint32_t)wLenRsp+wLenErr+4) { if(m_pApplicationResponse!=NULL) delete m_pApplicationResponse; m_nApplicationResponseLength=wLenRsp+wLenErr+4+1024; m_pApplicationResponse=new uint8_t[m_nApplicationResponseLength]; } Len=4+wLenRsp+wLenErr; if((Res=Escape(ApplicationID,Function,InputData,InputLen,Result,m_pApplicationResponse,&Len,Slot))) { if(ResponseLen) *ResponseLen=0; if(ApplicationErrorLength) *ApplicationErrorLength=0; return Res; } memcpy(&wLenRsp,m_pApplicationResponse,sizeof(wLenRsp)); wLenRsp=ReaderToHostShort(wLenRsp); memcpy(&wLenErr,m_pApplicationResponse+2,sizeof(wLenErr)); wLenErr=ReaderToHostShort(wLenErr); if(ApplicationErrorLength) { if(wLenErr>*ApplicationErrorLength) { *ResponseLen=0; *ApplicationErrorLength=0; return CJ_ERR_RBUFFER_TO_SMALL; } *ApplicationErrorLength=wLenErr; if(wLenErr>0) memcpy(ApplicationError,m_pApplicationResponse+4+wLenRsp,wLenErr); } if(ResponseLen) { if(wLenRsp>*ResponseLen) { *ResponseLen=0; *ApplicationErrorLength=0; return CJ_ERR_RBUFFER_TO_SMALL; } *ResponseLen=wLenRsp; if(wLenRsp>0) memcpy(ResponseData,m_pApplicationResponse+4,wLenRsp); } return CJ_SUCCESS; } CJ_RESULT CEC30Reader::GetReaderInfo(cjeca_Info *Info) { CJ_RESULT Result; uint32_t len=sizeof(cjeca_Info); uint32_t Res; memset(Info,0xff,sizeof(cjeca_Info)); if((Result=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_GET_INFO,0,0,&Res,(uint8_t *)Info,&len))!=CJ_SUCCESS) m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't get ReaderInfo"); else Info->ActiveApplication=ReaderToHostLong(Info->ActiveApplication); return Result; } CJ_RESULT CEC30Reader::GetKeyInfo(tKeyInfo *Keys,uint32_t len) { uint32_t Res; memset(Keys,0xff,4); if((Res=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_GET_KEYINFO,0,0,&Res,(uint8_t *)Keys,&len))!=CJ_SUCCESS) m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't get Key - Info"); return Res; } CJ_RESULT CEC30Reader::GetSecoderInfo(tSecoderInfo *Info,uint32_t len) { uint32_t Res; memset(Info,0xff,6); if((Res=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_GET_SECODERINFO,0,0,&Res,(uint8_t *)Info,&len))!=CJ_SUCCESS) m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't get Secoder - Info"); return Res; } CJ_RESULT CEC30Reader::BuildReaderInfo() { cjeca_Info Info; CJ_RESULT Res; uint32_t Mask; memset(&m_ReaderInfo,0,sizeof(m_ReaderInfo)); m_ReaderInfo.SizeOfStruct=sizeof(m_ReaderInfo); if((Res=GetReaderInfo(&Info))!=CJ_SUCCESS) return Res; if(m_pCommunicator==NULL) return CJ_ERR_DEVICE_LOST; m_pCommunicator->SetCommunicationString(&m_ReaderInfo); m_ReaderInfo.ContentsMask |= RSCT_READER_MASK_HARDWARE | RSCT_READER_MASK_VERSION | RSCT_READER_MASK_HARDWARE_VERSION | RSCT_READER_MASK_FLASH_SIZE | RSCT_READER_MASK_HEAP_SIZE | RSCT_READER_MASK_SERIALNUMBER | RSCT_READER_MASK_PRODUCTION_DATE | RSCT_READER_MASK_TEST_DATE | RSCT_READER_MASK_COMMISSIONING_DATE | RSCT_READER_MASK_HW_STRING; Mask = ~Info.ReaderConst.MaskOption; m_ReaderInfo.HardwareMask=RSCT_READER_HARDWARE_MASK_ICC1 | RSCT_READER_HARDWARE_MASK_KEYPAD | RSCT_READER_HARDWARE_MASK_DISPLAY | RSCT_READER_HARDWARE_MASK_UPDATEABLE | RSCT_READER_HARDWARE_MASK_MODULES| (Mask << 18); m_ReaderInfo.Version=Info.KernelVersion; m_ReaderInfo.HardwareVersion=ReaderToHostLong(Info.ReaderConst.HardwareVersion); m_ReaderInfo.FlashSize=256*1024; m_ReaderInfo.HeapSize=16*48; GetKeyInfo(m_ReaderInfo.Keys,sizeof(m_ReaderInfo.Keys)); for(int i=0;i<10;i++) { m_ReaderInfo.SeriaNumber[i]=Info.ReaderConst.Seriennummer[i*2]; } m_ReaderInfo.SeriaNumber[10]='\0'; memcpy(m_ReaderInfo.ProductionDate,Info.ReaderConst.dtDate[0].ProductionDate,10); m_ReaderInfo.ProductionDate[10]='\0'; memcpy(m_ReaderInfo.ProductionTime,Info.ReaderConst.dtDate[0].ProductionTime,5); m_ReaderInfo.ProductionTime[5]='\0'; memcpy(m_ReaderInfo.TestDate,Info.ReaderConst.dtDate[1].ProductionDate,10); m_ReaderInfo.TestDate[10]='\0'; memcpy(m_ReaderInfo.TestTime,Info.ReaderConst.dtDate[1].ProductionTime,5); m_ReaderInfo.TestTime[5]='\0'; memcpy(m_ReaderInfo.CommissioningDate,Info.ReaderConst.dtDate[2].ProductionDate,10); m_ReaderInfo.CommissioningDate[10]='\0'; memcpy(m_ReaderInfo.CommissioningTime,Info.ReaderConst.dtDate[2].ProductionTime,5); m_ReaderInfo.CommissioningTime[5]='\0'; SetHWString((char*)m_ReaderInfo.HardwareString); strcat((char*)m_ReaderInfo.HardwareString, (const char*)m_ReaderInfo.CommunicationString); // if(m_ReaderInfo.Keys[0].KNr<255 && m_ReaderInfo.Keys[1].KNr<255 && m_ReaderInfo.Keys[0].KNr>200 && m_ReaderInfo.Keys[1].KNr>200) // strcat((char*)m_ReaderInfo.HardwareString, "_DEV"); GetSecoderInfo(m_ReaderInfo.Info,sizeof(m_ReaderInfo.Info)); return Res; } CJ_RESULT CEC30Reader::GetModuleIDs(uint32_t *Count,uint32_t *IDs) { uint32_t help[33]; uint32_t len=sizeof(help); uint32_t Res; *Count=0; if((Res=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_MODULE_ENUM,0,0,&Res,(uint8_t *)help,&len))!=CJ_SUCCESS) m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't enum modules"); else { *Count=ReaderToHostLong(help[0]); if(*Count>32) *Count=32; for(unsigned int i=1;i<=*Count;i++) { *IDs++=ReaderToHostLong(help[i]); } } return Res; } CJ_RESULT CEC30Reader::GetModuleInfo(uint32_t ID,cj_ModuleInfo *Info) { CJ_RESULT Result; cjeca_ModuleInfo ModuleInfo; uint32_t len=sizeof(ModuleInfo); uint32_t Res; ID=HostToReaderLong(ID); memset(Info,0xff,sizeof(cj_ModuleInfo)); if((Result=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_MODULE_INFO,(uint8_t *)&ID,sizeof(ID),&Res,(uint8_t *)&ModuleInfo,&len))!=CJ_SUCCESS) m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't get module information"); else { Info->BaseAddr=ReaderToHostLong(ModuleInfo.ModuleBaseAddr); Info->CodeSize=ReaderToHostLong(ModuleInfo.ModuleCodeSize); memcpy(Info->Date,ModuleInfo.DateTime.ProductionDate,11); Info->Date[11]='\0'; memcpy(Info->Description,ModuleInfo.Description,16); Info->Description[16]='\0'; Info->HeapSize=ModuleInfo.GlobalHeapSize; Info->ID=ReaderToHostLong(ModuleInfo.ModuleID); Info->RequieredKernelRevision=ModuleInfo.RequieredKernelRevision; Info->RequieredKernelVersion=ModuleInfo.RequieredKernelVersion; Info->Revision=ModuleInfo.Revision; Info->SizeOfStruct=sizeof(cj_ModuleInfo); Info->Status=ReaderToHostLong(ModuleInfo.Status); memcpy(Info->Time,ModuleInfo.DateTime.ProductionTime,5); Info->Time[5]='\0'; Info->Variant=ModuleInfo.Variante; Info->Version=ModuleInfo.Version; Info->ContentsMask = RSCT_MODULE_MASK_STATUS | RSCT_MODULE_MASK_ID | RSCT_MODULE_MASK_VARIANT | RSCT_MODULE_MASK_BASE_ADDR | RSCT_MODULE_MASK_CODE_SIZE | RSCT_MODULE_MASK_VERSION | RSCT_MODULE_MASK_REVISION | RSCT_MODULE_MASK_REQUIRED_VERSION | RSCT_MODULE_MASK_REQUIRED_REVISION | RSCT_MODULE_MASK_HEAP_SIZE | RSCT_MODULE_MASK_DESCRIPTION | RSCT_MODULE_MASK_DATE; } return Result; } CJ_RESULT CEC30Reader::BuildModuleInfo() { CJ_RESULT Res; uint32_t ID[33]; if((Res=GetModuleIDs(&m_ModuleInfoCount,ID+1))==CJ_SUCCESS) { ID[0]=MODULE_ID_KERNEL; m_ModuleInfoCount++; if(m_pModuleInfo) delete m_pModuleInfo; m_pModuleInfo=new cj_ModuleInfo[m_ModuleInfoCount]; for(unsigned int i=0;iDebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); else if(Escape(MODULE_ID_KERNEL,CCID_ESCAPE_SET_SERNUMBER,SerNo,sizeof(SerNo),&Res,0,0)!=CJ_SUCCESS) m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set serial number"); } bool CEC30Reader::SetReaderConstants(void) { uint32_t LocalInfo; bool bRebuild=false; LocalInfo=GetEnviroment("pinpad2_info",0xffffffff); if((LocalInfo & 1) && IsNotSet(m_ReaderInfo.ProductionDate,10) && IsNotSet(m_ReaderInfo.ProductionTime,5)) { SetDate(0); bRebuild=true; } if((LocalInfo & 2) && IsNotSet(m_ReaderInfo.TestDate,10) && IsNotSet(m_ReaderInfo.TestTime,5)) { SetDate(1); bRebuild=true; } if((LocalInfo & 8) && IsNotSet(m_ReaderInfo.CommissioningDate,10) && IsNotSet(m_ReaderInfo.CommissioningTime,5)) { SetDate(2); bRebuild=true; } if((LocalInfo & 4) && IsNotSet(m_ReaderInfo.SeriaNumber,10)) { SetSerialNumber(); bRebuild=true; } return bRebuild; } void CEC30Reader::SetDate(uint8_t Nr) { uint32_t Res; struct _CCID_Message::_Data::_Escape::_Reader::_EC30::_Data::_SetDateTime DateTime; struct tm *t; time_t tim; time(&tim); t=localtime(&tim); DateTime.Nr=Nr; sprintf((char *)DateTime.dtDate.ProductionDate,"%02d.%02d.%04d",t->tm_mday,t->tm_mon+1,t->tm_year+1900); sprintf((char *)DateTime.dtDate.ProductionTime,"%02d:%02d",t->tm_hour,t->tm_min); if(SetFlashMask()!=CJ_SUCCESS) m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); else if(Escape(MODULE_ID_KERNEL,CCID_ESCAPE_SET_DATE_TIME,(uint8_t *)&DateTime,sizeof(DateTime),&Res,0,0)!=CJ_SUCCESS) m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set date"); } typedef struct _tFileHeader { unsigned long OffsetCrc16; unsigned long Status; unsigned long ModuleBaseAddr; unsigned long ModuleHeaderID; unsigned long ModuleID; unsigned long ModuleCodeSize; uint8_t Version; uint8_t Revision; uint8_t Variante; uint8_t RequieredKernelVersion; uint8_t RequieredKernelRevision; uint8_t GlobalHeapSize; uint8_t ExtraPages; uint8_t cReserved2; uint8_t DateOfCompilation[12]; uint8_t TimeOfCompilation[12]; int8_t Description[16]; }tFileHeader; CJ_RESULT CEC30Reader::CtGetModuleInfoFromFile(uint8_t *pData,uint32_t DataLength,cj_ModuleInfo *Info,uint32_t *EstimatedUpdateTime) { tFileHeader *header=(tFileHeader *)pData; *EstimatedUpdateTime=8000; if(DataLengthSizeOfStructContentsMask = RSCT_MODULE_MASK_ID | RSCT_MODULE_MASK_VARIANT | RSCT_MODULE_MASK_CODE_SIZE | RSCT_MODULE_MASK_VERSION | RSCT_MODULE_MASK_REVISION | RSCT_MODULE_MASK_REQUIRED_VERSION | RSCT_MODULE_MASK_REQUIRED_REVISION | RSCT_MODULE_MASK_HEAP_SIZE | RSCT_MODULE_MASK_DESCRIPTION | RSCT_MODULE_MASK_DATE; Info->ID=ReaderToHostLong(header->ModuleID); Info->CodeSize=ReaderToHostLong(header->ModuleCodeSize); memcpy(Info->Date,header->DateOfCompilation,11); Info->Date[11]='\0'; memcpy(Info->Description,header->Description,16); Info->Description[16]='\0'; Info->HeapSize=header->GlobalHeapSize; Info->RequieredKernelRevision=header->RequieredKernelRevision; Info->RequieredKernelVersion=header->RequieredKernelVersion; Info->Revision=header->Revision; Info->SizeOfStruct=sizeof(cj_ModuleInfo); memcpy(Info->Time,header->TimeOfCompilation,5); Info->Time[5]='\0'; Info->Variant=header->Variante; Info->Version=header->Version; if(Info->ID==MODULE_ID_KERNEL) *EstimatedUpdateTime=8000; else *EstimatedUpdateTime=6000; return CJ_SUCCESS; } int CEC30Reader::GetWarmstartTimeout(void) { return 4500; } CJ_RESULT CEC30Reader::CtLoadModule(uint8_t *pData,uint32_t DataLength,uint8_t *pSgn,uint32_t SgnLength,uint32_t *Result) { uint32_t len; CJ_RESULT Res; tFileHeader *header=(tFileHeader *)pData; struct _CCID_Message::_Data::_Escape::_Reader::_EC30::_Data::_UpdateData Data; struct _CCID_Message::_Data::_Escape::_Reader::_EC30::_Data::_UpdateVerify Verify; if(DataLength<258) return CJ_ERR_WRONG_SIZE; if((Res=SetFlashMask())!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); return Res; } if((Res=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_UPDATE_START,pData,256,Result,0,0))!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't begin update"); return Res; } DataLength-=256; pData+=256; while(DataLength) { len=(DataLength>256)?256:DataLength; memcpy(Data.Data,pData,len); Data.bLength=(uint16_t)len; if((Res=SetFlashMask())!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); return Res; } if((Res=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_UPDATE,(uint8_t *)&Data,sizeof(Data),Result,0,0))!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't transmit update"); return Res; } DataLength-=len; pData+=len; } Verify.len=HostToReaderLong(SgnLength); memcpy(Verify.Sign,pSgn,SgnLength); if((Res=SetFlashMask())!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); return Res; } if((Res=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_VERIFY,(uint8_t *)&Verify,sizeof(Verify),Result,0,0))!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't transmit signature"); return Res; } if(header->ModuleID==MODULE_ID_KERNEL) { // m_pCommunicator->Close(); Sleep(GetWarmstartTimeout()); // m_pCommunicator->Open(); } BuildReaderInfo(); BuildModuleInfo(); return Res; } CJ_RESULT CEC30Reader::CtDeleteALLModules(uint32_t *Result) { CJ_RESULT Res; if((Res=SetFlashMask())!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); return Res; } if((Res=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_MODULE_DELALL,0,0,Result,0,0))!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Not deleted"); } BuildModuleInfo(); return Res; } CJ_RESULT CEC30Reader::CtDeleteModule(uint32_t ModuleID,uint32_t *Result) { CJ_RESULT Res; ModuleID=HostToReaderLong(ModuleID); if((Res=SetFlashMask())!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); return Res; } if((Res=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_MODULE_DELETE,(uint8_t *)&ModuleID,sizeof(ModuleID),Result,0,0))!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Not deleted"); } BuildModuleInfo(); return Res; } CJ_RESULT CEC30Reader::CtActivateModule(uint32_t ModuleID,uint32_t *Result) { CJ_RESULT Res; ModuleID=HostToReaderLong(ModuleID); if((Res=SetFlashMask())!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); return Res; } if((Res=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_MODULE_REACTIVATE,(uint8_t *)&ModuleID,sizeof(ModuleID),Result,0,0))!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Not deleted"); } BuildModuleInfo(); return Res; } CJ_RESULT CEC30Reader::CtDeactivateModule(uint32_t ModuleID,uint32_t *Result) { CJ_RESULT Res; ModuleID=HostToReaderLong(ModuleID); if((Res=SetFlashMask())!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); return Res; } if((Res=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_MODULE_DEACTIVATE,(uint8_t *)&ModuleID,sizeof(ModuleID),Result,0,0))!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Not deleted"); } BuildModuleInfo(); return Res; } CJ_RESULT CEC30Reader::_CtSetContrast(uint8_t Value,uint32_t *Result) { CJ_RESULT Res; if((Res=SetFlashMask())!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); return Res; } if((Res=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_DSP_CONTRAST,&Value,sizeof(Value),Result,0,0))!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Not deleted"); } return Res; } CJ_RESULT CEC30Reader::_CtSetBacklight(uint8_t Value,uint32_t *Result) { CJ_RESULT Res; if((Res=SetFlashMask())!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); return Res; } if((Res=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_DSP_BACKLIGHT,&Value,sizeof(Value),Result,0,0))!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Not deleted"); } return Res; } CJ_RESULT CEC30Reader::CtKeyUpdate(uint8_t *pData,uint32_t DataLength,uint32_t *Result) { uint8_t KV[256]; CJ_RESULT Res; uint8_t *ptr=pData; uint32_t len=DataLength; uint32_t EstimatedUpdateTime; uint16_t help; uint16_t help1; uint8_t help2; uint16_t help3; uint8_t *NewKey; uint32_t Ret; bool IsRoot=true; _CCID_Message::_Data::_Escape::_Reader::_EC30::_Data::_UpdateKey Key; *Result=0; if(_CtIsKeyUpdateRecommended(pData,DataLength,&EstimatedUpdateTime,KV,Res)) { if(Res!=CJ_SUCCESS) return Res; for (; ; ) { if (len == 0) break; ptr+=3; len-=3; memcpy(&help,ptr,2); help=ReaderToHostShort(help); ptr+=2; len-=2; NewKey=ptr; memcpy(&help1,ptr+12,2); help1=ReaderToHostShort(help1); help2=ptr[15+help1]; ptr+=16+help1+help2; if(0xff==m_ReaderInfo.Keys[0].KNr && 0xff==m_ReaderInfo.Keys[0].Version && KV[NewKey[8]]==NewKey[9] || 0xff==m_ReaderInfo.Keys[1].KNr && 0xff==m_ReaderInfo.Keys[1].Version && KV[NewKey[8]]==NewKey[9]) { Key.len=16+help1+help2; if(Key.len>800) { *Result=ECA_MODULE_ERR_OUT_OF_RESOURCE; return CJ_ERR_CHECK_RESULT; } memcpy(Key.Key,NewKey,Key.len); Key.len=HostToReaderLong(Key.len); if((Res=SetFlashMask())!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); return Res; } if((Ret=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_UPDATE_KEY,(uint8_t *)&Key,sizeof(Key.len)+16+help1+help2,Result,0,0))!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Update Key error"); return Ret; } if((Res=SetFlashMask())!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); return Res; } if((Ret=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_VERIFY_KEY,(uint8_t *)&len,sizeof(len),Result,0,0))!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Verify Key error"); return Ret; } BuildReaderInfo(); } else if(!IsRoot) { memcpy(&help3,ptr+2,2); help3=ReaderToHostShort(help3); if(NewKey[8]==m_ReaderInfo.Keys[0].KNr && NewKey[9]>m_ReaderInfo.Keys[0].Version || NewKey[8]==m_ReaderInfo.Keys[1].KNr && NewKey[9]>m_ReaderInfo.Keys[1].Version) { if(ptr[6]==m_ReaderInfo.Keys[0].KNr && ptr[7]==m_ReaderInfo.Keys[0].Version || ptr[6]==m_ReaderInfo.Keys[1].KNr && ptr[7]==m_ReaderInfo.Keys[1].Version) { Key.len=16+help1+help2; if(Key.len>800 || help3>796) { *Result=ECA_MODULE_ERR_OUT_OF_RESOURCE; return CJ_ERR_CHECK_RESULT; } memcpy(Key.Key,NewKey,Key.len); Key.len=HostToReaderLong(Key.len); if((Res=SetFlashMask())!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); return Res; } if((Ret=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_UPDATE_KEY,(uint8_t *)&Key,sizeof(Key.len)+Key.len,Result,0,0))!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Update Key error"); return Ret; } Key.len=help3+4; memcpy(Key.Key,ptr,Key.len); Key.len=HostToReaderLong(Key.len); if((Res=SetFlashMask())!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); return Res; } if((Ret=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_VERIFY_KEY,(uint8_t *)&Key,sizeof(Key.len)+help3+4,Result,0,0))!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Verify Key error"); return Ret; } BuildReaderInfo(); } else { return CJ_ERR_DATA_CORRUPT; } } } ptr=NewKey+help; len-=help; IsRoot=false; } } return CJ_SUCCESS; } CJ_RESULT CEC30Reader::CtIsKeyUpdateRecommended(uint8_t *pData,uint32_t DataLength,uint32_t *EstimatedUpdateTime) { CJ_RESULT Res; uint8_t KV[256]; _CtIsKeyUpdateRecommended(pData,DataLength,EstimatedUpdateTime,KV,Res); return Res; } bool CEC30Reader::_CtIsKeyUpdateRecommended(uint8_t *pData,uint32_t DataLength,uint32_t *EstimatedUpdateTime,uint8_t *KV,CJ_RESULT &Res) { uint8_t *ptr=pData; uint32_t len=DataLength; uint16_t help; uint16_t help1; uint8_t help2; uint16_t help3; uint16_t help4; bool IsRoot=true; bool IsRecommended=false; Res=CJ_SUCCESS; memset(KV,0,256); *EstimatedUpdateTime=0; for (; ; ) { if (len == 0) break; if (len < 23 || (!IsRoot && len <36)) { Res=CJ_ERR_DATA_CORRUPT; break; } if (memcmp(ptr,"\x7F\x21\x82",3)!=0) { Res=CJ_ERR_DATA_CORRUPT; break; } ptr+=3; len-=3; memcpy(&help,ptr,2); help=ReaderToHostShort(help); if (help < 18 || (!IsRoot && help<31)) { Res=CJ_ERR_DATA_CORRUPT; break; } ptr+=2; len-=2; if (len < help) { Res=CJ_ERR_DATA_CORRUPT; break; } if (memcmp(ptr,"\x52\x04""ecom""\x51\x02",8)!=0) { Res=CJ_ERR_DATA_CORRUPT; break; } if (memcmp(ptr+10,"\x81\x82",2)!=0) { Res=CJ_ERR_DATA_CORRUPT; break; } if (KV[ptr[8]] >= ptr[9]) { Res=CJ_ERR_DATA_CORRUPT; break; } if(ptr[8]==m_ReaderInfo.Keys[0].KNr && ptr[9]>m_ReaderInfo.Keys[0].Version || ptr[8]==m_ReaderInfo.Keys[1].KNr && ptr[9]>m_ReaderInfo.Keys[1].Version) { *EstimatedUpdateTime+=5000; IsRecommended=true; } if(0xff==m_ReaderInfo.Keys[0].KNr && 0xff==m_ReaderInfo.Keys[0].Version && KV[ptr[8]]==0 || 0xff==m_ReaderInfo.Keys[1].KNr && 0xff==m_ReaderInfo.Keys[1].Version && KV[ptr[8]]==0) { *EstimatedUpdateTime+=1000; IsRecommended=true; } memcpy(&help1,ptr+12,2); help1=ReaderToHostShort(help1); if (help < 17+help1 || (!IsRoot && help<30 + help1) || help1<1) { Res=CJ_ERR_DATA_CORRUPT; break; } help2=ptr[15+help1]; if(ptr[14+help1]!=0x82 || IsRoot && 16+help1+help2!=help || !IsRoot && help < 29 + help1 + help2 || help2<1) { Res=CJ_ERR_DATA_CORRUPT; break; } KV[ptr[8]] = ptr[9]; ptr+=16+help1+help2; if(!IsRoot) { if(memcmp(ptr,"\x83\x82",2)!=0) { Res=CJ_ERR_DATA_CORRUPT; break; } memcpy(&help3,ptr+2,2); help3=ReaderToHostShort(help3); if(help3<9 || 20+help1+help2+help3!=help) { Res=CJ_ERR_DATA_CORRUPT; break; } if(memcmp(ptr+4,"\x51\x02",2)!=0) { Res=CJ_ERR_DATA_CORRUPT; break; } if(memcmp(ptr+8,"\x84\x82",2)!=0) { Res=CJ_ERR_DATA_CORRUPT; break; } memcpy(&help4,ptr+10,2); help4=ReaderToHostShort(help4); if(help3!=help4 + 8) { Res=CJ_ERR_DATA_CORRUPT; break; } ptr+=4+help3; } len-=help; IsRoot=false; } return IsRecommended; } bool CEC30Reader::ATRFilter(bool IsWarm,uint8_t Slot) { return IsWarm; } RSCT_IFD_RESULT CEC30Reader::_IfdPower(uint32_t Mode,uint8_t *ATR,uint32_t *ATR_Length,uint32_t Timeout,uint8_t Slot) { // RSCT_IFD_RESULT Result=STATUS_SUCCESS; CCID_Message Message; CCID_Response Response; Timeout=HostToReaderLong(Timeout); bool warm=false; bool first=true; switch(Mode) { case SCARD_COLD_RESET: case SCARD_WARM_RESET: *ATR_Length=0; _IfdPower(SCARD_POWER_DOWN,NULL,NULL,0,Slot); break; case SCARD_POWER_DOWN: break; default: return STATUS_INVALID_PARAMETER; } do { memset(&Message,0,sizeof(Message)); Message.dwLength=4; Message.Header.iccPowerOn.bPowerSelect=GetDefaultVoltageClass(); switch(Mode) { case SCARD_COLD_RESET: case SCARD_WARM_RESET: *ATR_Length=0; Message.bMessageType=PC_TO_RDR_ICCPOWERON; break; case SCARD_POWER_DOWN: Message.bMessageType=PC_TO_RDR_ICCPOWEROFF; break; } memcpy(Message.Data.abData,&Timeout,4); if(first) first=false; else warm=true; if(Transfer(&Message,&Response,Slot)==CJ_SUCCESS) { switch(Mode) { case SCARD_COLD_RESET: case SCARD_WARM_RESET: if(Response.bMessageType!=RDR_TO_PC_DATABLOCK) return STATUS_DEVICE_NOT_CONNECTED; break; case SCARD_POWER_DOWN: if(Response.bMessageType!=RDR_TO_PC_SLOTSTATUS) return STATUS_DEVICE_NOT_CONNECTED; break; } if(Response.bStatus & 0x40) { switch(Response.bError) { case 0xfe: return STATUS_NO_MEDIA; case 0xf6: return STATUS_UNRECOGNIZED_MEDIA; case 0xef: return STATUS_CANCELLED; default: return STATUS_IO_TIMEOUT; } } if(Response.dwLength>33) Response.dwLength=33; switch(Mode) { case SCARD_COLD_RESET: case SCARD_WARM_RESET: m_p_Slot[Slot].m_ATR_Length=Response.dwLength; memcpy(m_p_Slot[Slot].m_ATR,Response.Data.abData,Response.dwLength); warm=ATRFilter(warm); *ATR_Length=m_p_Slot[Slot].m_ATR_Length; memcpy(ATR,m_p_Slot[Slot].m_ATR,m_p_Slot[Slot].m_ATR_Length); default:; } } else return STATUS_DEVICE_NOT_CONNECTED; }while(Mode!=SCARD_POWER_DOWN && AnalyseATR(warm,Slot)==1); return STATUS_SUCCESS; } CJ_RESULT CEC30Reader::CtSelfTest(void) { uint32_t Res; struct _CCID_Message::_Data::_Escape::_Reader::_EC30::_Data::_SetDateTime DateTime; struct tm *t; time_t tim; CJ_RESULT Result; time(&tim); t=localtime(&tim); DateTime.Nr=0; sprintf((char *)DateTime.dtDate.ProductionDate,"%02d.%02d.%04d",t->tm_mday,t->tm_mon+1,t->tm_year+1900); sprintf((char *)DateTime.dtDate.ProductionTime,"%02d:%02d",t->tm_hour,t->tm_min); if((Res=SetFlashMask())!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); return Res; } Result=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_SELF_TEST,(uint8_t *)&DateTime,sizeof(DateTime),&Res,0,0); if(Result!=CJ_SUCCESS && Result!=CJ_ERR_CHECK_RESULT) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Error Selftest"); return CJ_ERR_DEVICE_LOST; } return Res; } CJ_RESULT CEC30Reader::CtShowAuth(void) { uint32_t Res; if(Escape(MODULE_ID_KERNEL,CCID_ESCAPE_SHOW_AUTH,NULL,0,&Res,0,0)!=CJ_SUCCESS) m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Error Show Auth"); return Res; } RSCT_IFD_RESULT CEC30Reader::ccidTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot) { CCID_Message Message; CCID_Response Response; if(cmd_len>GetReadersInputBufferSize()-10) { *response_len=0; return STATUS_BUFFER_OVERFLOW; } memset(&Message,0,sizeof(Message)); Message.bMessageType=PC_TO_RDR_XFRBLOCK; Message.dwLength=cmd_len; memcpy(Message.Data.abData,cmd,cmd_len); if(Transfer(&Message,&Response,Slot)==CJ_SUCCESS) { if(Response.bMessageType!=RDR_TO_PC_DATABLOCK) { _IfdPower(SCARD_POWER_DOWN,NULL,NULL,0,Slot); *response_len=0; return STATUS_DEVICE_PROTOCOL_ERROR; } if(Response.bStatus & 0x40) { if(Response.bError==ICC_MUTE) { _IfdPower(SCARD_POWER_DOWN,NULL,NULL,0,Slot); *response_len=0; return STATUS_IO_TIMEOUT; } else { _IfdPower(SCARD_POWER_DOWN,NULL,NULL,0,Slot); *response_len=0; return STATUS_DEVICE_PROTOCOL_ERROR; } } if(Response.dwLength>*response_len) { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } *response_len=(uint16_t)Response.dwLength; memcpy(response,Response.Data.abData,Response.dwLength); return STATUS_SUCCESS; } return STATUS_DEVICE_NOT_CONNECTED; } RSCT_IFD_RESULT CEC30Reader::IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot) { SCARD_IO_REQUEST io_request; RSCT_IFD_RESULT Res; uint16_t ResponseLength=*response_len-sizeof(SCARD_IO_REQUEST); if(cmd_len<=sizeof(SCARD_IO_REQUEST)) { *response_len=0; return STATUS_INVALID_PARAMETER; } memcpy(&io_request,cmd,sizeof(SCARD_IO_REQUEST)); if(cmd_len<=io_request.cbPciLength) { *response_len=0; return STATUS_INVALID_PARAMETER; } if(io_request.dwProtocol!=m_p_Slot[Slot].m_ActiveProtocol) { *response_len=0; return STATUS_INVALID_PARAMETER; } if(m_p_Slot[Slot].m_ReaderState!=SCARD_SPECIFIC) { *response_len=0; return STATUS_INVALID_DEVICE_STATE; } cmd_len-=(uint16_t)io_request.cbPciLength; cmd+=io_request.cbPciLength; Res=_IfdTransmit(cmd,cmd_len,response+sizeof(io_request),&ResponseLength,Slot); if(Res==STATUS_SUCCESS) { *response_len=ResponseLength+sizeof(io_request); io_request.cbPciLength=sizeof(io_request); memcpy(response,&io_request,sizeof(io_request)); } else { *response_len=0; } return Res; } RSCT_IFD_RESULT CEC30Reader::_IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot) { RSCT_IFD_RESULT Result; int l; const char *str; // uint16_t rest=*response_len; if(cmd_len>7) { if(cmd[0]==0xff && cmd[1]==0x91 && cmd[4]==0) { int32_t Lc=-1; int32_t Le=-1; if(cmd_len==7+((uint32_t)cmd[5]<<8)+cmd[6]) { Lc=((int32_t)cmd[5]<<8)+cmd[6]; } else if(cmd_len==9+((uint32_t)cmd[5]<<8)+cmd[6] && (cmd[5]!=0 || cmd[6]!=0)) { Lc=((int32_t)cmd[5]<<8)+cmd[6]; Le=((int32_t)cmd[cmd_len-2]<<8)+cmd[cmd_len-1]; } if(Lc>0) { if(cmd[3]==0x00 && (cmd[2] & 0xf0)==0 && IsClass3() && FindModuleWithMask(MODULE_ID_KT_LIGHT,0xfffffeff)) { uint8_t sad=2; uint8_t dad=1; if(SecoderBufferLen0) { SecoderBufferLen=0; delete[] SecoderBuffer; } if((SecoderBuffer=new uint8_t[cmd_len+1024])!=NULL) SecoderBufferLen=cmd_len+1024; else return STATUS_BUFFER_OVERFLOW; } memcpy(SecoderBuffer,cmd,cmd_len); SecoderBuffer[0]=0x20; SecoderBuffer[1]=0x70 | (0x0f & SecoderBuffer[2]); SecoderBuffer[2]=0; SecoderBuffer[3]=0; return KTLightCall(&sad,&dad,SecoderBuffer,cmd_len,Lc,SecoderBuffer+7,Le,response,response_len); } else if(cmd[3]==1 && Le==-1) { if(SecoderBufferLen0) { SecoderBufferLen=0; delete[] SecoderBuffer; } if((SecoderBuffer=new uint8_t[cmd_len+1024])!=NULL) SecoderBufferLen=cmd_len+1024; else return STATUS_BUFFER_OVERFLOW; } memcpy(SecoderBuffer,cmd,cmd_len); if(cmd[2]==0) { uint32_t rlen=*response_len; RSCT_IFD_RESULT Res=IfdVendor(CJPCSC_VEN_IOCTRL_VERIFY_PIN_DIRECT,SecoderBuffer+7,cmd_len-7,response,&rlen); if(Res!=STATUS_SUCCESS) { *response_len=0; return Res; } if(rlen<65536) { *response_len=(uint16_t)rlen; return Res; } else { *response_len=0; return STATUS_BUFFER_OVERFLOW; } } if(cmd[2]==1) { uint32_t rlen=*response_len; RSCT_IFD_RESULT Res=IfdVendor(CJPCSC_VEN_IOCTRL_MODIFY_PIN_DIRECT,SecoderBuffer+7,cmd_len-7,response,&rlen); if(Res!=STATUS_SUCCESS) { *response_len=0; return Res; } if(rlen<65536) { *response_len=(uint16_t)rlen; return Res; } else { *response_len=0; return STATUS_BUFFER_OVERFLOW; } } } } } } if(cmd_len==5 && cmd[0]==0xff && cmd[1]==0x9a && cmd[2]==0x01 && cmd[4]==0) { switch(cmd[3]) { case 1: if(*response_len>=12) { memcpy(response,"REINER SCT\x90\x00",12); *response_len=12; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 2: if(*response_len>=6) { memcpy(response,"0C4B\x90\x00",6); *response_len=6; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 3: if(*response_len>=(l=strlen((const char*)(m_ReaderInfo.ProductString)))+2) { memcpy(response,m_ReaderInfo.ProductString,l); memcpy(response+l,"\x90\x00",2); *response_len=l+2; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 4: if(*response_len>=6) { sprintf((char *)response,"%04X\x90",m_ReaderInfo.PID); *response_len=6; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 6: if(*response_len>=5) { sprintf((char *)response,"%1d.%1d\x90",(int)(m_ReaderInfo.Version>>4),(int)(m_ReaderInfo.Version & 0x0f)); *response_len=5; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 7: str=rsct_get_package_version(); if(*response_len>=(l=strlen(str))+2) { memcpy(response,str,l); memcpy(response+l,"\x90\x00",2); *response_len=l+2; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 8: if(*response_len>=7 && GetReadersInputBufferSize()<=99999 || *response_len>=6 && GetReadersInputBufferSize()<=9999) { sprintf((char *)response,"%d",(int)GetReadersInputBufferSize()); memcpy(response+(l=strlen((char *)response)),"\x90\x00",2); *response_len=l+2; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 9: if(*response_len>=8) { memcpy(response,"424250\x90\x00",8); *response_len=8; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; default:; } } if(m_p_Slot[Slot].m_ActiveProtocol==SCARD_PROTOCOL_T0 && m_p_Slot[Slot].m_bIsRF==false) { if(cmd_len==4) { uint8_t sbuffer[5]; memcpy(sbuffer,cmd,4); sbuffer[4]=0; return ccidTransmit(sbuffer,5,response,response_len,Slot); } else if(cmd_len==5) { uint8_t rbuffer[258]; uint8_t sbuffer[5]; uint8_t Le; uint8_t La; uint16_t ges_len=0; uint16_t rlen=2; memcpy(sbuffer,cmd,4); rbuffer[0]=0x61; rbuffer[1]=cmd[4]; while(rbuffer[rlen-2]==0x61) //while chaining { rbuffer[0]=0x6C; Le=rbuffer[rlen-1]; rbuffer[1]=Le; rlen=2; while(rlen==2 && rbuffer[0]==0x6C) //while retransmit with other Length; { rlen=sizeof(rbuffer); sbuffer[4]=La=rbuffer[1]; if((Result=ccidTransmit(sbuffer,5,rbuffer,&rlen,Slot))!=STATUS_SUCCESS) { return Result; } if(m_p_Slot[Slot].m_ApduNorm==NORM_PCSC) break; if(rlen<2) { *response_len=0; return STATUS_IO_TIMEOUT; } if(Le!=0 && Le*response_len) { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } memcpy(response,rbuffer,rlen); response+=rlen-2; ges_len+=rlen-2; memcpy(sbuffer,"\x00\xc0\x00\x00",4); if(m_p_Slot[Slot].m_ApduNorm==NORM_PCSC) break; } *response_len=ges_len+2; return STATUS_SUCCESS; } else if(cmd_len==5+cmd[4] && cmd[4]!=0) { if((Result=ccidTransmit(cmd,cmd_len,response,response_len,Slot))==STATUS_SUCCESS) { if(*response_len==2 && (response[0] & 0xf0)==0xc0) response[0]&=0x7f; else if(*response_len==2 && (response[0] & 0xf0)==0xb0) response[0]&=0xdf; } return Result; } else if(cmd_len==6+cmd[4] && cmd[4]!=0) { uint8_t sbuffer[5]; uint8_t rbuffer[258]; uint16_t rlen=sizeof(rbuffer); unsigned int tot_size=0; unsigned int rest_size=sizeof(rbuffer); uint8_t *rptr=rbuffer; if((Result=ccidTransmit(cmd,cmd_len-1,rbuffer,&rlen,Slot))!=STATUS_SUCCESS) { *response_len=0; return Result; } // sbuffer[0]=cmd[0]; sbuffer[0]=0; memcpy(sbuffer+1,"\xC0\x00\x00",3); rptr+=rlen-2; rest_size-=rlen-2; tot_size+=rlen-2; if(rlen==2 && (((rbuffer[0] & 0xf0)==0x90 && (rbuffer[0]!=0x90 || rbuffer[1]!=0x00)) || rbuffer[0]==0x62 || rbuffer[0]==0x63)) { sbuffer[4]=cmd[cmd_len-1]; rlen=rest_size; if((Result=ccidTransmit(sbuffer,5,rbuffer,&rlen,Slot))!=STATUS_SUCCESS) { *response_len=0; return Result; } rest_size-=rlen-2; tot_size+=rlen-2; } else if(rlen==2 && (rbuffer[0] & 0xf0)==0xc0) rbuffer[0]&=0x7f; else if(rlen==2 && (rbuffer[0] & 0xf0)==0xb0) rbuffer[0]&=0xdf; if(rlen >=2 && (rptr[rlen-2]==0x61 || rptr[rlen-2]==0x6C)) { while(rlen >=2 && (rptr[rlen-2]==0x61 || rptr[rlen-2]==0x6C)) { rptr+=rlen-2; if(cmd[cmd_len-1]*response_len) { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } memcpy(response,rbuffer,tot_size+2); *response_len=tot_size+2; return STATUS_SUCCESS; } /* else if(lenc==7 && cmd[4]==0) { } else if(lenc==7+(((uint16_t)cmd[5])<<8)+cmd[6] && cmd[4]==0 && lenc!=7) { } else if(lenc==9+(((uint16_t)cmd[5])<<8)+cmd[6] && cmd[4]==0 && lenc!=9) { }*/ else return STATUS_INVALID_PARAMETER; } else { return ccidTransmit(cmd,cmd_len,response,response_len,Slot); } } CJ_RESULT CEC30Reader::CtSetSilentMode(bool boolMode,bool *pboolMode,uint32_t *Result) { CJ_RESULT Res; uint8_t ResultMode; uint32_t Len; ResultMode=boolMode?1:0; Len=sizeof(ResultMode); if((Res=SetFlashMask())!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); return Res; } if((Res=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_MODULE_SET_SILENT_MODE,&ResultMode,sizeof(ResultMode),Result,&ResultMode,&Len))!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Silent mode not set"); } *pboolMode=ResultMode?true:false; return Res; } CJ_RESULT CEC30Reader::CtGetSilentMode(bool *pboolMode,uint32_t *Result) { uint32_t Res; uint8_t ResultMode; uint32_t Len; Len=sizeof(ResultMode); if((Res=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_MODULE_SET_SILENT_MODE,&ResultMode,sizeof(ResultMode),Result,&ResultMode,&Len))!=CJ_SUCCESS) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Error getting silent mode"); } *pboolMode=ResultMode?true:false; return Res; } bool CEC30Reader::IsClass3(void) { return true; } CJ_RESULT CEC30Reader::cjInput(uint8_t *key,uint8_t timeout,uint8_t *tag50,int tag50len) { CJ_RESULT Res=CJ_ERR_WRONG_PARAMETER; uint32_t Len; uint32_t Result; uint8_t Error; uint32_t ErrorLen=sizeof(Error); Len=1; if(FindModule(MODULE_ID_MKT_COMP)) { uint8_t buffer[65]; if(tag50len>64) return CJ_ERR_RBUFFER_TO_SMALL; buffer[0]=timeout; if(tag50len) memcpy(buffer+1,tag50,tag50len); if((Res=CtApplicationData(MODULE_ID_MKT_COMP,0,buffer,tag50len+1,&Result,key,&Len,&Error,&ErrorLen))) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Error Input"); } } return Res; } CJ_RESULT CEC30Reader::cjOutput(uint8_t timeout,uint8_t *tag50,int tag50len) { CJ_RESULT Res; uint32_t Result; uint8_t Error; uint32_t ErrorLen=sizeof(Error); uint8_t buffer[65]; if(tag50len>64) return CJ_ERR_RBUFFER_TO_SMALL; buffer[0]=timeout; memcpy(buffer+1,tag50,tag50len); if((Res=CtApplicationData(MODULE_ID_MKT_COMP,1,buffer,tag50len+1,&Result,0,0,&Error,&ErrorLen))) { m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Error output"); } return Res; } CJ_RESULT CEC30Reader::SpecialLess3_0_41() { cj_ModuleInfo *Info=FindModule(MODULE_ID_KERNEL); if(Info==NULL) return CJ_ERR_LEN; if(Info->Version<0x30 || Info->Version==0x30 && Info->Revision<=40) { if(m_p_Slot[0].m_ReaderState==SCARD_ABSENT) return CJ_ERR_NO_ICC; else if(m_p_Slot[0].m_ReaderState!=SCARD_SPECIFIC) return CJ_ERR_NO_ACTIVE_ICC; } return CJ_SUCCESS; } int CEC30Reader::ExecuteApplSecureResult(uint8_t Error,uint32_t ErrorLength,uint8_t *in,int *in_len,uint8_t *RespData,uint32_t RespDataLen,int offs,uint8_t Slot) { CJ_RESULT Res=SpecialLess3_0_41(); if(Res!=CJ_SUCCESS) return Res; if(ErrorLength) { if(Error==XFR_PARITY_ERROR) return CJ_ERR_PARITY; else if(Error==ICC_MUTE) return CJ_ERR_TIMEOUT; else if(Error==PIN_TIMEOUT) return CJ_ERR_PIN_TIMEOUT; else if(Error==PIN_CANCELED) return CJ_ERR_PIN_CANCELED; else if(Error==PIN_DIFFERENT) return CJ_ERR_PIN_DIFFERENT; else if(Error==EXT_ERROR) { if(*in_len<(int)RespDataLen) return CJ_ERR_RBUFFER_TO_SMALL; memcpy(in,RespData,RespDataLen); *in_len=RespDataLen; return CJ_ERR_PIN_EXTENDED; } else if(Error==5) return CJ_ERR_WRONG_PARAMETER; else if(Error==21+offs) return CJ_ERR_WRONG_PARAMETER; else if(Error==26+offs) return CJ_ERR_CONDITION_OF_USE; else if(Error==DEACTIVATED_PROTOCOL) { if(m_p_Slot[Slot].m_ReaderState==SCARD_ABSENT) return CJ_ERR_NO_ICC; else if(m_p_Slot[Slot].m_ReaderState!=SCARD_SPECIFIC) return CJ_ERR_NO_ACTIVE_ICC; } else return CJ_ERR_LEN; } if(*in_len<(int)RespDataLen) return CJ_ERR_RBUFFER_TO_SMALL; memcpy(in,RespData,RespDataLen); *in_len=RespDataLen; return CJ_SUCCESS; } #ifdef IT_TEST int CEC30Reader::cjccid_SecurePV(uint8_t Timeout, uint8_t PinPosition,uint8_t PinType, uint8_t PinLengthSize,uint8_t PinLength, uint8_t PinLengthPosition, uint8_t Min, uint8_t Max, uint8_t Condition,uint8_t *Prologue, uint8_t *out,int out_len,uint8_t *in,int *in_len,uint8_t Slot,uint8_t *Text,uint8_t Textlen,uint8_t bMessageIndex,uint8_t bNumberMessage) #else int CEC30Reader::cjccid_SecurePV(uint8_t Timeout, uint8_t PinPosition,uint8_t PinType, uint8_t PinLengthSize,uint8_t PinLength, uint8_t PinLengthPosition, uint8_t Min, uint8_t Max, uint8_t Condition,uint8_t *Prologue, uint8_t *out,int out_len,uint8_t *in,int *in_len,uint8_t *Text,uint8_t Textlen,uint8_t bMessageIndex,uint8_t bNumberMessage,uint8_t Slot) #endif { if(Max>15) Max=15; if(Text==NULL || Textlen==0 || FindModule(MODULE_ID_MKT_COMP)==NULL) #ifdef IT_TEST return base::cjccid_SecurePV(Timeout, PinPosition,PinType, PinLengthSize,PinLength, PinLengthPosition, Min,Max, Condition,Prologue, out,out_len,in,in_len,Slot,Text,Textlen,bMessageIndex,bNumberMessage); #else return base::cjccid_SecurePV(Timeout, PinPosition,PinType, PinLengthSize,PinLength, PinLengthPosition, Min,Max, Condition,Prologue, out,out_len,in,in_len,Text,Textlen,bMessageIndex,bNumberMessage,Slot); #endif else { uint32_t Result; uint8_t RespData[1000]; uint8_t buffer[1000]; uint32_t RespDataLen=sizeof(RespData); struct _CCID_Message::_Data::_Secure *Secure; uint8_t Error; uint32_t ErrorLength=sizeof(Error); int Res; buffer[0]=Textlen; memcpy(buffer+1,Text,Textlen); buffer[1+Textlen]=buffer[2+Textlen]=0; Secure=(struct _CCID_Message::_Data::_Secure *)(buffer+Textlen+3); Secure->bPINOperation=0; Secure->bTimeOut=Timeout; Secure->bmFormatString=(uint8_t)(0x80 | (PinPosition<<3) | PinType); Secure->bmPINBlockString=(uint8_t)((PinLengthSize<<4) | PinLength); Secure->bmPINLengthFormat=PinLengthPosition; Secure->Data.Verify.wPINMaxExtraDigit=HostToReaderShort((((uint16_t)Min)<<8)+Max); Secure->Data.Verify.bEntryValidationCondition=Condition; Secure->Data.Verify.bNumberMessage=bNumberMessage; Secure->Data.Verify.wLangId=HostToReaderShort(0x0409); Secure->Data.Verify.bMsgIndex=bMessageIndex; memcpy(Secure->Data.Verify.bTeoPrologue,Prologue,3); memcpy(Secure->Data.Verify.abData,out,out_len); #ifdef _INSERT_KEY_EVENTS { uint8_t buffer[2]; buffer[0]=RDR_TO_PC_KEYEVENT; buffer[1]=0xa0; DoInterruptCallback(buffer,2); } #endif Res=CtApplicationData(MODULE_ID_MKT_COMP,2,buffer,15+out_len+Textlen+3,&Result,RespData,&RespDataLen,&Error,&ErrorLength,Slot); #ifdef _INSERT_KEY_EVENTS if(Res==CJ_SUCCESS) { if(m_p_Slot[Slot].m_ReaderState==SCARD_SPECIFIC) { uint8_t buffer[2]; buffer[0]=RDR_TO_PC_KEYEVENT; if(ErrorLength==1 && Error==PIN_CANCELED) buffer[1]=0x01; else buffer[1]=0x02; DoInterruptCallback(buffer,2); } } { uint8_t buffer[2]; buffer[0]=RDR_TO_PC_KEYEVENT; buffer[1]=0xa1; DoInterruptCallback(buffer,2); } #endif if(Res!=0) return Res; return ExecuteApplSecureResult(Error,ErrorLength,in,in_len,RespData,RespDataLen,0,Slot); } } #ifdef IT_TEST int CEC30Reader::cjccid_SecureMV(uint8_t Timeout, uint8_t PinPosition,uint8_t PinType, uint8_t PinLengthSize,uint8_t PinLength, uint8_t PinLengthPosition, uint8_t Min, uint8_t Max, uint8_t bConfirmPIN, uint8_t Condition,uint8_t *Prologue, uint8_t OffsetOld,uint8_t OffsetNew, uint8_t *out,int out_len,uint8_t *in,int *in_len,uint8_t Slot,int TextCount,uint8_t *Text[3],uint8_t Textlen[3],uint8_t bMessageIndex[3],uint8_t bNumberMessage) #else int CEC30Reader::cjccid_SecureMV(uint8_t Timeout, uint8_t PinPosition,uint8_t PinType, uint8_t PinLengthSize,uint8_t PinLength, uint8_t PinLengthPosition, uint8_t Min, uint8_t Max, uint8_t bConfirmPIN, uint8_t Condition,uint8_t *Prologue, uint8_t OffsetOld,uint8_t OffsetNew, uint8_t *out,int out_len,uint8_t *in,int *in_len,int TextCount,uint8_t *Text[3],uint8_t Textlen[3],uint8_t bMessageIndex[3],uint8_t bNumberMessage,uint8_t Slot) #endif { if(Max>15) Max=15; if(Text==NULL || Textlen==0 || TextCount==0 || FindModule(MODULE_ID_MKT_COMP)==NULL) { #ifdef IT_TEST return base::cjccid_SecureMV(Timeout,PinPosition,PinType,PinLengthSize,PinLength, PinLengthPosition,Min,Max,bConfirmPIN,Condition,Prologue,OffsetOld,OffsetNew, out,out_len,in,in_len,Slot,TextCount,Text,Textlen,bMessageIndex,bNumberMessage); #else return base::cjccid_SecureMV(Timeout,PinPosition,PinType,PinLengthSize,PinLength, PinLengthPosition,Min,Max,bConfirmPIN,Condition,Prologue,OffsetOld,OffsetNew, out,out_len,in,in_len,TextCount,Text,Textlen,bMessageIndex,bNumberMessage,Slot); #endif } else { uint32_t Result; uint8_t RespData[1000]; uint8_t buffer[1000]; uint32_t RespDataLen=sizeof(RespData); uint8_t *ptr; struct _CCID_Message::_Data::_Secure *Secure; uint8_t Error; uint32_t ErrorLength=sizeof(Error); int i; int Res; uint32_t len=0; for(i=0,ptr=buffer;ibPINOperation=1; Secure->bTimeOut=Timeout; Secure->bmFormatString=(uint8_t)(0x80 | (PinPosition<<3) | PinType); Secure->bmPINBlockString=(uint8_t)((PinLengthSize<<4) | PinLength); Secure->bmPINLengthFormat=PinLengthPosition; Secure->Data.Modify.bInsertionOffsetOld=OffsetOld; Secure->Data.Modify.bInsertionOffsetNew=OffsetNew; Secure->Data.Modify.wPINMaxExtraDigit=HostToReaderShort((((uint16_t)Min)<<8)+Max); Secure->Data.Modify.bConfirmPIN= bConfirmPIN; Secure->Data.Modify.bEntryValidationCondition=Condition; Secure->Data.Modify.bNumberMessage=bNumberMessage; Secure->Data.Modify.wLangId=HostToReaderShort(0x0409); Secure->Data.Modify.bMsgIndex1=bMessageIndex[0]; Secure->Data.Modify.bMsgIndex2=bMessageIndex[1]; Secure->Data.Modify.bMsgIndex3=bMessageIndex[2]; memcpy(Secure->Data.Modify.bTeoPrologue,Prologue,3); memcpy(Secure->Data.Modify.abData,out,out_len); #ifdef _INSERT_KEY_EVENTS { uint8_t buffer[2]; buffer[0]=RDR_TO_PC_KEYEVENT; buffer[1]=0xa0; DoInterruptCallback(buffer,2); } #endif Res=CtApplicationData(MODULE_ID_MKT_COMP,2,buffer,20+out_len+len+3,&Result,RespData,&RespDataLen,&Error,&ErrorLength,Slot); #ifdef _INSERT_KEY_EVENTS if(Res==CJ_SUCCESS) { if(m_p_Slot[Slot].m_ReaderState==SCARD_SPECIFIC) { uint8_t buffer[2]; buffer[0]=RDR_TO_PC_KEYEVENT; if(ErrorLength==1 && Error==PIN_CANCELED) buffer[1]=0x01; else buffer[1]=0x02; DoInterruptCallback(buffer,2); } } { uint8_t buffer[2]; buffer[0]=RDR_TO_PC_KEYEVENT; buffer[1]=0xa1; DoInterruptCallback(buffer,2); } #endif if(Res!=0) return Res; return ExecuteApplSecureResult(Error,ErrorLength,in,in_len,RespData,RespDataLen,5,Slot); } } CJ_RESULT CEC30Reader::SetSyncParameters(uint8_t AddrByteCount, uint16_t PageSize,uint8_t Slot) { CCID_Message Message; CCID_Response Response; memset(&Message,0,sizeof(Message)); Message.bMessageType=PC_TO_RDR_SETPARAMETERS; Message.Header.SetParameters.bProtocolNum=2; Message.dwLength=sizeof(Message.Data.SetParameters.Sync); Message.Data.SetParameters.Sync.AddrByteCount=AddrByteCount; Message.Data.SetParameters.Sync.PageSize=HostToReaderShort(PageSize); return Transfer(&Message,&Response,Slot); } CJ_RESULT CEC30Reader::KTLightCall(uint8_t *sad,uint8_t *dad,uint8_t *cmd, uint16_t lenc,int32_t Lc,uint8_t *data_ptr,int32_t Le,uint8_t *response,uint16_t *lenr) { uint16_t Function=cmd[1]; uint32_t Result; uint32_t ResponseLen=*lenr-2; uint8_t ApplicationError[6]; uint32_t ApplicationErrorLength=sizeof(ApplicationError); CJ_RESULT Res; if(cmd[2]!=00 || cmd[3]!=00) { response[0]=0x6a; response[1]=0x00; *lenr=2; return 0; } if(Lc==-1) { response[0]=0x67; response[1]=0x00; *lenr=2; return 0; } if(cmd[1]==0x72 || cmd[1]==0x73 || cmd[1]==0x75 || (cmd[1]==0x76 && FindModule(MODULE_ID_KT_LIGHT_GC))) { if(Le!=-1) { response[0]=0x6c; response[1]=0x00; *lenr=2; return 0; } } else if(Le!=0) { response[0]=0x6c; response[1]=0x00; *lenr=2; return 0; } else lenc--; memmove(cmd,cmd+3,lenc-3); lenc-=3; memmove(cmd+1,data_ptr-3,Lc); lenc--; if(FindModule(MODULE_ID_KT_LIGHT)) { Res=CtApplicationData(MODULE_ID_KT_LIGHT,Function-0x70,cmd,Lc+1,&Result,response,&ResponseLen,ApplicationError,&ApplicationErrorLength); } else { Res=CtApplicationData(MODULE_ID_KT_LIGHT_GC,Function-0x70,cmd,Lc+1,&Result,response,&ResponseLen,ApplicationError,&ApplicationErrorLength); } if(Res==CJ_ERR_CHECK_RESULT) { response[0]=0x69; response[1]=0x85; *lenr=2; return CJ_SUCCESS; } if(Res!=CJ_SUCCESS) { *lenr=0; return Res; } if(ApplicationErrorLength>2) { *lenr=0; return CJ_ERR_WRONG_ANSWER; } memcpy(response+ResponseLen,ApplicationError,ApplicationErrorLength); *lenr=(uint16_t)(ResponseLen+ApplicationErrorLength); *dad=2; *sad=1; return CJ_SUCCESS; } int CEC30Reader::ExecuteSecureResult(CCID_Response *Response,uint8_t *in,int *in_len,int offs) { cj_ModuleInfo *Info=FindModule(MODULE_ID_KERNEL); if(Info==NULL) return CJ_ERR_LEN; if(Info->Version<0x30 || Info->Version==0x30 && Info->Revision<=40) return base::ExecuteSecureResult(Response,in,in_len,offs); if(Response->bStatus & 0x40) { if(Response->bError==XFR_PARITY_ERROR) return CJ_ERR_PARITY; else if(Response->bError==ICC_MUTE) return CJ_ERR_TIMEOUT; else if(Response->bError==PIN_TIMEOUT) return CJ_ERR_PIN_TIMEOUT; else if(Response->bError==PIN_CANCELED) return CJ_ERR_PIN_CANCELED; else if(Response->bError==PIN_DIFFERENT) return CJ_ERR_PIN_DIFFERENT; else if(Response->bError==EXT_ERROR) { if(*in_len<(int)Response->dwLength) return CJ_ERR_RBUFFER_TO_SMALL; memcpy(in,Response->Data.abData,Response->dwLength); *in_len=Response->dwLength; return CJ_ERR_PIN_EXTENDED; } else if(Response->bError==5) return CJ_ERR_WRONG_PARAMETER; else if(Response->bError==21+offs) return CJ_ERR_WRONG_PARAMETER; else if(Response->bError==26+offs) return CJ_ERR_CONDITION_OF_USE; else if(Response->bError==DEACTIVATED_PROTOCOL) { if(Response->bStatus & 0x02) return CJ_ERR_NO_ICC; else if(Response->bStatus & 0x01) return CJ_ERR_NO_ACTIVE_ICC; } else return CJ_ERR_LEN; } if(*in_len<(int)Response->dwLength) return CJ_ERR_RBUFFER_TO_SMALL; memcpy(in,Response->Data.abData,Response->dwLength); *in_len=Response->dwLength; return CJ_SUCCESS; } CJ_RESULT CEC30Reader::SetFlashMask(void) { return CJ_SUCCESS; } bool CEC30Reader::HastModulestoreInfo() { cj_ModuleInfo *Info=FindModule(MODULE_ID_KERNEL); return (Info->Version>0x30 || Info->Version==0x30 && Info->Revision>=43); } CJ_RESULT CEC30Reader::CtSetModulestoreInfo(uint8_t *StoreInfo,uint8_t InfoLength) { uint32_t Result; if(!HastModulestoreInfo()) return base::CtSetModulestoreInfo(StoreInfo,InfoLength); if(SetFlashMask()!=CJ_SUCCESS) m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Can't set Flashmask"); return Escape(MODULE_ID_KERNEL,CCID_ESCAPE_SET_MODULESTORE_INFO,StoreInfo,InfoLength,&Result,0,0); } CJ_RESULT CEC30Reader::CtGetModulestoreInfo(uint8_t *StoreInfo,uint8_t *InfoLength) { CJ_RESULT Res; uint32_t Result; uint32_t Len=*InfoLength; if(!HastModulestoreInfo()) return base::CtGetModulestoreInfo(StoreInfo,InfoLength); Res=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_GET_MODULESTORE_INFO,NULL,0,&Result,StoreInfo,&Len); if(Res==CJ_SUCCESS || Res==CJ_ERR_RBUFFER_TO_SMALL && StoreInfo==NULL && InfoLength!=NULL) *InfoLength=(uint8_t)Len; return Res; } CJ_RESULT CEC30Reader::SetSMModeAndCount(uint32_t ModuleID,uint32_t Count) { uint32_t Result; tSMSelect SMSelect; SMSelect.ModuleID=HostToReaderLong(ModuleID); SMSelect.Count=HostToReaderLong(Count); return Escape(MODULE_ID_KERNEL,CCID_ESCAPE_SELECT_SM_MODULE,(uint8_t *)&SMSelect,sizeof(SMSelect),&Result,0,0); } pcsc-cyberjack-3.99.5final.sp05/cjeca32/EC30Reader.h000066400000000000000000000146011231776762100214620ustar00rootroot00000000000000#ifndef ECA_EC30READER_H #define ECA_EC30READER_H #include "CCIDReader.h" class CEC30Reader : public CCCIDReader { public: CEC30Reader(CReader *Owner,CBaseCommunication *Communicator); virtual CJ_RESULT PostCreate(); public: ~CEC30Reader(void); virtual CJ_RESULT CtLoadModule(uint8_t *pData,uint32_t DataLength,uint8_t *pSgn,uint32_t SgnLength,uint32_t *Result); virtual CJ_RESULT CtGetModuleInfoFromFile(uint8_t *pData,uint32_t DataLength,cj_ModuleInfo *ModuleInfo,uint32_t *EstimatedUpdateTime); virtual CJ_RESULT CtDeleteALLModules(uint32_t *Result); virtual CJ_RESULT CtDeleteModule(uint32_t ModuleID,uint32_t *Result); virtual CJ_RESULT CtActivateModule(uint32_t ModuleID,uint32_t *Result); virtual CJ_RESULT CtDeactivateModule(uint32_t ModuleID,uint32_t *Result); virtual CJ_RESULT CtKeyUpdate(uint8_t *pData,uint32_t DataLength,uint32_t *Result); virtual CJ_RESULT CtIsKeyUpdateRecommended(uint8_t *pData,uint32_t DataLength,uint32_t *EstimatedUpdateTime); virtual CJ_RESULT CtSelfTest(void); virtual CJ_RESULT CtShowAuth(void); virtual RSCT_IFD_RESULT IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot=0); virtual CJ_RESULT CtSetSilentMode(bool boolMode,bool *pboolMode,uint32_t *Result); virtual CJ_RESULT CtGetSilentMode(bool *pboolMode,uint32_t *Result); virtual CJ_RESULT CtSetModulestoreInfo(uint8_t *Info,uint8_t InfoLength); virtual CJ_RESULT CtGetModulestoreInfo(uint8_t *Info,uint8_t *InfoLength); protected: virtual RSCT_IFD_RESULT _IfdPower(uint32_t Mode, uint8_t *ATR, uint32_t *ATR_Length, uint32_t Timeout,uint8_t Slot=0); virtual bool ATRFilter(bool IsWarm,uint8_t Slot=0); virtual int Escape(uint32_t ApplicationID,uint16_t Function,uint8_t *InputData, uint32_t InputLen, uint32_t *Result, uint8_t *ResponseData, uint32_t *ResponseLen,uint8_t Slot=0); virtual CJ_RESULT CtApplicationData(uint32_t ApplicationID,uint16_t Function,uint8_t *InputData, uint32_t InputLen, uint32_t *Result, uint8_t *ResponseData, uint32_t *ResponseLen, uint8_t *ApplicationError,uint32_t *ApplicationErrorLength,uint8_t Slot=0); virtual CJ_RESULT BuildReaderInfo(); virtual CJ_RESULT BuildModuleInfo(); virtual bool HastModulestoreInfo(); virtual void SetSerialNumber(void); virtual void SetDate(uint8_t Nr); bool SetReaderConstants(void); virtual RSCT_IFD_RESULT _IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot=0); virtual RSCT_IFD_RESULT ccidTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot=0); CJ_RESULT _CtSetContrast(uint8_t Value,uint32_t *Result); CJ_RESULT _CtSetBacklight(uint8_t Value,uint32_t *Result); virtual bool IsClass3(void); virtual CJ_RESULT cjInput(uint8_t *key,uint8_t timeout,uint8_t *tag52,int tag52len); virtual CJ_RESULT cjOutput(uint8_t timeout,uint8_t *tag52,int tag52len); virtual CJ_RESULT SetSyncParameters(uint8_t AddrByteCount, uint16_t PageSize,uint8_t Slot=0); virtual CJ_RESULT KTLightCall(uint8_t *sad,uint8_t *dad,uint8_t *cmd, uint16_t lenc,int32_t Lc,uint8_t *data_ptr,int32_t Le,uint8_t *response,uint16_t *lenr); virtual int ExecuteSecureResult(CCID_Response *Response,uint8_t *in,int *in_len,int offs); virtual CJ_RESULT SetFlashMask(void); virtual int GetWarmstartTimeout(void); virtual CJ_RESULT SetSMModeAndCount(uint32_t ModuleID,uint32_t Count); virtual uint32_t GetReadersInputBufferSize(); virtual CJ_RESULT SpecialLess3_0_41(); #ifdef IT_TEST virtual int cjccid_SecurePV(uint8_t Timeout, uint8_t PinPosition,uint8_t PinType, uint8_t PinLengthSize,uint8_t PinLength, uint8_t PinLengthPosition, uint8_t Min, uint8_t Max, uint8_t Condition,uint8_t *Prologue, uint8_t *out,int out_len,uint8_t *in,int *in_len,uint8_t Slot,uint8_t *Text,uint8_t Textlen,uint8_t bMessageIndex,uint8_t bNumberMessage); virtual int cjccid_SecureMV(uint8_t Timeout, uint8_t PinPosition,uint8_t PinType, uint8_t PinLengthSize,uint8_t PinLength, uint8_t PinLengthPosition, uint8_t Min, uint8_t Max, uint8_t bConfirmPIN, uint8_t Condition,uint8_t *Prologue, uint8_t OffsetOld,uint8_t OffsetNew, uint8_t *out,int out_len,uint8_t *in,int *in_len,uint8_t Slot, int TextCount,uint8_t *Text[3],uint8_t Textlen[3],uint8_t bMessageIndex[3],uint8_t bNumberMessage); #else virtual int cjccid_SecurePV(uint8_t Timeout, uint8_t PinPosition,uint8_t PinType, uint8_t PinLengthSize,uint8_t PinLength, uint8_t PinLengthPosition, uint8_t Min, uint8_t Max, uint8_t Condition,uint8_t *Prologue, uint8_t *out,int out_len,uint8_t *in,int *in_len,uint8_t *Text,uint8_t Textlen,uint8_t bMessageIndex,uint8_t bNumberMessage,uint8_t Slot=0); virtual int cjccid_SecureMV(uint8_t Timeout, uint8_t PinPosition,uint8_t PinType, uint8_t PinLengthSize,uint8_t PinLength, uint8_t PinLengthPosition, uint8_t Min, uint8_t Max, uint8_t bConfirmPIN, uint8_t Condition,uint8_t *Prologue, uint8_t OffsetOld,uint8_t OffsetNew, uint8_t *out,int out_len,uint8_t *in,int *in_len,int TextCount,uint8_t *Text[3],uint8_t Textlen[3],uint8_t bMessageIndex[3],uint8_t bNumberMessage,uint8_t Slot=0); #endif uint8_t *m_pApplicationResponse; uint32_t m_nApplicationResponseLength; private: CJ_RESULT GetReaderInfo(cjeca_Info *Info); CJ_RESULT GetKeyInfo(tKeyInfo *Keys,uint32_t len); CJ_RESULT GetSecoderInfo(tSecoderInfo *Info,uint32_t len); CJ_RESULT GetModuleIDs(uint32_t *Count,uint32_t *IDs); CJ_RESULT GetModuleInfo(uint32_t ID,cj_ModuleInfo *Info); bool _CtIsKeyUpdateRecommended(uint8_t *pData,uint32_t DataLength,uint32_t *EstimatedUpdateTime,uint8_t *KV,CJ_RESULT &Res); int ExecuteApplSecureResult(uint8_t Error,uint32_t ErrorLength,uint8_t *in,int *in_len,uint8_t *RespData,uint32_t RespDataLen,int offs,uint8_t Slot=0); unsigned char *SecoderBuffer; uint32_t SecoderBufferLen; }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/ECAReader.cpp000066400000000000000000000037751231776762100217650ustar00rootroot00000000000000#include "Platform.h" #include #include "ECAReader.h" #include "BaseCommunication.h" #define base CEC30Reader CECAReader::CECAReader(CReader *Owner,CBaseCommunication *Communicator) :base(Owner,Communicator) { } CECAReader::~CECAReader(void) { } uint16_t CECAReader::HostToReaderShort(uint16_t Value) { return InversByteOrderShort(htons(Value)); } uint32_t CECAReader::HostToReaderLong(uint32_t Value) { return InversByteOrderLong(htonl(Value)); } void CECAReader::SetHWString(char *String) { strcpy(String,"ECA_"); } void CECAReader::GetProductString(uint8_t *Product) { memcpy(Product,"CJECA",5); if(GetEnviroment("ecom_a_ident",0)!=0) { memcpy(Product,"ECUSB",5); } } CJ_RESULT CECAReader::CtSetContrast(EContrast eContrast,uint32_t *Result) { CJ_RESULT Res; switch(eContrast) { case ContrastVeryLow: Res=_CtSetContrast(70,Result); break; case ContrastLow: Res=_CtSetContrast(100,Result); break; case ContrastMedium: Res=_CtSetContrast(120,Result); break; case ContrastHigh: Res=_CtSetContrast(160,Result); break; case ContrastVeryHigh: Res=_CtSetContrast(255,Result); break; default: Res=CJ_ERR_WRONG_PARAMETER; } return Res; } RSCT_IFD_RESULT CECAReader::_IfdPower(uint32_t Mode, uint8_t *ATR, uint32_t *ATR_Length, uint32_t Timeout, uint8_t Slot) { // cj_ModuleInfo *pInfo; switch(Mode) { case SCARD_COLD_RESET: case SCARD_WARM_RESET: *ATR_Length=0; /* pInfo=FindModule(MODULE_ID_KERNEL); if(pInfo && (pInfo->Version<0x30 || (pInfo->Version==0x30 && pInfo->Revision<=6))) { return STATUS_UNRECOGNIZED_MEDIA; } else return base::IfdPower(SCARD_POWER_DOWN,NULL,NULL,0);*/ if(memcmp(m_ReaderInfo.TestDate+6,"2007",4)==0 && (memcmp(m_ReaderInfo.TestDate+3,"05",2)<0 || (memcmp(m_ReaderInfo.TestDate+3,"05",2)==0 && memcmp(m_ReaderInfo.TestDate,"03",2)<=0))) { return STATUS_UNRECOGNIZED_MEDIA; } else return base::_IfdPower(Mode,ATR,ATR_Length,Timeout); default: return base::_IfdPower(Mode,ATR,ATR_Length,Timeout); } } pcsc-cyberjack-3.99.5final.sp05/cjeca32/ECAReader.h000066400000000000000000000011641231776762100214200ustar00rootroot00000000000000#ifndef ECA_ECAREADER_H #define ECA_ECAREADER_H #include "EC30Reader.h" class CECAReader : public CEC30Reader { public: CECAReader(CReader *Owner,CBaseCommunication *Communicator); virtual ~CECAReader(void); virtual CJ_RESULT CtSetContrast(EContrast eContrast,uint32_t *Result); protected: virtual RSCT_IFD_RESULT _IfdPower(uint32_t Mode, uint8_t *ATR, uint32_t *ATR_Length, uint32_t Timeout, uint8_t Slot=0); virtual uint16_t HostToReaderShort(uint16_t Value); virtual uint32_t HostToReaderLong(uint32_t Value); virtual void SetHWString(char *String); virtual void GetProductString(uint8_t *Product); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/ECBReader.cpp000066400000000000000000000006171231776762100217560ustar00rootroot00000000000000#include "Platform.h" #include "ECBReader.h" #define base CECPReader CECBReader::CECBReader(CReader *Owner,CBaseCommunication *Communicator) :base(Owner,Communicator) { } CECBReader::~CECBReader(void) { } void CECBReader::SetHWString(char *String) { strcpy(String,"ECB_"); } void CECBReader::GetProductString(uint8_t *Product) { memcpy(Product,"CJECB",5); } pcsc-cyberjack-3.99.5final.sp05/cjeca32/ECBReader.h000066400000000000000000000005121231776762100214150ustar00rootroot00000000000000#ifndef ECBREADER_H #define ECBREADER_H #include "ECPReader.h" class CECBReader : virtual public CECPReader { public: CECBReader(CReader *Owner,CBaseCommunication *Communicator); virtual ~CECBReader(void); virtual void SetHWString(char *String); virtual void GetProductString(uint8_t *Product); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/ECFReader.cpp000066400000000000000000000031331231776762100217560ustar00rootroot00000000000000#include "Platform.h" #include #include "ECFReader.h" #include "BaseCommunication.h" #include "eca_defines.h" #include "eca_module_errors.h" #define base CEC30Reader CECFReader::CECFReader(CReader *Owner,CBaseCommunication *Communicator) :base(Owner,Communicator) { } CECFReader::~CECFReader(void) { } uint16_t CECFReader::HostToReaderShort(uint16_t Value) { return InversByteOrderShort(htons(Value)); } uint32_t CECFReader::HostToReaderLong(uint32_t Value) { return InversByteOrderLong(htonl(Value)); } void CECFReader::SetHWString(char *String) { strcpy(String,"ECF_"); } void CECFReader::GetProductString(uint8_t *Product) { memcpy(Product,"CJECF",5); if(GetEnviroment("ecom_f_ident",0)!=0) { memcpy(Product,"ECUSB",5); } } CJ_RESULT CECFReader::CtSetContrast(EContrast eContrast,uint32_t *Result) { CJ_RESULT Res; switch(eContrast) { case ContrastVeryLow: Res=_CtSetContrast(40,Result); break; case ContrastLow: Res=_CtSetContrast(30,Result); break; case ContrastMedium: Res=_CtSetContrast(20,Result); break; case ContrastHigh: Res=_CtSetContrast(10,Result); break; case ContrastVeryHigh: Res=_CtSetContrast(0,Result); break; default: Res=CJ_ERR_WRONG_PARAMETER; } return Res; } CJ_RESULT CECFReader::SetFlashMask(void) { uint32_t Result; uint32_t Value=HostToReaderLong(0xa374b516); return Escape(MODULE_ID_KERNEL,CCID_ESCAPE_MODULE_SET_FLASH_MASK,(uint8_t *)&Value,sizeof(Value),&Result,0,0); } int CECFReader::GetWarmstartTimeout(void) { return 4500; } pcsc-cyberjack-3.99.5final.sp05/cjeca32/ECFReader.h000066400000000000000000000011241231776762100214210ustar00rootroot00000000000000#ifndef ECFReader #define ECFReader #include "EC30Reader.h" class CECFReader : public CEC30Reader { public: CECFReader(CReader *Owner,CBaseCommunication *Communicator); virtual ~CECFReader(void); virtual CJ_RESULT CtSetContrast(EContrast eContrast,uint32_t *Result); protected: virtual uint16_t HostToReaderShort(uint16_t Value); virtual uint32_t HostToReaderLong(uint32_t Value); virtual void SetHWString(char *String); virtual void GetProductString(uint8_t *Product); virtual CJ_RESULT SetFlashMask(void); virtual int GetWarmstartTimeout(void); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/ECMReader.cpp000066400000000000000000000025541231776762100217730ustar00rootroot00000000000000#include "Platform.h" #include "ECMReader.h" CECMReader::CECMReader(CReader *Owner,CBaseCommunication *Communicator):CECPReader(Owner,Communicator),CECRReader(Owner,Communicator),CECBReader(Owner,Communicator) {} CECMReader::~CECMReader(void) {} void CECMReader::SetHWString(char *String) { strcpy(String,"ECM_"); } void CECMReader::GetProductString(uint8_t *Product) { memcpy(Product,"CJECM",5); } RSCT_IFD_RESULT CECMReader::_IfdPower(uint32_t Mode, uint8_t *ATR, uint32_t *ATR_Length, uint32_t Timeout,uint8_t Slot) { return CECRReader::_IfdPower(Mode,ATR,ATR_Length,Timeout); } RSCT_IFD_RESULT CECMReader::IfdSetProtocol(uint32_t *Protocol,uint8_t Slot) { return CECRReader::IfdSetProtocol(Protocol); } RSCT_IFD_RESULT CECMReader::_IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot) { return CECRReader::_IfdTransmit(cmd,cmd_len,response,response_len); } RSCT_IFD_RESULT CECMReader::IfdVendor(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength) { return CECRReader::IfdVendor(IoCtrlCode,Input,InputLength,Output,OutputLength); } CJ_RESULT CECMReader::BuildReaderInfo() { return CECRReader::BuildReaderInfo(); } uint32_t CECMReader::GetReadersInputBufferSize() { return CECRReader::GetReadersInputBufferSize(); } pcsc-cyberjack-3.99.5final.sp05/cjeca32/ECMReader.h000066400000000000000000000016511231776762100214350ustar00rootroot00000000000000#ifndef ECMREADER_H #define ECMREADER_H #include "ECRReader.h" #include "ECBReader.h" class CECMReader : public CECRReader, public CECBReader { public: CECMReader(CReader *Owner,CBaseCommunication *Communicator); virtual ~CECMReader(void); virtual void SetHWString(char *String); virtual void GetProductString(uint8_t *Product); protected: virtual RSCT_IFD_RESULT _IfdPower(uint32_t Mode, uint8_t *ATR, uint32_t *ATR_Length, uint32_t Timeout,uint8_t Slot=0); virtual RSCT_IFD_RESULT IfdSetProtocol(uint32_t *Protocol,uint8_t Slot=0); virtual RSCT_IFD_RESULT _IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot=0); virtual RSCT_IFD_RESULT IfdVendor(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength); virtual CJ_RESULT BuildReaderInfo(); virtual uint32_t GetReadersInputBufferSize(); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/ECPReader.cpp000066400000000000000000000037541231776762100220010ustar00rootroot00000000000000#include "Platform.h" #include #include #include "ECPReader.h" #include "BaseCommunication.h" #define base CEC30Reader CECPReader::CECPReader(CReader *Owner,CBaseCommunication *Communicator) :base(Owner,Communicator) { } CECPReader::~CECPReader(void) { } uint16_t CECPReader::HostToReaderShort(uint16_t Value) { return InversByteOrderShort(htons(Value)); } uint32_t CECPReader::HostToReaderLong(uint32_t Value) { return InversByteOrderLong(htonl(Value)); } void CECPReader::SetHWString(char *String) { strcpy(String,"ECP_"); } void CECPReader::GetProductString(uint8_t *Product) { memcpy(Product,"CJECP",5); } CJ_RESULT CECPReader::CtSetContrast(EContrast eContrast,uint32_t *Result) { CJ_RESULT Res; switch(eContrast) { case ContrastVeryLow: Res=_CtSetContrast(70,Result); break; case ContrastLow: Res=_CtSetContrast(100,Result); break; case ContrastMedium: Res=_CtSetContrast(120,Result); break; case ContrastHigh: Res=_CtSetContrast(160,Result); break; case ContrastVeryHigh: Res=_CtSetContrast(255,Result); break; default: Res=CJ_ERR_WRONG_PARAMETER; } return Res; } CJ_RESULT CECPReader::BuildReaderInfo() { CJ_RESULT Res; Res = base::BuildReaderInfo(); m_ReaderInfo.HardwareMask |= RSCT_READER_HARDWARE_MASK_BUZZER | RSCT_READER_HARDWARE_MASK_DISPLAY_ONOFF; return Res; } RSCT_IFD_RESULT CECPReader::_IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot) { if(cmd_len==5 && cmd[0]==0xff && cmd[1]==0x9a && cmd[2]==0x01 && cmd[4]==0) { switch(cmd[3]) { case 4: if(*response_len>=6) { sprintf((char *)response,"%04X\x90",0x0420); *response_len=6; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; default:; } } return base::_IfdTransmit(cmd,cmd_len,response,response_len,Slot); } pcsc-cyberjack-3.99.5final.sp05/cjeca32/ECPReader.h000066400000000000000000000012721231776762100214370ustar00rootroot00000000000000#ifndef ECPREADER_H #define ECPREADER_H #include "EC30Reader.h" class CECPReader : public CEC30Reader { public: CECPReader(CReader *Owner,CBaseCommunication *Communicator); virtual ~CECPReader(void); virtual CJ_RESULT CtSetContrast(EContrast eContrast,uint32_t *Result); virtual RSCT_IFD_RESULT _IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot=0); protected: virtual uint16_t HostToReaderShort(uint16_t Value); virtual uint32_t HostToReaderLong(uint32_t Value); virtual void SetHWString(char *String); virtual void GetProductString(uint8_t *Product); virtual CJ_RESULT BuildReaderInfo(); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/ECRReader.cpp000066400000000000000000000326641231776762100220050ustar00rootroot00000000000000#include "Platform.h" #include #include #include "ECRReader.h" #include "BaseCommunication.h" #include "memory_placements.h" #define base CECPReader CECRReader::CECRReader(CReader *Owner,CBaseCommunication *Communicator) :base(Owner,Communicator) { } CECRReader::~CECRReader(void) { } void CECRReader::SetHWString(char *String) { strcpy(String,"ECR_"); } void CECRReader::GetProductString(uint8_t *Product) { memcpy(Product,"CJECR",5); } RSCT_IFD_RESULT CECRReader::_IfdPower(uint32_t Mode, uint8_t *ATR, uint32_t *ATR_Length, uint32_t Timeout,uint8_t Slot) { uint32_t OrginalATR_Length=0; if(ATR_Length!=0) OrginalATR_Length=*ATR_Length; RSCT_IFD_RESULT Result=base::_IfdPower(Mode,ATR,ATR_Length,Timeout); m_p_Slot[Slot].m_bIsRF=false; if(Result==STATUS_SUCCESS && Mode==SCARD_COLD_RESET || Mode==SCARD_WARM_RESET) { if(m_p_Slot[Slot].m_ATR_Length>=6 && m_p_Slot[Slot].m_ATR_Length<=12) { uint8_t tck=0; if(m_p_Slot[Slot].m_ATR[0]==0x41) { bool bDoSelectTCL=true; m_p_Slot[Slot].m_SerialNumberLength=m_p_Slot[Slot].m_ATR_Length-3; memcpy(m_p_Slot[Slot].m_SerialNumber,m_p_Slot[Slot].m_ATR+3,m_p_Slot[Slot].m_SerialNumberLength); if(m_p_Slot[Slot].m_ATR[1] & 0x20) { if(m_p_Slot[Slot].m_ATR[1]==0x28 || m_p_Slot[Slot].m_ATR[1]==0x38) { if(GetEnviroment("PrefereMifareClasic",0)) { bDoSelectTCL=false; } } if(bDoSelectTCL) { CCID_Message Message; CCID_Response Response; unsigned int i; memset(&Message,0,sizeof(Message)); Message.bMessageType=PC_TO_RDR_SETPARAMETERS; Message.Header.SetParameters.bProtocolNum=3;//Get ATS switch(Transfer(&Message,&Response)) { case CJ_SUCCESS: if((Response.bStatus&3)==2) return STATUS_NO_MEDIA; else if((Response.bStatus&3)==1 || (Response.bStatus & 0x40)) return STATUS_IO_TIMEOUT; memcpy(m_p_Slot[Slot].m_ATR,"\x3b\x80\x80\x01",4); if(Response.Data.abData[0]>15) return STATUS_NO_MEDIA; Response.Data.abData[2]&=0x70; Response.Data.abData[2]>>=4; i=0; while(Response.Data.abData[2]) { if(Response.Data.abData[2] & 1) i++; Response.Data.abData[2]>>=1; } Response.Data.abData[0]-=2+i; m_p_Slot[Slot].m_ATR[1]|=Response.Data.abData[0]; memcpy(m_p_Slot[Slot].m_ATR+4,Response.Data.abData+3+i,Response.Data.abData[0]); m_p_Slot[Slot].m_ATR_Length=Response.Data.abData[0]+4; break; default: return STATUS_DEVICE_NOT_CONNECTED; } } } else bDoSelectTCL=false; if(!bDoSelectTCL) { uint8_t merkSAK=m_p_Slot[Slot].m_ATR[1]; memcpy(m_p_Slot[Slot].m_ATR,"\x3b\x8f\x80\x01\x80\x4f\x0c\xA0\x00\x00\x03\x06\x00\x00\x00\x00\x00\x00\x00",19); m_p_Slot[Slot].m_ATR_Length=19; switch(merkSAK & 0xdf) { case 0x08: memcpy(m_p_Slot[Slot].m_ATR+12,"\x03\x00\x01",3); break; case 0x09: memcpy(m_p_Slot[Slot].m_ATR+12,"\x03\x00\x26",3); break; case 0x18: memcpy(m_p_Slot[Slot].m_ATR+12,"\x03\x00\x02",3); break; default:; } } for(unsigned int i=1;i uint32_t CECRReader::GetReadersInputBufferSize() { cj_ModuleInfo *Info; // assert(0); Info=FindModule(MODULE_ID_KERNEL); if(Info!=NULL && (Info->Version>=0x30 || Info->Version==0x30 && Info->Revision>=70)) return 2048; else return base::GetReadersInputBufferSize(); } RSCT_IFD_RESULT CECRReader::IfdSetProtocol(uint32_t *pProtocol,uint8_t Slot) { if(m_p_Slot[Slot].m_bIsRF) { uint32_t Protocol=*pProtocol; *pProtocol=0; if(m_p_Slot[Slot].m_ReaderState==SCARD_ABSENT) return STATUS_NO_MEDIA; if(m_p_Slot[Slot].m_ReaderState==SCARD_NEGOTIABLE) { if(Protocol & (SCARD_PROTOCOL_DEFAULT | SCARD_PROTOCOL_OPTIMAL)) Protocol|=(SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1); if((Protocol & SCARD_PROTOCOL_T0) && (m_p_Slot[Slot].m_PossibleProtocols & SCARD_PROTOCOL_T0)) { m_p_Slot[Slot].m_ActiveProtocol=SCARD_PROTOCOL_T0; } else if((Protocol & SCARD_PROTOCOL_T1) && (m_p_Slot[Slot].m_PossibleProtocols & SCARD_PROTOCOL_T1)) { m_p_Slot[Slot].m_ActiveProtocol=SCARD_PROTOCOL_T1; } else { return STATUS_INVALID_DEVICE_REQUEST; } *pProtocol=m_p_Slot[Slot].m_ActiveProtocol; m_p_Slot[Slot].m_ReaderState=SCARD_SPECIFIC; return STATUS_SUCCESS; } else if(m_p_Slot[Slot].m_ReaderState==SCARD_SPECIFIC) { if(Protocol & (SCARD_PROTOCOL_DEFAULT | SCARD_PROTOCOL_OPTIMAL)) Protocol|=(SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1 | SCARD_PROTOCOL_RAW); if(m_p_Slot[Slot].m_ActiveProtocol & Protocol) { *pProtocol=m_p_Slot[Slot].m_ActiveProtocol; return STATUS_SUCCESS; } else return STATUS_NOT_SUPPORTED; } else return STATUS_IO_TIMEOUT; } return base::IfdSetProtocol(pProtocol); } RSCT_IFD_RESULT CECRReader::_IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot) { int l; // uint16_t rest=*response_len; if(cmd_len==5 && cmd[0]==0xff && cmd[1]==0x9a && cmd[2]==0x01 && cmd[4]==0) { switch(cmd[3]) { case 3: if(*response_len>=(l=strlen("cyberJack RFID komfort (Test)"))+2) { memcpy(response,"cyberJack RFID komfort (Test)",l); memcpy(response+l,"\x90\x00",2); *response_len=l+2; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 4: if(*response_len>=6) { sprintf((char *)response,"%04X\x90",0x0450); *response_len=6; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 8: if(*response_len>=7 && GetReadersInputBufferSize()<=99999 || *response_len>=6 && GetReadersInputBufferSize()<=9999) { sprintf((char *)response,"%d",(int)768); memcpy(response+(l=strlen((char *)response)),"\x90\x00",2); *response_len=l+2; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; default:; } } if(m_p_Slot[Slot].m_bIsRF && cmd_len==5 && cmd[0]==0xff && cmd[1]==0xca && cmd[2]<=0x01 && cmd[3]==0) { if(cmd[2]==0) { if(*response_len>=m_p_Slot[Slot].m_SerialNumberLength+2) { if(cmd[4]==0 || cmd[4]>=m_p_Slot[Slot].m_SerialNumberLength) { memcpy(response,m_p_Slot[Slot].m_SerialNumber,m_p_Slot[Slot].m_SerialNumberLength); if(cmd[4]!=0 && cmd[4]>m_p_Slot[Slot].m_SerialNumberLength) { memset(response+m_p_Slot[Slot].m_SerialNumberLength,0,cmd[4]-m_p_Slot[Slot].m_SerialNumberLength); memcpy(response+cmd[4],"\x62\x82",2); *response_len=cmd[4]+2; } else { memcpy(response+m_p_Slot[Slot].m_SerialNumberLength,"\x90\x00",2); *response_len=m_p_Slot[Slot].m_SerialNumberLength+2; } return STATUS_SUCCESS; } } if(*response_len>=2) { response[0]=0x6C; response[1]=m_p_Slot[Slot].m_SerialNumberLength; *response_len=2; return STATUS_SUCCESS; } return STATUS_BUFFER_TOO_SMALL; } else { if(*response_len>=m_p_Slot[Slot].m_ATR_Length-3) { if(cmd[4]==0 || cmd[4]>=m_p_Slot[Slot].m_ATR_Length-5) { memcpy(response,m_p_Slot[Slot].m_ATR+4,m_p_Slot[Slot].m_ATR_Length-5); if(cmd[4]!=0 && cmd[4]>m_p_Slot[Slot].m_ATR_Length-5) { memset(response+m_p_Slot[Slot].m_ATR_Length-5,0,cmd[4]-m_p_Slot[Slot].m_ATR_Length+5); memcpy(response+cmd[4],"\x62\x82",2); *response_len=cmd[4]+2; } else { memcpy(response+m_p_Slot[Slot].m_ATR_Length-5,"\x90\x00",2); *response_len=(uint16_t)(m_p_Slot[Slot].m_ATR_Length-3); } return STATUS_SUCCESS; } } if(*response_len>=2) { response[0]=0x6C; response[1]=(uint8_t)(m_p_Slot[Slot].m_ATR_Length-5); *response_len=2; return STATUS_SUCCESS; } return STATUS_BUFFER_TOO_SMALL; } } return base::_IfdTransmit(cmd,cmd_len,response,response_len); } RSCT_IFD_RESULT CECRReader::IfdVendor(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength) { uint32_t Result; uint32_t ResponseLen=*OutputLength-6; uint32_t ApplicationErrorLength=4; uint16_t InternalLength; uint16_t InternalLength2; uint16_t InternalLengthBuffer; uint8_t lengthCHAT; uint8_t lengthPIN; uint16_t lengthCD; uint8_t lengthCAR; uint8_t lengthCARprev; switch(IoCtrlCode) { case CJPCSC_VEN_IOCTRL_EXECUTE_PACE: if(InputLength<3 || *OutputLength<6) return STATUS_INFO_LENGTH_MISMATCH; memcpy(&InternalLengthBuffer,Input+1,2); if(InputLength!=3+InternalLengthBuffer) return STATUS_INFO_LENGTH_MISMATCH; InternalLength=HostToReaderShort(InternalLengthBuffer); if(CopyIfdInput(Input,InputLength)) return STATUS_INSUFFICIENT_RESOURCES; Input=ifd_in_buffer; memcpy(Input+1,&InternalLength,2); if(Input[0]==2) { if(InputLength>4) lengthCHAT=Input[4]; if(InputLength>5+lengthCHAT) lengthPIN=Input[5+lengthCHAT]; /* if(InputLength==7+lengthCHAT+lengthPIN) return STATUS_INFO_LENGTH_MISMATCH;*/ if(InputLength>7+lengthCHAT+lengthPIN) { memcpy(&lengthCD,Input+7+lengthCHAT+lengthPIN,2); /* if(InputLength!=8+lengthCHAT+lengthPIN+lengthCD) return STATUS_INFO_LENGTH_MISMATCH;*/ lengthCD=HostToReaderShort(lengthCD); memcpy(Input+7+lengthCHAT+lengthPIN,&lengthCD,2); } } switch(CtApplicationData(MODULE_ID_KERNEL,CCID_ESCAPE_DO_PACE,Input,InputLength, &Result, Output+6, &ResponseLen, Output, &ApplicationErrorLength)) { case CJ_SUCCESS: if(*OutputLength<6+ResponseLen || ResponseLen>65535) return STATUS_INSUFFICIENT_RESOURCES; *OutputLength=6+ResponseLen; InternalLength2=(uint16_t)ResponseLen; memcpy(Output+4,&InternalLength2,2); if(ApplicationErrorLength==0) memset(Output,0,4); if(Input[0]==2 && ResponseLen>=4) { memcpy(&InternalLength,Output+8,2); InternalLength=ReaderToHostShort(InternalLength); memcpy(Output+8,&InternalLength,2); if(ResponseLen>6+InternalLength) { lengthCAR=Output[10+InternalLength]; if(ResponseLen>7+InternalLength+lengthCAR) { lengthCARprev=Output[11+InternalLength+lengthCAR]; if(lengthCARprev>0 && GetEnviroment("PACE_DisableCARprev",0)) { Output[11+InternalLength+lengthCAR]=0; memmove(Output+12+InternalLength+lengthCAR,Output+12+InternalLength+lengthCAR+lengthCARprev,ResponseLen-(6+InternalLength+lengthCAR+lengthCARprev)); ResponseLen-=lengthCARprev; *OutputLength-=lengthCARprev; InternalLength2-=lengthCARprev; memcpy(Output+4,&InternalLength2,2); lengthCARprev=0; } if(ResponseLen>8+InternalLength+lengthCAR+lengthCARprev) { memcpy(&InternalLengthBuffer,Output+12+InternalLength+lengthCAR+lengthCARprev,2); InternalLengthBuffer=ReaderToHostShort(InternalLengthBuffer); memcpy(Output+12+InternalLength+lengthCAR+lengthCARprev,&InternalLengthBuffer,2); } } } } return STATUS_SUCCESS; default: *OutputLength=0; return STATUS_UNHANDLED_EXCEPTION; } default: return base::IfdVendor(IoCtrlCode,Input,InputLength,Output,OutputLength); } } CJ_RESULT CECRReader::BuildReaderInfo() { CJ_RESULT Res; Res = base::BuildReaderInfo(); m_ReaderInfo.HardwareMask |= RSCT_READER_HARDWARE_MASK_RFID | RSCT_READER_HARDWARE_MASK_PACE; return Res; } pcsc-cyberjack-3.99.5final.sp05/cjeca32/ECRReader.h000066400000000000000000000016071231776762100214430ustar00rootroot00000000000000#ifndef ECRREADER_H #define ECRREADER_H #include "ECPReader.h" class CECRReader : virtual public CECPReader { public: CECRReader(CReader *Owner,CBaseCommunication *Communicator); virtual ~CECRReader(void); virtual void SetHWString(char *String); virtual void GetProductString(uint8_t *Product); protected: virtual RSCT_IFD_RESULT _IfdPower(uint32_t Mode, uint8_t *ATR, uint32_t *ATR_Length, uint32_t Timeout,uint8_t Slot=0); virtual RSCT_IFD_RESULT IfdSetProtocol(uint32_t *Protocol,uint8_t Slot=0); virtual RSCT_IFD_RESULT _IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot=0); virtual RSCT_IFD_RESULT IfdVendor(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength); virtual CJ_RESULT BuildReaderInfo(); virtual uint32_t GetReadersInputBufferSize(); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/EFBReader.cpp000066400000000000000000000006131231776762100217550ustar00rootroot00000000000000#include "Platform.h" #include "EFBReader.h" #define base CECFReader CEFBReader::CEFBReader(CReader *Owner,CBaseCommunication *Communicator) :base(Owner,Communicator) { } CEFBReader::~CEFBReader(void) { } void CEFBReader::SetHWString(char *String) { strcpy(String,"EFB_"); } void CEFBReader::GetProductString(uint8_t *Product) { memcpy(Product,"CJEFB",5); } pcsc-cyberjack-3.99.5final.sp05/cjeca32/EFBReader.h000066400000000000000000000005021231776762100214170ustar00rootroot00000000000000#ifndef ECFREADER_H #define ECFREADER_H #include "ECFReader.h" class CEFBReader : public CECFReader { public: CEFBReader(CReader *Owner,CBaseCommunication *Communicator); virtual ~CEFBReader(void); virtual void SetHWString(char *String); virtual void GetProductString(uint8_t *Product); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/Makefile.am000066400000000000000000000027721231776762100215760ustar00rootroot00000000000000DIST_SUBDIRS=ausb if ENABLE_NONSERIAL SUBDIRS=ausb endif INCLUDES=-I../include -I../include/driver -I../include/firmware -Iausb $(pcsc_includes) AM_CFLAGS=$(visibility_cflags) @cyberjack_platform_def@ \ -DBUILDING_CYBERJACK \ -DCYBERJACK_CONFIG_FILE=\"@cyberjack_config_file@\" AM_CPPFLAGS=$(visibility_cflags) @cyberjack_platform_def@ \ -DBUILDING_CYBERJACK \ -DCYBERJACK_CONFIG_FILE=\"@cyberjack_config_file@\" noinst_HEADERS=\ BaseCommunication.h \ BaseReader.h \ BaseTranslater.h \ CCIDReader.h \ EC30Reader.h \ ECAReader.h \ ECBReader.h \ ECFReader.h \ ECPReader.h \ ECRReader.h \ ECMReader.h \ EFBReader.h \ PPAReader.h \ RSCTCriticalSection.h \ RFKReader.h \ RFSReader.h \ CPTReader.h \ CGOReader.h \ WAVReader.h \ SerialUnix.h \ SECReader.h \ USBUnix.h \ ccid.h \ config_l.h config_p.h \ ntstatus.h \ stdafx.h \ version.h \ PCSC10.h noinst_LTLIBRARIES=libeca.la libeca_la_SOURCES=\ BaseCommunication.cpp \ BaseReader.cpp \ BaseTranslater.cpp \ CCIDReader.cpp \ Debug.cpp \ EC30Reader.cpp \ ECAReader.cpp \ ECBReader.cpp \ ECFReader.cpp \ ECPReader.cpp \ ECRReader.cpp \ ECMReader.cpp \ EFBReader.cpp \ PPAReader.cpp \ RSCTCriticalSection.cpp \ RFKReader.cpp \ RFSReader.cpp \ CPTReader.cpp \ CGOReader.cpp \ WAVReader.cpp \ Reader.cpp \ USBUnix.cpp \ SerialUnix.cpp \ SECReader.cpp \ cjeca32.cpp \ Platform_unix.cpp \ config.cpp if ENABLE_NONSERIAL libeca_la_LIBADD=ausb/libausb.la endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/PCSC10.h000066400000000000000000000055321231776762100206010ustar00rootroot00000000000000#ifndef PCSC10_H #define PCSC10_H #pragma pack (1) typedef struct _PIN_VERIFY_STRUCTURE { uint8_t bTimerOut; // timeout in seconds (00 means use default timeout) uint8_t bTimerOut2; // timeout in seconds after first key stroke uint8_t bmFormatString; // formatting options uint8_t bmPINBlockString; // bits 7-4 bit size of PIN length in APDU, bits 3-0 PIN // block size in bytes after justification and formatting uint8_t bmPINLengthFormat; // bits 7-5 RFU, bit 4 set if system units are bytes // clear if system units are bits, // bits 3-0 PIN length position in system units uint16_t wPINMaxExtraDigit; // XXYY, where XX is minimum PIN size in digits, // YY is maximum uint8_t bEntryValidationCondition; // Conditions under which PIN entry should be // considered complete uint8_t bNumberMessage; // Number of messages to display for PIN verification uint16_t wLangId; // Language for messages uint8_t bMsgIndex; // Message index (should be 00) uint8_t bTeoPrologue[3]; // T=1 I-block prologue field to use (fill with 00) uint32_t ulDataLength; // length of Data to be sent to the ICC uint8_t abData[1]; // Data to send to the ICC }PIN_VERIFY_STRUCTURE; typedef struct _PIN_MODIFY_STRUCTURE { uint8_t bTimerOut; // timeout in seconds (00 means use default timeout) uint8_t bTimerOut2; // timeout in seconds after first key stroke uint8_t bmFormatString; // formatting options USB_CCID_PIN_FORMAT_xxx) uint8_t bmPINBlockString; // bits 7-4 bit size of PIN length in APDU, bits 3-0 PIN // block size in bytes after justification and formatting uint8_t bmPINLengthFormat; // bits 7-5 RFU, bit 4 set if system units are bytes, // clear if system units are bits // bits 3-0 PIN length position in system units // bits, bits 3-0 PIN length position in system units uint8_t bInsertionOffsetOld;// Insertion position offset in bytes for the current PIN uint8_t bInsertionOffsetNew;// Insertion position offset in bytes for the new PIN uint16_t wPINMaxExtraDigit; // XXYY, where XX is minimum PIN size in digits, // YY is maximum uint8_t bConfirmPIN; // Flags governing need for confirmation of new PIN uint8_t bEntryValidationCondition; // Conditions under which PIN entry should be // considered complete uint8_t bNumberMessage; // Number of messages to display for PIN verification uint16_t wLangId; // Language for messages uint8_t bMsgIndex1; // Index of 1st prompting message uint8_t bMsgIndex2; // Index of 2d prompting message uint8_t bMsgIndex3; // Index of 3d prompting message uint8_t bTeoPrologue[3]; // T=1 I-block prologue field to use (fill with 00) uint32_t ulDataLength; // length of Data to be sent to the ICC uint8_t abData[1]; // Data to send to the ICC }PIN_MODIFY_STRUCTURE; #pragma pack () #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/PPAReader.cpp000066400000000000000000001210461231776762100220050ustar00rootroot00000000000000/*************************************************************************** begin : Sat Nov 20 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #include "Platform.h" #include #include "PPAReader.h" #include "BaseCommunication.h" #define base CCCIDReader #ifdef _WINDOWS #define DEBUGP(a,b,c,...) #else #define DEBUGP(devName, debug_mask, format, ...) {\ char dbg_buffer[256]; \ \ snprintf(dbg_buffer, sizeof(dbg_buffer)-1,\ __FILE__":%5d: " format , __LINE__ , ##__VA_ARGS__); \ dbg_buffer[sizeof(dbg_buffer)-1]=0; \ Debug.Out(devName, debug_mask, dbg_buffer,0,0); \ } #endif #define CCID_VOLTAGE_50 1 CPPAReader::CPPAReader(CReader *Owner, CBaseCommunication *Communicator) :base(Owner, Communicator) { } CPPAReader::~CPPAReader(void) { } void CPPAReader::SetHWString(char *String) { /* uuh, this is really ugly... there should at least be an indicator * for the length of the buffer provided, and strings should be null-terminated... * Or, even better, std::string should be used... * Anyway, this API is defined by the Windoze code, so we need to stick to it * even on Linux/MacOSX */ strcpy(String,"PPA_"); } void CPPAReader::GetProductString(uint8_t *Product) { /* the same here as in SetHWString... */ memcpy(Product, "CJPPA", 5); if (GetEnviroment("pinpad_a_ident", 0)!=0) { memcpy(Product,"PPAUSB", 6); } } CJ_RESULT CPPAReader::SetSyncParameters(uint8_t AddrByteCount, uint16_t PageSize,uint8_t Slot) { /* TODO: Currently not supported, but there is no matching error code for this... */ DEBUGP("PPAReader", DEBUG_MASK_COMMUNICATION_ERROR, "SetSyncParameters called."); return CJ_ERR_CHECK_RESULT; } uint32_t CPPAReader::GetReadersInputBufferSize() { /* TODO: How many bytes is this really? */ return 1024; } CJ_RESULT CPPAReader::BuildReaderInfo() { memset(&m_ReaderInfo, 0, sizeof(m_ReaderInfo)); m_ReaderInfo.SizeOfStruct=sizeof(m_ReaderInfo); m_ReaderInfo.ContentsMask= RSCT_READER_MASK_HARDWARE | RSCT_READER_MASK_VERSION | /*RSCT_READER_MASK_HARDWARE_VERSION |*/ RSCT_READER_MASK_FLASH_SIZE | RSCT_READER_MASK_HEAP_SIZE | /*RSCT_READER_MASK_SERIALNUMBER |*/ /*RSCT_READER_MASK_PRODUCTION_DATE |*/ /*RSCT_READER_MASK_TEST_DATE |*/ /*RSCT_READER_MASK_COMMISSIONING_DATE |*/ RSCT_READER_MASK_HW_STRING | 0; m_ReaderInfo.HardwareMask= RSCT_READER_HARDWARE_MASK_ICC1 | RSCT_READER_HARDWARE_MASK_KEYPAD | /*RSCT_READER_HARDWARE_MASK_DISPLAY |*/ /*RSCT_READER_HARDWARE_MASK_UPDATEABLE |*/ /*RSCT_READER_HARDWARE_MASK_MODULES |*/ 0; /* TODO: What values do we have to use here? */ m_ReaderInfo.FlashSize=32*1024; m_ReaderInfo.HeapSize=0; m_ReaderInfo.Version=0x30; SetHWString((char*)m_ReaderInfo.HardwareString); strcat((char*)m_ReaderInfo.HardwareString, (const char*)m_ReaderInfo.CommunicationString); /* TODO: Currently not supported, but there is no matching error code for this... */ return CJ_SUCCESS; } CJ_RESULT CPPAReader::BuildModuleInfo() { /* TODO: Currently not supported, but there is no matching error code for this... */ m_ModuleInfoCount=0; DEBUGP("PPAReader", DEBUG_MASK_COMMUNICATION_ERROR, "BuildModuleInfo called, returning no module."); return CJ_SUCCESS; } uint16_t CPPAReader::HostToReaderShort(uint16_t Value) { return InversByteOrderShort(htons(Value)); } uint32_t CPPAReader::HostToReaderLong(uint32_t Value) { return InversByteOrderLong(htonl(Value)); } void CPPAReader::SetSerialNumber(void) { /* TODO: How should this be done? */ } void CPPAReader::SetDate(uint8_t Nr) { /* TODO: How should this be done? */ } CJ_RESULT CPPAReader::cjInput(uint8_t *key,uint8_t timeout,uint8_t *tag52,int tag52len) { /* TODO: Currently not supported, but there is no matching error code for this... */ return CJ_ERR_CHECK_RESULT; } RSCT_IFD_RESULT CPPAReader::ccidTransmit(uint8_t BWI, const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint16_t wLevelParameter,uint8_t Slot) { CCID_Message Message; CCID_Response Response; if (cmd_len>1014) { *response_len=0; return STATUS_BUFFER_OVERFLOW; } memset(&Message, 0, sizeof(Message)); Message.bMessageType=PC_TO_RDR_XFRBLOCK; Message.dwLength=cmd_len; Message.Header.XfrBlock.bBWI=BWI; Message.Header.XfrBlock.wLevelParameter=HostToReaderShort(wLevelParameter); memcpy(Message.Data.abData, cmd,cmd_len); if (Transfer(&Message,&Response)==CJ_SUCCESS) { if (Response.bMessageType!=RDR_TO_PC_DATABLOCK) { DEBUGP("PPAReader", DEBUG_MASK_COMMUNICATION_ERROR, "Unexpected response (%02x)", (int)(Response.bMessageType)); _IfdPower(SCARD_POWER_DOWN, NULL, NULL,0); *response_len=0; return STATUS_DEVICE_PROTOCOL_ERROR; } if(Response.bStatus & 0x02) return STATUS_NO_MEDIA; if(Response.bStatus & 0x01) return STATUS_INVALID_DEVICE_STATE; if (Response.bStatus & 0x40) { if(Response.bError==ICC_MUTE) { DEBUGP("PPAReader", DEBUG_MASK_COMMUNICATION_ERROR, "Card is mute"); _IfdPower(SCARD_POWER_DOWN, NULL, NULL, 0); *response_len=0; return STATUS_IO_TIMEOUT; } else if(Response.bError==XFR_PARITY_ERROR) { DEBUGP("PPAReader", DEBUG_MASK_COMMUNICATION_ERROR, "Card is mute"); _IfdPower(SCARD_POWER_DOWN, NULL, NULL, 0); *response_len=0; return STATUS_PARITY_ERROR; } else { DEBUGP("PPAReader", DEBUG_MASK_COMMUNICATION_ERROR, "Unexpected error (%02x)", (int)(Response.bError)); _IfdPower(SCARD_POWER_DOWN, NULL, NULL, 0); *response_len=0; return STATUS_DEVICE_PROTOCOL_ERROR; } } if(Response.dwLength>*response_len) { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } *response_len=(uint16_t)Response.dwLength; memcpy(response,Response.Data.abData, Response.dwLength); return STATUS_SUCCESS; } return STATUS_DEVICE_NOT_CONNECTED; } RSCT_IFD_RESULT CPPAReader::APDU2TPDU_T1(uint16_t lenc,const uint8_t *cmd,uint16_t *lenr,uint8_t *response) { uint8_t lrc; uint16_t crc; int i; int error; uint8_t *sblock; uint8_t rblock[6]; uint16_t slen; uint8_t sbuffer[259]; uint8_t rbuffer[259]; uint8_t xwt=0; uint16_t rlen; uint8_t INF; int maxresp; RSCT_IFD_RESULT Result=STATUS_SUCCESS; error=0; maxresp=*lenr; *lenr=0; while(lenc) { INF=(lenc>IFSC)?IFSC:lenc; sbuffer[0]=0; if(PCB_seq&0x01) sbuffer[1]=0x40; else sbuffer[1]=0; if(lenc>INF) sbuffer[1]|=0x20; sbuffer[2]=INF; memcpy(sbuffer+3,cmd,INF); sblock=sbuffer; slen=(uint16_t)(INF+3); for(;;) { if(EDC==0) { lrc=0; for(i=0;i>8); sblock[slen++]=(uint8_t)crc; } rlen=sizeof(rbuffer); Result=ccidTransmit(xwt,sblock,slen,rbuffer,&rlen,0); if(Result==STATUS_SUCCESS || Result==STATUS_PARITY_ERROR || Result==STATUS_IO_TIMEOUT) { if(Result==STATUS_SUCCESS) { if(EDC==0) { lrc=0; for(i=0;i2) { _IfdPower(SCARD_POWER_DOWN,0,0,0); Result=STATUS_DEVICE_PROTOCOL_ERROR; break; } } else { sblock=sbuffer; slen=(uint16_t)(INF+3); error=0; } } else { if(Result==STATUS_SUCCESS) { if(rbuffer[0]!=0 || //Falsches NAD (rbuffer[1]&0xc0)==0x80 && (rbuffer[2]!=0 || (rbuffer[1]&0x20)==0x20) || //Unsinniger R-Block (rbuffer[1]&0xe0)==0xe0 || //SResponse ohne Request (rbuffer[1]&0xe0)==0xc0 && ((((rbuffer[1]& 0x1f)==0 || (rbuffer[1]& 0x1f)==2) && rbuffer[2]!=0) || ((rbuffer[1]& 0x1f)==1 && (rbuffer[2]!=1 || rbuffer[3]<0x10 || rbuffer[3]==255)) || ((rbuffer[1]& 0x1f)==3 && rbuffer[2]!=1) || (rbuffer[1]& 0x1f)>3 )) { if(++error>2) { _IfdPower(SCARD_POWER_DOWN,0,0,0); Result=STATUS_DEVICE_PROTOCOL_ERROR; break; } if((sblock[1]&0xc0)!=0x80) { rblock[0]=0x00; rblock[1]=(uint8_t)(0x82 | (PCB_seq & 0x10)); rblock[2]=0; sblock=rblock; } slen=3; } else if((rbuffer[1]&0x80)==0) /*I-Block*/ { if((rbuffer[1]&0x40)!=((PCB_seq&0x10)<<2) || (sbuffer[1]&0x20)==0x20 || rbuffer[2]==0 || rbuffer[2]==255) { if(++error>2) { _IfdPower(SCARD_POWER_DOWN,0,0,0); Result=STATUS_DEVICE_PROTOCOL_ERROR; break; } if((sblock[1]&0xc0)!=0x80) { rblock[0]=0x00; rblock[1]=(uint8_t)(0x82 | (PCB_seq & 0x10)); rblock[2]=0; sblock=rblock; } slen=3; } else { error=0; PCB_seq^=0x10; if(lenc) { PCB_seq^=0x01; lenc-=INF; cmd+=INF; } if(maxresp>=rlen-4-EDC) { memcpy(response+(*lenr),rbuffer+3,rlen-4-EDC); maxresp-=rlen-4-EDC; } *lenr+=(uint16_t)(rlen-4-EDC); if(rbuffer[1] & 0x20) { rblock[0]=0x00; rblock[1]=(uint8_t)(0x80 | (PCB_seq & 0x10)); rblock[2]=0; sblock=rblock; slen=3; } else { break; } } } else if((rbuffer[1]&0xE0)==0xC0) /*S-Block*/ { error=0; memcpy(rblock,rbuffer,rlen); rblock[1]|=0x20; sblock=rblock; slen=(uint16_t)(rlen-1); if((rbuffer[1]& 0x1f)==0) { PCB_seq=0; } else if((rbuffer[1]& 0x1f)==1) { IFSC=rbuffer[3]; } else if((rbuffer[1]& 0x1f)==2) { _IfdPower(SCARD_POWER_DOWN,0,0,0); Result=STATUS_DEVICE_PROTOCOL_ERROR; break; } else if((rbuffer[1]& 0x1f)==3) { xwt=rbuffer[3]; } } else /*R-Block*/ { // if((rbuffer[1]&0x10)==((((cjccidHANDLE)hDevice)->PCB_seq<<4) & 0x10)) if((rbuffer[1]&0x10)==((sbuffer[1]&0x40)>>2)) { if(++error>2) { _IfdPower(SCARD_POWER_DOWN,0,0,0); Result=STATUS_DEVICE_PROTOCOL_ERROR; } sblock=sbuffer; slen=3+sbuffer[2]; } else if(sbuffer[1] & 0x20) { error=0; PCB_seq^=0x01; cmd+=INF; lenc-=INF; break; } else if((sblock[1] & 0xC0)==0x80) { if(++error>2) { _IfdPower(SCARD_POWER_DOWN,0,0,0); Result=STATUS_DEVICE_PROTOCOL_ERROR; break; } slen=3; } else { if(++error>2) { _IfdPower(SCARD_POWER_DOWN,0,0,0); Result=STATUS_DEVICE_PROTOCOL_ERROR; break; } if((sblock[1]&0xc0)!=0x80) { rblock[0]=0x00; rblock[1]=(uint8_t)(0x82 | (PCB_seq & 0x10)); rblock[2]=0; sblock=rblock; } slen=3; } } } if(Result==STATUS_PARITY_ERROR) { if(++error>2) { _IfdPower(SCARD_POWER_DOWN,0,0,0); Result=STATUS_DEVICE_PROTOCOL_ERROR; break; } if((sblock[1]&0xc0)!=0x80) { rblock[0]=0x00; rblock[1]=(uint8_t)(0x81 | (PCB_seq & 0x10)); rblock[2]=0; /* rblock[0]=0x00; rblock[1]=0xE3; rblock[2]=01; rblock[3]=01;*/ sblock=rblock; } slen=3; // slen=4; } if(Result==STATUS_IO_TIMEOUT) { // if(++error>4) { // cjccid_iccPowerOff(hDevice); Result=STATUS_DEVICE_PROTOCOL_ERROR; break; } rblock[0]=0x00; rblock[1]=(uint8_t)(0x82 | (PCB_seq & 0x10)); rblock[2]=0; sblock=rblock; slen=3; } } } else return Result; } if(Result==STATUS_DEVICE_PROTOCOL_ERROR || (rbuffer[1] & 0xA0)==0) break; } return Result; } RSCT_IFD_RESULT CPPAReader::_IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot) { RSCT_IFD_RESULT Result; int l; const char *str; // uint16_t rest=*response_len; if(cmd_len==5 && cmd[0]==0xff && cmd[1]==0x9a && cmd[2]==0x01 && cmd[4]==0) { switch(cmd[3]) { case 1: if(*response_len>=12) { memcpy(response,"REINER SCT\x90\x00",12); *response_len=12; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 2: if(*response_len>=6) { memcpy(response,"0C4B\x90\x00",6); *response_len=6; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 3: if (*response_len>=(l=strlen((const char*)(m_ReaderInfo.ProductString)))+2) { memcpy(response,m_ReaderInfo.ProductString,l); memcpy(response+l,"\x90\x00",2); *response_len=l+2; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 4: if(*response_len>=6) { sprintf((char *)response,"%04X\x90",m_ReaderInfo.PID); *response_len=6; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 6: if (*response_len>=5) { sprintf((char *)response,"%1d.%1d\x90",(int)(m_ReaderInfo.Version>>4),(int)(m_ReaderInfo.Version & 0x0f)); *response_len=5; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 7: str=rsct_get_package_version(); if(*response_len>=(l=strlen(str))+2) { memcpy(response,str,l); memcpy(response+l,"\x90\x00",2); *response_len=l+2; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 8: if ((*response_len>=7 && GetReadersInputBufferSize()<=99999) || (*response_len>=6 && GetReadersInputBufferSize()<=9999)) { sprintf((char *)response,"%d",768/*(int)GetReadersInputBufferSize()*/); memcpy(response+(l=strlen((char *)response)),"\x90\x00",2); *response_len=l+2; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 9: if(*response_len>=8) { memcpy(response,"424250\x90\x00",8); *response_len=18; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; default:; } } if(m_p_Slot[Slot].m_ActiveProtocol==SCARD_PROTOCOL_T0 && m_p_Slot[Slot].m_bIsRF==false) { if (cmd_len==4) { uint8_t sbuffer[5]; memcpy(sbuffer,cmd,4); sbuffer[4]=0; return ccidTransmit(0,sbuffer, 5, response, response_len,0); } else if(cmd_len==5) { uint8_t rbuffer[258]; uint8_t sbuffer[5]; uint8_t Le; uint8_t La; uint16_t ges_len=0; uint16_t rlen=2; uint16_t bLevelParam=0; if(cmd[0]==0 && cmd[1]==0xb4 && cmd[4]==0) bLevelParam=(uint16_t)GetEnviroment("PPA_HandleAT88SC1616",0); memcpy(sbuffer,cmd,4); rbuffer[0]=0x61; rbuffer[1]=cmd[4]; while(rbuffer[rlen-2]==0x61) { //while chaining rbuffer[0]=0x6C; Le=rbuffer[rlen-1]; rbuffer[1]=Le; rlen=2; while(rlen==2 && rbuffer[0]==0x6C) { //while retransmit with other Length; rlen=sizeof(rbuffer); sbuffer[4]=La=rbuffer[1]; if((Result=ccidTransmit(0,sbuffer,5,rbuffer,&rlen,bLevelParam))!=STATUS_SUCCESS) { return Result; } if(m_p_Slot[Slot].m_ApduNorm==NORM_PCSC) break; if(rlen<2) { *response_len=0; return STATUS_IO_TIMEOUT; } if(Le!=0 && Le*response_len) { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } memcpy(response,rbuffer,rlen); response+=rlen-2; ges_len+=rlen-2; memcpy(sbuffer,"\x00\xc0\x00\x00",4); if(m_p_Slot[Slot].m_ApduNorm==NORM_PCSC) break; } *response_len=ges_len+2; return STATUS_SUCCESS; } else if(cmd_len==5+cmd[4] && cmd[4]!=0) { return ccidTransmit(0,cmd,cmd_len,response,response_len,0); } else if(cmd_len==6+cmd[4] && cmd[4]!=0) { uint8_t sbuffer[5]; uint8_t rbuffer[258]; uint16_t rlen=sizeof(rbuffer); unsigned int tot_size=0; unsigned int rest_size=sizeof(rbuffer); uint8_t *rptr=rbuffer; if((Result=ccidTransmit(0,cmd,cmd_len-1,rbuffer,&rlen,0))!=STATUS_SUCCESS) { *response_len=0; return Result; } // sbuffer[0]=cmd[0]; sbuffer[0]=0; memcpy(sbuffer+1,"\xC0\x00\x00",3); rptr+=rlen-2; rest_size-=rlen-2; tot_size+=rlen-2; if (rlen==2 && (((rbuffer[0] & 0xf0)==0x90 && (rbuffer[0]!=0x90 || rbuffer[1]!=0x00)) || rbuffer[0]==0x62 || rbuffer[0]==0x63)) { sbuffer[4]=cmd[cmd_len-1]; rlen=rest_size; if((Result=ccidTransmit(0,sbuffer,5,rbuffer,&rlen,0))!=STATUS_SUCCESS) { *response_len=0; return Result; } rest_size-=rlen-2; tot_size+=rlen-2; } if(rlen >=2 && (rptr[rlen-2]==0x61 || rptr[rlen-2]==0x6C)) { while(rlen >=2 && (rptr[rlen-2]==0x61 || rptr[rlen-2]==0x6C)) { rptr+=rlen-2; if(cmd[cmd_len-1]*response_len) { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } memcpy(response,rbuffer,tot_size+2); *response_len=tot_size+2; return STATUS_SUCCESS; } /* else if(lenc==7 && cmd[4]==0) { } else if(lenc==7+(((uint16_t)cmd[5])<<8)+cmd[6] && cmd[4]==0 && lenc!=7) { } else if(lenc==9+(((uint16_t)cmd[5])<<8)+cmd[6] && cmd[4]==0 && lenc!=9) { }*/ else return STATUS_INVALID_PARAMETER; } else { return APDU2TPDU_T1(cmd_len,cmd,response_len,response); } } /* * Differences between this method and the implementation in CECA30: * - PC_TO_RDR_ICCPOWERON has no data (i.e. Message.dwLength=0) * - bPowerSelect is set to 5.0 Volts by default, but can be overwritten by Registry or ini-File */ RSCT_IFD_RESULT CPPAReader::_IfdPower(uint32_t Mode, uint8_t *ATR, uint32_t *ATR_Length, uint32_t Timeout,uint8_t Slot) { CCID_Message Message; CCID_Response Response; bool warm=false; bool first=true; Timeout=HostToReaderLong(Timeout); switch(Mode) { case SCARD_COLD_RESET: DEBUGP("PPAReader", DEBUG_MASK_COMMUNICATION_INFO, "COLD RESET"); break; case SCARD_WARM_RESET: DEBUGP("PPAReader", DEBUG_MASK_COMMUNICATION_INFO, "WARM RESET"); break; case SCARD_POWER_DOWN: DEBUGP("PPAReader", DEBUG_MASK_COMMUNICATION_INFO, "POWER DOWN"); break; default: DEBUGP("PPAReader", DEBUG_MASK_COMMUNICATION_INFO, "Unknown power mode"); return STATUS_INVALID_PARAMETER; } switch(Mode) { case SCARD_COLD_RESET: case SCARD_WARM_RESET: DEBUGP("PPAReader", DEBUG_MASK_COMMUNICATION_INFO, "Reset requested, powering down"); *ATR_Length=0; _IfdPower(SCARD_POWER_DOWN, NULL, NULL, 0); DEBUGP("PPAReader", DEBUG_MASK_COMMUNICATION_INFO, "Continueing with reset request"); break; case SCARD_POWER_DOWN: break; default: return STATUS_INVALID_PARAMETER; } do { memset(&Message, 0, sizeof(Message)); Message.dwLength=0; /* (no payload data) */ Message.Header.iccPowerOn.bPowerSelect=GetDefaultVoltageClass(); switch(Mode) { case SCARD_COLD_RESET: case SCARD_WARM_RESET: *ATR_Length=0; Message.bMessageType=PC_TO_RDR_ICCPOWERON; Message.Header.iccPowerOn.bPowerSelect=GetDefaultVoltageClass(); break; case SCARD_POWER_DOWN: Message.bMessageType=PC_TO_RDR_ICCPOWEROFF; break; } if(first) first=false; else warm=true; if (Transfer(&Message, &Response)==CJ_SUCCESS) { switch(Mode) { case SCARD_COLD_RESET: case SCARD_WARM_RESET: if(Response.bMessageType!=RDR_TO_PC_DATABLOCK) return STATUS_DEVICE_NOT_CONNECTED; break; case SCARD_POWER_DOWN: if(Response.bMessageType!=RDR_TO_PC_SLOTSTATUS) return STATUS_DEVICE_NOT_CONNECTED; break; } if(Response.bStatus & 0x40) { switch(Response.bError) { case 0xfe: return STATUS_NO_MEDIA; case 0xf6: return STATUS_UNRECOGNIZED_MEDIA; case 0xef: return STATUS_CANCELLED; default: return STATUS_IO_TIMEOUT; } } if(Response.dwLength>33) Response.dwLength=33; switch(Mode) { case SCARD_COLD_RESET: case SCARD_WARM_RESET: m_p_Slot[Slot].m_ATR_Length=Response.dwLength; memcpy(m_p_Slot[Slot].m_ATR,Response.Data.abData,Response.dwLength); *ATR_Length=m_p_Slot[Slot].m_ATR_Length; memcpy(ATR,m_p_Slot[Slot].m_ATR,m_p_Slot[Slot].m_ATR_Length); default:; } } else return STATUS_DEVICE_NOT_CONNECTED; } while(Mode!=SCARD_POWER_DOWN && AnalyseATR(warm)==1); IFSC=m_p_Slot[Slot].m_TA3; PCB_seq=0; EDC=(unsigned char)(m_p_Slot[Slot].m_TC3&1); return STATUS_SUCCESS; } RSCT_IFD_RESULT CPPAReader::IfdSetProtocol(uint32_t *pProtocol,uint8_t Slot) { #if 0 *pProtocol=m_ActiveProtocol; return STATUS_SUCCESS; #endif CCID_Message Message; CCID_Response Response; uint32_t Protocol; memset(&Message,0,sizeof(Message)); Protocol=*pProtocol; DEBUGP("PPAReader", DEBUG_MASK_COMMUNICATION_INFO, "Possible protocol %d (state=%d, TA1=%02x, TC1=%02x, TC2=%02x, TA3=%02x, TB3=%02x, TC3=%02x)", (int) Protocol, (int) m_p_Slot[Slot].m_ReaderState, (int) m_p_Slot[Slot].m_TA1, (int) m_p_Slot[Slot].m_TC1, (int) m_p_Slot[Slot].m_TC2, (int) m_p_Slot[Slot].m_TA3, (int) m_p_Slot[Slot].m_TB3, (int) m_p_Slot[Slot].m_TC3); *pProtocol=0; Message.bMessageType=PC_TO_RDR_SETPARAMETERS; if(m_p_Slot[Slot].m_ReaderState==SCARD_ABSENT) return STATUS_NO_MEDIA; if (m_p_Slot[Slot].m_ReaderState==SCARD_NEGOTIABLE) { char bufferTA1[128]; char bufferTC1[128]; char bufferc[3]; uint8_t vTA1; uint8_t vTC1; if(m_p_Slot[Slot].m_ATR[0]==0xff || (m_p_Slot[Slot].m_ATR[0] & 0xf0)==0x80) { *pProtocol=SCARD_PROTOCOL_RAW; return STATUS_SUCCESS; } sprintf(bufferTA1,"ReplaceTA1_%02X",(int)m_p_Slot[Slot].m_TA1); strcpy(bufferTC1,"ReplaceTC1_"); for(unsigned int i=0;i4 && 0==memcmp(rsp.Data.abData, "\x00\xE1\x01\xfe\x1e", 5)) { DEBUGP("PPAReader", DEBUG_MASK_COMMUNICATION_INFO, "Protocol change acknowledged by reader."); } else { DEBUGP("PPAReader", DEBUG_MASK_COMMUNICATION_ERROR, "Unexpected response from reader (%d): %02x %02x %02x %02x %02x\n", rsp.dwLength, rsp.Data.abData[0], rsp.Data.abData[1], rsp.Data.abData[2], rsp.Data.abData[3], rsp.Data.abData[4]); return STATUS_IO_TIMEOUT; } break; default: return STATUS_DEVICE_NOT_CONNECTED; } } DEBUGP("PPAReader", DEBUG_MASK_COMMUNICATION_INFO, "Protocol successfully changed."); return STATUS_SUCCESS; } default: return STATUS_DEVICE_NOT_CONNECTED; } } else if (m_p_Slot[Slot].m_ReaderState==SCARD_SPECIFIC) { if(Protocol & (SCARD_PROTOCOL_DEFAULT | SCARD_PROTOCOL_OPTIMAL)) Protocol|=(SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1 | SCARD_PROTOCOL_RAW); if(m_p_Slot[Slot].m_ActiveProtocol & Protocol) { *pProtocol=m_p_Slot[Slot].m_ActiveProtocol; return STATUS_SUCCESS; } else return STATUS_NOT_SUPPORTED; } else return STATUS_IO_TIMEOUT; } RSCT_IFD_RESULT CPPAReader::PVMVT1(int Result,uint8_t *rbuffer,uint32_t rlen,uint32_t *lenr) { uint8_t lrc; uint8_t sblock[6]; uint16_t len; uint32_t i; int slen; uint8_t xwt=0; if(Result!=STATUS_SUCCESS) return Result; if(EDC==0) { lrc=0; for(i=0;i19) || (Message.Data.Secure.bPINOperation==1 && Message.dwLength>24)) { Message.Data.abData[19+5*Message.Data.Secure.bPINOperation]=0; } } } pcsc-cyberjack-3.99.5final.sp05/cjeca32/PPAReader.h000066400000000000000000000110321231776762100214430ustar00rootroot00000000000000/*************************************************************************** begin : Sat Nov 20 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef ECA_PPAREADER_H #define ECA_PPAREADER_H #include "CCIDReader.h" class CPPAReader : public CCCIDReader { public: CPPAReader(CReader *Owner, CBaseCommunication *Communicator); virtual ~CPPAReader(void); protected: virtual void SetHWString(char *String); virtual void GetProductString(uint8_t *Product); /** @name From BaseReader * */ /*@{*/ virtual CJ_RESULT SetSyncParameters(uint8_t AddrByteCount, uint16_t PageSize,uint8_t Slot=0); virtual uint32_t GetReadersInputBufferSize(); virtual CJ_RESULT BuildReaderInfo(); virtual CJ_RESULT BuildModuleInfo(); virtual uint16_t HostToReaderShort(uint16_t Value); virtual uint32_t HostToReaderLong(uint32_t Value); /*@}*/ /** @name From CCIDReader * */ /*@{*/ virtual RSCT_IFD_RESULT _IfdPower(uint32_t Mode, uint8_t *ATR, uint32_t *ATR_Length, uint32_t Timeout,uint8_t Slot=0); virtual void SetSerialNumber(void); virtual void SetDate(uint8_t Nr); virtual RSCT_IFD_RESULT _IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot=0); virtual CJ_RESULT cjInput(uint8_t *key,uint8_t timeout,uint8_t *tag52,int tag52len); /*@}*/ RSCT_IFD_RESULT ccidTransmit(uint8_t BWI,const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint16_t wLevelParameter,uint8_t Slot=0); RSCT_IFD_RESULT IfdSetProtocol(uint32_t *pProtocol,uint8_t Slot=0); RSCT_IFD_RESULT APDU2TPDU_T1(uint16_t lenc,const uint8_t *cmd,uint16_t *lenr,uint8_t *response); virtual RSCT_IFD_RESULT PVMVT1(int Result,uint8_t *rbuffer,uint32_t rlen,uint32_t *lenr); virtual bool PinDirectSupported(); virtual CJ_RESULT SpecialLess3_0_41(); virtual void FillTeoPrologue(uint8_t *pbTeoPrologue); virtual void CheckReaderDepended(CCID_Message &Message); virtual int cjccid_SecurePV(uint8_t Timeout, uint8_t PinPosition,uint8_t PinType, uint8_t PinLengthSize,uint8_t PinLength, uint8_t PinLengthPosition, uint8_t Min, uint8_t Max, uint8_t Condition,uint8_t *Prologue, uint8_t *out,int out_len,uint8_t *in,int *in_len,uint8_t *Text,uint8_t Textlen,uint8_t bMessageIndex,uint8_t bNumberMessage,uint8_t Slot=0); virtual int cjccid_SecureMV(uint8_t Timeout, uint8_t PinPosition,uint8_t PinType, uint8_t PinLengthSize,uint8_t PinLength, uint8_t PinLengthPosition, uint8_t Min, uint8_t Max, uint8_t bConfirmPIN, uint8_t Condition,uint8_t *Prologue, uint8_t OffsetOld,uint8_t OffsetNew, uint8_t *out,int out_len,uint8_t *in,int *in_len,int TextCount,uint8_t *Text[3],uint8_t Textlen[3],uint8_t bMessageIndex[3],uint8_t bNumberMessage,uint8_t Slot=0); uint8_t IFSC; uint8_t PCB_seq; uint8_t EDC; }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/Platform_unix.cpp000066400000000000000000000070021231776762100230640ustar00rootroot00000000000000/*************************************************************************** begin : Mon Jun 14 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #include "Platform.h" #include "USBUnix.h" #include "SerialUnix.h" #include "config_l.h" CBaseCommunication *rsct_platform_create_com(const char *deviceName, CReader *reader) { CBaseCommunication *com=NULL; // we allocated 10 bytex more in CReader::CReaderConstructor // so we can modify this const char here char *deviceNameDup = (char *) deviceName; if (strcasestr(deviceName, ":libudev:")!=NULL) { int idVendor, idProduct, bus_number, device_address = 0; sscanf(deviceName,"usb:%04x/%04x:libudev:0:/dev/bus/usb/%d/%d",&idVendor, &idProduct, &bus_number, &device_address); snprintf(deviceNameDup,strlen(deviceNameDup)+10,"usb:%04x/%04x:libusb:%03d:%03d",idVendor, idProduct, bus_number, device_address); } if (strcasestr(deviceName, ":libusb-1.0:")!=NULL) { int idVendor, idProduct, bus_number, device_address, interface = 0; sscanf(deviceName,"usb:%04x/%04x:libusb-1.0:%d:%d:%d",&idVendor, &idProduct, &bus_number, &device_address, &interface); snprintf(deviceNameDup,strlen(deviceNameDup)+10,"usb:%04x/%04x:libusb:%03d:%03d",idVendor, idProduct, bus_number, device_address); } if (strcasestr(deviceName, ":libusb:")!=NULL || strstr(deviceName, ":libhal:")!=NULL) # ifdef ENABLE_NONSERIAL com=new CUSBUnix(deviceName, reader); # else /* libusb and libhal not supported for serial devices */ return CJ_ERR_OPENING_DEVICE; # endif else com=new CSerialUnix(deviceName, reader); return com; } const char *rsct_get_package_version(void) { const char *s; s=rsct_config_get_var("PackageVersion"); if (s && *s) return s; /* for now */ return "3.99.5"; } uint32_t rsct_get_environment(const char *name, uint32_t defval) { const char *s; s=rsct_config_get_var(name); if (s && *s) { unsigned long int v; if (sscanf(s, "%lu", &v)==1) { return uint32_t(v); } else { fprintf(stderr, "CYBERJACK: Environment variable \"%s\" is not an integer\n", name); } } return defval; } pcsc-cyberjack-3.99.5final.sp05/cjeca32/RFKReader.cpp000066400000000000000000000043751231776762100220140ustar00rootroot00000000000000#include "Platform.h" #include #include #include #include "RFKReader.h" #include "BaseCommunication.h" #include "memory_placements.h" #define base CRFSReader CRFKReader::CRFKReader(CReader *Owner,CBaseCommunication *Communicator) :base(Owner,Communicator) {} CRFKReader::~CRFKReader(void) { } void CRFKReader::SetHWString(char *String) { strcpy(String,"RFK_"); } void CRFKReader::GetProductString(uint8_t *Product) { memcpy(Product,"CJRFK",5); } CJ_RESULT CRFKReader::CtSetBacklight(EBacklight eBacklight,uint32_t *Result) { CJ_RESULT Res; switch(eBacklight) { case BacklightOff: Res=_CtSetBacklight(0,Result); break; case BacklightVeryLow: Res=_CtSetBacklight(70,Result); break; case BacklightLow: Res=_CtSetBacklight(100,Result); break; case BacklightMedium: Res=_CtSetBacklight(120,Result); break; case BacklightHigh: Res=_CtSetBacklight(160,Result); break; case BacklightVeryHigh: Res=_CtSetBacklight(255,Result); break; default: Res=CJ_ERR_WRONG_PARAMETER; } return Res; } CJ_RESULT CRFKReader::CtSelfTest2(const uint8_t *TransportKey,uint8_t KeyNr) { uint32_t Res; uint8_t buffer[256]; struct _CCID_Message::_Data::_Escape::_Reader::_EC30::_Data::_SetDateTime *DateTime=(struct _CCID_Message::_Data::_Escape::_Reader::_EC30::_Data::_SetDateTime *)buffer; struct tm *t; time_t tim; CJ_RESULT Result; time(&tim); t=localtime(&tim); DateTime->Nr=1; sprintf((char *)DateTime->dtDate.ProductionDate,"%02d.%02d.%04d",t->tm_mday,t->tm_mon+1,t->tm_year+1900); sprintf((char *)DateTime->dtDate.ProductionTime,"%02d:%02d",t->tm_hour,t->tm_min); memcpy(buffer+sizeof(struct _CCID_Message::_Data::_Escape::_Reader::_EC30::_Data::_SetDateTime),TransportKey,16); buffer[16+sizeof(struct _CCID_Message::_Data::_Escape::_Reader::_EC30::_Data::_SetDateTime)]=KeyNr; Result=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_SELF_TEST,buffer,sizeof(struct _CCID_Message::_Data::_Escape::_Reader::_EC30::_Data::_SetDateTime)+17,&Res,0,0); if(Result!=CJ_SUCCESS && Result!=CJ_ERR_CHECK_RESULT) { //m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Error Selftest"); return CJ_ERR_DEVICE_LOST; } return Res; } pcsc-cyberjack-3.99.5final.sp05/cjeca32/RFKReader.h000066400000000000000000000007501231776762100214520ustar00rootroot00000000000000#ifndef RFKREADER_H #define RFKREADER_H #include "RFSReader.h" class CRFKReader : public CRFSReader { public: CRFKReader(CReader *Owner,CBaseCommunication *Communicator); virtual ~CRFKReader(void); virtual void SetHWString(char *String); virtual void GetProductString(uint8_t *Product); virtual CJ_RESULT CtSetBacklight(EBacklight eBacklight,uint32_t *Result); virtual CJ_RESULT CtSelfTest2(const uint8_t *TransportKey,uint8_t KeyNr); private: }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/RFSReader.cpp000066400000000000000000000241511231776762100220160ustar00rootroot00000000000000#include "Platform.h" #include #include #include #include "RFSReader.h" #include "BaseCommunication.h" #include "memory_placements.h" #define base CECPReader CRFSReader::CRFSReader(CReader *Owner,CBaseCommunication *Communicator) :base(Owner,Communicator) { } CRFSReader::~CRFSReader(void) { } void CRFSReader::SetHWString(char *String) { strcpy(String,"RFS_"); } void CRFSReader::GetProductString(uint8_t *Product) { memcpy(Product,"CJRFS",5); } bool CRFSReader::ATRFilter(bool IsWarm,uint8_t Slot) { if(m_p_Slot[Slot].m_ATR_Length>=5) { if(m_p_Slot[Slot].m_ATR[0]==0x4b) { m_p_Slot[Slot].m_ATR[0]=0x3b; m_p_Slot[Slot].m_bIsRF=true; return true; } } return base::ATRFilter(IsWarm,Slot); } RSCT_IFD_RESULT CRFSReader::_IfdPower(uint32_t Mode, uint8_t *ATR, uint32_t *ATR_Length, uint32_t Timeout,uint8_t Slot) { uint32_t OrginalATR_Length=0; if(ATR_Length!=0) OrginalATR_Length=*ATR_Length; m_p_Slot[Slot].m_bIsRF=false; #ifdef D_ALWAYS_ON if(Mode==SCARD_COLD_RESET || Mode==SCARD_WARM_RESET) { uint32_t state; uint32_t merk=0; clock_t start; int count=0; start=clock(); while(IfdGetState(&state,Slot)==STATUS_SUCCESS) { if(merk!=state) { merk=state; start=clock(); } if(clock()-start>CLOCKS_PER_SEC) break; Sleep(50); if(++count==400) break; } } #endif RSCT_IFD_RESULT Result; if(!(Mode==SCARD_POWER_DOWN && (m_p_Slot[Slot].m_ReaderState==SCARD_SWALLOWED || m_p_Slot[Slot].m_ReaderState==SCARD_ABSENT))) { Result=base::_IfdPower(Mode,ATR,ATR_Length,Timeout,Slot); if((Result==STATUS_NO_MEDIA || Result==STATUS_IO_TIMEOUT) && (Mode==SCARD_COLD_RESET || Mode==SCARD_WARM_RESET)) { Sleep(100); Result=base::_IfdPower(Mode,ATR,ATR_Length,Timeout,Slot); } } else { Result=STATUS_SUCCESS; } if(Result==STATUS_SUCCESS && (Mode==SCARD_COLD_RESET || Mode==SCARD_WARM_RESET)) { if(m_p_Slot[Slot].m_bIsRF) { m_p_Slot[Slot].m_PossibleProtocols=/*SCARD_PROTOCOL_T0 |*/ SCARD_PROTOCOL_T1; m_p_Slot[Slot].m_ActiveProtocol=SCARD_PROTOCOL_T1; m_p_Slot[Slot].m_ReaderState=SCARD_SPECIFIC; } } return Result; } uint32_t CRFSReader::GetReadersInputBufferSize() { cj_ModuleInfo *Info; Info=FindModule(MODULE_ID_KERNEL); return 5130; } bool CRFSReader::PinDirectSupported() { return true; } CJ_RESULT CRFSReader::SpecialLess3_0_41() { return CJ_SUCCESS; } RSCT_IFD_RESULT CRFSReader::IfdSetProtocol(uint32_t *pProtocol,uint8_t Slot) { if(m_p_Slot[Slot].m_bIsRF) { uint32_t Protocol=*pProtocol; *pProtocol=0; if(m_p_Slot[Slot].m_ReaderState==SCARD_ABSENT) return STATUS_NO_MEDIA; if(m_p_Slot[Slot].m_ReaderState==SCARD_SPECIFIC) { if(Protocol & (SCARD_PROTOCOL_DEFAULT | SCARD_PROTOCOL_OPTIMAL)) Protocol|=(SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1 | SCARD_PROTOCOL_RAW); if(m_p_Slot[Slot].m_ActiveProtocol & Protocol) { *pProtocol=m_p_Slot[Slot].m_ActiveProtocol; return STATUS_SUCCESS; } else return STATUS_NOT_SUPPORTED; } else return STATUS_NOT_SUPPORTED; } return base::IfdSetProtocol(pProtocol,Slot); } RSCT_IFD_RESULT CRFSReader::_IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot) { if(cmd_len==5 && cmd[0]==0xff && cmd[1]==0x9a && cmd[2]==0x01 && cmd[4]==0) { switch(cmd[3]) { case 9: if(*response_len>=8) { memcpy(response,"848500\x90\x00",8); *response_len=8; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; default:; } return CEC30Reader::_IfdTransmit(cmd,cmd_len,response,response_len,Slot); /* switch(cmd[3]) { case 3: if(*response_len>=(l=strlen("cyberJack RFID standard"))+2) { memcpy(response,"cyberJack RFID standard",l); memcpy(response+l,"\x90\x00",2); *response_len=l+2; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; case 4: default:; }*/ } if(m_p_Slot[Slot].m_bIsRF && cmd_len==5 && cmd[0]==0xff && cmd[1]==0xca && cmd[2]==0x01 && cmd[3]==0) { if(*response_len>=m_p_Slot[Slot].m_ATR_Length-3) { if(cmd[4]==0 || cmd[4]>=m_p_Slot[Slot].m_ATR_Length-5) { memcpy(response,m_p_Slot[Slot].m_ATR+4,m_p_Slot[Slot].m_ATR_Length-5); if(cmd[4]!=0 && cmd[4]>m_p_Slot[Slot].m_ATR_Length-5) { memset(response+m_p_Slot[Slot].m_ATR_Length-5,0,cmd[4]-m_p_Slot[Slot].m_ATR_Length+5); memcpy(response+cmd[4],"\x62\x82",2); *response_len=cmd[4]+2; } else { memcpy(response+m_p_Slot[Slot].m_ATR_Length-5,"\x90\x00",2); *response_len=(uint16_t)(m_p_Slot[Slot].m_ATR_Length-3); } return STATUS_SUCCESS; } } if(*response_len>=2) { response[0]=0x6C; response[1]=(uint8_t)(m_p_Slot[Slot].m_ATR_Length-5); *response_len=2; return STATUS_SUCCESS; } return STATUS_BUFFER_TOO_SMALL; } return base::_IfdTransmit(cmd,cmd_len,response,response_len,Slot); } CJ_RESULT CRFSReader::CtSetContrast(EContrast eContrast,uint32_t *Result) { CJ_RESULT Res; switch(eContrast) { case ContrastVeryLow: Res=_CtSetContrast(0,Result); break; case ContrastLow: Res=_CtSetContrast(70,Result); break; case ContrastMedium: Res=_CtSetContrast(120,Result); break; case ContrastHigh: Res=_CtSetContrast(160,Result); break; case ContrastVeryHigh: Res=_CtSetContrast(255,Result); break; default: Res=CJ_ERR_WRONG_PARAMETER; } return Res; } RSCT_IFD_RESULT CRFSReader::IfdVendor(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength) { uint32_t Result; uint32_t ResponseLen=*OutputLength-6; uint32_t ApplicationErrorLength=4; uint16_t InternalLength; uint16_t InternalLength2; uint16_t InternalLengthBuffer; uint8_t lengthCHAT; uint8_t lengthPIN; uint16_t lengthCD; uint8_t lengthCAR; uint8_t lengthCARprev; uint8_t buffer[2]; switch(IoCtrlCode) { case CJPCSC_VEN_IOCTRL_EXECUTE_PACE: if(InputLength<3 || *OutputLength<6) return STATUS_INFO_LENGTH_MISMATCH; memcpy(&InternalLengthBuffer,Input+1,2); if(InputLength!=3+InternalLengthBuffer) return STATUS_INFO_LENGTH_MISMATCH; InternalLength=HostToReaderShort(InternalLengthBuffer); if(CopyIfdInput(Input,InputLength)) return STATUS_INSUFFICIENT_RESOURCES; Input=ifd_in_buffer; memcpy(Input+1,&InternalLength,2); if(Input[0]==2) { buffer[0]=RDR_TO_PC_KEYEVENT; buffer[1]=0xa0; DoInterruptCallback(buffer,2); if(InputLength>4) lengthCHAT=Input[4]; if(InputLength>5+lengthCHAT) lengthPIN=Input[5+lengthCHAT]; /* if(InputLength==7+lengthCHAT+lengthPIN) return STATUS_INFO_LENGTH_MISMATCH;*/ if(InputLength>7+lengthCHAT+lengthPIN) { memcpy(&lengthCD,Input+7+lengthCHAT+lengthPIN,2); /* if(InputLength!=8+lengthCHAT+lengthPIN+lengthCD) return STATUS_INFO_LENGTH_MISMATCH;*/ lengthCD=HostToReaderShort(lengthCD); memcpy(Input+7+lengthCHAT+lengthPIN,&lengthCD,2); } } switch(CtApplicationData(MODULE_ID_KERNEL,CCID_ESCAPE_DO_PACE,Input,InputLength, &Result, Output+6, &ResponseLen, Output, &ApplicationErrorLength)) { case CJ_SUCCESS: if(*OutputLength<6+ResponseLen || ResponseLen>65535) return STATUS_INSUFFICIENT_RESOURCES; *OutputLength=6+ResponseLen; InternalLength2=(uint16_t)ResponseLen; memcpy(Output+4,&InternalLength2,2); if(ApplicationErrorLength==0) memset(Output,0,4); if(Input[0]==2 && ResponseLen>=4) { memcpy(&InternalLength,Output+8,2); InternalLength=ReaderToHostShort(InternalLength); memcpy(Output+8,&InternalLength,2); if(ResponseLen>6+InternalLength) { lengthCAR=Output[10+InternalLength]; if(ResponseLen>7+InternalLength+lengthCAR) { lengthCARprev=Output[11+InternalLength+lengthCAR]; if(lengthCARprev>0 && GetEnviroment("PACE_DisableCARprev",0)) { Output[11+InternalLength+lengthCAR]=0; memmove(Output+12+InternalLength+lengthCAR,Output+12+InternalLength+lengthCAR+lengthCARprev,ResponseLen-(6+InternalLength+lengthCAR+lengthCARprev)); ResponseLen-=lengthCARprev; *OutputLength-=lengthCARprev; InternalLength2-=lengthCARprev; memcpy(Output+4,&InternalLength2,2); lengthCARprev=0; } if(ResponseLen>8+InternalLength+lengthCAR+lengthCARprev) { memcpy(&InternalLengthBuffer,Output+12+InternalLength+lengthCAR+lengthCARprev,2); InternalLengthBuffer=ReaderToHostShort(InternalLengthBuffer); memcpy(Output+12+InternalLength+lengthCAR+lengthCARprev,&InternalLengthBuffer,2); } } } } if(Input[0]==2) { buffer[0]=RDR_TO_PC_KEYEVENT; buffer[1]=0xa1; DoInterruptCallback(buffer,2); } return STATUS_SUCCESS; default: if(Input[0]==2) { buffer[0]=RDR_TO_PC_KEYEVENT; buffer[1]=0xa1; DoInterruptCallback(buffer,2); // return STATUS_SUCCESS; } *OutputLength=0; return STATUS_UNHANDLED_EXCEPTION; } default: return base::IfdVendor(IoCtrlCode,Input,InputLength,Output,OutputLength); } } CJ_RESULT CRFSReader::BuildReaderInfo() { CJ_RESULT Res; uint8_t disablesync=0; uint32_t Result; Res = base::BuildReaderInfo(); m_ReaderInfo.HardwareMask |= RSCT_READER_HARDWARE_MASK_RFID | RSCT_READER_HARDWARE_MASK_PACE; Escape(MODULE_ID_KERNEL,CCID_ESCAPE_CTRL_SYNC,&disablesync,sizeof(disablesync),&Result,0,0); return Res; } bool CRFSReader::HastModulestoreInfo() { return true; } CJ_RESULT CRFSReader::CtSetSilentMode(bool boolMode,bool *pboolMode,uint32_t *Result) { if(pboolMode) *pboolMode=boolMode; if(Result) *Result=0; return CJ_SUCCESS; } CJ_RESULT CRFSReader::CtGetSilentMode(bool *pboolMode,uint32_t *Result) { if(pboolMode) *pboolMode=0; if(Result) *Result=0; return CJ_SUCCESS; } pcsc-cyberjack-3.99.5final.sp05/cjeca32/RFSReader.h000066400000000000000000000024231231776762100214610ustar00rootroot00000000000000#ifndef RFSREADER_H #define RFSREADER_H #include "ECPReader.h" class CRFSReader : public CECPReader { public: CRFSReader(CReader *Owner,CBaseCommunication *Communicator); virtual ~CRFSReader(void); virtual void SetHWString(char *String); virtual void GetProductString(uint8_t *Product); virtual CJ_RESULT CtSetContrast(EContrast eContrast,uint32_t *Result); protected: virtual bool ATRFilter(bool IsWarm,uint8_t Slot=0); virtual bool HastModulestoreInfo(); virtual RSCT_IFD_RESULT _IfdPower(uint32_t Mode, uint8_t *ATR, uint32_t *ATR_Length, uint32_t Timeout,uint8_t Slot=0); virtual RSCT_IFD_RESULT IfdSetProtocol(uint32_t *Protocol,uint8_t Slot=0); virtual RSCT_IFD_RESULT _IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot=0); virtual RSCT_IFD_RESULT IfdVendor(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength); virtual CJ_RESULT BuildReaderInfo(); virtual uint32_t GetReadersInputBufferSize(); virtual CJ_RESULT CtSetSilentMode(bool boolMode,bool *pboolMode,uint32_t *Result); virtual CJ_RESULT CtGetSilentMode(bool *pboolMode,uint32_t *Result); virtual bool PinDirectSupported(); virtual CJ_RESULT SpecialLess3_0_41(); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/RFUReader.cpp000066400000000000000000000037411231776762100220220ustar00rootroot00000000000000#include "Platform.h" #include #include #include #include "RFUReader.h" #include "BaseCommunication.h" #include "memory_placements.h" #define base CRFSReader CRFUReader::CRFUReader(CReader *Owner,CBaseCommunication *Communicator) :base(Owner,Communicator) { m_maxSlot=2; } CRFUReader::~CRFUReader(void) { } void CRFUReader::SetHWString(char *String) { strcpy(String,"RFU_"); } void CRFUReader::GetProductString(uint8_t *Product) { memcpy(Product,"CJRFU",5); } CJ_RESULT CRFUReader::CtSetBacklight(EBacklight eBacklight,uint32_t *Result) { CJ_RESULT Res; switch(eBacklight) { case BacklightOff: Res=_CtSetBacklight(0,Result); break; case BacklightVeryLow: Res=_CtSetBacklight(70,Result); break; case BacklightLow: Res=_CtSetBacklight(100,Result); break; case BacklightMedium: Res=_CtSetBacklight(120,Result); break; case BacklightHigh: Res=_CtSetBacklight(160,Result); break; case BacklightVeryHigh: Res=_CtSetBacklight(255,Result); break; default: Res=CJ_ERR_WRONG_PARAMETER; } return Res; } RSCT_IFD_RESULT CRFUReader::IfdVendor(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength) { switch(IoCtrlCode) { case CJPCSC_VEN_IOCTRL_EXECUTE_PACE: return CECPReader::IfdVendor(IoCtrlCode,Input,InputLength,Output,OutputLength); default: return base::IfdVendor(IoCtrlCode,Input,InputLength,Output,OutputLength); } } CJ_RESULT CRFUReader::BuildReaderInfo() { CJ_RESULT Res; uint8_t disablesync=0; uint32_t Result; Res = CECPReader::BuildReaderInfo(); m_ReaderInfo.HardwareMask |= RSCT_READER_HARDWARE_MASK_RFID | RSCT_READER_HARDWARE_MASK_ICC2 ; return Res; } cj_ModuleInfo *CRFUReader::FindModule(uint32_t ModuleID) { if(ModuleID==MODULE_ID_MKT_COMP) return FindModule(MODULE_ID_KERNEL); else return CBaseReader::FindModule(ModuleID); } pcsc-cyberjack-3.99.5final.sp05/cjeca32/RFUReader.h000066400000000000000000000011731231776762100214640ustar00rootroot00000000000000#ifndef RFUREADER_H #define RFUREADER_H #include "RFSReader.h" class CRFUReader : public CRFSReader { public: CRFUReader(CReader *Owner,CBaseCommunication *Communicator); virtual ~CRFUReader(void); virtual RSCT_IFD_RESULT IfdVendor(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength); virtual CJ_RESULT BuildReaderInfo(); virtual void SetHWString(char *String); virtual void GetProductString(uint8_t *Product); virtual CJ_RESULT CtSetBacklight(EBacklight eBacklight,uint32_t *Result); virtual cj_ModuleInfo *FindModule(uint32_t ModuleID); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/RSCTCriticalSection.cpp000066400000000000000000000023571231776762100240200ustar00rootroot00000000000000#include "Platform.h" #include "RSCTCriticalSection.h" #ifdef _WINDOWS CRSCTCriticalSection::CRSCTCriticalSection(void) { InitializeCriticalSection(&m_hCritSec); } CRSCTCriticalSection::~CRSCTCriticalSection(void) { DeleteCriticalSection(&m_hCritSec); } void CRSCTCriticalSection::Enter(void) { EnterCriticalSection(&m_hCritSec); } void CRSCTCriticalSection::Leave(void) { LeaveCriticalSection(&m_hCritSec); } #elif defined(OS_LINUX) CRSCTCriticalSection::CRSCTCriticalSection(void){ } CRSCTCriticalSection::~CRSCTCriticalSection(void){ } void CRSCTCriticalSection::Enter(void){ } void CRSCTCriticalSection::Leave(void){ } #elif defined(OS_DARWIN) CRSCTCriticalSection::CRSCTCriticalSection(void) //: m_CriticalRegionID(NULL) { // MPCreateCriticalRegion(&m_CriticalRegionID); } CRSCTCriticalSection::~CRSCTCriticalSection(void) { // MPDeleteCriticalRegion(m_CriticalRegionID); // m_CriticalRegionID = NULL; } void CRSCTCriticalSection::Enter(void) { // if ( m_CriticalRegionID ) MPEnterCriticalRegion(m_CriticalRegionID, 0x7FFFFFFF); } void CRSCTCriticalSection::Leave(void) { // if ( m_CriticalRegionID ) MPExitCriticalRegion(m_CriticalRegionID); } #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/RSCTCriticalSection.h000066400000000000000000000007351231776762100234630ustar00rootroot00000000000000#ifndef ECA_RSCTCRITICAL_H #define ECA_RSCTCRITICAL_H #ifdef _WINDOWS #include #endif class CJECA32_PRIVATE_CLASS CRSCTCriticalSection { public: CRSCTCriticalSection(void); public: virtual ~CRSCTCriticalSection(void); protected: #ifdef _WINDOWS CRITICAL_SECTION m_hCritSec; #elif defined(OS_LINUX) #elif defined(OS_DARWIN) // MPCriticalRegionID m_CriticalRegionID; #endif public: void Enter(void); public: void Leave(void); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/Reader.cpp000066400000000000000000000464631231776762100214550ustar00rootroot00000000000000#include "Platform.h" #include #include #include "Reader.h" #include "BaseReader.h" #include "ECAReader.h" #include "Debug.h" #ifdef _EXP_CTAPI extern "C" { static CReader *myReader=NULL; CTAPI_RETURN CT_init(uint16_t,uint16_t) { if(myReader!=0) return -127; #ifdef _EXP_CTAPI_COM myReader=new CReader("\\\\.\\com1"); #else myReader=new CReader("\\\\.\\cjusbu01"); #endif if(myReader->Connect()!=CJ_SUCCESS) { delete myReader; myReader=NULL; return -128; } else return 0; } CTAPI_RETURN CT_data(uint16_t,uint8_t *dad,uint8_t *sad, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response) { char Res; if(myReader==0) return -128; if (*dad==1 && cmd_len > 5 && cmd[0]==0xFF && cmd[1]==0x80 && cmd[2]==0x04 && cmd[3]==0x00 && cmd_len > 13 && *response_len >= 4) { uint32_t nRspLen= *response_len - 4; uint32_t nIoCtrl= *((uint32_t*)&cmd[5]); uint32_t nStat=0; nStat=myReader->IfdIoControl (nIoCtrl,(BYTE*)(cmd+13),cmd_len-13,response+4,&nRspLen); *((uint32_t*)response)=nStat; *response_len=(USHORT)(nRspLen+sizeof (nStat)); Res=0; } else { Res=myReader->CtData(dad,sad,cmd_len,cmd,response_len,response); }; switch(Res) { case 0: case -1: case -11: break; default: delete myReader; myReader=NULL; } return Res; } CTAPI_RETURN CT_close(uint16_t) { if(myReader==0) return -128; delete myReader; myReader=NULL; return 0; } } #endif CReader::CReader(char *cDeviceName) { CReaderConstructor((const char *)cDeviceName); } CReader::CReader(const char *cDeviceName) { CReaderConstructor(cDeviceName); } void CReader::CReaderConstructor(const char *cDeviceName) { m_Reader=NULL; CritSec=new CRSCTCriticalSection(); m_cDeviceName=strdup(cDeviceName); //we allocate 10 bytes more because we modify the device name later in rsct_platform_create_com //m_cDeviceName=strdup(cDeviceName); m_cDeviceName=(char *) calloc(1,strlen(cDeviceName)+10); m_cDeviceName=strcpy(m_cDeviceName, cDeviceName); } CJ_RESULT CReader::Connect() { // ::MessageBox (0,L"CReader::Connect(1)",L"cjeca32.dll",MB_ICONSTOP); CJ_RESULT Res; CBaseCommunication *com=NULL; CritSec->Enter(); com=rsct_platform_create_com(m_cDeviceName,this); if(com) { // ::MessageBox (0,L"CReader::Connect(3)",L"cjeca32.dll",MB_ICONSTOP); if(com->Open()) { // ::MessageBox (0,L"CReader::Connect(4)",L"cjeca32.dll",MB_ICONSTOP); m_Reader=com->BuildReaderObject(); if(m_Reader) { // ::MessageBox (0,L"CReader::Connect(5a)",L"cjeca32.dll",MB_ICONSTOP); Res=m_Reader->PostCreate(); // ::MessageBox (0,L"CReader::Connect(6a)",L"cjeca32.dll",MB_ICONSTOP); CheckcJResult(Res); // ::MessageBox (0,L"CReader::Connect(7a)",L"cjeca32.dll",MB_ICONSTOP); CritSec->Leave(); // ::MessageBox (0,L"CReader::Connect(8a)",L"cjeca32.dll",MB_ICONSTOP); return Res; } else { // ::MessageBox (0,L"CReader::Connect(25)",L"cjeca32.dll",MB_ICONSTOP); CritSec->Leave(); return CJ_ERR_DEVICE_LOST; } } else { // ::MessageBox (0,L"CReader::Connect(50)",L"cjeca32.dll",MB_ICONSTOP); CritSec->Leave(); return CJ_ERR_OPENING_DEVICE; } } else { // ::MessageBox (0,L"CReader::Connect(100)",L"cjeca32.dll",MB_ICONSTOP); CritSec->Leave(); return CJ_ERR_OPENING_DEVICE; } } CJ_RESULT CReader::CreateVirtualReaderObject(const char *cReaderName) { if (strcasecmp(cReaderName, "ecom(a)")==0) { m_Reader=new CECAReader(this, NULL); return CJ_SUCCESS; } return CJ_ERR_OPENING_DEVICE; } CJ_RESULT CReader::Disonnect() { CritSec->Enter(); if(m_Reader) { for(uint8_t i=0;im_maxSlot;i++) m_Reader->IfdPower(SCARD_POWER_DOWN,0,0,i); m_Reader->Unconnect(); delete m_Reader; } m_Reader=NULL; CritSec->Leave(); return CJ_SUCCESS; } CReader::~CReader() { Disonnect(); free(m_cDeviceName); delete CritSec; } char CReader::CtData(uint8_t *dad,uint8_t *sad, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response) { char res; if(m_Reader==NULL) return -128; CritSec->Enter(); Debug.Out(m_cDeviceName,DEBUG_MASK_INPUT,"CtData Cmd:",(void *)cmd,cmd_len); res=m_Reader->CtData(sad,dad,cmd,cmd_len,response,response_len); Debug.Out(m_cDeviceName,DEBUG_MASK_OUTPUT,"CtData Rsp",(void *)response,*response_len); switch(res) { case 0: case -1: case -11: break; default: m_Reader->Unconnect(); delete m_Reader; m_Reader=NULL; } CritSec->Leave(); return res; } RSCT_IFD_RESULT CReader::IfdPower(uint32_t Mode,uint8_t *ATR,uint32_t *ATR_Length) { RSCT_IFD_RESULT res; if(m_Reader==NULL) { *ATR_Length=0; return STATUS_DEVICE_NOT_CONNECTED; } CritSec->Enter(); res=m_Reader->IfdPower(Mode,ATR,ATR_Length); switch(res) { case STATUS_DEVICE_NOT_CONNECTED: /* delete m_Reader; m_Reader=NULL;*/ break; default:; } CritSec->Leave(); return res; } RSCT_IFD_RESULT CReader::IfdSetProtocol(uint32_t *Protocol) { RSCT_IFD_RESULT res; if(m_Reader==NULL) { *Protocol=0; return STATUS_DEVICE_NOT_CONNECTED; } CritSec->Enter(); res=m_Reader->IfdSetProtocol(Protocol); switch(res) { case STATUS_DEVICE_NOT_CONNECTED: m_Reader->Unconnect(); delete m_Reader; m_Reader=NULL; break; default:; } CritSec->Leave(); return res; } RSCT_IFD_RESULT CReader::IfdGetState(uint32_t *State) { RSCT_IFD_RESULT res; if(m_Reader==NULL) { *State=0; return STATUS_DEVICE_NOT_CONNECTED; } CritSec->Enter(); res=m_Reader->IfdGetState(State); switch(res) { case STATUS_DEVICE_NOT_CONNECTED: m_Reader->Unconnect(); delete m_Reader; m_Reader=NULL; break; default:; } CritSec->Leave(); return res; } RSCT_IFD_RESULT CReader::IfdSetAttribute(const uint8_t *Input,uint32_t InputLength) { RSCT_IFD_RESULT res; if(m_Reader==NULL) { return STATUS_DEVICE_NOT_CONNECTED; } CritSec->Enter(); res=m_Reader->IfdSetAttribute(Input,InputLength); switch(res) { case STATUS_DEVICE_NOT_CONNECTED: m_Reader->Unconnect(); delete m_Reader; m_Reader=NULL; break; default:; } CritSec->Leave(); return res; } RSCT_IFD_RESULT CReader::IfdGetAttribute(uint32_t Tag,uint8_t *Attribute,uint32_t *AttributeLength) { RSCT_IFD_RESULT res; if(m_Reader==NULL) { *Attribute=0; return STATUS_DEVICE_NOT_CONNECTED; } CritSec->Enter(); res=m_Reader->IfdGetAttribute(Tag,Attribute,AttributeLength); switch(res) { case STATUS_DEVICE_NOT_CONNECTED: m_Reader->Unconnect(); delete m_Reader; m_Reader=NULL; break; default:; } CritSec->Leave(); return res; } RSCT_IFD_RESULT CReader::IfdSwallow() { RSCT_IFD_RESULT res; if(m_Reader==NULL) { return STATUS_DEVICE_NOT_CONNECTED; } CritSec->Enter(); res=m_Reader->IfdSwallow(); switch(res) { case STATUS_DEVICE_NOT_CONNECTED: m_Reader->Unconnect(); delete m_Reader; m_Reader=NULL; break; default:; } CritSec->Leave(); return res; } RSCT_IFD_RESULT CReader::IfdEject() { RSCT_IFD_RESULT res; if(m_Reader==NULL) { return STATUS_DEVICE_NOT_CONNECTED; } CritSec->Enter(); res=m_Reader->IfdEject(); switch(res) { case STATUS_DEVICE_NOT_CONNECTED: m_Reader->Unconnect(); delete m_Reader; m_Reader=NULL; break; default:; } CritSec->Leave(); return res; } RSCT_IFD_RESULT CReader::IfdVendor(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength) { RSCT_IFD_RESULT res; if(m_Reader==NULL) { *OutputLength=0; return STATUS_DEVICE_NOT_CONNECTED; } CritSec->Enter(); res=m_Reader->IfdVendor(IoCtrlCode,Input,InputLength,Output,OutputLength); switch(res) { case STATUS_DEVICE_NOT_CONNECTED: m_Reader->Unconnect(); delete m_Reader; m_Reader=NULL; break; default:; } CritSec->Leave(); return res; } RSCT_IFD_RESULT CReader::IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len) { RSCT_IFD_RESULT res; if(m_Reader==NULL) { *response_len=0; return STATUS_DEVICE_NOT_CONNECTED; } CritSec->Enter(); res=m_Reader->IfdTransmit(cmd,cmd_len,response,response_len); switch(res) { case STATUS_DEVICE_NOT_CONNECTED: m_Reader->Unconnect(); delete m_Reader; m_Reader=NULL; break; default:; } CritSec->Leave(); return res; } RSCT_IFD_RESULT CReader::IfdIoControl(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength) { RSCT_IFD_RESULT res; if(m_Reader==NULL) { *OutputLength=0; return STATUS_DEVICE_NOT_CONNECTED; } CritSec->Enter(); res=m_Reader->IfdIoControl(IoCtrlCode,Input,InputLength,Output,OutputLength); switch(res) { case STATUS_DEVICE_NOT_CONNECTED: m_Reader->Unconnect(); delete m_Reader; m_Reader=NULL; break; default:; } CritSec->Leave(); return res; } void CReader::CheckcJResult(CJ_RESULT Result) { switch(Result) { case CJ_ERR_DEVICE_LOST: case CJ_ERR_CONNECT_TIMEOUT: m_Reader->Unconnect(); delete m_Reader; m_Reader=NULL; break; default:; } } CJ_RESULT CReader::CtLoadModule(uint8_t *pData,uint32_t DataLength,uint8_t *pSgn,uint32_t SgnLength,uint32_t *Result) { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtLoadModule(pData,DataLength,pSgn,SgnLength,Result); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtDeleteModule(uint32_t ModuleID,uint32_t *Result) { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtDeleteModule(ModuleID,Result); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtSelfTest2(const uint8_t *TransportKey,uint8_t KeyNr) { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtSelfTest2(TransportKey,KeyNr); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtSelfTest(void) { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtSelfTest(); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtShowAuth(void) { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtShowAuth(); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtActivateModule(uint32_t ModuleID,uint32_t *Result) { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtActivateModule(ModuleID,Result); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtDeactivateModule(uint32_t ModuleID,uint32_t *Result) { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtDeactivateModule(ModuleID,Result); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtSetSilentMode(bool boolMode,bool *pboolMode,uint32_t *Result) { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtSetSilentMode(boolMode,pboolMode,Result); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtGetSilentMode(bool *pboolMode,uint32_t *Result) { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtGetSilentMode(pboolMode,Result); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtSetModulestoreInfo(uint8_t *Info,uint8_t InfoLength) { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtSetModulestoreInfo(Info,InfoLength); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtGetModulestoreInfo(uint8_t *Info,uint8_t *InfoLength) { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtGetModulestoreInfo(Info,InfoLength); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtDeleteALLModules(uint32_t *Result) { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtDeleteALLModules(Result); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtListModules(uint32_t *Count,cj_ModuleInfo *ModuleInfo) { CJ_RESULT res; if(m_Reader==NULL) { *Count=0; return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtListModules(Count,ModuleInfo); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtGetModuleInfoFromFile(uint8_t *pData,uint32_t DataLength,cj_ModuleInfo *ModuleInfo,uint32_t *EstimatedUpdateTime) { CJ_RESULT res; if(m_Reader==NULL) { *EstimatedUpdateTime=0; return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtGetModuleInfoFromFile(pData,DataLength,ModuleInfo,EstimatedUpdateTime); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtFreeModuleInfoList(cj_ModuleInfo *pModuleInfo) { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtFreeModuleInfoList(pModuleInfo); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtKeyUpdate(uint8_t *pData,uint32_t DataLength,uint32_t *Result) { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtKeyUpdate(pData,DataLength,Result); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtIsKeyUpdateRecommended(uint8_t *pData,uint32_t DataLength,uint32_t *EstimatedUpdateTime) { CJ_RESULT res; if(m_Reader==NULL) { *EstimatedUpdateTime=0; return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtIsKeyUpdateRecommended(pData,DataLength,EstimatedUpdateTime); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtIsModuleUpdateRecommended(uint8_t *pData,uint32_t DataLength,uint32_t *EstimatedUpdateTime) { CJ_RESULT res; if(m_Reader==NULL) { *EstimatedUpdateTime=0; return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtIsModuleUpdateRecommended(pData,DataLength,EstimatedUpdateTime); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtGetActiveModuleID(uint32_t *ID,uint32_t *Result) { CJ_RESULT res; if(m_Reader==NULL) { *ID=0; return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtGetActiveModuleID(ID,Result); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtGetActivationID(uint32_t *ID,uint32_t *Result) { CJ_RESULT res; if(m_Reader==NULL) { *ID=0; return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtGetActivationID(ID,Result); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtApplicationData(uint32_t ApplicationID,uint16_t Function,uint8_t *InputData, uint32_t InputLen, uint32_t *Result, uint8_t *ResponseData, uint32_t *ResponseLen) { CJ_RESULT res; if(m_Reader==NULL) { *ResponseLen=0; *Result=0; return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtApplicationData(ApplicationID,Function,InputData,InputLen,Result,ResponseData,ResponseLen,0,0); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtApplicationDataEx(uint32_t ApplicationID,uint16_t Function,uint8_t *InputData, uint32_t InputLen, uint32_t *Result, uint8_t *ResponseData, uint32_t *ResponseLen, uint8_t *ApplicationError,uint32_t *ApplicationErrorLength) { CJ_RESULT res; if(m_Reader==NULL) { *ResponseLen=0; *Result=0; return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtApplicationData(ApplicationID,Function,InputData,InputLen,Result,ResponseData,ResponseLen,ApplicationError,ApplicationErrorLength); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtSetContrast(EContrast eContrast,uint32_t *Result) { CJ_RESULT res; if(m_Reader==NULL) { *Result=0; return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtSetContrast(eContrast,Result); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtSetBacklight(EBacklight eBacklight,uint32_t *Result) { CJ_RESULT res; if(m_Reader==NULL) { *Result=0; return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtSetBacklight(eBacklight,Result); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::InstallAndStartIFDHandler() { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->InstallAndStartIFDHandler(); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::StopIFDHandler() { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->StopIFDHandler(); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::IntroduceReaderGroups() { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->IntroduceReaderGroups(); CheckcJResult(res); CritSec->Leave(); return res; } CJ_RESULT CReader::CtGetReaderInfo(cj_ReaderInfo *pReaderInfo) { CJ_RESULT res; if(m_Reader==NULL) { return CJ_ERR_DEVICE_LOST; } CritSec->Enter(); res=m_Reader->CtGetReaderInfo(pReaderInfo); CheckcJResult(res); CritSec->Leave(); return res; } void CReader::SetChangeInterruptCallback(fctChangeIntCallback ChangeIntCallback,ctxPtr ChangeOwner) { CritSec->Enter(); m_Reader->SetChangeInterruptCallback(ChangeIntCallback,ChangeOwner); CritSec->Leave(); } void CReader::SetKeyInterruptCallback(fctKeyIntCallback KeyIntCallback,ctxPtr KeyOwner) { CritSec->Enter(); m_Reader->SetKeyInterruptCallback(KeyIntCallback,KeyOwner); CritSec->Leave(); } CJ_RESULT CReader::CtSetAPDUNorm(const EApduNorm Norm) { CJ_RESULT Res; CritSec->Enter(); Res=m_Reader->CtSetAPDUNorm(Norm); CritSec->Leave(); return Res; } void CReader::DebugResult(const char *format, ...) { #ifndef RSCT_NO_VARGS va_list args; char dbg_buffer[256]; va_start(args, format); vsnprintf(dbg_buffer, sizeof(dbg_buffer)-1, format, args); dbg_buffer[sizeof(dbg_buffer)-1] = 0; DebugLeveled(DEBUG_MASK_RESULTS, "Functionresult: %s", dbg_buffer); va_end(args); #endif } void CReader::DebugErrorSW1SW2(const char *format, ...) { #ifndef RSCT_NO_VARGS va_list args; char dbg_buffer[256]; va_start(args, format); vsnprintf(dbg_buffer, sizeof(dbg_buffer)-1, format, args); dbg_buffer[sizeof(dbg_buffer)-1] = 0; DebugLeveled(DEBUG_MASK_TRANSLATION, "DLL sets SW1SW2: %s", dbg_buffer); va_end(args); #endif } void CReader::DebugLeveled(uint32_t Mask, const char *format, ...) { #ifndef RSCT_NO_VARGS va_list args; char dbg_buffer[256]; va_start(args, format); vsnprintf(dbg_buffer, sizeof(dbg_buffer)-1, format, args); dbg_buffer[sizeof(dbg_buffer)-1] = 0; Debug.Out(m_cDeviceName,Mask,dbg_buffer,0,0); va_end(args); #endif } pcsc-cyberjack-3.99.5final.sp05/cjeca32/SECReader.cpp000066400000000000000000000034651231776762100220030ustar00rootroot00000000000000#include "Platform.h" #include #include #include "SECReader.h" #include "BaseCommunication.h" #define base CEC30Reader CSECReader::CSECReader(CReader *Owner,CBaseCommunication *Communicator) :base(Owner,Communicator) { } CSECReader::~CSECReader(void) { } uint16_t CSECReader::HostToReaderShort(uint16_t Value) { return InversByteOrderShort(htons(Value)); } uint32_t CSECReader::HostToReaderLong(uint32_t Value) { return InversByteOrderLong(htonl(Value)); } void CSECReader::SetHWString(char *String) { strcpy(String,"SEC_"); } void CSECReader::GetProductString(uint8_t *Product) { memcpy(Product,"CJSEC",5); } CJ_RESULT CSECReader::CtSetContrast(EContrast eContrast,uint32_t *Result) { CJ_RESULT Res; switch(eContrast) { case ContrastVeryLow: Res=_CtSetContrast(0,Result); break; case ContrastLow: Res=_CtSetContrast(70,Result); break; case ContrastMedium: Res=_CtSetContrast(120,Result); break; case ContrastHigh: Res=_CtSetContrast(160,Result); break; case ContrastVeryHigh: Res=_CtSetContrast(255,Result); break; default: Res=CJ_ERR_WRONG_PARAMETER; } return Res; } RSCT_IFD_RESULT CSECReader::_IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot) { int l; char *str; // uint16_t rest=*response_len; if(cmd_len==5 && cmd[0]==0xff && cmd[1]==0x9a && cmd[2]==0x01 && cmd[4]==0) { switch(cmd[3]) { case 4: if(*response_len>=6) { sprintf((char *)response,"%04X\x90",0x0410); *response_len=6; return STATUS_SUCCESS; } else { *response_len=0; return STATUS_BUFFER_TOO_SMALL; } break; default:; } } return base::_IfdTransmit(cmd,cmd_len,response,response_len); } pcsc-cyberjack-3.99.5final.sp05/cjeca32/SECReader.h000066400000000000000000000012221231776762100214350ustar00rootroot00000000000000#ifndef SECREADER_H #define SECREADER_H #include "EC30Reader.h" class CSECReader : public CEC30Reader { public: CSECReader(CReader *Owner,CBaseCommunication *Communicator); virtual ~CSECReader(void); virtual CJ_RESULT CtSetContrast(EContrast eContrast,uint32_t *Result); virtual RSCT_IFD_RESULT _IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len,uint8_t Slot=0); protected: virtual uint16_t HostToReaderShort(uint16_t Value); virtual uint32_t HostToReaderLong(uint32_t Value); virtual void SetHWString(char *String); virtual void GetProductString(uint8_t *Product); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/SerialUnix.cpp000066400000000000000000000245551231776762100223340ustar00rootroot00000000000000/*************************************************************************** begin : Mon Dec 10 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "Platform.h" #include #include #include #include #include #include #include #include #include #include "SerialUnix.h" #include "ccid.h" #include "ECAReader.h" #define DEBUGP(format, ...) {\ char dbg_buffer[256]; \ \ snprintf(dbg_buffer, sizeof(dbg_buffer)-1,\ __FILE__":%5d: " format , __LINE__ , ##__VA_ARGS__); \ dbg_buffer[sizeof(dbg_buffer)-1]=0; \ Debug.Out("serial", \ DEBUG_MASK_COMMUNICATION_ERROR, \ dbg_buffer, 0, 0); \ } char *CSerialUnix::createDeviceName(int num) { char buffer[256]; int rv; rv=snprintf(buffer, sizeof(buffer)-1, "/dev/ttyS%d", num); if (rv<0 || rv>=(int)(sizeof(buffer)-1)) { DEBUGP("Buffer too small (%d)", rv); return NULL; } return strdup(buffer); } CSerialUnix::CSerialUnix(const char *cDeviceName, CReader *Owner) :CBaseCommunication(cDeviceName, Owner) ,m_refcounter(1) ,m_devHandle(-1) { } CSerialUnix::~CSerialUnix(void) { m_refcounter=0; Close(); } int CSerialUnix::_readFd(int fd, void *buf, size_t l) { ssize_t rv; rv=read(fd, buf, l); if (rv>=0) { Debug.Out(m_cDeviceName, DEBUG_MASK_COMMUNICATION_OUT, "SERIAL IN", buf, rv); } else { DEBUGP("read: %s", strerror(errno)); } return rv; } int CSerialUnix::_writeFd(int fd, const void *buf, size_t l) { ssize_t rv; Debug.Out(m_cDeviceName, DEBUG_MASK_COMMUNICATION_OUT, "SERIAL OUT", (void*)buf, l); rv=write(fd, buf, l); if (rv<0) { DEBUGP("write: %s", strerror(errno)); } return rv; } int CSerialUnix::_writeLowlevel(void *Message, uint32_t len) { uint8_t *p; uint8_t crc[2]; uint32_t i; if (m_devHandle<0) { DEBUGP("Device is not open"); return CJ_ERR_DEVICE_LOST; } /* calculate checksum */ p=(uint8_t*) Message; crc[0]=0; crc[1]=0; for (i=0; i0) { ssize_t rv; rv=_writeFd(m_devHandle, p, len); if (rv<1) { if (errno!=EINTR) { DEBUGP("write: %s", strerror(errno)); Close(); return CJ_ERR_DEVICE_LOST; } } len-=rv; p+=rv; } /* send checksums */ p=crc; len=2; while (len>0) { ssize_t rv; rv=_writeFd(m_devHandle, p, len); if (rv<1) { if (errno!=EINTR) { DEBUGP("write: %s", strerror(errno)); Close(); return CJ_ERR_DEVICE_LOST; } } len-=rv; p+=rv; } /* make sure data gets written */ if (tcdrain(m_devHandle)) { DEBUGP("tcdrain: %s", strerror(errno)); Close(); return CJ_ERR_DEVICE_LOST; } return CJ_SUCCESS; } int CSerialUnix::Write(void *Message, uint32_t len) { for (;;) { int res; uint8_t buf[1]; res=_writeLowlevel(Message, len); if (res!=CJ_SUCCESS) return res; DEBUGP("Reading ACK byte"); if (_readForced(buf, 1)) { Close(); return CJ_ERR_DEVICE_LOST; } DEBUGP("Reading ACK byte: %02x", buf[0]); if (buf[0]==0xff) break; DEBUGP("Transmission error, resending"); /* forget whatever is in the buffers */ tcflush(m_devHandle, TCIOFLUSH); sleep(1); } return CJ_SUCCESS; } int CSerialUnix::_readForced(uint8_t *buf, uint32_t len) { while(len) { ssize_t rv; rv=_readFd(m_devHandle, buf, len); if (rv<0) { if (errno!=EINTR) { DEBUGP("read: %s", strerror(errno)); return -1; } } else if (rv==0) { DEBUGP("EOF met"); return -1; } else { len-=rv; buf+=rv; } } return 0; } int CSerialUnix::_writeAck(uint8_t c) { uint8_t buf[1]; ssize_t rv; buf[0]=c; do { rv=_writeFd(m_devHandle, buf, 1); } while(rv<0 && errno==EINTR); if (rv<1) { DEBUGP("write: %s", strerror(errno)); Close(); return CJ_ERR_DEVICE_LOST; } return CJ_SUCCESS; } int CSerialUnix::_readLowlevel(uint8_t *Response, uint32_t *ResponseLen) { uint32_t toRead; uint8_t buffer[32]; uint32_t inBuffer=0; uint8_t crc1=0; uint8_t crc2=0; uint32_t i; if (m_devHandle<0) { DEBUGP("Device is not open"); return CJ_ERR_DEVICE_LOST; } DEBUGP("reading up to %d bytes", *ResponseLen); /* read first byte */ if (_readForced(buffer, 1)) { Close(); return CJ_ERR_DEVICE_LOST; } inBuffer=1; if(buffer[0]==RDR_TO_PC_NOTIFYSLOTCHANGE || buffer[0]==RDR_TO_PC_HARWAREERROR || buffer[0]==RDR_TO_PC_KEYEVENT) { /* interrupt */ toRead=1; } else if (buffer[0]==0x00 || buffer[0]==0xff) { /* ACK byte received */ toRead=0; } else { /* read CCID header */ if (_readForced(buffer+1, 9)) { Close(); return CJ_ERR_DEVICE_LOST; } toRead=buffer[2]; toRead<<=8; toRead+=buffer[1]; inBuffer+=9; } if ((inBuffer+toRead)>*ResponseLen) { DEBUGP("Buffer too small (%d<%d)", (inBuffer+toRead), *ResponseLen); Close(); return CJ_ERR_DEVICE_LOST; } /* copy reveiced bytes */ memmove(Response, buffer, inBuffer); /* possibly read more bytes */ if (toRead) { if (_readForced(Response+inBuffer, toRead)) { Close(); return CJ_ERR_DEVICE_LOST; } } /* calculate checksums */ for (i=0; i<(inBuffer+toRead); i++) { crc1+=Response[i]; crc2^=Response[i]; } /* read checksums */ if (_readForced(buffer+1, 2)) { Close(); return CJ_ERR_DEVICE_LOST; } /* compare checksums */ if (buffer[1]!=crc1) { DEBUGP("Bad additive CRC (%02x != %02x)", buffer[1], crc1); } if (buffer[2]!=crc2) { DEBUGP("Bad XOR CRC (%02x != %02x)", buffer[2], crc2); } /* write ACK/NAK, but nor for interrupt messages */ if(buffer[0]!=RDR_TO_PC_NOTIFYSLOTCHANGE && buffer[0]!=RDR_TO_PC_HARWAREERROR && buffer[0]!=RDR_TO_PC_KEYEVENT) { if (buffer[1]==crc1 && buffer[2]==crc2) { int res; /* ACK */ res=_writeAck(0xff); if (res!=CJ_SUCCESS) return res; } else { int res; /* NAK */ res=_writeAck(0x00); if (res!=CJ_SUCCESS) return res; return CJ_ERR_DATA_CORRUPT; } } *ResponseLen=inBuffer+toRead; return CJ_SUCCESS; } int CSerialUnix::Read(void *Response, uint32_t *ResponseLen) { int res; uint32_t l; do { l=*ResponseLen; res=_readLowlevel((uint8_t*)Response, &l); } while(res==CJ_ERR_DATA_CORRUPT); if (res==CJ_SUCCESS) *ResponseLen=l; return res; } CBaseReader *CSerialUnix::BuildReaderObject() { m_Reader=new CECAReader(m_Owner, this); return m_Reader; } void CSerialUnix::SetCommunicationString(cj_ReaderInfo *ReaderInfo) { ReaderInfo->PID=0x0400; memcpy(ReaderInfo->CommunicationString, "COM", 4); ReaderInfo->ContentsMask= RSCT_READER_MASK_PID | RSCT_READER_MASK_COM_TYPE; } bool CSerialUnix::IsConnected() { return (m_devHandle!=-1); } int CSerialUnix::Open() { int fd; struct termios tios; int modemLines=0; DEBUGP("Opening device [%s]", m_cDeviceName); /* open serial device */ fd=open(m_cDeviceName, O_RDWR | O_NOCTTY); if (fd<0) { DEBUGP("open: %s", strerror(errno)); return 0; } /* get SIO attributes as a template */ if (tcgetattr(fd, &tios)<0) { DEBUGP("tcgetattr: %s", strerror(errno)); close(fd); return 0; } /* modify to work with the reader */ /* ignore paritiy and breaks at input */ tios.c_iflag=IGNBRK|IGNPAR; /* ignore parity at output */ tios.c_oflag=IGNPAR; /* ignore modem status */ tios.c_cflag|=CLOCAL; /* enable reading */ tios.c_cflag|=CREAD; /* 8n1 */ tios.c_cflag&=~PARENB; tios.c_cflag&=~CSTOPB; tios.c_cflag&=~CSIZE; tios.c_cflag|=CS8; /* disable hardware flow control */ tios.c_cflag&=~CRTSCTS; /* raw */ tios.c_lflag &=~(ICANON|ECHO|ECHOE|ISIG); tios.c_oflag &=~OPOST; tios.c_iflag &=~(IXON|IXOFF|IXANY); /* read one byte minimum, no timeout */ tios.c_cc[VMIN]=1; tios.c_cc[VTIME]=0; cfsetspeed(&tios, B115200); /* set new attributes */ if (tcsetattr(fd, TCSANOW, &tios)<0) { DEBUGP("tcsetattr: %s", strerror(errno)); close(fd); return 0; } /* get modem lines */ if (ioctl(fd, TIOCMGET, &modemLines)<0) { DEBUGP("ioctl(TIOCMGET): %s, ignoring", strerror(errno)); //close(fd); //return 0; } else { /* set RTS */ modemLines&=~TIOCM_RTS; if (ioctl(fd, TIOCMSET, &modemLines)<0) { DEBUGP("ioctl(TIOCMSET): %s, ignoring.", strerror(errno)); //close(fd); //return 0; } } if (tcflush(fd, TCIOFLUSH)<0) { DEBUGP("tcflush: %s", strerror(errno)); close(fd); return 0; } m_devHandle=fd; return 1; } void CSerialUnix::Close() { if (m_devHandle<0) { DEBUGP("Device is not open"); } else { close(m_devHandle); m_devHandle=-1; } } int CSerialUnix::StartInterruptPipe() { return 0; } int CSerialUnix::HaltInterruptPipe() { return 0; } pcsc-cyberjack-3.99.5final.sp05/cjeca32/SerialUnix.h000066400000000000000000000050551231776762100217730ustar00rootroot00000000000000/*************************************************************************** begin : Wed Apr 18 2007 copyright : (C) 2007-2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef RSCT_SERIALLINUX_H #define RSCT_SERIALLINUX_H #include "BaseCommunication.h" class CSerialUnix : public CBaseCommunication { public: uint32_t m_refcounter; protected: int m_devHandle; public: CSerialUnix(const char *cDeviceName,CReader *Owner); virtual ~CSerialUnix(void); static char *createDeviceName(int num); virtual int Write(void *Message, uint32_t len); virtual int Read(void *Response, uint32_t *ResponseLen); virtual CBaseReader *BuildReaderObject(); virtual void SetCommunicationString(cj_ReaderInfo *ReaderInfo); virtual bool IsConnected(); virtual int Open(); virtual void Close(); private: virtual int StartInterruptPipe(); virtual int HaltInterruptPipe(); int _readForced(uint8_t *buf, uint32_t len); int _readLowlevel(uint8_t *Response, uint32_t *ResponseLen); int _writeAck(uint8_t c); int _writeLowlevel(void *Message, uint32_t len); int _readFd(int fd, void *buf, size_t l); int _writeFd(int fd, const void *buf, size_t l); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/USBUnix.cpp000066400000000000000000000233611231776762100215400ustar00rootroot00000000000000/*************************************************************************** begin : Wed Apr 18 2007 copyright : (C) 2007-2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #ifdef ENABLE_NONSERIAL #include "Platform.h" #include #include #include #include #include #include "USBUnix.h" #include "ausb_l.h" #include "ECAReader.h" #include "ECBReader.h" #include "ECRReader.h" #include "ECPReader.h" #include "SECReader.h" #include "ECFReader.h" #include "ECFReader.h" #include "EFBReader.h" #define USB_TIMEOUT 10000000 #define USB_READ_TIMEOUT (USB_TIMEOUT*120) #define USB_WRITE_TIMEOUT USB_TIMEOUT #define DEBUGP(devName, debug_mask, format, ...) {\ char dbg_buffer[256]; \ \ snprintf(dbg_buffer, sizeof(dbg_buffer)-1,\ __FILE__":%5d: " format , __LINE__ , ##__VA_ARGS__); \ dbg_buffer[sizeof(dbg_buffer)-1]=0; \ Debug.Out(devName, debug_mask, dbg_buffer,0,0); \ } static void logAusb(ausb_dev_handle *ah, const char *text, const void *pData, uint32_t ulDataLen) { rsct_debug_out("", DEBUG_MASK_COMMUNICATION_IN, (char*)text, (char*)pData, ulDataLen); } extern "C" { void usb_callback(const uint8_t *data, uint32_t dlength, void *userdata) { CUSBUnix *com; com=(CUSBUnix*) userdata; com->usbCallback(data, dlength); } } char *CUSBUnix::createDeviceName(int num) { rsct_usbdev_t *dev; char *p; /* get device */ dev=rsct_usbdev_getDevByIdx(num); if (dev==NULL) { Debug.Out("", DEBUG_MASK_COMMUNICATION_ERROR, "Device not found",0,0); return NULL; } if (dev->path) p=strdup(dev->path); else if (dev->halPath) p=strdup(dev->halPath); else p=NULL; rsct_usbdev_free(dev); return p; } char *CUSBUnix::createDeviceName(int busId, int devId) { rsct_usbdev_t *dev; char *p; /* get device */ dev=rsct_usbdev_getDevByBusPos(busId, devId); if (dev==NULL) { Debug.Out("", DEBUG_MASK_COMMUNICATION_ERROR, "Device not found",0,0); return NULL; } if (dev->path) p=strdup(dev->path); else if (dev->halPath) p=strdup(dev->halPath); else p=NULL; rsct_usbdev_free(dev); return p; } CUSBUnix::CUSBUnix(const char *cDeviceName,CReader *Owner) :CBaseCommunication(cDeviceName, Owner) ,m_refcounter(1) ,m_devHandle(NULL) ,m_bulkIn(0) ,m_bulkOut(0) ,m_intPipe(0) { /* set log function */ ausb_set_log_fn(logAusb); } CUSBUnix::~CUSBUnix(void) { m_refcounter=0; Close(); } int CUSBUnix::Write(void *Message, uint32_t len) { int rv; rv=CBaseCommunication::Write(Message,len); if (rv==CJ_SUCCESS) { rv=ausb_bulk_write(m_devHandle, m_bulkOut, (char*) Message, len, USB_WRITE_TIMEOUT); if (rv<0) { Debug.Out(m_cDeviceName, DEBUG_MASK_COMMUNICATION_ERROR, "Error on write",0,0); Close(); return CJ_ERR_DEVICE_LOST; } return CJ_SUCCESS; } else return rv; } int CUSBUnix::Read(void *Response, uint32_t *ResponseLen) { int rv; rv=ausb_bulk_read(m_devHandle, m_bulkIn, (char*)Response, *ResponseLen, USB_READ_TIMEOUT); if (rv<0) { Debug.Out(m_cDeviceName, DEBUG_MASK_COMMUNICATION_ERROR, "Error on read",0,0); Close(); return CJ_ERR_DEVICE_LOST; } *ResponseLen=rv; return CBaseCommunication::Read(Response, ResponseLen); } CBaseReader *CUSBUnix::BuildReaderObject() { rsct_usbdev_t *dev; dev=rsct_usbdev_scanDevByName(m_cDeviceName); if (dev==NULL) { Debug.Out(m_cDeviceName,DEBUG_MASK_COMMUNICATION_ERROR,"Device not found",0,0); return NULL; } if (dev->vendorId==AUSB_CYBERJACK_VENDOR_ID) { CBaseReader *r; DEBUGP(m_cDeviceName, DEBUG_MASK_COMMUNICATION_ERROR, "Product: %d:%s", dev->productId, m_productString.c_str()); /* use the same constructor for every platform, so that we only need to adjust the list * of known readers in a single place: BaseCommunication.cpp */ r=_buildUsbReaderObject(dev->productId, (const char*)(m_productString.c_str())); rsct_usbdev_free(dev); return r; } else { Debug.Out(m_cDeviceName, DEBUG_MASK_COMMUNICATION_ERROR, "Device is not a cyberjack",0,0); return NULL; } } void CUSBUnix::SetCommunicationString(cj_ReaderInfo *ReaderInfo) { ReaderInfo->PID=m_pid; memcpy(ReaderInfo->CommunicationString, "USB", 4); memcpy(ReaderInfo->VendorString, "REINER SCT", 11); memcpy(ReaderInfo->ProductString, m_productString.c_str(),m_productString.length()); ReaderInfo->ContentsMask= RSCT_READER_MASK_PID | RSCT_READER_MASK_VENDOR_STRING | RSCT_READER_MASK_PRODUCT_STRING | RSCT_READER_MASK_COM_TYPE; } bool CUSBUnix::IsConnected() { return (m_devHandle!=NULL); } int CUSBUnix::Open() { rsct_usbdev_t *dev; int nConfig=0; int usbMode=1; int rv; m_bulkIn=0; m_bulkOut=0; m_intPipe=0; /* get device */ dev=rsct_usbdev_getDevByName(m_cDeviceName); if (dev==NULL) { Debug.Out("", DEBUG_MASK_COMMUNICATION_ERROR, "Device not found",0,0); return 0; } /* get addresses of bulk endpoints */ nConfig=0; m_productString = dev->productName; switch(dev->productId) { case 0x300: Debug.Out("", DEBUG_MASK_COMMUNICATION_ERROR, "Using USB implementation 1", 0, 0); usbMode=1; m_bulkOut=0x04; m_bulkIn=0x85; m_intPipe=0x81; break; case 0x400: Debug.Out("", DEBUG_MASK_COMMUNICATION_ERROR, "Using USB implementation 3", 0, 0); usbMode=3; m_bulkOut=0x02; m_bulkIn=0x81; m_intPipe=0x83; break; case 0x401: Debug.Out("", DEBUG_MASK_COMMUNICATION_ERROR, "Using USB implementation 3", 0, 0); usbMode=3; m_bulkOut=0x02; m_bulkIn=0x82; m_intPipe=0x81; break; default: Debug.Out("", DEBUG_MASK_COMMUNICATION_ERROR, "Using USB implementation 1", 0, 0); usbMode=1; m_bulkOut=0x02; m_bulkIn=0x81; m_intPipe=0x83; } /* ok, we have all, open the device */ m_devHandle=ausb_open(dev, usbMode); if (m_devHandle==NULL) { Debug.Out("", DEBUG_MASK_COMMUNICATION_ERROR, "Unable to open device",0,0); return 0; } /* set configuration, this syncs driver and device */ rv=ausb_set_configuration(m_devHandle, 1); if (rv) { Debug.Out("", DEBUG_MASK_COMMUNICATION_ERROR, "Unable to set configuration",0,0); ausb_close(m_devHandle); m_devHandle=NULL; return 0; } Debug.Out("", DEBUG_MASK_COMMUNICATION_ERROR, "Claim interface", 0, 0); rv=ausb_claim_interface(m_devHandle, 0); if (rv<0) { Debug.Out("", DEBUG_MASK_COMMUNICATION_ERROR, "Still unable to claim interface",0,0); ausb_close(m_devHandle); m_devHandle=NULL; return 0; } /* This will synchronize the toggle bit */ // ausb_reset_pipe(m_devHandle, m_bulkOut); // ausb_reset_pipe(m_devHandle, m_bulkIn); //fprintf(stderr, "register callback handler\n"); ausb_register_callback(m_devHandle, usb_callback, (void*)this); //fprintf(stderr, "start interrupt\n"); if (ausb_start_interrupt(m_devHandle, m_intPipe)) { Debug.Out("", DEBUG_MASK_COMMUNICATION_ERROR, "Unable to start receiving interrupts",0,0); ausb_close(m_devHandle); m_devHandle=NULL; return 0; } //fprintf(stderr, "device open.\n"); return 1; } void CUSBUnix::Close() { //fprintf(stderr, "Closing communication\n"); if (m_devHandle==NULL) { Debug.Out(m_cDeviceName, DEBUG_MASK_COMMUNICATION_ERROR, "Device not open",0,0); } else { ausb_stop_interrupt(m_devHandle); #if 0 ausb_reset(m_devHandle); #endif ausb_release_interface(m_devHandle, 0); ausb_close(m_devHandle); m_devHandle=NULL; } } int CUSBUnix::StartInterruptPipe() { return 0; } int CUSBUnix::HaltInterruptPipe() { return 0; } void CUSBUnix::usbCallback(const uint8_t *data, uint32_t dlength) { DEBUGP(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INT, "USB Interrupt received: %d bytes", dlength); if (m_Reader) { Debug.Out(m_cDeviceName, DEBUG_MASK_COMMUNICATION_INT, "Calling device interrupt handler", (uint8_t*)data, dlength); m_Reader->DoInterruptCallback((uint8_t*)data, dlength); } else { Debug.Out(m_cDeviceName, DEBUG_MASK_COMMUNICATION_ERROR, "No reader",0,0); } } #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/USBUnix.h000066400000000000000000000050121231776762100211760ustar00rootroot00000000000000/*************************************************************************** begin : Wed Apr 18 2007 copyright : (C) 2007-2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef RSCT_USBLINUX_H #define RSCT_USBLINUX_H #include "BaseCommunication.h" /* forward declaration */ typedef struct ausb_dev_handle ausb_dev_handle; class CUSBUnix : public CBaseCommunication { public: uint32_t m_refcounter; protected: ausb_dev_handle *m_devHandle; uint8_t m_bulkIn; uint8_t m_bulkOut; uint8_t m_intPipe; public: CUSBUnix(const char *cDeviceName,CReader *Owner); virtual ~CUSBUnix(void); static char *createDeviceName(int num); static char *createDeviceName(int busId, int devId); virtual int Write(void *Message, uint32_t len); virtual int Read(void *Response, uint32_t *ResponseLen); virtual CBaseReader *BuildReaderObject(); virtual void SetCommunicationString(cj_ReaderInfo *ReaderInfo); virtual bool IsConnected(); virtual int Open(); virtual void Close(); void usbCallback(const uint8_t *data, uint32_t dlength); private: virtual int StartInterruptPipe(); virtual int HaltInterruptPipe(); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/WAVReader.cpp000066400000000000000000000045231231776762100220220ustar00rootroot00000000000000#include "Platform.h" #include #include #include #include "WAVReader.h" #include "BaseCommunication.h" #include "memory_placements.h" #define base CRFSReader CWAVReader::CWAVReader(CReader *Owner,CBaseCommunication *Communicator) :base(Owner,Communicator) { } CWAVReader::~CWAVReader(void) { } void CWAVReader::SetHWString(char *String) { strcpy(String,"WAV_"); } void CWAVReader::GetProductString(uint8_t *Product) { memcpy(Product,"CJWAV",5); } CJ_RESULT CWAVReader::CtSetBacklight(EBacklight eBacklight,uint32_t *Result) { CJ_RESULT Res; switch(eBacklight) { //case BacklightOff: // Res=_CtSetBacklight(0,Result); // break; //case BacklightVeryLow: // Res=_CtSetBacklight(70,Result); // break; //case BacklightLow: // Res=_CtSetBacklight(100,Result); // break; //case BacklightMedium: // Res=_CtSetBacklight(120,Result); // break; //case BacklightHigh: // Res=_CtSetBacklight(160,Result); // break; //case BacklightVeryHigh: // Res=_CtSetBacklight(255,Result); // break; default: Res=CJ_ERR_WRONG_PARAMETER; } return Res; } //CJ_RESULT CWAVReader::CtSelfTest2(const uint8_t *TransportKey,uint8_t KeyNr) //{ // uint32_t Res; // uint8_t buffer[256]; // struct _CCID_Message::_Data::_Escape::_Reader::_EC30::_Data::_SetDateTime *DateTime=(struct _CCID_Message::_Data::_Escape::_Reader::_EC30::_Data::_SetDateTime *)buffer; // struct tm *t; // time_t tim; // CJ_RESULT Result; // // time(&tim); // t=localtime(&tim); // // DateTime->Nr=1; // sprintf((char *)DateTime->dtDate.ProductionDate,"%02d.%02d.%04d",t->tm_mday,t->tm_mon+1,t->tm_year+1900); // sprintf((char *)DateTime->dtDate.ProductionTime,"%02d:%02d",t->tm_hour,t->tm_min); // memcpy(buffer+sizeof(struct _CCID_Message::_Data::_Escape::_Reader::_EC30::_Data::_SetDateTime),TransportKey,16); // buffer[16+sizeof(struct _CCID_Message::_Data::_Escape::_Reader::_EC30::_Data::_SetDateTime)]=KeyNr; // // Result=Escape(MODULE_ID_KERNEL,CCID_ESCAPE_SELF_TEST,buffer,sizeof(struct _CCID_Message::_Data::_Escape::_Reader::_EC30::_Data::_SetDateTime)+17,&Res,0,0); // if(Result!=CJ_SUCCESS && Result!=CJ_ERR_CHECK_RESULT) // { // m_Owner->DebugLeveled(DEBUG_MASK_COMMUNICATION_ERROR,"Error Selftest"); // return CJ_ERR_DEVICE_LOST; // } // return Res; //} pcsc-cyberjack-3.99.5final.sp05/cjeca32/WAVReader.h000066400000000000000000000007421231776762100214660ustar00rootroot00000000000000#ifndef WAVEREADER_H #define WAVEREADER_H #include "RFSReader.h" class CWAVReader : public CRFSReader { public: CWAVReader(CReader *Owner,CBaseCommunication *Communicator); virtual ~CWAVReader(void); virtual void SetHWString(char *String); virtual void GetProductString(uint8_t *Product); virtual CJ_RESULT CtSetBacklight(EBacklight eBacklight,uint32_t *Result); // virtual CJ_RESULT CtSelfTest2(const uint8_t *TransportKey,uint8_t KeyNr); }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/ausb/000077500000000000000000000000001231776762100204645ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/cjeca32/ausb/Makefile.am000066400000000000000000000011601231776762100225160ustar00rootroot00000000000000INCLUDES=-I. -I.. -I$(top_srcdir)/include -I$(top_srcdir)/ctapi $(libusb_includes) $(hal_includes) AM_CFLAGS=@cyberjack_platform_def@ -DBUILDING_CYBERJACK $(visibility_cflags) AM_CPPFLAGS=@cyberjack_platform_def@ -DBUILDING_CYBERJACK $(visibility_cflags) EXTRA_DIST=usbdev_hal.c usbdev_libusb1.c noinst_LTLIBRARIES=libausb.la libausb_la_SOURCES=\ ausb_libusb0.c \ ausb_libusb1.c \ ausb.c \ ausb1.c \ ausb11.c \ ausb3.c \ ausb31.c \ usbdev.c noinst_HEADERS=\ ausb_libusb0_l.h \ ausb_libusb1_l.h \ ausb_l.h \ usbdev_l.h libausb_la_LIBADD=$(IOKIT_FRAMEWORK) $(FOUNDATION_FRAMEWORK) $(libusb_LIBS) $(hal_libs) pcsc-cyberjack-3.99.5final.sp05/cjeca32/ausb/ausb.c000066400000000000000000000136331231776762100215700ustar00rootroot00000000000000/* USB support for the Cyberjack family of readers. * * Previous version were (C) 2004-2005 by Harald Welte * This version is a rewrite (asynchronous USB is no longer needed). * * (C) 2007 Martin Preuss * * Distributed and licensed under the terms of GNU LGPL, Version 2.1 */ #ifdef HAVE_CONFIG_H # include #endif #include #include "ausb_l.h" #include "ausb_libusb0_l.h" #include "ausb_libusb1_l.h" #include #include #include #include #include #include #include #include #include #ifdef HAVE_HAL # include # include #endif #define DEBUGP(ah, format, ...) {\ char dbg_buffer[256]; \ \ snprintf(dbg_buffer, sizeof(dbg_buffer)-1,\ __FILE__":%5d: " format , __LINE__ , ##__VA_ARGS__); \ dbg_buffer[sizeof(dbg_buffer)-1]=0; \ ausb_log(ah, dbg_buffer, NULL, 0);\ } #define DEBUGL(ah, text, pData, ulDataLen) {\ char dbg_buffer[256]; \ \ snprintf(dbg_buffer, sizeof(dbg_buffer)-1,\ __FILE__":%5d: %s", __LINE__ , text); \ dbg_buffer[sizeof(dbg_buffer)-1]=0; \ ausb_log(ah, dbg_buffer, pData, ulDataLen);\ } static AUSB_LOG_FN ausb_log_fn=NULL; void ausb_set_log_fn(AUSB_LOG_FN fn) { ausb_log_fn=fn; } void ausb_log(ausb_dev_handle *ah, const char *text, const void *pData, uint32_t ulDataLen) { if (ausb_log_fn) ausb_log_fn(ah, text, pData, ulDataLen); } int ausb_register_callback(ausb_dev_handle *ah, AUSB_CALLBACK callback, void *userdata){ DEBUGP(ah, "registering callback:%p\n", callback); ah->cb.handler=callback; ah->cb.userdata=userdata; return 0; } int ausb_claim_interface(ausb_dev_handle *ah, int interface){ DEBUGP(ah, "ausb_claim_interface\n"); if (ah->claimInterfaceFn) return ah->claimInterfaceFn(ah, interface); DEBUGP(ah, "callback for ausb_claim_interface not set\n"); return -1; } int ausb_release_interface(ausb_dev_handle *ah, int interface){ DEBUGP(ah, "ausb_release_interface\n"); if (ah->releaseInterfaceFn) return ah->releaseInterfaceFn(ah, interface); DEBUGP(ah, "callback for ausb_release_interface not set\n"); return -1; } int ausb_set_configuration(ausb_dev_handle *ah, int configuration){ DEBUGP(ah, "ausb_set_configuration\n"); if (ah->setConfigurationFn) return ah->setConfigurationFn(ah, configuration); DEBUGP(ah, "callback for ausb_set_configuration not set\n"); return -1; } ausb_dev_handle *ausb_open(rsct_usbdev_t *dev, int t) { ausb_dev_handle *ah=NULL; int rv; /*fprintf(stderr, "Opening device...\n");*/ ah=malloc(sizeof *ah); if (ah==0) { DEBUGP(ah, "memory full\n"); return 0; } memset(ah, 0, sizeof(*ah)); ah->pid=dev->productId; ah->device=*dev; switch(t) { case 1: #ifdef USE_USB1 rv=ausb11_extend(ah); #else rv=ausb1_extend(ah); #endif break; case 2: DEBUGP(ah, "This type is no longer supported.\n"); rv=-1; break; case 3: #ifdef USE_USB1 rv=ausb31_extend(ah); #else rv=ausb3_extend(ah); #endif break; default: DEBUGP(ah, "Invalid type %d\n", t); rv=-1; break; } if (rv) { DEBUGP(ah, "Could not extend as type %d (%d)\n", t, rv); free(ah); return 0; } return ah; } int ausb_close(ausb_dev_handle *ah) { DEBUGP(ah, "ausb_close\n"); if (ah->closeFn) ah->closeFn(ah); free(ah); return 0; } int ausb_start_interrupt(ausb_dev_handle *ah, int ep) { DEBUGP(ah, "ausb_start_interrupt\n"); if (ah->startInterruptFn) return ah->startInterruptFn(ah, ep); return 0; } int ausb_stop_interrupt(ausb_dev_handle *ah) { DEBUGP(ah, "ausb_stop_interrupt\n"); if (ah->stopInterruptFn) return ah->stopInterruptFn(ah); return 0; } int ausb_bulk_write(ausb_dev_handle *ah, int ep, char *bytes, int size, int timeout) { DEBUGL(ah, "Write:", bytes, size); if (ah->bulkWriteFn) return ah->bulkWriteFn(ah, ep, bytes, size, timeout); return -1; } int ausb_bulk_read(ausb_dev_handle *ah, int ep, char *bytes, int size, int timeout) { if (ah->bulkReadFn) { int rv; DEBUGP(ah, "Reading up to %d bytes", size); rv=ah->bulkReadFn(ah, ep, bytes, size, timeout); if (rv>=0) { DEBUGL(ah, "Read:", bytes, rv); } return rv; } return -1; } int ausb_reset(ausb_dev_handle *ah){ DEBUGP(ah, "ausb_reset\n"); if (ah->resetFn) return ah->resetFn(ah); else return -1; } int ausb_reset_endpoint(ausb_dev_handle *ah, unsigned int ep){ DEBUGP(ah, "ausb_reset_endpoint\n"); if (ah->resetEndpointFn) return ah->resetEndpointFn(ah, ep); else return -1; } int ausb_clear_halt(ausb_dev_handle *ah, unsigned int ep){ DEBUGP(ah, "ausb_clear_halt\n"); if (ah->clearHaltFn) return ah->clearHaltFn(ah, ep); else return -1; } int ausb_reset_pipe(ausb_dev_handle *ah, int ep){ DEBUGP(ah, "ausb_reset_pipe\n"); if (ah->resetPipeFn) return ah->resetPipeFn(ah, ep); else return -1; } int ausb_get_kernel_driver_name(ausb_dev_handle *ah, int interface, char *name, unsigned int namelen){ DEBUGP(ah, "ausb_get_kernel_driver_name\n"); if (ah->getKernelDriverNameFn) return ah->getKernelDriverNameFn(ah, interface, name, namelen); return -1; } int ausb_detach_kernel_driver(ausb_dev_handle *ah, int interface){ DEBUGP(ah, "ausb_detach_kernel_driver\n"); if (ah->detachKernelDriverFn) return ah->detachKernelDriverFn(ah, interface); return -1; } int ausb_reattach_kernel_driver(ausb_dev_handle *ah, int interface){ DEBUGP(ah, "ausb_reattach_kernel_driver\n"); if (ah->reattachKernelDriverFn) return ah->reattachKernelDriverFn(ah, interface); return -1; } int ausb_init(void) { #ifdef USE_USB1 return ausb_libusb1_init(); #else return ausb_libusb0_init(); #endif } int ausb_fini(void){ #ifdef USE_USB1 return ausb_libusb1_fini(); #else return ausb_libusb0_fini(); #endif } pcsc-cyberjack-3.99.5final.sp05/cjeca32/ausb/ausb1.c000066400000000000000000000325211231776762100216460ustar00rootroot00000000000000/* Wrapper/Extension code to libusb-0.1 to support asynchronous requests * on Linux platforns * * (C) 2004-2005 by Harald Welte * extended/modified by Martin Preuss (C) 2006,2007 * * Distributed and licensed under the terms of GNU LGPL, Version 2.1 */ #ifdef HAVE_CONFIG_H # include #endif #ifndef USE_USB1 #include #include #include #include #include #include #include #include #include #include #include #ifdef CONFIG_COMPAT #undef CONFIG_COMPAT #endif #ifndef __user # define __user #endif #include #include "ausb_l.h" #include "ausb_libusb0_l.h" #ifndef USBDEVFS_CONNECT # define USBDEVFS_CONNECT _IO('U', 23) #endif #define MAX_READ_WRITE 4096 #define CT_MAX_DEVICES 256 #define AUSB_MAX_INTURB_SIZE 256 #define DEBUGP(ah, format, ...) {\ char dbg_buffer[256]; \ \ snprintf(dbg_buffer, sizeof(dbg_buffer)-1,\ __FILE__":%5d: " format , __LINE__ , ##__VA_ARGS__); \ dbg_buffer[sizeof(dbg_buffer)-1]=0; \ ausb_log(ah, dbg_buffer, NULL, 0);\ } #define DEBUGL(ah, text, pData, ulDataLen) {\ char dbg_buffer[256]; \ \ snprintf(dbg_buffer, sizeof(dbg_buffer)-1,\ __FILE__":%5d: %s", __LINE__ , text); \ dbg_buffer[sizeof(dbg_buffer)-1]=0; \ ausb_log(ah, dbg_buffer, pData, ulDataLen);\ } struct ausb1_extra { usb_dev_handle *uh; struct usbdevfs_urb intUrb; char intUrbBuffer[AUSB_MAX_INTURB_SIZE]; }; typedef struct ausb1_extra ausb1_extra; int ausb1_get_fd(ausb_dev_handle *ah) { ausb1_extra *xh; xh=(ausb1_extra*)ah->extraData; if (xh) return *((int*)xh->uh); else return -1; } int ausb1_get_kernel_driver_name(ausb_dev_handle *ah, int interface, char *name, unsigned int namelen){ ausb1_extra *xh; DEBUGP(ah, "ausb_get_driver_np\n"); xh=(ausb1_extra*)ah->extraData; if (xh) { if (namelen<2) { DEBUGP(ah, "Buffer too small (%d)\n", namelen); return -1; } else { #ifdef LIBUSB_HAS_GET_DRIVER_NP int ret; ret=usb_get_driver_np(xh->uh, interface, name, namelen-1); if (ret<0) { DEBUGP(ah, "usb_get_driver_np: %d (%s)\n", errno, strerror(errno)); return 0; } else if (ret==0) { name[namelen-1]=0; return 1; } #endif } } return -1; } int ausb1_detach_kernel_driver(ausb_dev_handle *ah, int interface){ ausb1_extra *xh; DEBUGP(ah, "ausb_detach_kernel_driver_np\n"); xh=(ausb1_extra*)ah->extraData; if (xh) { #ifdef LIBUSB_HAS_DETACH_KERNEL_DRIVER_NP return usb_detach_kernel_driver_np(xh->uh, interface); #endif } return -1; } int ausb1_reattach_kernel_driver(ausb_dev_handle *ah, int interface){ ausb1_extra *xh; xh=(ausb1_extra*)ah->extraData; if (xh) { struct usbdevfs_ioctl command; int ret; command.ifno = interface; command.ioctl_code = USBDEVFS_CONNECT; command.data = NULL; ret=ioctl(ausb1_get_fd(ah), USBDEVFS_IOCTL, &command); if (ret<0) { DEBUGP(ah, "IOCTL(USBDEVFS_CONNECT): %d (%s)\n", errno, strerror(errno)); } return ret; } return -1; } static int ausb1_claim_interface(ausb_dev_handle *ah, int interface){ ausb1_extra *xh; xh=(ausb1_extra*)ah->extraData; if (xh) return usb_claim_interface(xh->uh, interface); else return -1; } static int ausb1_release_interface(ausb_dev_handle *ah, int interface){ ausb1_extra *xh; xh=(ausb1_extra*)ah->extraData; if (xh) return usb_release_interface(xh->uh, interface); else return -1; } static int ausb1_set_configuration(ausb_dev_handle *ah, int configuration){ ausb1_extra *xh; xh=(ausb1_extra*)ah->extraData; if (xh) { int ret; ret=usb_set_configuration(xh->uh, configuration); if (ret<0) { DEBUGP(ah, "usb_set_configuration returned %d (errno=%d:%s)\n", ret, errno, strerror(errno)); } return ret; } else return -1; } static int ausb1_reset(ausb_dev_handle *ah){ ausb1_extra *xh; xh=(ausb1_extra*)ah->extraData; if (xh) return usb_reset(xh->uh); else return -1; } static int ausb1_reset_endpoint(ausb_dev_handle *ah, unsigned int ep){ ausb1_extra *xh; xh=(ausb1_extra*)ah->extraData; if (xh) return usb_resetep(xh->uh, ep); else return -1; } static int ausb1_clear_halt(ausb_dev_handle *ah, unsigned int ep){ ausb1_extra *xh; xh=(ausb1_extra*)ah->extraData; if (xh) return usb_clear_halt(xh->uh, ep); else return -1; } static int ausb1_reset_pipe(ausb_dev_handle *ah, int ep){ ausb1_extra *xh; xh=(ausb1_extra*)ah->extraData; if (xh) { int rv; rv=usb_control_msg(xh->uh, 0x02, /* host to device */ 0x03, /* set feature */ 0x00, /* halt */ ep, /* endpoint */ NULL, 0, 1200); if (rv<0) { DEBUGP(ah, "unable to reset endpoint %d (%d=%s)",ep, errno, strerror(errno)); return rv; } rv=usb_clear_halt(xh->uh, ep); if (rv<0) { DEBUGP(ah, "unable to start endpoint %d (%d=%s)",ep, errno, strerror(errno)); return rv; } return rv; } else return -1; } static void ausb1_fill_bulk_urb(struct usbdevfs_urb *uurb, unsigned char endpoint, void *buffer, int buffer_length){ uurb->type=USBDEVFS_URB_TYPE_BULK; uurb->endpoint = endpoint; /* | USB_DIR_IN; */ uurb->flags = 1 ; /* USBDEVFS_URB_QUEUE_BULK; */ uurb->buffer = buffer; uurb->buffer_length = buffer_length; uurb->actual_length=0; uurb->signr = 0;; uurb->start_frame = -1; } static void ausb1_fill_int_urb(struct usbdevfs_urb *uurb, unsigned char endpoint, void *buffer, int buffer_length){ uurb->type=USBDEVFS_URB_TYPE_INTERRUPT; uurb->endpoint = endpoint; /* | USB_DIR_IN; */ uurb->flags = 0 ; /* USBDEVFS_URB_QUEUE_BULK; */ uurb->buffer = buffer; uurb->buffer_length = buffer_length; uurb->actual_length=0; uurb->signr = 0;; uurb->start_frame = -1; } static int ausb1_submit_urb(ausb_dev_handle *ah, struct usbdevfs_urb *uurb){ int ret; uurb->actual_length=0; /* save ausb_dev_handle in opaque usercontext field */ uurb->usercontext = ah; do { ret = ioctl(ausb1_get_fd(ah), USBDEVFS_SUBMITURB, uurb); } while (ret < 0 && errno == EINTR); return ret; } static int ausb1_discard_urb(ausb_dev_handle *ah, struct usbdevfs_urb *uurb){ int ret; do { ret = ioctl(ausb1_get_fd(ah), USBDEVFS_DISCARDURB, uurb); } while (ret < 0 && errno == EINTR); return ret; } static void handle_urb(struct usbdevfs_urb *uurb){ struct ausb_dev_handle *ah = uurb->usercontext; if (!ah) { DEBUGP(NULL, "cant't call handler because of a missing ah ptr\n"); return; } if (!ah->cb.handler) { DEBUGP(NULL, "received URB type %u, no handler\n", uurb->type); return; } ah->cb.handler(uurb->buffer, uurb->actual_length, ah->cb.userdata); } static int ausb1_start_interrupt(ausb_dev_handle *ah, int ep) { ausb1_extra *xh; int ret; xh=(ausb1_extra*)ah->extraData; DEBUGP(ah, "Starting interrupt pipe for endpoint %d", ep); ausb1_fill_int_urb(&xh->intUrb, ep, xh->intUrbBuffer, AUSB_MAX_INTURB_SIZE); ret=ausb1_submit_urb(ah, &xh->intUrb); if (ret<0) { DEBUGP(ah, "unable to submit interrupt urb (%d: %s)\n", errno, strerror(errno)); return -1; } /* read all pending interrupts */ DEBUGP(ah, "Clearing interrupt pipe"); for (;;) { int ret; struct usbdevfs_urb *rurb; time_t tStart; tStart=time(NULL); do { time_t tEnd; tEnd=time(NULL); if (difftime(tEnd, tStart)>10.0) { DEBUGP(ah, "Timeout while clearing interrupt pipe"); return -1; } rurb=NULL; ret = ioctl(ausb1_get_fd(ah), USBDEVFS_REAPURBNDELAY, &rurb); } while (ret < 0 && errno == EINTR); if (ret<0) { if (errno==EAGAIN) { /*fprintf(stderr, "No pending interrupt\n");*/ break; } else { DEBUGP(ah, "error getting URB [%s]\n", strerror(errno)); return -1; } } if (rurb==&xh->intUrb) { /* handle interrupt urb */ DEBUGP(ah, "answer for interrupt urb\n"); if (ausb1_submit_urb(ah, &xh->intUrb)) { DEBUGP(ah, "unable to submit interrupt urb\n"); return -1; } } else { DEBUGP(ah, "returned unknown urb %p\n", rurb); } } DEBUGP(ah, "Interrupt pipe started"); return 0; } static int ausb1_stop_interrupt(ausb_dev_handle *ah) { ausb1_extra *xh; xh=(ausb1_extra*)ah->extraData; ausb1_discard_urb(ah, &xh->intUrb); return 0; } static int ausb1_bulk_write(ausb_dev_handle *ah, int ep, char *bytes, int length, int timeout){ struct usbdevfs_bulktransfer bulk; int ret, sent = 0; ausb1_extra *xh; time_t tStart; xh=(ausb1_extra*)ah->extraData; DEBUGP(ah, "bulk write (ah=%p, ep=0x%x, bytes=%p, size=%d, timeout=%d\n", ah, ep, bytes, length, timeout); /* Ensure the endpoint address is correct */ ep &= ~USB_ENDPOINT_IN; tStart=time(NULL); do { time_t tEnd; tEnd=time(NULL); if (difftime(tEnd, tStart)>20.0) { DEBUGP(ah, "Timeout while sending data to bulkout pipe"); return -1; } bulk.ep=ep; bulk.len=length-sent; if (bulk.len>MAX_READ_WRITE) bulk.len=MAX_READ_WRITE; bulk.timeout=timeout; bulk.data=(unsigned char*)bytes+sent; ret=ioctl(ausb1_get_fd(ah), USBDEVFS_BULK, &bulk); if (ret<0) { DEBUGP(ah, "Error writing to bulk endpoint %d: %d (%s)\n", ep, errno, strerror(errno)); return ret; } sent+=ret; } while(ret>0 && sentextraData; DEBUGP(ah, "bulk read (ah=%p, ep=0x%x, bytes=%p, size=%d, timeout=%d\n", ah, ep, bytes, size, timeout); uurb=malloc(sizeof(*uurb)); if (!uurb) { DEBUGP(ah, "unable to allocate urb\n"); return -1; } ausb1_fill_bulk_urb(uurb, ep, bytes, size); if (ausb1_submit_urb(ah, uurb)) { DEBUGP(ah, "unable to submit bulk urb\n"); return -1; } tStart=time(NULL); for (;;) { do { time_t tEnd; tEnd=time(NULL); if (difftime(tEnd, tStart)>AUSB_MAX_TIMEOUT) { DEBUGP(ah, "Timeout while waiting for data on bulkin pipe"); ausb1_discard_urb(ah, uurb); return -1; } rurb=NULL; //ret = ioctl(ausb1_get_fd(ah), USBDEVFS_REAPURBNDELAY, &rurb); DEBUGP(ah, "sending ioctl...\n"); ret=ioctl(ausb1_get_fd(ah), USBDEVFS_REAPURB, &rurb); DEBUGP(ah, "sending ioctl... done (%d)\n", ret); } while (ret < 0 && (errno == EINTR || errno==EAGAIN)); if (ret<0) { DEBUGP(ah, "ioctl returned %d (errno=%d:%s)\n", ret, errno, strerror(errno)); ausb1_discard_urb(ah, uurb); return -1; } DEBUGP(ah, "ioctl returned urb %p\n", rurb); if (rurb==&xh->intUrb) { /* handle interrupt urb */ DEBUGP(ah, "answer for interrupt urb\n"); handle_urb(rurb); if (ausb1_submit_urb(ah, &xh->intUrb)) { DEBUGP(ah, "unable to submit interrupt urb\n"); return -1; } } else if (rurb==uurb) { DEBUGP(ah, "answer for bulk urb\n"); ret=rurb->actual_length; if (ah->pid!=0x100 && (bytes[0]==0x40 || /* RDR_TO_PC_KEYEVENT */ bytes[0]==0x50)) { /* RDR_TO_PC_NOTIFYSLOTCHANGE */ DEBUGP(ah, "interrupt event received via bulk-in\n"); handle_urb(rurb); ausb1_fill_bulk_urb(uurb, ep, bytes, size); if (ausb1_submit_urb(ah, uurb)) { DEBUGP(ah, "unable to submit bulk urb\n"); return -1; } } else { DEBUGP(ah, "Received %d bytes\n", ret); free(uurb); return ret; } } else { DEBUGP(ah, "returned unknown uurb %p\n", rurb); ausb1_discard_urb(ah, uurb); return -1; } } } static void ausb1_close(struct ausb_dev_handle *ah){ ausb1_extra *xh; xh=(ausb1_extra*)ah->extraData; if (xh) { usb_close(xh->uh); free(xh); } } /* not static since this function is needed in ausb.c */ int ausb1_extend(ausb_dev_handle *ah){ struct usb_device *dev; ausb1_extra *xh; xh=malloc(sizeof *xh); if (xh==0) { DEBUGP(ah, "memory full\n"); return -1; } memset(xh, 0, sizeof(*xh)); /* get libusb representation of the given device */ dev=ausb_libusb0_get_usbdev(&(ah->device)); if (dev==NULL) { DEBUGP(ah, "libusb device not found"); free(xh); return -1; } /* open the device */ xh->uh=usb_open(dev); if (!xh->uh) { DEBUGP(ah, "usb_open() failed\n"); fprintf(stderr, "usb_open() failed (%d=%s)\n", errno, strerror(errno)); free(xh); return -1; } /* done */ ah->extraData=xh; ah->closeFn=ausb1_close; ah->startInterruptFn=ausb1_start_interrupt; ah->stopInterruptFn=ausb1_stop_interrupt; ah->bulkWriteFn=ausb1_bulk_write; ah->bulkReadFn=ausb1_bulk_read; ah->claimInterfaceFn=ausb1_claim_interface; ah->releaseInterfaceFn=ausb1_release_interface; ah->setConfigurationFn=ausb1_set_configuration; ah->resetFn=ausb1_reset; ah->resetEndpointFn=ausb1_reset_endpoint; ah->clearHaltFn=ausb1_clear_halt; ah->resetPipeFn=ausb1_reset_pipe; ah->getKernelDriverNameFn=ausb1_get_kernel_driver_name; ah->detachKernelDriverFn=ausb1_detach_kernel_driver; ah->reattachKernelDriverFn=ausb1_reattach_kernel_driver; return 0; } #endif /* ifndef USE_USB1 */ pcsc-cyberjack-3.99.5final.sp05/cjeca32/ausb/ausb11.c000066400000000000000000000307731231776762100217360ustar00rootroot00000000000000/* Wrapper/Extension code to libusb-0.1 to support asynchronous requests * on Linux platforns * * (C) 2004-2005 by Harald Welte * extended/modified by Martin Preuss (C) 2006,2007 * * Distributed and licensed under the terms of GNU LGPL, Version 2.1 */ #ifdef HAVE_CONFIG_H # include #endif #ifdef USE_USB1 #include #include #include #include #include #include #include #include #include #include #include #include "ausb_l.h" #include "ausb_libusb1_l.h" #ifndef USBDEVFS_CONNECT # define USBDEVFS_CONNECT _IO('U', 23) #endif #define MAX_READ_WRITE 4096 #define CT_MAX_DEVICES 256 #define AUSB_MAX_URB_SIZE 256 #define AUSB_MAX_IRQWAIT 10 #define DEBUGP(ah, format, ...) {\ char dbg_buffer[256]; \ \ snprintf(dbg_buffer, sizeof(dbg_buffer)-1,\ __FILE__":%5d: " format , __LINE__ , ##__VA_ARGS__); \ dbg_buffer[sizeof(dbg_buffer)-1]=0; \ ausb_log(ah, dbg_buffer, NULL, 0);\ } #define DEBUGL(ah, text, pData, ulDataLen) {\ char dbg_buffer[256]; \ \ snprintf(dbg_buffer, sizeof(dbg_buffer)-1,\ __FILE__":%5d: %s", __LINE__ , text); \ dbg_buffer[sizeof(dbg_buffer)-1]=0; \ ausb_log(ah, dbg_buffer, pData, ulDataLen);\ } struct ausb11_extra { libusb_device_handle *uh; struct libusb_transfer *intUrb; struct libusb_transfer *bulkinUrb; int ioError; int intCounter; int dontFree; unsigned char intUrbBuffer[AUSB_MAX_URB_SIZE]; unsigned char bulkinUrbBuffer[AUSB_MAX_URB_SIZE]; }; typedef struct ausb11_extra ausb11_extra; int ausb11_get_kernel_driver_name(ausb_dev_handle *ah, int interface, char *name, unsigned int namelen){ ausb11_extra *xh; DEBUGP(ah, "ausb_get_driver_np\n"); xh=(ausb11_extra*)ah->extraData; if (xh) { if (namelen<1 || name==NULL) { fprintf(stderr, "RSCT: no name buffer on ausb11_get_kernel_driver_name\n"); return -1; } if (libusb_kernel_driver_active(xh->uh, interface)) { strncpy(name, "cyberjack", namelen-1); name[namelen-1]=0; return 1; } else { name[0]=0; return 0; } } return -1; } int ausb11_detach_kernel_driver(ausb_dev_handle *ah, int interface){ ausb11_extra *xh; DEBUGP(ah, "ausb_detach_kernel_driver_np\n"); xh=(ausb11_extra*)ah->extraData; if (xh) { return libusb_detach_kernel_driver(xh->uh, interface); } return -1; } int ausb11_reattach_kernel_driver(ausb_dev_handle *ah, int interface){ ausb11_extra *xh; xh=(ausb11_extra*)ah->extraData; if (xh) return libusb_attach_kernel_driver(xh->uh, interface); return -1; } static int ausb11_claim_interface(ausb_dev_handle *ah, int interface){ ausb11_extra *xh; xh=(ausb11_extra*)ah->extraData; if (xh) return libusb_claim_interface(xh->uh, interface); else return -1; } static int ausb11_release_interface(ausb_dev_handle *ah, int interface){ ausb11_extra *xh; xh=(ausb11_extra*)ah->extraData; if (xh) return libusb_release_interface(xh->uh, interface); else return -1; } static int ausb11_set_configuration(ausb_dev_handle *ah, int configuration){ ausb11_extra *xh; xh=(ausb11_extra*)ah->extraData; if (xh) { int ret; ret=libusb_set_configuration(xh->uh, configuration); if (ret<0) { DEBUGP(ah, "usb_set_configuration returned %d (errno=%d:%s)\n", ret, errno, strerror(errno)); } return ret; } else return -1; } static int ausb11_reset(ausb_dev_handle *ah){ ausb11_extra *xh; xh=(ausb11_extra*)ah->extraData; if (xh) { int rv; xh->ioError=0; rv=libusb_reset_device(xh->uh); if (rv==0) return rv; else if (rv==LIBUSB_ERROR_NOT_FOUND) { DEBUGP(ah, "Device is usb-wise disconnected, sleeping for 5 secs\n"); sleep(5); return 0; } else { DEBUGP(ah, "libusb_reset_device: %d\n", rv); return -1; } } else return -1; } static int ausb11_reset_endpoint(ausb_dev_handle *ah, unsigned int ep){ return 0; } static int ausb11_clear_halt(ausb_dev_handle *ah, unsigned int ep){ ausb11_extra *xh; xh=(ausb11_extra*)ah->extraData; if (xh) { if (xh->ioError) { DEBUGP(ah, "Previous IO error, aborting clear_halt"); return -1; } else return libusb_clear_halt(xh->uh, ep); } else return -1; } static int ausb11_reset_pipe(ausb_dev_handle *ah, int ep){ ausb11_extra *xh; xh=(ausb11_extra*)ah->extraData; if (xh) { if (xh->ioError) { DEBUGP(ah, "Previous IO error, aborting."); return -1; } else { int rv; rv=libusb_control_transfer(xh->uh, 0x02, /* host to device */ 0x03, /* set feature */ 0x00, /* halt */ ep, /* endpoint */ NULL, 0, 1200); if (rv<0) { DEBUGP(ah, "unable to reset endpoint %d (%d=%s)",ep, errno, strerror(errno)); return rv; } rv=libusb_clear_halt(xh->uh, ep); if (rv<0) { DEBUGP(ah, "unable to clear halt on endpoint %d (%d=%s)",ep, errno, strerror(errno)); return rv; } return rv; } } else return -1; } static void ausb11_int_callback(struct libusb_transfer *xfer) { ausb_dev_handle *ah; ausb11_extra *xh; ah=(ausb_dev_handle *) xfer->user_data; if (!ah) { DEBUGP(NULL, "cant't call handler because of a missing ah ptr\n"); return; } DEBUGP(ah, "received interrupt URB\n"); xh=(ausb11_extra*)ah->extraData; if (xh) { int ret; xh->intCounter++; if (!ah->cb.handler) { DEBUGP(NULL, "received interrupt URB, no handler\n"); return; } switch(xfer->status) { case LIBUSB_TRANSFER_COMPLETED: ah->cb.handler(xfer->buffer, xfer->actual_length, ah->cb.userdata); break; case LIBUSB_TRANSFER_ERROR: DEBUGP(ah, "Interrupt transfer status: Error"); break; case LIBUSB_TRANSFER_TIMED_OUT: DEBUGP(ah, "Interrupt transfer status: Timed out"); break; case LIBUSB_TRANSFER_CANCELLED: DEBUGP(ah, "Interrupt transfer status: Cancelled (not issueing new URB)"); return; case LIBUSB_TRANSFER_STALL: DEBUGP(ah, "Interrupt transfer status: HALT condition detected (not issueing new URB)"); return; case LIBUSB_TRANSFER_NO_DEVICE: DEBUGP(ah, "Interrupt transfer status: Device lost (not issueing new URB)"); return; case LIBUSB_TRANSFER_OVERFLOW: DEBUGP(ah, "Interrupt transfer status: Overflow"); break; default: DEBUGP(ah, "Interrupt transfer status: Unknown (%d)", xfer->status); break; } /* re-submit interrupt transfer */ ret=libusb_submit_transfer(xh->intUrb); if (ret) { DEBUGP(ah, "Error on libusb_submit_transfer: %d\n", ret); } } } static int ausb11_start_interrupt(ausb_dev_handle *ah, int ep) { ausb11_extra *xh; int ret; xh=(ausb11_extra*)ah->extraData; DEBUGP(ah, "Starting interrupt pipe for endpoint %d", ep); if (xh->intUrb==NULL) { xh->intUrb=libusb_alloc_transfer(0); libusb_fill_interrupt_transfer(xh->intUrb, xh->uh, ep, xh->intUrbBuffer, sizeof(xh->intUrbBuffer)-1, ausb11_int_callback, (void*) ah, 0); /* timeout [ms], 0=wait forever */ } ret=libusb_submit_transfer(xh->intUrb); if (ret) { DEBUGP(ah, "Error on libusb_submit_transfer: %d\n", ret); return -1; } DEBUGP(ah, "Interrupt pipe started"); return 0; } static int ausb11_stop_interrupt(ausb_dev_handle *ah) { ausb11_extra *xh; xh=(ausb11_extra*)ah->extraData; if (xh->intUrb) { int rv; xh->intCounter=0; rv=libusb_cancel_transfer(xh->intUrb); if (rv) { DEBUGP(ah, "Error on cancel_transfer: %d", rv); } else { int triesLeft=AUSB_MAX_IRQWAIT; /* wait for interrupt request to finish */ DEBUGP(ah, "Waiting for cancellation of interrupt request to finish..."); while(triesLeft && xh->intCounter==0) { rv=ausb_libusb1_handle_events(); if (rv) { DEBUGP(ah, "Error on handle_events (%d)", rv); return rv; } triesLeft--; } DEBUGP(ah, "Tries left while waiting for URB to return: %d out of %d", triesLeft, AUSB_MAX_IRQWAIT); if (triesLeft<1) { /* we risk memory leaks on purpose here, because it is better * to leak a few bytes here than to make the application crash later * because the interrupt handler doesn't find its buffer */ DEBUGP(ah, "Interrupt URB did not return, this can't be good..."); /* don't free here */ xh->intUrb=NULL; xh->dontFree=1; } } } return 0; } static int ausb11_bulk_write(ausb_dev_handle *ah, int ep, char *bytes, int length, int timeout){ ausb11_extra *xh; DEBUGP(ah, "bulk write (ah=%p, ep=0x%x, bytes=%p, size=%d, timeout=%d\n", ah, ep, bytes, length, timeout); xh=(ausb11_extra*)ah->extraData; if (xh) { if (xh->ioError) { DEBUGP(ah, "Previous IO error, aborting transfer"); return -1; } else { int l; int noDataFlag=0; l=length; while(l) { int transferred=0; int rv; /* Ensure the endpoint address is correct */ ep &= ~LIBUSB_ENDPOINT_IN; rv=libusb_bulk_transfer(xh->uh, ep, (unsigned char*) bytes, length, &transferred, 0); if (rv && rv!=LIBUSB_ERROR_TIMEOUT) { DEBUGP(ah, "Error on libusb_bulk_transfer: %d", rv); xh->ioError=rv; return -1; } if (transferred==0) { if (noDataFlag) { DEBUGP(ah, "no data transferred, aborting"); return -1; } else { DEBUGP(ah, "no data transferred, trying again"); noDataFlag++; } } l-=transferred; bytes+=transferred; if (l>0) { DEBUGP(ah, "not all data transferred (only %d bytes of %d)", transferred, length); } } return length; } } else return -1; } static int ausb11_bulk_read(ausb_dev_handle *ah, int ep, char *bytes, int size, int timeout){ ausb11_extra *xh; DEBUGP(ah, "bulk read (ah=%p, ep=0x%x, bytes=%p, size=%d, timeout=%d\n", ah, ep, bytes, size, timeout); xh=(ausb11_extra*)ah->extraData; if (xh) { if (xh->ioError) { DEBUGP(ah, "Previous IO error, aborting transfer"); return -1; } else { int transferred=0; int rv; /* Ensure the endpoint address is correct */ ep |= LIBUSB_ENDPOINT_IN; rv=libusb_bulk_transfer(xh->uh, ep, (unsigned char*) bytes, size, &transferred, 0); if (rv) { DEBUGP(ah, "Error on libusb_bulk_transfer: %d", rv); xh->ioError=rv; return -1; } if (ah->pid!=0x100 && (bytes[0]==0x40 || /* RDR_TO_PC_KEYEVENT */ bytes[0]==0x50)) { /* RDR_TO_PC_NOTIFYSLOTCHANGE */ DEBUGP(ah, "interrupt event received via bulk-in\n"); // TODO } return transferred; } } else return -1; } static void ausb11_close(struct ausb_dev_handle *ah){ ausb11_extra *xh; xh=(ausb11_extra*)ah->extraData; if (xh) { if (xh->intUrb) { libusb_free_transfer(xh->intUrb); xh->intUrb=NULL; } if (xh->bulkinUrb) { libusb_free_transfer(xh->bulkinUrb); xh->bulkinUrb=NULL; } libusb_close(xh->uh); if (xh->dontFree==0) /* only free not prohibited (see ausb11_stop_interrupt) */ free(xh); } } /* not static since this function is needed in ausb.c */ int ausb11_extend(ausb_dev_handle *ah){ int rv; libusb_device *dev; ausb11_extra *xh; xh=malloc(sizeof *xh); if (xh==0) { DEBUGP(ah, "memory full\n"); return -1; } memset(xh, 0, sizeof(*xh)); /* get libusb representation of the given device */ dev=ausb_libusb1_get_usbdev(&(ah->device)); if (dev==NULL) { DEBUGP(ah, "libusb device not found"); free(xh); return -1; } /* open the device */ rv=libusb_open(dev, &(xh->uh)); if (rv || !xh->uh) { DEBUGP(ah, "libusb_open() failed: rv\n"); free(xh); return -1; } /* done */ ah->extraData=xh; ah->closeFn=ausb11_close; ah->startInterruptFn=ausb11_start_interrupt; ah->stopInterruptFn=ausb11_stop_interrupt; ah->bulkWriteFn=ausb11_bulk_write; ah->bulkReadFn=ausb11_bulk_read; ah->claimInterfaceFn=ausb11_claim_interface; ah->releaseInterfaceFn=ausb11_release_interface; ah->setConfigurationFn=ausb11_set_configuration; ah->resetFn=ausb11_reset; ah->resetEndpointFn=ausb11_reset_endpoint; ah->clearHaltFn=ausb11_clear_halt; ah->resetPipeFn=ausb11_reset_pipe; ah->getKernelDriverNameFn=ausb11_get_kernel_driver_name; ah->detachKernelDriverFn=ausb11_detach_kernel_driver; ah->reattachKernelDriverFn=ausb11_reattach_kernel_driver; return 0; } #endif /* ifdef USE_USB1 */ pcsc-cyberjack-3.99.5final.sp05/cjeca32/ausb/ausb3.c000066400000000000000000000161301231776762100216460ustar00rootroot00000000000000/* USB support for the Cyberjack family of readers. * * Previous version were (C) 2004-2005 by Harald Welte * This version is a rewrite (asynchronous USB is no longer needed). * * (C) 2007 Martin Preuss * * Distributed and licensed under the terms of GNU LGPL, Version 2.1 */ /* * This implementation expects the reader to not send any interrupt URB * whatsoever (as is the case with newer firmware whose configuration 2 * does not have an interrupt pipe). * * This implementation otherwise only uses plain libusb calls so it should * work on any system for which libusb is available. */ #ifdef HAVE_CONFIG_H # include #endif #ifndef USE_USB1 #include #include #include #include #include #include #include #include #include "ausb_l.h" #include "ausb_libusb0_l.h" #define DEBUGP(ah, format, ...) {\ char dbg_buffer[256]; \ \ snprintf(dbg_buffer, sizeof(dbg_buffer)-1,\ __FILE__":%5d: " format , __LINE__ , ##__VA_ARGS__); \ dbg_buffer[sizeof(dbg_buffer)-1]=0; \ ausb_log(ah, dbg_buffer, NULL, 0);\ } #define DEBUGL(ah, text, pData, ulDataLen) {\ char dbg_buffer[256]; \ \ snprintf(dbg_buffer, sizeof(dbg_buffer)-1,\ __FILE__":%5d: %s", __LINE__ , text); \ dbg_buffer[sizeof(dbg_buffer)-1]=0; \ ausb_log(ah, dbg_buffer, pData, ulDataLen);\ } struct ausb3_extra { usb_dev_handle *uh; }; typedef struct ausb3_extra ausb3_extra; static int ausb3_start_interrupt(ausb_dev_handle *ah, int ep) { ausb3_extra *xh; xh=(ausb3_extra*)ah->extraData; if (xh) { int rv; DEBUGP(ah, "Halting interrupt pipe."); rv=usb_control_msg(xh->uh, 0x02, /* host to device */ 0x03, /* set feature */ 0x00, /* halt */ ep, /* endpoint */ NULL, 0, 1200); if (rv<0) { DEBUGP(ah, "unable to halt interrupt pipe (%d=%s)\n", errno, strerror(errno)); return -1; } return 0; } else return -1; } static int ausb3_stop_interrupt(ausb_dev_handle *ah) { return 0; } static int ausb3_bulk_write(ausb_dev_handle *ah, int ep, char *bytes, int length, int timeout){ ausb3_extra *xh; xh=(ausb3_extra*)ah->extraData; if (xh) { int rv; time_t tStart; tStart=time(NULL); do { time_t tEnd; tEnd=time(NULL); if (difftime(tEnd, tStart)>20.0) { DEBUGP(ah, "Timeout while sending data to bulkout pipe"); return -1; } rv=usb_bulk_write(xh->uh, ep, bytes, length, timeout); } while (rv < 0 && errno == EINTR); return rv; } else return -1; } static int ausb3_bulk_read(ausb_dev_handle *ah, int ep, char *bytes, int size, int timeout){ ausb3_extra *xh; xh=(ausb3_extra*)ah->extraData; if (xh) { int rv; time_t tStart; tStart=time(NULL); for (;;) { do { time_t tEnd; tEnd=time(NULL); if (difftime(tEnd, tStart)>AUSB_MAX_TIMEOUT) { DEBUGP(ah, "Timeout while waiting for data on bulkin pipe"); return -1; } rv=usb_bulk_read(xh->uh, ep, bytes, size, timeout); } while (rv < 0 && errno == EINTR); if (rv>=1) { if (bytes[0]==0x40 || /* RDR_TO_PC_KEYEVENT */ bytes[0]==0x50) { /* RDR_TO_PC_NOTIFYSLOTCHANGE */ DEBUGL(ah, "Interrupt URB received", bytes, rv); if (ah->cb.handler) { DEBUGP(ah, "Calling interrupt handler %p with %p", ah->cb.handler, ah->cb.userdata); ah->cb.handler((uint8_t*)bytes, rv, ah->cb.userdata); DEBUGP(ah, "Calling interrupt handler: done"); } else { DEBUGP(ah, "No interrupt handler"); } } else break; } else break; } return rv; } else return -1; } static int ausb3_claim_interface(ausb_dev_handle *ah, int interface){ ausb3_extra *xh; xh=(ausb3_extra*)ah->extraData; if (xh) return usb_claim_interface(xh->uh, interface); else return -1; } static int ausb3_release_interface(ausb_dev_handle *ah, int interface){ ausb3_extra *xh; xh=(ausb3_extra*)ah->extraData; if (xh) return usb_release_interface(xh->uh, interface); else return -1; } static int ausb3_set_configuration(ausb_dev_handle *ah, int configuration){ ausb3_extra *xh; xh=(ausb3_extra*)ah->extraData; if (xh) { int ret; ret=usb_set_configuration(xh->uh, configuration); if (ret<0) { DEBUGP(ah, "usb_set_configuration returned %d (errno=%d:%s)\n", ret, errno, strerror(errno)); } return ret; } else return -1; } static int ausb3_reset(ausb_dev_handle *ah){ ausb3_extra *xh; xh=(ausb3_extra*)ah->extraData; if (xh) return usb_reset(xh->uh); else return -1; } static int ausb3_reset_endpoint(ausb_dev_handle *ah, unsigned int ep){ ausb3_extra *xh; xh=(ausb3_extra*)ah->extraData; if (xh) return usb_resetep(xh->uh, ep); else return -1; } static int ausb3_clear_halt(ausb_dev_handle *ah, unsigned int ep){ ausb3_extra *xh; xh=(ausb3_extra*)ah->extraData; if (xh) return usb_clear_halt(xh->uh, ep); else return -1; } static int ausb3_reset_pipe(ausb_dev_handle *ah, int ep){ ausb3_extra *xh; xh=(ausb3_extra*)ah->extraData; if (xh) { int rv; rv=usb_control_msg(xh->uh, 0x02, /* host to device */ 0x03, /* set feature */ 0x00, /* halt */ ep, /* endpoint */ NULL, 0, 1200); if (rv<0) { DEBUGP(ah, "unable to reset endpoint %d (%d=%s)",ep, errno, strerror(errno)); return rv; } rv=usb_clear_halt(xh->uh, ep); if (rv<0) { DEBUGP(ah, "unable to start endpoint %d (%d=%s)",ep, errno, strerror(errno)); return rv; } return rv; } else return -1; } static void ausb3_close(struct ausb_dev_handle *ah){ ausb3_extra *xh; xh=(ausb3_extra*)ah->extraData; if (xh) { usb_close(xh->uh); free(xh); } } /* not static since this function is needed in ausb.c */ int ausb3_extend(ausb_dev_handle *ah){ struct usb_device *dev; ausb3_extra *xh; DEBUGP(ah, "Extending AUSB handle as type 3"); xh=malloc(sizeof *xh); if (xh==0) { DEBUGP(ah, "memory full\n"); return -1; } memset(xh, 0, sizeof(*xh)); /* get libusb representation of the given device */ dev=ausb_libusb0_get_usbdev(&(ah->device)); if (dev==NULL) { DEBUGP(ah, "libusb device not found"); free(xh); return -1; } /* open the device */ xh->uh=usb_open(dev); if (!xh->uh) { DEBUGP(ah, "usb_open() failed\n"); fprintf(stderr, "usb_open() failed (%d=%s)\n", errno, strerror(errno)); free(xh); return -1; } /* done */ ah->extraData=xh; ah->closeFn=ausb3_close; ah->startInterruptFn=ausb3_start_interrupt; ah->stopInterruptFn=ausb3_stop_interrupt; ah->bulkWriteFn=ausb3_bulk_write; ah->bulkReadFn=ausb3_bulk_read; ah->claimInterfaceFn=ausb3_claim_interface; ah->releaseInterfaceFn=ausb3_release_interface; ah->setConfigurationFn=ausb3_set_configuration; ah->resetFn=ausb3_reset; ah->resetEndpointFn=ausb3_reset_endpoint; ah->clearHaltFn=ausb3_clear_halt; ah->resetPipeFn=ausb3_reset_pipe; return 0; } #endif /* ifndef USE_USB1 */ pcsc-cyberjack-3.99.5final.sp05/cjeca32/ausb/ausb31.c000066400000000000000000000171631231776762100217360ustar00rootroot00000000000000/* USB support for the Cyberjack family of readers. * * Previous version were (C) 2004-2005 by Harald Welte * This version is a rewrite (asynchronous USB is no longer needed). * * (C) 2007 Martin Preuss * * Distributed and licensed under the terms of GNU LGPL, Version 2.1 */ /* * This implementation expects the reader to not send any interrupt URB * whatsoever (as is the case with newer firmware whose configuration 2 * does not have an interrupt pipe). * * This implementation otherwise only uses plain libusb calls so it should * work on any system for which libusb is available. */ #ifdef HAVE_CONFIG_H # include #endif #ifdef USE_USB1 #include #include #include #include #include #include #include #include #include "ausb_l.h" #include "ausb_libusb1_l.h" #define DEBUGP(ah, format, ...) {\ char dbg_buffer[256]; \ \ snprintf(dbg_buffer, sizeof(dbg_buffer)-1,\ __FILE__":%5d: " format , __LINE__ , ##__VA_ARGS__); \ dbg_buffer[sizeof(dbg_buffer)-1]=0; \ ausb_log(ah, dbg_buffer, NULL, 0);\ } #define DEBUGL(ah, text, pData, ulDataLen) {\ char dbg_buffer[256]; \ \ snprintf(dbg_buffer, sizeof(dbg_buffer)-1,\ __FILE__":%5d: %s", __LINE__ , text); \ dbg_buffer[sizeof(dbg_buffer)-1]=0; \ ausb_log(ah, dbg_buffer, pData, ulDataLen);\ } struct ausb31_extra { libusb_device_handle *uh; }; typedef struct ausb31_extra ausb31_extra; static int ausb31_start_interrupt(ausb_dev_handle *ah, int ep) { ausb31_extra *xh; xh=(ausb31_extra*)ah->extraData; if (xh) { int rv; DEBUGP(ah, "Halting interrupt pipe."); rv=libusb_control_transfer(xh->uh, 0x02, /* host to device */ 0x03, /* set feature */ 0x00, /* halt */ ep, /* endpoint */ NULL, 0, 1200); if (rv<0) { DEBUGP(ah, "unable to halt interrupt pipe (%d=%s)\n", errno, strerror(errno)); return -1; } return 0; } else return -1; } static int ausb31_stop_interrupt(ausb_dev_handle *ah) { return 0; } static int ausb31_bulk_write(ausb_dev_handle *ah, int ep, char *bytes, int length, int timeout){ ausb31_extra *xh; DEBUGP(ah, "bulk write (ah=%p, ep=0x%x, bytes=%p, size=%d, timeout=%d\n", ah, ep, bytes, length, timeout); xh=(ausb31_extra*)ah->extraData; if (xh) { int transferred=0; int rv; /* Ensure the endpoint address is correct */ ep &= ~LIBUSB_ENDPOINT_IN; rv=libusb_bulk_transfer(xh->uh, ep, (unsigned char*) bytes, length, &transferred, 0); if (rv) { DEBUGP(ah, "Error on libusb_bulk_transfer: %d", rv); return -1; } if (transferred!=length) { DEBUGP(ah, "not all data transferred (only %d bytes of %d)", transferred, length); return -1; } return transferred; } else return -1; } static int ausb31_bulk_read(ausb_dev_handle *ah, int ep, char *bytes, int size, int timeout){ ausb31_extra *xh; DEBUGP(ah, "bulk read (ah=%p, ep=0x%x, bytes=%p, size=%d, timeout=%d\n", ah, ep, bytes, size, timeout); xh=(ausb31_extra*)ah->extraData; if (xh) { for (;;) { int transferred=0; int rv; /* Ensure the endpoint address is correct */ ep |= LIBUSB_ENDPOINT_IN; rv=libusb_bulk_transfer(xh->uh, ep, (unsigned char*) bytes, size, &transferred, 0); if (rv) { DEBUGP(ah, "Error on libusb_bulk_transfer: %d", rv); return -1; } if (ah->pid!=0x100 && (bytes[0]==0x40 || /* RDR_TO_PC_KEYEVENT */ bytes[0]==0x50)) { /* RDR_TO_PC_NOTIFYSLOTCHANGE */ DEBUGL(ah, "Interrupt transfer received via bulk-in", bytes, rv); if (ah->cb.handler) { DEBUGP(ah, "Calling interrupt handler %p with %p", ah->cb.handler, ah->cb.userdata); ah->cb.handler((uint8_t*)bytes, transferred, ah->cb.userdata); } else { DEBUGP(ah, "No interrupt handler"); } } else { return transferred; } } } else return -1; } static int ausb31_claim_interface(ausb_dev_handle *ah, int interface){ ausb31_extra *xh; xh=(ausb31_extra*)ah->extraData; if (xh) return libusb_claim_interface(xh->uh, interface); else return -1; } static int ausb31_release_interface(ausb_dev_handle *ah, int interface){ ausb31_extra *xh; xh=(ausb31_extra*)ah->extraData; if (xh) return libusb_release_interface(xh->uh, interface); else return -1; } static int ausb31_set_configuration(ausb_dev_handle *ah, int configuration){ ausb31_extra *xh; xh=(ausb31_extra*)ah->extraData; if (xh) { int ret; ret=libusb_set_configuration(xh->uh, configuration); if (ret<0) { DEBUGP(ah, "usb_set_configuration returned %d (errno=%d:%s)\n", ret, errno, strerror(errno)); } return ret; } else return -1; } static int ausb31_reset(ausb_dev_handle *ah){ ausb31_extra *xh; xh=(ausb31_extra*)ah->extraData; if (xh) { int rv; rv=libusb_reset_device(xh->uh); if (rv==0) return rv; else if (rv==LIBUSB_ERROR_NOT_FOUND) { DEBUGP(ah, "Device is usb-wise disconnected, sleeping for 5 secs\n"); sleep(5); return 0; } else { DEBUGP(ah, "libusb_reset_device: %d\n", rv); return -1; } } else return -1; } static int ausb31_reset_endpoint(ausb_dev_handle *ah, unsigned int ep){ return 0; } static int ausb31_clear_halt(ausb_dev_handle *ah, unsigned int ep){ ausb31_extra *xh; xh=(ausb31_extra*)ah->extraData; if (xh) return libusb_clear_halt(xh->uh, ep); else return -1; } static int ausb31_reset_pipe(ausb_dev_handle *ah, int ep){ ausb31_extra *xh; xh=(ausb31_extra*)ah->extraData; if (xh) { int rv; rv=libusb_control_transfer(xh->uh, 0x02, /* host to device */ 0x03, /* set feature */ 0x00, /* halt */ ep, /* endpoint */ NULL, 0, 1200); if (rv<0) { DEBUGP(ah, "unable to reset endpoint %d (%d=%s)",ep, errno, strerror(errno)); return rv; } rv=libusb_clear_halt(xh->uh, ep); if (rv<0) { DEBUGP(ah, "unable to start endpoint %d (%d=%s)",ep, errno, strerror(errno)); return rv; } return rv; } else return -1; } static void ausb31_close(struct ausb_dev_handle *ah){ ausb31_extra *xh; xh=(ausb31_extra*)ah->extraData; if (xh) { libusb_close(xh->uh); free(xh); } } /* not static since this function is needed in ausb.c */ int ausb31_extend(ausb_dev_handle *ah){ struct libusb_device *dev; ausb31_extra *xh; int rv; DEBUGP(ah, "Extending AUSB handle as type 3"); xh=malloc(sizeof *xh); if (xh==0) { DEBUGP(ah, "memory full\n"); return -1; } memset(xh, 0, sizeof(*xh)); /* get libusb representation of the given device */ dev=ausb_libusb1_get_usbdev(&(ah->device)); if (dev==NULL) { DEBUGP(ah, "libusb device not found"); free(xh); return -1; } /* open the device */ rv=libusb_open(dev, &(xh->uh)); if (rv || !xh->uh) { DEBUGP(ah, "libusb_open() failed: rv\n"); free(xh); return -1; } /* done */ ah->extraData=xh; ah->closeFn=ausb31_close; ah->startInterruptFn=ausb31_start_interrupt; ah->stopInterruptFn=ausb31_stop_interrupt; ah->bulkWriteFn=ausb31_bulk_write; ah->bulkReadFn=ausb31_bulk_read; ah->claimInterfaceFn=ausb31_claim_interface; ah->releaseInterfaceFn=ausb31_release_interface; ah->setConfigurationFn=ausb31_set_configuration; ah->resetFn=ausb31_reset; ah->resetEndpointFn=ausb31_reset_endpoint; ah->clearHaltFn=ausb31_clear_halt; ah->resetPipeFn=ausb31_reset_pipe; return 0; } #endif /* ifdef USE_USB1 */ pcsc-cyberjack-3.99.5final.sp05/cjeca32/ausb/ausb_l.h000066400000000000000000000123201231776762100221000ustar00rootroot00000000000000/* USB support for the Cyberjack family of readers. * * Previous version were (C) 2004-2005 by Harald Welte * This version is a rewrite (asynchronous USB is no longer needed). * * (C) 2007 Martin Preuss * * Distributed and licensed under the terms of GNU LGPL, Version 2.1 */ #ifndef _AUSB_L_H #define _AUSB_L_H #define AUSB_CYBERJACK_VENDOR_ID 0xc4b #define AUSB_MAX_TIMEOUT 600 #ifdef ENABLE_NONSERIAL #include #include "usbdev_l.h" typedef struct ausb_dev_handle ausb_dev_handle; /* virtual functions */ typedef void (*AUSB_CLOSE_FN)(ausb_dev_handle *ah); typedef int (*AUSB_START_INTERRUPT_FN)(ausb_dev_handle *ah, int ep); typedef int (*AUSB_STOP_INTERRUPT_FN)(ausb_dev_handle *ah); typedef int (*AUSB_BULK_WRITE_FN)(ausb_dev_handle *ah, int ep, char *bytes, int size, int timeout); typedef int (*AUSB_BULK_READ_FN)(ausb_dev_handle *ah, int ep, char *bytes, int size, int timeout); typedef int (*AUSB_CLAIM_INTERFACE_FN)(ausb_dev_handle *ah, int interface); typedef int (*AUSB_RELEASE_INTERFACE_FN)(ausb_dev_handle *ah, int interface); typedef int (*AUSB_SET_CONFIGURATION_FN)(ausb_dev_handle *ah, int interface); typedef int (*AUSB_RESET_FN)(ausb_dev_handle *ah); typedef int (*AUSB_HALT_FN)(ausb_dev_handle *ah, unsigned int ep); typedef int (*AUSB_CLEAR_HALT_FN)(ausb_dev_handle *ah, unsigned int ep); typedef int (*AUSB_RESET_ENDPOINT_FN)(ausb_dev_handle *ah, unsigned int ep); typedef int (*AUSB_RESET_PIPE)(ausb_dev_handle *ah, int ep); typedef int (*AUSB_GET_KERNEL_DRIVER_NAME)(ausb_dev_handle *ah, int interface, char *name, unsigned int namelen); typedef int (*AUSB_DETACH_KERNEL_DRIVER_FN)(ausb_dev_handle *dev, int interface); typedef int (*AUSB_REATTACH_KERNEL_DRIVER_FN)(ausb_dev_handle *dev, int interface); typedef void (*AUSB_LOG_FN)(ausb_dev_handle *ah, const char *text, const void *pData, uint32_t ulDataLen); typedef void (*AUSB_CALLBACK)(const uint8_t *data, uint32_t dlength, void *userdata); /* structures */ struct ausb_callback { AUSB_CALLBACK handler; void *userdata; }; struct ausb_dev_handle { rsct_usbdev_t device; struct ausb_callback cb; void *extraData; uint16_t pid; AUSB_CLOSE_FN closeFn; AUSB_START_INTERRUPT_FN startInterruptFn; AUSB_STOP_INTERRUPT_FN stopInterruptFn; AUSB_BULK_WRITE_FN bulkWriteFn; AUSB_BULK_READ_FN bulkReadFn; AUSB_CLAIM_INTERFACE_FN claimInterfaceFn; AUSB_RELEASE_INTERFACE_FN releaseInterfaceFn; AUSB_SET_CONFIGURATION_FN setConfigurationFn; AUSB_RESET_FN resetFn; AUSB_CLEAR_HALT_FN clearHaltFn; AUSB_RESET_ENDPOINT_FN resetEndpointFn; AUSB_RESET_PIPE resetPipeFn; AUSB_GET_KERNEL_DRIVER_NAME getKernelDriverNameFn; AUSB_DETACH_KERNEL_DRIVER_FN detachKernelDriverFn; AUSB_REATTACH_KERNEL_DRIVER_FN reattachKernelDriverFn; }; #ifdef __cplusplus extern "C" { #endif /** @name Functions used commonly by all implementations */ /*@{*/ /* intitialization */ int ausb_init(void); /** * Register a callback which is called as soon as an URB request is * finished. * @param ah ausb handle obtained via @ref ausb_open * @param callback callback function to be used. This function receives a * pointer to the received interrupt data and caller-specified user data * @param userdata userdata to be passed to the callback function */ int ausb_register_callback(ausb_dev_handle *ah, AUSB_CALLBACK callback, void *userdata); int ausb_claim_interface(ausb_dev_handle *ah, int interface); int ausb_release_interface(ausb_dev_handle *ah, int interface); int ausb_set_configuration(ausb_dev_handle *dev, int configuration); int ausb_get_kernel_driver_name(ausb_dev_handle *ah, int interface, char *name, unsigned int namelen); int ausb_detach_kernel_driver(ausb_dev_handle *dev, int interface); int ausb_reattach_kernel_driver(ausb_dev_handle *dev, int interface); int ausb_reset(ausb_dev_handle *ah); int ausb_clear_halt(ausb_dev_handle *ah, unsigned int ep); int ausb_reset_endpoint(ausb_dev_handle *ah, unsigned int ep); int ausb_reset_pipe(ausb_dev_handle *ah, int ep); void ausb_set_log_fn(AUSB_LOG_FN fn); void ausb_log(ausb_dev_handle *ah, const char *text, const void *pData, uint32_t ulDataLen); /*@}*/ #ifdef USE_USB1 int ausb11_extend(ausb_dev_handle *ah); int ausb31_extend(ausb_dev_handle *ah); #else int ausb1_extend(ausb_dev_handle *ah); int ausb3_extend(ausb_dev_handle *ah); #endif /** @name Functions which are implemented differently for * different configurations. */ /*@{*/ /** * Open the given USB device. This creates the necessary * ausb handle which must be free'd when it is no longer * needed by calling @ref ausb_close. * @return ausb handle to be used by other functions in this group * @param dev usb device object obtained from libusb * */ ausb_dev_handle *ausb_open(rsct_usbdev_t *dev, int t); int ausb_close(ausb_dev_handle *ah); int ausb_start_interrupt(ausb_dev_handle *ah, int ep); int ausb_stop_interrupt(ausb_dev_handle *ah); int ausb_bulk_write(ausb_dev_handle *ah, int ep, char *bytes, int size, int timeout); int ausb_bulk_read(ausb_dev_handle *ah, int ep, char *bytes, int size, int timeout); /*@}*/ #ifdef __cplusplus } #endif #endif #endif /* _AUSB_H */ pcsc-cyberjack-3.99.5final.sp05/cjeca32/ausb/ausb_libusb0.c000066400000000000000000000025141231776762100232040ustar00rootroot00000000000000 #ifdef HAVE_CONFIG_H # include #endif #ifndef USE_USB1 #include "ausb_l.h" #include "ausb_libusb0_l.h" #include #include static int ausb_libusb0_was_init=0; int ausb_libusb0_init(void){ if (!ausb_libusb0_was_init) { usb_init(); ausb_libusb0_was_init=1; } usb_find_busses(); usb_find_devices(); return 0; } int ausb_libusb0_fini(void) { return 0; } struct usb_device *ausb_libusb0_get_usbdev(const rsct_usbdev_t *d) { struct usb_bus *busses, *bus; struct usb_device *dev; char tname[PATH_MAX+1]; char filename[PATH_MAX+1]; int nlen; ausb_libusb0_init(); snprintf(tname, PATH_MAX, "%03d/%03d", d->busId, d->busPos); nlen=strlen(tname); busses = usb_get_busses(); for (bus = busses; bus; bus = bus->next) { for (dev = bus->devices; dev; dev = dev->next) { int flen; strncpy(filename, bus->dirname, PATH_MAX ); strncat(filename, "/", PATH_MAX ); strncat(filename, dev->filename, PATH_MAX ); flen=strlen(filename); if (flen>=nlen) { if (strncmp(filename+(flen-nlen), tname, nlen)==0) { if (dev->descriptor.idVendor == AUSB_CYBERJACK_VENDOR_ID) return dev; else { fprintf(stderr, "RSCT: Device at %s is not a cyberjack\n", filename); return NULL; } } } } } return NULL; } #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/ausb/ausb_libusb0_l.h000066400000000000000000000004041231776762100235200ustar00rootroot00000000000000 #ifndef AUSB_LIBUSB0_L_H #define AUSB_LIBUSB0_L_H #ifndef USE_USB1 #include #include "usbdev_l.h" int ausb_libusb0_init(void); int ausb_libusb0_fini(void); struct usb_device *ausb_libusb0_get_usbdev(const rsct_usbdev_t *d); #endif #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/ausb/ausb_libusb1.c000066400000000000000000000026321231776762100232060ustar00rootroot00000000000000 #ifdef HAVE_CONFIG_H # include #endif #ifdef USE_USB1 #include "ausb_l.h" #include "ausb_libusb1_l.h" #include #include static libusb_context *ausb_libusb1_context=NULL; int ausb_libusb1_init(void){ if (ausb_libusb1_context==NULL) { int rv; rv=libusb_init(ausb_libusb1_context); if (rv) { fprintf(stderr, "RSCT: Error on libusb_init(): %d\n", rv); ausb_libusb1_context=NULL; return -1; } } return 0; } int ausb_libusb1_fini(void){ if (ausb_libusb1_context!=NULL) { libusb_exit(ausb_libusb1_context); ausb_libusb1_context=NULL; } return 0; } libusb_device *ausb_libusb1_get_usbdev(const rsct_usbdev_t *d) { if (ausb_libusb1_init()) return NULL; else { libusb_device **list; size_t cnt=libusb_get_device_list(ausb_libusb1_context, &list); size_t i; libusb_device *dev=NULL; for (i=0; ibusId && libusb_get_device_address(dev)==d->busPos) break; } if (dev) libusb_ref_device(dev); /* free devices and unref them */ libusb_free_device_list(list, 1); return dev; } } int ausb_libusb1_handle_events(){ if (ausb_libusb1_context!=NULL) return libusb_handle_events(ausb_libusb1_context); else { fprintf(stderr, "RSCT: No USB context.}n"); return LIBUSB_ERROR_OTHER; } } #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/ausb/ausb_libusb1_l.h000066400000000000000000000004441231776762100235250ustar00rootroot00000000000000 #ifndef AUSB_LIBUSB1_L_H #define AUSB_LIBUSB1_L_H #ifdef USE_USB1 #include #include "usbdev_l.h" int ausb_libusb1_init(void); int ausb_libusb1_fini(void); libusb_device *ausb_libusb1_get_usbdev(const rsct_usbdev_t *d); int ausb_libusb1_handle_events(); #endif #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/ausb/usbdev.c000066400000000000000000000160451231776762100221260ustar00rootroot00000000000000 #ifdef HAVE_CONFIG_H # include #endif #include "usbdev_l.h" #include #include #include #include #include #include #include /* #define DEBUG_USBDEV_C */ #define RSCT_LIST_ADD(typ, sr, head) {\ typ *curr; \ \ assert(sr); \ \ curr=*head; \ if (!curr) { \ *head=sr; \ } \ else { \ while(curr->next) { \ curr=curr->next; \ } \ curr->next=sr; \ }\ } #define RSCT_LIST_DEL(typ, sr, head) {\ typ *curr; \ \ assert(sr); \ curr=*head; \ if (curr) { \ if (curr==sr) { \ *head=curr->next; \ } \ else { \ while(curr->next!=sr) { \ curr=curr->next; \ } \ if (curr) \ curr->next=sr->next; \ } \ } \ sr->next=0;\ } #ifdef HAVE_HAL # include "usbdev_hal.c" #elif defined(USE_USB1) # include "usbdev_libusb1.c" #else # error "Neither HAL nor USB1 found!. Please install at least either of them." #endif rsct_usbdev_t *rsct_usbdev_new() { rsct_usbdev_t *d; d=(rsct_usbdev_t*) malloc(sizeof(rsct_usbdev_t)); if (d==NULL) return NULL; memset(d, 0, sizeof(rsct_usbdev_t)); d->port=-1; return d; } rsct_usbdev_t *rsct_usbdev_dup(const rsct_usbdev_t *od) { rsct_usbdev_t *d; d=rsct_usbdev_new(); *d=*od; return d; } void rsct_usbdev_free(rsct_usbdev_t *d) { if (d) { free(d); } } void rsct_usbdev_list_add(rsct_usbdev_t **h, rsct_usbdev_t *d) { RSCT_LIST_ADD(rsct_usbdev_t, d, h); } void rsct_usbdev_list_unlink(rsct_usbdev_t **h, rsct_usbdev_t *d) { RSCT_LIST_DEL(rsct_usbdev_t, d, h); } void rsct_usbdev_list_free(rsct_usbdev_t *d) { while(d) { rsct_usbdev_t *dNext; dNext=d->next; rsct_usbdev_free(d); d=dNext; } } rsct_usbdev_t *rsct_usbdev_list_findByBus(rsct_usbdev_t *head, uint32_t busId, uint32_t busPos) { rsct_usbdev_t *d; d=head; while(d) { if (d->busId==busId && d->busPos==busPos) break; d=d->next; } return d; } rsct_usbdev_t *rsct_usbdev_list_findByUDI(rsct_usbdev_t *list, const char *devName) { rsct_usbdev_t *d; d=list; while(d) { if (d->halUDI && strcasecmp(d->halUDI, devName)==0) break; d=d->next; } return d; } int rsct_get_serial_for_port(int port, const char *fname, char *sbuff, int blen) { FILE *f; f=fopen(fname, "r"); if (f==NULL) return -1; else { char lbuf[256]; int idx=1; while(!feof(f)) { int llen; lbuf[0]=0; if (0==fgets(lbuf, sizeof(lbuf), f)) { if (ferror(f)) { fprintf(stderr, "RSCT: fgets: %s\n", strerror(errno)); fclose(f); return -1; } else break; } /* remove possibly trailing CR */ llen=strlen(lbuf); if (llen && lbuf[llen-1]=='\n') lbuf[llen-1]=0; if (idx==port) { if (blen<(strlen(lbuf)+1)) { fprintf(stderr, "RSCT: Buffer too small for serial number\n"); fclose(f); return -1; } strcpy(sbuff, lbuf); fclose(f); /* success */ return 0; } idx++; } /* while !feof */ fclose(f); } /* not found */ return 1; } int rsct_get_port_for_serial(const char *fname, const char *serial) { FILE *f; f=fopen(fname, "r"); if (f==NULL) /* no port */ return 0; else { char lbuf[256]; int idx=1; while(!feof(f)) { int llen; lbuf[0]=0; if (NULL==fgets(lbuf, sizeof(lbuf), f)) { if (ferror(f)) { fprintf(stderr, "RSCT: fgets: %s\n", strerror(errno)); fclose(f); return -1; } else break; } /* remove possibly trailing CR */ llen=strlen(lbuf); if (llen && lbuf[llen-1]=='\n') lbuf[llen-1]=0; if (strcasecmp(serial, lbuf)==0) { fclose(f); /* success */ return idx; } idx++; } /* while !feof */ fclose(f); } /* not found */ return 0; } int rsct_enum_serials_with_devs(const char *fname, rsct_usbdev_t *devs) { int rv; rsct_usbdev_t *d; d=devs; while(d) { if (d->vendorId==0xc4b && d->serial[0]) { rv=rsct_get_port_for_serial(fname, d->serial); if (rv==0) { FILE *f; /* new device, serial number is unknown, add it */ f=fopen(fname, "a+"); if (f==NULL) { fprintf(stderr, "RSCT: fopen(%s): %s\n", fname, strerror(errno)); return -1; } fprintf(f, "%s\n", d->serial); if (fclose(f)) { fprintf(stderr, "RSCT: fclose(%s): %s\n", fname, strerror(errno)); return -1; } } } d=d->next; } return 0; } int rsct_enum_serials(const char *fname) { int rv; rsct_usbdev_t *devs=NULL; /* sample all devices */ rv=rsct_usbdev_scan(&devs); if (rv) { rsct_usbdev_list_free(devs); return rv; } rv=rsct_enum_serials_with_devs(fname, devs); rsct_usbdev_list_free(devs); return rv; } rsct_usbdev_t *rsct_usbdev_getDevByIdx(int num) { int rv; rsct_usbdev_t *devs=NULL; rsct_usbdev_t *d; rv=rsct_usbdev_scan(&devs); if (rv<0) { fprintf(stderr, "RSCT: Error scanning USB bus\n"); return NULL; } d=devs; while(d) { if (num--==0) break; d=d->next; } if (d) rsct_usbdev_list_unlink(&devs, d); rsct_usbdev_list_free(devs); return d; } rsct_usbdev_t *rsct_usbdev_getDevByBusPos(int busId, int devId) { int rv; rsct_usbdev_t *devs=NULL; rsct_usbdev_t *d; rv=rsct_usbdev_scan(&devs); if (rv<0) { fprintf(stderr, "RSCT: Error scanning USB bus\n"); return NULL; } d=devs; while(d) { if (d->busId==busId && d->busPos==devId) break; d=d->next; } if (d) rsct_usbdev_list_unlink(&devs, d); rsct_usbdev_list_free(devs); return d; } rsct_usbdev_t *rsct_usbdev_scanDevByName(const char *devName) { int rv; rsct_usbdev_t *devs=NULL; rsct_usbdev_t *d; rv=rsct_usbdev_scan_simple(&devs); if (rv<0) { fprintf(stderr, "RSCT: Error scanning USB bus\n"); return NULL; } d=devs; while(d) { if ((d->halPath && strcasecmp(d->halPath, devName)==0) || (d->path && strcasecmp(d->path, devName)==0)) break; d=d->next; } if (d) rsct_usbdev_list_unlink(&devs, d); rsct_usbdev_list_free(devs); return d; } rsct_usbdev_t *rsct_usbdev_getDevByName(const char *devName) { int rv; rsct_usbdev_t *devs=NULL; rsct_usbdev_t *d; rv=rsct_usbdev_scan(&devs); if (rv<0) { fprintf(stderr, "RSCT: Error scanning USB bus\n"); return NULL; } d=devs; while(d) { if ((d->halPath && strcasecmp(d->halPath, devName)==0) || (d->path && strcasecmp(d->path, devName)==0)) break; d=d->next; } if (d) rsct_usbdev_list_unlink(&devs, d); rsct_usbdev_list_free(devs); return d; } pcsc-cyberjack-3.99.5final.sp05/cjeca32/ausb/usbdev_hal.c000066400000000000000000000205611231776762100227500ustar00rootroot00000000000000 #include #include struct RSCT_HAL_CONTEXT { DBusError dbus_error; DBusConnection *dbus_conn; LibHalContext *ctx; }; static struct RSCT_HAL_CONTEXT *global_hal_context=NULL; int rsct_usbdev_init() { if (global_hal_context==NULL) { struct RSCT_HAL_CONTEXT *uc; uc=(struct RSCT_HAL_CONTEXT*) malloc(sizeof(struct RSCT_HAL_CONTEXT)); if (uc==NULL) { fprintf(stderr, "RSCT: Memory full at rsct_usbdev_init\n"); return -1; } dbus_error_init(&(uc->dbus_error)); uc->dbus_conn=dbus_bus_get (DBUS_BUS_SYSTEM, &(uc->dbus_error)); if (dbus_error_is_set(&(uc->dbus_error))) { fprintf(stderr, "RSCT: Could not connect to system bus [%s]\n", uc->dbus_error.message); free(uc); return -1; } uc->ctx=libhal_ctx_new(); if (uc->ctx==NULL) { fprintf(stderr, "RSCT: Could not create HAL context\n"); free(uc); return -1; } libhal_ctx_set_dbus_connection(uc->ctx, uc->dbus_conn); global_hal_context=uc; } return 0; } void rsct_usbdev_fini() { if (global_hal_context) { dbus_error_free(&(global_hal_context->dbus_error)); if (global_hal_context->dbus_conn) { dbus_connection_unref(global_hal_context->dbus_conn); global_hal_context->dbus_conn = NULL; } /*libhal_ctx_shutdown(ctx, NULL);*/ libhal_ctx_free(global_hal_context->ctx); free(global_hal_context); global_hal_context=NULL; } } static int rsct_usbdev_scan_nonserial(char **devices, int i_devices, rsct_usbdev_t **usbdev_list) { int i; for (i=0; ictx, udi, &(global_hal_context->dbus_error))) { char *busType; busType=libhal_device_get_property_string(global_hal_context->ctx, udi, "info.subsystem", NULL); if (busType && (strcasecmp(busType, "usb")!=0)) { libhal_free_string(busType); busType=NULL; /* non-USB devices are handled below */ } if (busType==NULL) busType=libhal_device_get_property_string(global_hal_context->ctx, udi, "info.bus", NULL); if (busType) { if (strcasecmp(busType, "usb")==0) { /* USB device, look for LibUSB info */ if (libhal_device_property_exists(global_hal_context->ctx, udi, "usb.bus_number", NULL) && libhal_device_property_exists(global_hal_context->ctx, udi, "usb.linux.device_number", NULL)){ int busId; int busPos; int vendorId; int productId; char pbuff[256]; struct stat st; int havePath=0; busId=libhal_device_get_property_int(global_hal_context->ctx, udi, "usb.bus_number", NULL); busPos=libhal_device_get_property_int(global_hal_context->ctx, udi, "usb.linux.device_number", NULL); vendorId=libhal_device_get_property_int(global_hal_context->ctx, udi, "usb.vendor_id", NULL); productId=libhal_device_get_property_int(global_hal_context->ctx, udi, "usb.product_id", NULL); if (vendorId==0xc4b && rsct_usbdev_list_findByBus(*usbdev_list, busId, busPos)==NULL) { rsct_usbdev_t *d; char *serial=NULL; char *productName=NULL; d=rsct_usbdev_new(); d->busId=busId; d->busPos=busPos; d->vendorId=vendorId; d->productId=productId; snprintf(d->halPath, sizeof(d->halPath)-1, "usb:%04x/%04x:libhal:%s", d->vendorId, d->productId, udi); d->halPath[sizeof(d->halPath)-1]=0; /* set HAL UDI */ strncpy(d->halUDI, udi, sizeof(d->halUDI)-1); d->halUDI[sizeof(d->halUDI)-1]=0; /* determine path for LibUSB */ snprintf(pbuff, sizeof(pbuff)-1, "/dev/bus/usb/%03d/%03d", busId, busPos); pbuff[sizeof(pbuff)-1]=0; if (stat(pbuff, &st)==0) { havePath=1; } else { snprintf(pbuff, sizeof(pbuff)-1, "/proc/bus/usb/%03d/%03d", busId, busPos); pbuff[sizeof(pbuff)-1]=0; if (stat(pbuff, &st)==0) { havePath=1; } } if (havePath) { strncpy(d->usbPath, pbuff, sizeof(d->usbPath)-1); d->usbPath[sizeof(d->usbPath)-1]=0; strncpy(d->deviceNodePath, pbuff, sizeof(d->deviceNodePath)-1); d->deviceNodePath[sizeof(d->deviceNodePath)-1]=0; } /* generate path for CTAPI/IFD */ snprintf(d->path, sizeof(d->path)-1, "usb:%04x/%04x:libusb:%03d:%03d", d->vendorId, d->productId, d->busId, d->busPos); serial=libhal_device_get_property_string(global_hal_context->ctx, udi, "usb.serial", NULL); if (serial) { strncpy(d->serial, serial, sizeof(d->serial)-1); d->serial[sizeof(d->serial)-1]=0; libhal_free_string(serial); } /* get product name from parent. * Please note: This udi refers to the *_ifX HAL device, and it's product name * is the product name of the interface ("USB Vendor Specific Interface") rather than * that of the device itself. * Therefore we must access the parent in order to find the product name of the device. */ if (1) { char *parent_udi; /* ttyUSB device, get USB info from parent */ parent_udi=libhal_device_get_property_string(global_hal_context->ctx, udi, "info.parent", NULL); if (parent_udi) { productName=libhal_device_get_property_string(global_hal_context->ctx, parent_udi, "usb_device.product", NULL); libhal_free_string(parent_udi); } } if (productName) { strncpy(d->productName, productName, sizeof(d->productName)-1); d->productName[sizeof(d->productName)-1]=0; libhal_free_string(productName); } /* all set, add device */ rsct_usbdev_list_add(usbdev_list, d); } } } /* if USB */ libhal_free_string(busType); } /* if bus type */ } /* if device exists */ } /* for */ return 0; } static int rsct_usbdev_scan_serial(char **devices, int i_devices, rsct_usbdev_t **usbdev_list) { int i; for (i=0; ictx, udi, &(global_hal_context->dbus_error))) { char *busType; busType=libhal_device_get_property_string(global_hal_context->ctx, udi, "info.subsystem", NULL); if (busType==NULL) busType=libhal_device_get_property_string(global_hal_context->ctx, udi, "info.bus", NULL); if (busType) { if (strcasecmp(busType, "tty")==0) { char *parent_udi; /* ttyUSB device, get USB info from parent */ parent_udi=libhal_device_get_property_string(global_hal_context->ctx, udi, "info.parent", NULL); if (parent_udi) { rsct_usbdev_t *d; char *path; /* find device entry for parent */ d=rsct_usbdev_list_findByUDI(*usbdev_list, parent_udi); if (d) { int port; port=libhal_device_get_property_int(global_hal_context->ctx, udi, "serial.port", NULL); d->port=port; path=libhal_device_get_property_string(global_hal_context->ctx, udi, "serial.device", NULL); if (path) { strncpy(d->deviceNodePath, path, sizeof(d->deviceNodePath)-1); d->deviceNodePath[sizeof(d->deviceNodePath)-1]=0; libhal_free_string(path); } } libhal_free_string(parent_udi); } else { fprintf(stderr, "RSCT: Parent for serial device not found\n"); } } /* if tty */ libhal_free_string(busType); } /* if bus type */ } /* if device exists */ } /* for */ return 0; } int rsct_usbdev_scan(rsct_usbdev_t **usbdev_list) { int rv; rv=rsct_usbdev_init(); if (rv) return -1; else { char **devices; int i_devices; int rv; devices=libhal_get_all_devices(global_hal_context->ctx, &i_devices, &(global_hal_context->dbus_error)); if (devices==NULL) { fprintf(stderr, "RSCT: HAL not running: %s\n", global_hal_context->dbus_error.message); return -1; } if (i_devices<1) { fprintf(stderr, "RSCT: HAL returned an empty device list, this can't be right...\n"); } rv=rsct_usbdev_scan_nonserial(devices, i_devices, usbdev_list); if (rv==0) rv=rsct_usbdev_scan_serial(devices, i_devices, usbdev_list); libhal_free_string_array(devices); return rv; } return 0; } pcsc-cyberjack-3.99.5final.sp05/cjeca32/ausb/usbdev_l.h000066400000000000000000000032351231776762100224430ustar00rootroot00000000000000 #ifndef USBDEV_L_H #define USBDEV_L_H #include typedef struct rsct_usbdev_t rsct_usbdev_t; struct rsct_usbdev_t { rsct_usbdev_t *next; char path[256]; char halPath[256]; char usbPath[256]; char serial[128]; uint32_t busId; uint32_t busPos; uint32_t vendorId; uint32_t productId; char productName[256]; char halUDI[256]; char deviceNodePath[256]; int port; }; #ifdef __cplusplus extern "C" { #endif int rsct_usbdev_init(); void rsct_usbdev_fini(); rsct_usbdev_t *rsct_usbdev_new(); rsct_usbdev_t *rsct_usbdev_dup(const rsct_usbdev_t *d); void rsct_usbdev_free(rsct_usbdev_t *d); void rsct_usbdev_list_add(rsct_usbdev_t **head, rsct_usbdev_t *d); void rsct_usbdev_list_unlink(rsct_usbdev_t **head, rsct_usbdev_t *d); void rsct_usbdev_list_free(rsct_usbdev_t *d); rsct_usbdev_t *rsct_usbdev_list_findByBus(rsct_usbdev_t *list, uint32_t busId, uint32_t busPos); rsct_usbdev_t *rsct_usbdev_list_findByUDI(rsct_usbdev_t *list, const char *devName); rsct_usbdev_t *rsct_usbdev_getDevByIdx(int num); rsct_usbdev_t *rsct_usbdev_getDevByBusPos(int busId, int devId); rsct_usbdev_t *rsct_usbdev_getDevByName(const char *devName); rsct_usbdev_t *rsct_usbdev_scanDevByName(const char *devName); int rsct_usbdev_scan(rsct_usbdev_t **devList); int rsct_usbdev_scan_simple(rsct_usbdev_t **devList); int rsct_enum_serials(const char *fname); int rsct_enum_serials_with_devs(const char *fname, rsct_usbdev_t *devs); int rsct_get_serial_for_port(int port, const char *fname, char *sbuff, int blen); int rsct_get_port_for_serial(const char *fname, const char *serial); #ifdef __cplusplus } #endif #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/ausb/usbdev_libusb1.c000066400000000000000000000122061231776762100235420ustar00rootroot00000000000000#ifdef USE_USB1 #include static struct libusb_context *ausb_libusb1_context=NULL; int rsct_usbdev_init(void){ if (ausb_libusb1_context==NULL) { int rv; rv=libusb_init(&ausb_libusb1_context); if (rv) { fprintf(stderr, "RSCT: Error on libusb_init(): %d\n", rv); ausb_libusb1_context=NULL; return -1; } } return 0; } void rsct_usbdev_fini(void) { libusb_exit(ausb_libusb1_context); ausb_libusb1_context=NULL; } int rsct_usbdev_scan_simple(rsct_usbdev_t **usbdev_list) { if (rsct_usbdev_init()) { return -1; } else { libusb_device **list = NULL; size_t cnt=libusb_get_device_list(ausb_libusb1_context, &list); size_t i; for (i=0; i=0x700) { continue; } d=rsct_usbdev_new(); d->busId=libusb_get_bus_number(dev); d->busPos=libusb_get_device_address(dev); d->vendorId=descr.idVendor; d->productId=descr.idProduct; /* determine path for LibUSB */ snprintf(pbuff, sizeof(pbuff)-1, "/dev/bus/usb/%03d/%03d", d->busId, d->busPos); pbuff[sizeof(pbuff)-1]=0; if (stat(pbuff, &st)==0) { havePath=1; } else { snprintf(pbuff, sizeof(pbuff)-1, "/proc/bus/usb/%03d/%03d", d->busId, d->busPos); pbuff[sizeof(pbuff)-1]=0; if (stat(pbuff, &st)==0) { havePath=1; } } if (havePath) { strncpy(d->usbPath, pbuff, sizeof(d->usbPath)-1); d->usbPath[sizeof(d->usbPath)-1]=0; strncpy(d->deviceNodePath, pbuff, sizeof(d->deviceNodePath)-1); d->deviceNodePath[sizeof(d->deviceNodePath)-1]=0; } /* generate path for CTAPI/IFD */ snprintf(d->path, sizeof(d->path)-1, "usb:%04x/%04x:libusb:%03d:%03d", d->vendorId, d->productId, d->busId, d->busPos); /* all set, add device */ rsct_usbdev_list_add(usbdev_list, d); } } else { fprintf(stderr, "RSCT: Error on libusb_get_device_descriptor: %d\n", rv); } } libusb_free_device_list(list, 1); rsct_usbdev_fini(); return 0; } } int rsct_usbdev_scan(rsct_usbdev_t **usbdev_list) { if (rsct_usbdev_init()) { return -1; } else { libusb_device **list = NULL; size_t cnt=libusb_get_device_list(ausb_libusb1_context, &list); size_t i; for (i=0; i=0x700) { continue; } d=rsct_usbdev_new(); d->busId=libusb_get_bus_number(dev); d->busPos=libusb_get_device_address(dev); d->vendorId=descr.idVendor; d->productId=descr.idProduct; /* determine path for LibUSB */ snprintf(pbuff, sizeof(pbuff)-1, "/dev/bus/usb/%03d/%03d", d->busId, d->busPos); pbuff[sizeof(pbuff)-1]=0; if (stat(pbuff, &st)==0) { havePath=1; } else { snprintf(pbuff, sizeof(pbuff)-1, "/proc/bus/usb/%03d/%03d", d->busId, d->busPos); pbuff[sizeof(pbuff)-1]=0; if (stat(pbuff, &st)==0) { havePath=1; } } if (havePath) { strncpy(d->usbPath, pbuff, sizeof(d->usbPath)-1); d->usbPath[sizeof(d->usbPath)-1]=0; strncpy(d->deviceNodePath, pbuff, sizeof(d->deviceNodePath)-1); d->deviceNodePath[sizeof(d->deviceNodePath)-1]=0; } /* generate path for CTAPI/IFD */ snprintf(d->path, sizeof(d->path)-1, "usb:%04x/%04x:libusb:%03d:%03d", d->vendorId, d->productId, d->busId, d->busPos); if (1) { libusb_device_handle *dh; rv=libusb_open(dev, &dh); if (rv) { fprintf(stderr, "RSCT: Error on libusb_open: %d\n", rv); } else { /* get product string */ rv=libusb_get_string_descriptor_ascii(dh, descr.iProduct, (unsigned char*) (d->productName), sizeof(d->productName)-1); if (rv<0) { fprintf(stderr, "RSCT: Error on libusb_get_string_descriptor_ascii: %d\n", rv); d->productName[0]=0; } else { d->productName[rv]=0; } if (descr.idProduct>=0x300) { /* get serial number for newer devices */ rv=libusb_get_string_descriptor_ascii(dh, descr.iSerialNumber, (unsigned char*) (d->serial), sizeof(d->serial)-1); if (rv<0) { fprintf(stderr, "RSCT: Error on libusb_get_string_descriptor_ascii: %d\n", rv); d->serial[0]=0; } else { d->serial[rv]=0; } } libusb_close(dh); } } /* all set, add device */ rsct_usbdev_list_add(usbdev_list, d); } } else { fprintf(stderr, "RSCT: Error on libusb_get_device_descriptor: %d\n", rv); } } libusb_free_device_list(list, 1); rsct_usbdev_fini(); return 0; } } #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/ccid.h000066400000000000000000000236031231776762100206110ustar00rootroot00000000000000#ifndef CCID_H #define CCID_H #define PC_TO_RDR_ICCPOWERON 0x62 #define PC_TO_RDR_ICCPOWEROFF 0x63 #define PC_TO_RDR_GETSLOTSTATUS 0x65 #define PC_TO_RDR_XFRBLOCK 0x6F #define PC_TO_RDR_GETPARAMETERS 0x6C #define PC_TO_RDR_RESETPARAMETERS 0x6D #define PC_TO_RDR_SETPARAMETERS 0x61 #define PC_TO_RDR_ESCAPE 0x6B #define PC_TO_RDR_ICCCLOCK 0x6E #define PC_TO_RDR_TAPDU 0x6A #define PC_TO_RDR_SECURE 0x69 #define PC_TO_RDR_MECHANICAL 0x71 #define PC_TO_RDR_ABORT 0x72 #define PC_TO_RDR_SETDATARATEANDCLOCKFREQUENCY 0x73 #define LOOPBACK 0x11 #define RDR_TO_PC_DATABLOCK 0x80 #define RDR_TO_PC_SLOTSTATUS 0x81 #define RDR_TO_PC_PARAMETERS 0x82 #define RDR_TO_PC_ESCAPE 0x83 #define RDR_TO_PC_DATARATEANDCLOCKFREQUENCY 0x84 #define RDR_TO_PC_STATUSCLOCK 0x85 #define RDR_TO_PC_NOTIFYSLOTCHANGE 0x50 #define RDR_TO_PC_HARWAREERROR 0x51 #define RDR_TO_PC_KEYEVENT 0x40 #define CCID_ESCAPE_INPUT 0x00 #define CCID_ESCAPE_UPDATE 0x01 #define CCID_ESCAPE_VERIFY 0x02 #define CCID_ESCAPE_STATUS 0x03 #define CCID_ESCAPE_UPDATE_START 0x04 #define CCID_ESCAPE_GET_INFO 0x05 #define CCID_ESCAPE_SET_DATE_TIME 0x06 #define CCID_ESCAPE_SET_SERNUMBER 0x07 //#define CCID_ESCAPE_VERIFYDATA 0x08 #define CCID_ESCAPE_GET_SECODERINFO 0x09 #define CCID_ESCAPE_GET_STACKSIGNCOUNTER 0x0c #define CCID_ESCAPE_MODULE_DELETE 0x10 // #define CCID_ESCAPE_MODULE_DEFRAG 0x11 #define CCID_ESCAPE_MODULE_ENUM 0x12 #define CCID_ESCAPE_MODULE_INFO 0x13 #define CCID_ESCAPE_MODULE_REACTIVATE 0x14 #define CCID_ESCAPE_MODULE_DEACTIVATE 0x15 #define CCID_ESCAPE_MODULE_DELALL 0x16 #define CCID_ESCAPE_MODULE_SET_SILENT_MODE 0x17 #define CCID_ESCAPE_MODULE_GET_SILENT_MODE 0x18 #define CCID_ESCAPE_MODULE_SET_FLASH_MASK 0x19 #define CCID_ESCAPE_GET_KEYINFO 0x20 #define CCID_ESCAPE_UPDATE_KEY 0x21 #define CCID_ESCAPE_VERIFY_KEY 0x22 #define CCID_ESCAPE_SELF_TEST 0x23 #define CCID_ESCAPE_SHOW_AUTH 0x24 #define CCID_ESCAPE_SET_MODULESTORE_INFO 0x26 #define CCID_ESCAPE_GET_MODULESTORE_INFO 0x27 #define CCID_ESCAPE_DSP_CONTRAST 0x30 #define CCID_ESCAPE_DSP_BACKLIGHT 0x33 #define CCID_ESCAPE_SELECT_SM_MODULE 0x50 #define CCID_ESCAPE_CTRL_SYNC 0x60 #define CCID_ESCAPE_CTRL_RF 0x61 #define CCID_ESCAPE_DO_PACE 0xf0 #define CMD_ABORTED 0xff #define ICC_MUTE 0xfe #define XFR_PARITY_ERROR 0xfd #define XFR_OVERRUN 0xfc #define HW_ERROR 0xfb #define EXT_ERROR 0xc0 #define BAD_ATR_TS 0xf8 #define BAD_ATR_TCK 0xf7 #define ICC_PROTOCOL_NOT_SUPPORTED 0xf6 #define ICC_CLASS_NOT_SUPPORTED 0xf5 #define PROCEDURE_BYTE_CONFLICT 0xf4 #define DEACTIVATED_PROTOCOL 0xf3 #define BUSY_WITH_AUTOSEQUENCE 0xf2 #define PIN_TIMEOUT 0xf0 #define PIN_CANCELED 0xef #define PIN_DIFFERENT 0xee #define CMD_SLOT_BUSY 0xe0 typedef struct _cjeca_DateTime { uint8_t ProductionDate[11]; uint8_t Reserved1; uint8_t ProductionTime[6]; uint8_t Reserved2; uint8_t Reserved3; }cjeca_DateTime; #define PRODUCTION_DATE 0 #define TEST_DATE 1 #define FIRST_USE_DATE 2 typedef struct _cjeca_ReaderConst { uint8_t Config; uint8_t Flags; uint16_t MaskOption; uint32_t HardwareVersion; cjeca_DateTime dtDate[3]; uint8_t Seriennummer[20]; uint32_t IsForSale; }cjeca_ReaderConst; typedef struct _cjeca_Info { uint32_t ActiveApplication; uint8_t KernelVersion; uint8_t KernelRevision; uint8_t Reserved1; uint8_t Reserved2; cjeca_ReaderConst ReaderConst; }cjeca_Info; typedef struct _cjeca_ModuleInfo { uint32_t Status; uint32_t ModuleID; uint32_t ModuleBaseAddr; uint32_t ModuleCodeSize; cjeca_DateTime DateTime; uint8_t Version; uint8_t Revision; uint8_t RequieredKernelVersion; uint8_t RequieredKernelRevision; uint8_t GlobalHeapSize; uint8_t Variante; uint8_t Reserved1; uint8_t Reserved2; int8_t Description[16]; }cjeca_ModuleInfo; #pragma pack(1) typedef struct _SMSelect { unsigned long ModuleID; unsigned long Count; }tSMSelect; typedef struct _CCID_Message { uint8_t bMessageType; uint32_t dwLength; uint8_t bSlot; uint8_t bSeq; union _Header { uint8_t abRFU[3]; struct _iccPowerOn { uint8_t bPowerSelect; uint8_t abRFU[2]; }iccPowerOn; struct _XfrBlock { uint8_t bBWI; uint16_t wLevelParameter; }XfrBlock; struct _SetParameters { uint8_t bProtocolNum; uint8_t abRFU[2]; }SetParameters; struct _iccClock { uint8_t bClockCommand; uint8_t abRFU[2]; }iccClock; struct _T0APDU { uint8_t bChanges; uint8_t bClassGetResponse; uint8_t bClassEnvelope; }T0APDU; struct _Secure { uint8_t bBWI; uint16_t wLevelParameter; }Secure; struct _Mechanical { uint8_t bFunction; uint8_t abRFU[2]; }Mechanical; }Header; union _Data { uint8_t abData[5120]; union _SetParameters { struct _T0 { uint8_t bmFindexDindex; uint8_t bmTCCKST0; uint8_t bGuardTimeT0; uint8_t bWaitingIntegerT0; uint8_t bClockStop; }T0; struct _T1 { uint8_t bmFindexDindex; uint8_t bmTCCKST1; uint8_t bGuardTimeT1; uint8_t bWaitingIntegerT1; uint8_t bClockStop; uint8_t bIFSC; uint8_t bNadValue; }T1; struct _Sync { unsigned char AddrByteCount; unsigned short PageSize; }Sync; }SetParameters; struct _Secure { uint8_t bPINOperation; uint8_t bTimeOut; uint8_t bmFormatString; uint8_t bmPINBlockString; uint8_t bmPINLengthFormat; union _Data { struct _Verify { uint16_t wPINMaxExtraDigit; uint8_t bEntryValidationCondition; uint8_t bNumberMessage; uint16_t wLangId; uint8_t bMsgIndex; uint8_t bTeoPrologue[3]; uint8_t abData[245]; }Verify; struct _Modify { uint8_t bInsertionOffsetOld; uint8_t bInsertionOffsetNew; uint16_t wPINMaxExtraDigit; uint8_t bConfirmPIN; uint8_t bEntryValidationCondition; uint8_t bNumberMessage; uint16_t wLangId; uint8_t bMsgIndex1; uint8_t bMsgIndex2; uint8_t bMsgIndex3; uint8_t bTeoPrologue[3]; uint8_t abData[240]; }Modify; struct _Next { uint8_t bTeoPrologue[3]; }Next; }Data; }Secure; struct _SetDataRateAndClockFrequency { uint32_t dwClockFrequency; uint32_t dwDataRate; }SetDataRateAndClockFrequency; struct _Escape { union _Reader { struct _EC30 { uint32_t dwApplication; uint16_t wFunction; union _Data { struct _UpdateStart { uint8_t ModuleHeader[256]; }UpdateStart; struct _UpdateData { uint16_t bLength; uint8_t Data[256]; }UpdateData; struct _UpdateVerify { uint32_t len; uint8_t Sign[768]; }UpdateVerify; struct _ModuleDelete { uint32_t Application; }ModuleDelete; struct _SetDateTime { uint8_t Nr; cjeca_DateTime dtDate; }SetDateTime; struct _SetSerNumber { uint8_t SerNumber[20]; }SetSerNumber; struct _Input { uint8_t Timeout; }Input; uint32_t ModuleID; struct _UpdateKey { uint32_t len; uint8_t Key[800]; }UpdateKey; struct _VerifyKey { uint32_t len; uint8_t Key[800]; }VerifyKey; uint8_t abDate[1008]; }Data; }EC30; }Reader; }Escape; }Data; }CCID_Message; typedef struct _CCID_Response { uint8_t bMessageType; uint32_t dwLength; uint8_t bSlot; uint8_t bSeq; uint8_t bStatus; uint8_t bError; union _Header { uint8_t bRFU; uint8_t bChainParameter; uint8_t bClockStatus; uint8_t bProtocolNum; }Header; union _Data { uint8_t abData[5120]; union _Parameters { struct _T0 { uint8_t bmFindexDindex; uint8_t bmTCCKST0; uint8_t GuardTimeT0; uint8_t bWaitingIntegerT0; uint8_t bClockStop; }T0; struct _T1 { uint8_t bmFindexDindex; uint8_t bmTCCKST1; uint8_t GuardTimeT1; uint8_t bWaitingIntegerT1; uint8_t bClockStop; uint8_t bIFSC; uint8_t bNadValue; }T1; }Parameters; struct _DataRateAndClockFrequency { uint32_t dwClockFrequency; uint32_t dwDataRate; }DataRateAndClockFrequency; struct _Escape { uint32_t Result; union _Function { cjeca_ModuleInfo ModuleInfo; struct _ModuleEnummeration { uint32_t ModuleID[32]; }ModuleEnummeration; cjeca_Info ReaderInfo; uint8_t abData[1010]; }Function; }Escape; }Data; }CCID_Response; typedef struct _CCID_Interrupt { uint8_t bMessageType; union _Data { struct _NotifySlotChange { uint8_t bmSlotICCState; }NotifySlotChange; struct _HardwareError { uint8_t bSlot; uint8_t bSeq; uint8_t bHardwareErrorCode; }HardwareError; struct _KeyEvent { uint8_t KeyStatus; }KeyEvent; }Data; }CCID_Interrupt; typedef union _CCID_transfer { CCID_Message Message; CCID_Response Response; CCID_Interrupt Interrupt; }CCID_transfer; #pragma pack() #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/cjeca32.cpp000066400000000000000000000002661231776762100214540ustar00rootroot00000000000000// cjeca32.cpp : Definiert den Einstiegspunkt für die DLL-Anwendung. // #include "Platform.h" #include "cjeca32.h" // Dies ist das Beispiel einer exportierten Variable. pcsc-cyberjack-3.99.5final.sp05/cjeca32/config.cpp000066400000000000000000000202371231776762100215070ustar00rootroot00000000000000/*************************************************************************** begin : Mon Aug 14 2006 copyright : (C) 2006 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "Platform.h" #include #include #include #include #include #include "config_p.h" #define CYBERJACK_CONFIG_GROUP_GENERIC 0 #define CYBERJACK_CONFIG_GROUP_VARS 1 #define CYBERJACK_CONFIG_GROUP_UNKNOWN 99 static CYBERJACK_CONFIG *_ctapi_config=NULL; static int _readConfig(FILE *f, CYBERJACK_CONFIG *cfg) { int currentGroup=CYBERJACK_CONFIG_GROUP_GENERIC; char lbuf[256]; while(!feof(f)) { char *p; char *varName; char *value; unsigned int len; lbuf[0]=0; if (0==fgets(lbuf, sizeof(lbuf), f)) { if (ferror(f)) { fprintf(stderr, "CYBERJACK: fgets: %s\n", strerror(errno)); return -1; } } len=strlen(lbuf); if (len<1) continue; if (lbuf[len-1]=='\n' || lbuf[len-1]=='\r') { lbuf[len-1]=0; len--; } if (len<1) continue; /*fprintf(stderr, "CYBERJACK: Data is \"%s\"\n", lbuf);*/ p=strchr(lbuf, '#'); if (p) *p=0; p=lbuf; /* skip blanks */ while(*p && isspace(*p)) p++; if (!*p) continue; /* check for group name */ if (*p=='[') { if (strncasecmp(p, "[generic]", 9)==0) { currentGroup=CYBERJACK_CONFIG_GROUP_GENERIC; } else if (strncasecmp(p, "[vars]", 6)==0) { currentGroup=CYBERJACK_CONFIG_GROUP_VARS; } else { fprintf(stderr, "CYBERJACK: Unknown group \"%s\", ignoring\n", p); currentGroup=CYBERJACK_CONFIG_GROUP_UNKNOWN; } } else { /* extract var name */ varName=p; while(*p && !isspace(*p) && *p!='=') p++; if (!*p) /* unexpected end of line */ continue; if (*p!='=') { /* found end of var name */ *p=0; p++; /* skip blanks */ while(*p && isspace(*p)) p++; } if (*p!='=') /* missing equation mark */ continue; *p=0; p++; /* skip blanks */ while(*p && isspace(*p)) p++; if (!*p) /* no value */ continue; value=p; p++; /* get end of value */ while(*p && !isspace(*p)) p++; if (*p) *p=0; /* handle key value pair */ if (currentGroup==CYBERJACK_CONFIG_GROUP_GENERIC) { /*fprintf(stderr, "CYBERJACK: Handling [%s]=[%s]\n", varName, value);*/ if (strcasecmp(varName, "flags")==0) { unsigned int j; if (1==sscanf(value, "%i", &j)) { cfg->flags=j; } else { fprintf(stderr, "CYBERJACK: Bad value for flags: \"%s\"", value); } } else if (strcasecmp(varName, "debugFile")==0) { cfg->debugFile=value; } else if (strcasecmp(varName, "serialFile")==0) { cfg->serialFile=value; } /* add more variables here */ else { fprintf(stderr, "CYBERJACK: Unknown variable \"%s\" in config file\n", value); } } else if (currentGroup==CYBERJACK_CONFIG_GROUP_VARS) { cfg->vars.insert(CFG_VARMAP::value_type(varName, value)); } } } /* while !feof */ return 0; } static int config_read_file(CYBERJACK_CONFIG *cfg) { FILE *f; f=fopen(CYBERJACK_CONFIG_FILE, "r"); if (f==NULL) { f=fopen(CYBERJACK_CONFIG_FILE".default", "r"); } if (f) { int rv; rv=_readConfig(f, cfg); fclose(f); if (rv) return rv; } return 0; } static int config_write_file(CYBERJACK_CONFIG *cfg) { FILE *f; f=fopen(CYBERJACK_CONFIG_FILE, "w+"); if (f==NULL) { fprintf(stderr, "RSCT: Could not create config file [%s]: %s\n", CYBERJACK_CONFIG_FILE, strerror(errno)); return -1; } fprintf(f, "# This file has been automatically created\n"); fprintf(f, "flags=0x%08x\n", cfg->flags); if (!(cfg->debugFile).empty()) fprintf(f, "debugFile=%s\n", cfg->debugFile.c_str()); if (!(cfg->serialFile).empty()) fprintf(f, "serialFile=%s\n", cfg->serialFile.c_str()); /* possibly write vars */ if (cfg->vars.size()) { CFG_VARMAP::iterator it; fprintf(f, "\n[vars]\n"); for (it=cfg->vars.begin(); it!=cfg->vars.end(); it++) { if (it->first.length() && it->second.length()) { fprintf(f, "%s=%s\n", it->first.c_str(), it->second.c_str()); } } } if (fclose(f)) { fprintf(stderr, "RSCT: Could not close config file [%s]: %s\n", CYBERJACK_CONFIG_FILE, strerror(errno)); return -1; } return 0; } int rsct_config_init() { /* init CTAPI configuration */ _ctapi_config=new CYBERJACK_CONFIG; if (!_ctapi_config) { Debug.Out("none", DEBUG_MASK_CTAPI, "not enough memory available\n", 0, 0); return -1; } _ctapi_config->debugFile="/tmp/cj.log"; _ctapi_config->flags=CT_FLAGS_DEFAULT; if (getenv("CJCTAPI_NO_KEYBEEP")) _ctapi_config->flags|=CT_FLAGS_NO_BEEP; if (getenv("CJCTAPI_ECOM_KERNEL")) _ctapi_config->flags|=CT_FLAGS_ECOM_KERNEL; config_read_file(_ctapi_config); return 0; } void rsct_config_fini() { if (_ctapi_config) { free(_ctapi_config); _ctapi_config=0; } } int rsct_config_save() { if (_ctapi_config) return config_write_file(_ctapi_config); return 0; } unsigned int rsct_config_get_flags() { if (!_ctapi_config) return 0; return _ctapi_config->flags; } void rsct_config_set_flags(unsigned int i) { if (_ctapi_config) _ctapi_config->flags=i; } unsigned int rsct_config_get_debug_output_level() { /* TODO: set this to 0 here or read from config file */ return 0xffffffff; } const char *rsct_config_get_debug_filename() { if (!_ctapi_config) return 0; if (_ctapi_config->debugFile[0]==0) return 0; return _ctapi_config->debugFile.c_str(); } const char *rsct_config_get_serial_filename() { if (!_ctapi_config) return 0; if (_ctapi_config->serialFile[0]==0) return 0; return _ctapi_config->serialFile.c_str(); } void rsct_config_set_serial_filename(const char *s) { if (_ctapi_config) { if (!s) _ctapi_config->serialFile=""; else { _ctapi_config->serialFile=s; } } } void rsct_config_set_var(const char *name, const char *val) { if (_ctapi_config) { if (name && val) { _ctapi_config->vars.insert(CFG_VARMAP::value_type(name, val)); } } } const char *rsct_config_get_var(const char *name) { if (_ctapi_config) { if (name) { CFG_VARMAP::iterator it; it=_ctapi_config->vars.find(name); if (it!=_ctapi_config->vars.end()) return it->second.c_str(); } } return NULL; } pcsc-cyberjack-3.99.5final.sp05/cjeca32/config_l.h000066400000000000000000000061751231776762100214740ustar00rootroot00000000000000/*************************************************************************** begin : Mon Aug 14 2006 copyright : (C) 2006 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef CYBERJACKCONFIG_H #define CYBERJACKCONFIG_H #define CT_FLAGS_DEBUG_GENERIC 0x00000001 #define CT_FLAGS_DEBUG_READER 0x00000002 #define CT_FLAGS_DEBUG_CTAPI 0x00000004 #define CT_FLAGS_DEBUG_AUSB 0x00000008 #define CT_FLAGS_DEBUG_CJPPA 0x00000010 #define CT_FLAGS_DEBUG_ECOM 0x00000020 #define CT_FLAGS_DEBUG_TRANSFER 0x00000040 #define CT_FLAGS_DEBUG_USB 0x00000080 #define CT_FLAGS_DEBUG_IFD 0x00000100 #define CT_FLAGS_DEBUG_ECA 0x00000200 #define CT_FLAGS_DEBUG_CUSTOM_LOGGING 0x00000400 #define CT_FLAGS_NO_BEEP 0x00010000 #define CT_FLAGS_ECOM_KERNEL_OLD 0x00020000 #define CT_FLAGS_ALLOW_INPUT 0x00040000 #define CT_FLAGS_BEEP_NO_X11 0x00080000 #define CT_FLAGS_RESET_BEFORE 0x00100000 #define CT_FLAGS_ECOM_KERNEL 0x00200000 #define CT_FLAGS_DEFAULT 0 typedef struct CYBERJACK_CONFIG CYBERJACK_CONFIG; #include "Platform.h" #ifdef __cplusplus extern "C" { #endif CJECA32_API int rsct_config_init(); CJECA32_API void rsct_config_fini(); CJECA32_API int rsct_config_save(); CJECA32_API unsigned int rsct_config_get_flags(); CJECA32_API void rsct_config_set_flags(unsigned int i); CJECA32_API unsigned int rsct_config_get_debug_output_level(); CJECA32_API const char *rsct_config_get_debug_filename(); CJECA32_API const char *rsct_config_get_serial_filename(); CJECA32_API void rsct_config_set_serial_filename(const char *s); CJECA32_API void rsct_config_set_var(const char *name, const char *val); CJECA32_API const char *rsct_config_get_var(const char *name); #ifdef __cplusplus } #endif #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/config_p.h000066400000000000000000000035421231776762100214730ustar00rootroot00000000000000/*************************************************************************** begin : Mon Nov 08 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef CYBERJACKCONFIG_P_H #define CYBERJACKCONFIG_P_H #include "config_l.h" #include #include typedef std::map CFG_VARMAP; struct CYBERJACK_CONFIG { unsigned int flags; std::string debugFile; std::string serialFile; CFG_VARMAP vars; }; #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/libtest.cpp000077500000000000000000000052401231776762100217100ustar00rootroot00000000000000 #include "Platform.h" #include "Reader.h" #include "USBUnix.h" #include int test1(int argc, char **argv) { #ifdef ENABLE_NONSERIAL CReader *r; int idx; char *devName; int rv; if (argc<2) { fprintf(stderr, "Missing argument: Reader index\n"); return 1; } idx=atoi(argv[1]); devName=CUSBUnix::createDeviceName(idx); if (devName==NULL) { fprintf(stderr, "Device %d not found\n", idx); return 2; } r=new CReader(devName); rv=r->Connect(); if (rv!=CJ_SUCCESS) { fprintf(stderr, "Could not connect to reader (%d)\n", rv); return 2; } fprintf(stderr, "Reader connected.\n"); fprintf(stderr, "Hit the ENTER key:\n"); getchar(); rv=r->Disonnect(); if (rv!=CJ_SUCCESS) { fprintf(stderr, "Could not connect to reader (%d)\n", rv); return 2; } fprintf(stderr, "Reader disconnected.\n"); delete r; free(devName); #endif return 0; } int readFile(const char *fname, uint8_t *buffer) { FILE *f; uint8_t *p; int len; f=fopen(fname, "r"); if (f==NULL) return -1; p=buffer; len=0; while(!feof(f)) { int rv; rv=fread(p, 1, 1024, f); if (rv==0) break; p+=rv; len+=rv; } fclose(f); return len; } int test2(int argc, char **argv) { #ifdef ENABLE_NONSERIAL CReader *r; int idx; char *devName; const char *fname1; const char *fname2; uint8_t buffer1[64*1024]; uint8_t buffer2[64*1024]; int len1; int len2; int rv; uint32_t result; if (argc<4) { fprintf(stderr, "Usage:\n %s IDX NAME1 NAME2\n", argv[0]); return 1; } idx=atoi(argv[1]); fname1=argv[2]; fname2=argv[3]; len1=readFile(fname1, buffer1); if (len1<1) { fprintf(stderr, "Error reading file \"%s\"\n", fname1); return 2; } len2=readFile(fname2, buffer2); if (len2<1) { fprintf(stderr, "Error reading file \"%s\"\n", fname2); return 2; } devName=CUSBUnix::createDeviceName(idx); if (devName==NULL) { fprintf(stderr, "Device %d not found\n", idx); return 2; } r=new CReader(devName); rv=r->Connect(); if (rv!=CJ_SUCCESS) { fprintf(stderr, "Could not connect to reader (%d)\n", rv); return 2; } rv=r->CtLoadModule(buffer1, len1, buffer2, len2, &result); if (rv!=CJ_SUCCESS) { fprintf(stderr, "Unable to flash reader (%d)\n", rv); return 2; } fprintf(stderr, "Reader flashed.\n"); rv=r->Disonnect(); if (rv!=CJ_SUCCESS) { fprintf(stderr, "Could not connect to reader (%d)\n", rv); return 2; } fprintf(stderr, "Reader disconnected.\n"); delete r; free(devName); #endif return 0; } int main(int argc, char **argv) { return test1(argc, argv); //return test2(argc, argv); } pcsc-cyberjack-3.99.5final.sp05/cjeca32/ntstatus.h000066400000000000000000010154551231776762100216030ustar00rootroot00000000000000/*++ BUILD Version: 0005 // Increment this if a change has global effects Copyright (c) Microsoft Corporation. All rights reserved. Module Name: ntstatus.h Abstract: Constant definitions for the NTSTATUS values. Author: Portable Systems Group 30-Mar-1989 Revision History: Notes: This file is generated by the MC tool from the ntstatus.mc file. Please add new error values to the end of the file. To do otherwise will jumble the error values. --*/ #ifndef _NTSTATUS_ #define _NTSTATUS_ #if defined (_MSC_VER) && (_MSC_VER >= 1020) #pragma once #endif #define NTSTATUS uint32_t #ifdef _WINDOWS # pragma warning (disable:4005) # endif #ifndef WIN32_NO_STATUS // winnt // begin_ntsecapi /*lint -save -e767 */ // Don't complain about different definitions // winnt ///////////////////////////////////////////////////////////////////////// // // Standard Success values // // ///////////////////////////////////////////////////////////////////////// // // The success status codes 0 - 63 are reserved for wait completion status. // FacilityCodes 0x5 - 0xF have been allocated by various drivers. // #define STATUS_SUCCESS ((NTSTATUS)0x00000000L) // ntsubauth // // Values are 32 bit values layed out as follows: // // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 // +---+-+-+-----------------------+-------------------------------+ // |Sev|C|R| Facility | Code | // +---+-+-+-----------------------+-------------------------------+ // // where // // Sev - is the severity code // // 00 - Success // 01 - Informational // 10 - Warning // 11 - Error // // C - is the Customer code flag // // R - is a reserved bit // // Facility - is the facility code // // Code - is the facility's status code // // // Define the facility codes // #define FACILITY_USB_ERROR_CODE 0x10 #define FACILITY_TRANSACTION 0x19 #define FACILITY_TERMINAL_SERVER 0xA #define FACILITY_SXS_ERROR_CODE 0x15 #define FACILITY_RPC_STUBS 0x3 #define FACILITY_RPC_RUNTIME 0x2 #define FACILITY_IO_ERROR_CODE 0x4 #define FACILITY_HID_ERROR_CODE 0x11 #define FACILITY_FIREWIRE_ERROR_CODE 0x12 #define FACILITY_DEBUGGER 0x1 #define FACILITY_COMMONLOG_ERROR_CODE 0x1A #define FACILITY_CLUSTER_ERROR_CODE 0x13 #define FACILITY_ACPI_ERROR_CODE 0x14 // // Define the severity codes // #define STATUS_SEVERITY_WARNING 0x2 #define STATUS_SEVERITY_SUCCESS 0x0 #define STATUS_SEVERITY_INFORMATIONAL 0x1 #define STATUS_SEVERITY_ERROR 0x3 // // MessageId: STATUS_WAIT_0 // // MessageText: // // STATUS_WAIT_0 // #define STATUS_WAIT_0 ((NTSTATUS)0x00000000L) // winnt // // MessageId: STATUS_WAIT_1 // // MessageText: // // STATUS_WAIT_1 // #define STATUS_WAIT_1 ((NTSTATUS)0x00000001L) // // MessageId: STATUS_WAIT_2 // // MessageText: // // STATUS_WAIT_2 // #define STATUS_WAIT_2 ((NTSTATUS)0x00000002L) // // MessageId: STATUS_WAIT_3 // // MessageText: // // STATUS_WAIT_3 // #define STATUS_WAIT_3 ((NTSTATUS)0x00000003L) // // MessageId: STATUS_WAIT_63 // // MessageText: // // STATUS_WAIT_63 // #define STATUS_WAIT_63 ((NTSTATUS)0x0000003FL) // // The success status codes 128 - 191 are reserved for wait completion // status with an abandoned mutant object. // #define STATUS_ABANDONED ((NTSTATUS)0x00000080L) // // MessageId: STATUS_ABANDONED_WAIT_0 // // MessageText: // // STATUS_ABANDONED_WAIT_0 // #define STATUS_ABANDONED_WAIT_0 ((NTSTATUS)0x00000080L) // winnt // // MessageId: STATUS_ABANDONED_WAIT_63 // // MessageText: // // STATUS_ABANDONED_WAIT_63 // #define STATUS_ABANDONED_WAIT_63 ((NTSTATUS)0x000000BFL) // // The success status codes 256, 257, 258, and 258 are reserved for // User APC, Kernel APC, Alerted, and Timeout. // // // MessageId: STATUS_USER_APC // // MessageText: // // STATUS_USER_APC // #define STATUS_USER_APC ((NTSTATUS)0x000000C0L) // winnt // // MessageId: STATUS_KERNEL_APC // // MessageText: // // STATUS_KERNEL_APC // #define STATUS_KERNEL_APC ((NTSTATUS)0x00000100L) // // MessageId: STATUS_ALERTED // // MessageText: // // STATUS_ALERTED // #define STATUS_ALERTED ((NTSTATUS)0x00000101L) // // MessageId: STATUS_TIMEOUT // // MessageText: // // STATUS_TIMEOUT // #define STATUS_TIMEOUT ((NTSTATUS)0x00000102L) // winnt // // MessageId: STATUS_PENDING // // MessageText: // // The operation that was requested is pending completion. // #define STATUS_PENDING ((NTSTATUS)0x00000103L) // winnt // // MessageId: STATUS_REPARSE // // MessageText: // // A reparse should be performed by the Object Manager since the name of the file resulted in a symbolic link. // #define STATUS_REPARSE ((NTSTATUS)0x00000104L) // // MessageId: STATUS_MORE_ENTRIES // // MessageText: // // Returned by enumeration APIs to indicate more information is available to successive calls. // #define STATUS_MORE_ENTRIES ((NTSTATUS)0x00000105L) // // MessageId: STATUS_NOT_ALL_ASSIGNED // // MessageText: // // Indicates not all privileges referenced are assigned to the caller. // This allows, for example, all privileges to be disabled without having to know exactly which privileges are assigned. // #define STATUS_NOT_ALL_ASSIGNED ((NTSTATUS)0x00000106L) // // MessageId: STATUS_SOME_NOT_MAPPED // // MessageText: // // Some of the information to be translated has not been translated. // #define STATUS_SOME_NOT_MAPPED ((NTSTATUS)0x00000107L) // // MessageId: STATUS_OPLOCK_BREAK_IN_PROGRESS // // MessageText: // // An open/create operation completed while an oplock break is underway. // #define STATUS_OPLOCK_BREAK_IN_PROGRESS ((NTSTATUS)0x00000108L) // // MessageId: STATUS_VOLUME_MOUNTED // // MessageText: // // A new volume has been mounted by a file system. // #define STATUS_VOLUME_MOUNTED ((NTSTATUS)0x00000109L) // // MessageId: STATUS_RXACT_COMMITTED // // MessageText: // // This success level status indicates that the transaction state already exists for the registry sub-tree, but that a transaction commit was previously aborted. // The commit has now been completed. // #define STATUS_RXACT_COMMITTED ((NTSTATUS)0x0000010AL) // // MessageId: STATUS_NOTIFY_CLEANUP // // MessageText: // // This indicates that a notify change request has been completed due to closing the handle which made the notify change request. // #define STATUS_NOTIFY_CLEANUP ((NTSTATUS)0x0000010BL) // // MessageId: STATUS_NOTIFY_ENUM_DIR // // MessageText: // // This indicates that a notify change request is being completed and that the information is not being returned in the caller's buffer. // The caller now needs to enumerate the files to find the changes. // #define STATUS_NOTIFY_ENUM_DIR ((NTSTATUS)0x0000010CL) // // MessageId: STATUS_NO_QUOTAS_FOR_ACCOUNT // // MessageText: // // {No Quotas} // No system quota limits are specifically set for this account. // #define STATUS_NO_QUOTAS_FOR_ACCOUNT ((NTSTATUS)0x0000010DL) // // MessageId: STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED // // MessageText: // // {Connect Failure on Primary Transport} // An attempt was made to connect to the remote server %hs on the primary transport, but the connection failed. // The computer WAS able to connect on a secondary transport. // #define STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED ((NTSTATUS)0x0000010EL) // // MessageId: STATUS_PAGE_FAULT_TRANSITION // // MessageText: // // Page fault was a transition fault. // #define STATUS_PAGE_FAULT_TRANSITION ((NTSTATUS)0x00000110L) // // MessageId: STATUS_PAGE_FAULT_DEMAND_ZERO // // MessageText: // // Page fault was a demand zero fault. // #define STATUS_PAGE_FAULT_DEMAND_ZERO ((NTSTATUS)0x00000111L) // // MessageId: STATUS_PAGE_FAULT_COPY_ON_WRITE // // MessageText: // // Page fault was a demand zero fault. // #define STATUS_PAGE_FAULT_COPY_ON_WRITE ((NTSTATUS)0x00000112L) // // MessageId: STATUS_PAGE_FAULT_GUARD_PAGE // // MessageText: // // Page fault was a demand zero fault. // #define STATUS_PAGE_FAULT_GUARD_PAGE ((NTSTATUS)0x00000113L) // // MessageId: STATUS_PAGE_FAULT_PAGING_FILE // // MessageText: // // Page fault was satisfied by reading from a secondary storage device. // #define STATUS_PAGE_FAULT_PAGING_FILE ((NTSTATUS)0x00000114L) // // MessageId: STATUS_CACHE_PAGE_LOCKED // // MessageText: // // Cached page was locked during operation. // #define STATUS_CACHE_PAGE_LOCKED ((NTSTATUS)0x00000115L) // // MessageId: STATUS_CRASH_DUMP // // MessageText: // // Crash dump exists in paging file. // #define STATUS_CRASH_DUMP ((NTSTATUS)0x00000116L) // // MessageId: STATUS_BUFFER_ALL_ZEROS // // MessageText: // // Specified buffer contains all zeros. // #define STATUS_BUFFER_ALL_ZEROS ((NTSTATUS)0x00000117L) // // MessageId: STATUS_REPARSE_OBJECT // // MessageText: // // A reparse should be performed by the Object Manager since the name of the file resulted in a symbolic link. // #define STATUS_REPARSE_OBJECT ((NTSTATUS)0x00000118L) // // MessageId: STATUS_RESOURCE_REQUIREMENTS_CHANGED // // MessageText: // // The device has succeeded a query-stop and its resource requirements have changed. // #define STATUS_RESOURCE_REQUIREMENTS_CHANGED ((NTSTATUS)0x00000119L) // // MessageId: STATUS_TRANSLATION_COMPLETE // // MessageText: // // The translator has translated these resources into the global space and no further translations should be performed. // #define STATUS_TRANSLATION_COMPLETE ((NTSTATUS)0x00000120L) // // MessageId: STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY // // MessageText: // // The directory service evaluated group memberships locally, as it was unable to contact a global catalog server. // #define STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY ((NTSTATUS)0x00000121L) // // MessageId: STATUS_NOTHING_TO_TERMINATE // // MessageText: // // A process being terminated has no threads to terminate. // #define STATUS_NOTHING_TO_TERMINATE ((NTSTATUS)0x00000122L) // // MessageId: STATUS_PROCESS_NOT_IN_JOB // // MessageText: // // The specified process is not part of a job. // #define STATUS_PROCESS_NOT_IN_JOB ((NTSTATUS)0x00000123L) // // MessageId: STATUS_PROCESS_IN_JOB // // MessageText: // // The specified process is part of a job. // #define STATUS_PROCESS_IN_JOB ((NTSTATUS)0x00000124L) // // MessageId: STATUS_VOLSNAP_HIBERNATE_READY // // MessageText: // // {Volume Shadow Copy Service} // The system is now ready for hibernation. // #define STATUS_VOLSNAP_HIBERNATE_READY ((NTSTATUS)0x00000125L) // // MessageId: STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY // // MessageText: // // A file system or file system filter driver has successfully completed an FsFilter operation. // #define STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY ((NTSTATUS)0x00000126L) // // MessageId: DBG_EXCEPTION_HANDLED // // MessageText: // // Debugger handled exception // #define DBG_EXCEPTION_HANDLED ((NTSTATUS)0x00010001L) // winnt #ifdef UNDER_CE // // MessageId: DBG_CONTINUE // // MessageText: // // Debugger continued // #define DBG_CONTINUE ((NTSTATUS)0x00010002L) // winnt #endif ///////////////////////////////////////////////////////////////////////// // // Standard Information values // ///////////////////////////////////////////////////////////////////////// // // MessageId: STATUS_OBJECT_NAME_EXISTS // // MessageText: // // {Object Exists} // An attempt was made to create an object and the object name already existed. // #define STATUS_OBJECT_NAME_EXISTS ((NTSTATUS)0x40000000L) // // MessageId: STATUS_THREAD_WAS_SUSPENDED // // MessageText: // // {Thread Suspended} // A thread termination occurred while the thread was suspended. The thread was resumed, and termination proceeded. // #define STATUS_THREAD_WAS_SUSPENDED ((NTSTATUS)0x40000001L) // // MessageId: STATUS_WORKING_SET_LIMIT_RANGE // // MessageText: // // {Working Set Range Error} // An attempt was made to set the working set minimum or maximum to values which are outside of the allowable range. // #define STATUS_WORKING_SET_LIMIT_RANGE ((NTSTATUS)0x40000002L) // // MessageId: STATUS_IMAGE_NOT_AT_BASE // // MessageText: // // {Image Relocated} // An image file could not be mapped at the address specified in the image file. Local fixups must be performed on this image. // #define STATUS_IMAGE_NOT_AT_BASE ((NTSTATUS)0x40000003L) // // MessageId: STATUS_RXACT_STATE_CREATED // // MessageText: // // This informational level status indicates that a specified registry sub-tree transaction state did not yet exist and had to be created. // #define STATUS_RXACT_STATE_CREATED ((NTSTATUS)0x40000004L) // // MessageId: STATUS_SEGMENT_NOTIFICATION // // MessageText: // // {Segment Load} // A virtual DOS machine (VDM) is loading, unloading, or moving an MS-DOS or Win16 program segment image. // An exception is raised so a debugger can load, unload or track symbols and breakpoints within these 16-bit segments. // #define STATUS_SEGMENT_NOTIFICATION ((NTSTATUS)0x40000005L) // winnt // // MessageId: STATUS_LOCAL_USER_SESSION_KEY // // MessageText: // // {Local Session Key} // A user session key was requested for a local RPC connection. The session key returned is a constant value and not unique to this connection. // #define STATUS_LOCAL_USER_SESSION_KEY ((NTSTATUS)0x40000006L) // // MessageId: STATUS_BAD_CURRENT_DIRECTORY // // MessageText: // // {Invalid Current Directory} // The process cannot switch to the startup current directory %hs. // Select OK to set current directory to %hs, or select CANCEL to exit. // #define STATUS_BAD_CURRENT_DIRECTORY ((NTSTATUS)0x40000007L) // // MessageId: STATUS_SERIAL_MORE_WRITES // // MessageText: // // {Serial IOCTL Complete} // A serial I/O operation was completed by another write to a serial port. // (The IOCTL_SERIAL_XOFF_COUNTER reached zero.) // #define STATUS_SERIAL_MORE_WRITES ((NTSTATUS)0x40000008L) // // MessageId: STATUS_REGISTRY_RECOVERED // // MessageText: // // {Registry Recovery} // One of the files containing the system's Registry data had to be recovered by use of a log or alternate copy. // The recovery was successful. // #define STATUS_REGISTRY_RECOVERED ((NTSTATUS)0x40000009L) // // MessageId: STATUS_FT_READ_RECOVERY_FROM_BACKUP // // MessageText: // // {Redundant Read} // To satisfy a read request, the NT fault-tolerant file system successfully read the requested data from a redundant copy. // This was done because the file system encountered a failure on a member of the fault-tolerant volume, but was unable to reassign the failing area of the device. // #define STATUS_FT_READ_RECOVERY_FROM_BACKUP ((NTSTATUS)0x4000000AL) // // MessageId: STATUS_FT_WRITE_RECOVERY // // MessageText: // // {Redundant Write} // To satisfy a write request, the NT fault-tolerant file system successfully wrote a redundant copy of the information. // This was done because the file system encountered a failure on a member of the fault-tolerant volume, but was not able to reassign the failing area of the device. // #define STATUS_FT_WRITE_RECOVERY ((NTSTATUS)0x4000000BL) // // MessageId: STATUS_SERIAL_COUNTER_TIMEOUT // // MessageText: // // {Serial IOCTL Timeout} // A serial I/O operation completed because the time-out period expired. // (The IOCTL_SERIAL_XOFF_COUNTER had not reached zero.) // #define STATUS_SERIAL_COUNTER_TIMEOUT ((NTSTATUS)0x4000000CL) // // MessageId: STATUS_NULL_LM_PASSWORD // // MessageText: // // {Password Too Complex} // The Windows password is too complex to be converted to a LAN Manager password. // The LAN Manager password returned is a NULL string. // #define STATUS_NULL_LM_PASSWORD ((NTSTATUS)0x4000000DL) // // MessageId: STATUS_IMAGE_MACHINE_TYPE_MISMATCH // // MessageText: // // {Machine Type Mismatch} // The image file %hs is valid, but is for a machine type other than the current machine. Select OK to continue, or CANCEL to fail the DLL load. // #define STATUS_IMAGE_MACHINE_TYPE_MISMATCH ((NTSTATUS)0x4000000EL) // // MessageId: STATUS_RECEIVE_PARTIAL // // MessageText: // // {Partial Data Received} // The network transport returned partial data to its client. The remaining data will be sent later. // #define STATUS_RECEIVE_PARTIAL ((NTSTATUS)0x4000000FL) // // MessageId: STATUS_RECEIVE_EXPEDITED // // MessageText: // // {Expedited Data Received} // The network transport returned data to its client that was marked as expedited by the remote system. // #define STATUS_RECEIVE_EXPEDITED ((NTSTATUS)0x40000010L) // // MessageId: STATUS_RECEIVE_PARTIAL_EXPEDITED // // MessageText: // // {Partial Expedited Data Received} // The network transport returned partial data to its client and this data was marked as expedited by the remote system. The remaining data will be sent later. // #define STATUS_RECEIVE_PARTIAL_EXPEDITED ((NTSTATUS)0x40000011L) // // MessageId: STATUS_EVENT_DONE // // MessageText: // // {TDI Event Done} // The TDI indication has completed successfully. // #define STATUS_EVENT_DONE ((NTSTATUS)0x40000012L) // // MessageId: STATUS_EVENT_PENDING // // MessageText: // // {TDI Event Pending} // The TDI indication has entered the pending state. // #define STATUS_EVENT_PENDING ((NTSTATUS)0x40000013L) // // MessageId: STATUS_CHECKING_FILE_SYSTEM // // MessageText: // // Checking file system on %wZ // #define STATUS_CHECKING_FILE_SYSTEM ((NTSTATUS)0x40000014L) // // MessageId: STATUS_FATAL_APP_EXIT // // MessageText: // // {Fatal Application Exit} // %hs // #define STATUS_FATAL_APP_EXIT ((NTSTATUS)0x40000015L) // // MessageId: STATUS_PREDEFINED_HANDLE // // MessageText: // // The specified registry key is referenced by a predefined handle. // #define STATUS_PREDEFINED_HANDLE ((NTSTATUS)0x40000016L) // // MessageId: STATUS_WAS_UNLOCKED // // MessageText: // // {Page Unlocked} // The page protection of a locked page was changed to 'No Access' and the page was unlocked from memory and from the process. // #define STATUS_WAS_UNLOCKED ((NTSTATUS)0x40000017L) // // MessageId: STATUS_SERVICE_NOTIFICATION // // MessageText: // // %hs // #define STATUS_SERVICE_NOTIFICATION ((NTSTATUS)0x40000018L) // // MessageId: STATUS_WAS_LOCKED // // MessageText: // // {Page Locked} // One of the pages to lock was already locked. // #define STATUS_WAS_LOCKED ((NTSTATUS)0x40000019L) // // MessageId: STATUS_LOG_HARD_ERROR // // MessageText: // // Application popup: %1 : %2 // #define STATUS_LOG_HARD_ERROR ((NTSTATUS)0x4000001AL) // // MessageId: STATUS_ALREADY_WIN32 // // MessageText: // // STATUS_ALREADY_WIN32 // #define STATUS_ALREADY_WIN32 ((NTSTATUS)0x4000001BL) // // MessageId: STATUS_WX86_UNSIMULATE // // MessageText: // // Exception status code used by Win32 x86 emulation subsystem. // #define STATUS_WX86_UNSIMULATE ((NTSTATUS)0x4000001CL) // // MessageId: STATUS_WX86_CONTINUE // // MessageText: // // Exception status code used by Win32 x86 emulation subsystem. // #define STATUS_WX86_CONTINUE ((NTSTATUS)0x4000001DL) // // MessageId: STATUS_WX86_SINGLE_STEP // // MessageText: // // Exception status code used by Win32 x86 emulation subsystem. // #define STATUS_WX86_SINGLE_STEP ((NTSTATUS)0x4000001EL) // // MessageId: STATUS_WX86_BREAKPOINT // // MessageText: // // Exception status code used by Win32 x86 emulation subsystem. // #define STATUS_WX86_BREAKPOINT ((NTSTATUS)0x4000001FL) // // MessageId: STATUS_WX86_EXCEPTION_CONTINUE // // MessageText: // // Exception status code used by Win32 x86 emulation subsystem. // #define STATUS_WX86_EXCEPTION_CONTINUE ((NTSTATUS)0x40000020L) // // MessageId: STATUS_WX86_EXCEPTION_LASTCHANCE // // MessageText: // // Exception status code used by Win32 x86 emulation subsystem. // #define STATUS_WX86_EXCEPTION_LASTCHANCE ((NTSTATUS)0x40000021L) // // MessageId: STATUS_WX86_EXCEPTION_CHAIN // // MessageText: // // Exception status code used by Win32 x86 emulation subsystem. // #define STATUS_WX86_EXCEPTION_CHAIN ((NTSTATUS)0x40000022L) // // MessageId: STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE // // MessageText: // // {Machine Type Mismatch} // The image file %hs is valid, but is for a machine type other than the current machine. // #define STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE ((NTSTATUS)0x40000023L) // // MessageId: STATUS_NO_YIELD_PERFORMED // // MessageText: // // A yield execution was performed and no thread was available to run. // #define STATUS_NO_YIELD_PERFORMED ((NTSTATUS)0x40000024L) // // MessageId: STATUS_TIMER_RESUME_IGNORED // // MessageText: // // The resumable flag to a timer API was ignored. // #define STATUS_TIMER_RESUME_IGNORED ((NTSTATUS)0x40000025L) // // MessageId: STATUS_ARBITRATION_UNHANDLED // // MessageText: // // The arbiter has deferred arbitration of these resources to its parent // #define STATUS_ARBITRATION_UNHANDLED ((NTSTATUS)0x40000026L) // // MessageId: STATUS_CARDBUS_NOT_SUPPORTED // // MessageText: // // The device "%hs" has detected a CardBus card in its slot, but the firmware on this system is not configured to allow the CardBus controller to be run in CardBus mode. // The operating system will currently accept only 16-bit (R2) pc-cards on this controller. // #define STATUS_CARDBUS_NOT_SUPPORTED ((NTSTATUS)0x40000027L) // // MessageId: STATUS_WX86_CREATEWX86TIB // // MessageText: // // Exception status code used by Win32 x86 emulation subsystem. // #define STATUS_WX86_CREATEWX86TIB ((NTSTATUS)0x40000028L) // // MessageId: STATUS_MP_PROCESSOR_MISMATCH // // MessageText: // // The CPUs in this multiprocessor system are not all the same revision level. To use all processors the operating system restricts itself to the features of the least capable processor in the system. Should problems occur with this system, contact // the CPU manufacturer to see if this mix of processors is supported. // #define STATUS_MP_PROCESSOR_MISMATCH ((NTSTATUS)0x40000029L) // // MessageId: STATUS_HIBERNATED // // MessageText: // // The system was put into hibernation. // #define STATUS_HIBERNATED ((NTSTATUS)0x4000002AL) // // MessageId: STATUS_RESUME_HIBERNATION // // MessageText: // // The system was resumed from hibernation. // #define STATUS_RESUME_HIBERNATION ((NTSTATUS)0x4000002BL) // // MessageId: STATUS_FIRMWARE_UPDATED // // MessageText: // // Windows has detected that the system firmware (BIOS) was updated [previous firmware date = %2, current firmware date %3]. // #define STATUS_FIRMWARE_UPDATED ((NTSTATUS)0x4000002CL) // // MessageId: STATUS_DRIVERS_LEAKING_LOCKED_PAGES // // MessageText: // // A device driver is leaking locked I/O pages causing system degradation. The system has automatically enabled tracking code in order to try and catch the culprit. // #define STATUS_DRIVERS_LEAKING_LOCKED_PAGES ((NTSTATUS)0x4000002DL) // // MessageId: DBG_REPLY_LATER // // MessageText: // // Debugger will reply later. // #define DBG_REPLY_LATER ((NTSTATUS)0x40010001L) // // MessageId: DBG_UNABLE_TO_PROVIDE_HANDLE // // MessageText: // // Debugger can not provide handle. // #define DBG_UNABLE_TO_PROVIDE_HANDLE ((NTSTATUS)0x40010002L) // // MessageId: DBG_TERMINATE_THREAD // // MessageText: // // Debugger terminated thread. // #ifdef UNDER_CE #define DBG_TERMINATE_THREAD ((NTSTATUS)0x40010003L) // winnt // // MessageId: DBG_TERMINATE_PROCESS // // MessageText: // // Debugger terminated process. // #define DBG_TERMINATE_PROCESS ((NTSTATUS)0x40010004L) // winnt // // MessageId: DBG_CONTROL_C // // MessageText: // // Debugger got control C. // #define DBG_CONTROL_C ((NTSTATUS)0x40010005L) // winnt #endif // // MessageId: DBG_PRINTEXCEPTION_C // // MessageText: // // Debugger printed exception on control C. // #define DBG_PRINTEXCEPTION_C ((NTSTATUS)0x40010006L) // // MessageId: DBG_RIPEXCEPTION // // MessageText: // // Debugger received RIP exception. // #define DBG_RIPEXCEPTION ((NTSTATUS)0x40010007L) // // MessageId: DBG_CONTROL_BREAK // // MessageText: // // Debugger received control break. // #ifdef UNDER_CE #define DBG_CONTROL_BREAK ((NTSTATUS)0x40010008L) // winnt #endif // // MessageId: DBG_COMMAND_EXCEPTION // // MessageText: // // Debugger command communication exception. // #define DBG_COMMAND_EXCEPTION ((NTSTATUS)0x40010009L) // winnt ///////////////////////////////////////////////////////////////////////// // // Standard Warning values // // // Note: Do NOT use the value 0x80000000L, as this is a non-portable value // for the NT_SUCCESS macro. Warning values start with a code of 1. // ///////////////////////////////////////////////////////////////////////// // // MessageId: STATUS_GUARD_PAGE_VIOLATION // // MessageText: // // {EXCEPTION} // Guard Page Exception // A page of memory that marks the end of a data structure, such as a stack or an array, has been accessed. // #define STATUS_GUARD_PAGE_VIOLATION ((NTSTATUS)0x80000001L) // winnt // // MessageId: STATUS_DATATYPE_MISALIGNMENT // // MessageText: // // {EXCEPTION} // Alignment Fault // A datatype misalignment was detected in a load or store instruction. // #define STATUS_DATATYPE_MISALIGNMENT ((NTSTATUS)0x80000002L) // winnt // // MessageId: STATUS_BREAKPOINT // // MessageText: // // {EXCEPTION} // Breakpoint // A breakpoint has been reached. // #define STATUS_BREAKPOINT ((NTSTATUS)0x80000003L) // winnt // // MessageId: STATUS_SINGLE_STEP // // MessageText: // // {EXCEPTION} // Single Step // A single step or trace operation has just been completed. // #define STATUS_SINGLE_STEP ((NTSTATUS)0x80000004L) // winnt // // MessageId: STATUS_BUFFER_OVERFLOW // // MessageText: // // {Buffer Overflow} // The data was too large to fit into the specified buffer. // #define STATUS_BUFFER_OVERFLOW ((NTSTATUS)0x80000005L) // // MessageId: STATUS_NO_MORE_FILES // // MessageText: // // {No More Files} // No more files were found which match the file specification. // #define STATUS_NO_MORE_FILES ((NTSTATUS)0x80000006L) // // MessageId: STATUS_WAKE_SYSTEM_DEBUGGER // // MessageText: // // {Kernel Debugger Awakened} // the system debugger was awakened by an interrupt. // #define STATUS_WAKE_SYSTEM_DEBUGGER ((NTSTATUS)0x80000007L) // // MessageId: STATUS_HANDLES_CLOSED // // MessageText: // // {Handles Closed} // Handles to objects have been automatically closed as a result of the requested operation. // #define STATUS_HANDLES_CLOSED ((NTSTATUS)0x8000000AL) // // MessageId: STATUS_NO_INHERITANCE // // MessageText: // // {Non-Inheritable ACL} // An access control list (ACL) contains no components that can be inherited. // #define STATUS_NO_INHERITANCE ((NTSTATUS)0x8000000BL) // // MessageId: STATUS_GUID_SUBSTITUTION_MADE // // MessageText: // // {GUID Substitution} // During the translation of a global identifier (GUID) to a Windows security ID (SID), no administratively-defined GUID prefix was found. // A substitute prefix was used, which will not compromise system security. // However, this may provide a more restrictive access than intended. // #define STATUS_GUID_SUBSTITUTION_MADE ((NTSTATUS)0x8000000CL) // // MessageId: STATUS_PARTIAL_COPY // // MessageText: // // {Partial Copy} // Due to protection conflicts not all the requested bytes could be copied. // #define STATUS_PARTIAL_COPY ((NTSTATUS)0x8000000DL) // // MessageId: STATUS_DEVICE_PAPER_EMPTY // // MessageText: // // {Out of Paper} // The printer is out of paper. // #define STATUS_DEVICE_PAPER_EMPTY ((NTSTATUS)0x8000000EL) // // MessageId: STATUS_DEVICE_POWERED_OFF // // MessageText: // // {Device Power Is Off} // The printer power has been turned off. // #define STATUS_DEVICE_POWERED_OFF ((NTSTATUS)0x8000000FL) // // MessageId: STATUS_DEVICE_OFF_LINE // // MessageText: // // {Device Offline} // The printer has been taken offline. // #define STATUS_DEVICE_OFF_LINE ((NTSTATUS)0x80000010L) // // MessageId: STATUS_DEVICE_BUSY // // MessageText: // // {Device Busy} // The device is currently busy. // #define STATUS_DEVICE_BUSY ((NTSTATUS)0x80000011L) // // MessageId: STATUS_NO_MORE_EAS // // MessageText: // // {No More EAs} // No more extended attributes (EAs) were found for the file. // #define STATUS_NO_MORE_EAS ((NTSTATUS)0x80000012L) // // MessageId: STATUS_INVALID_EA_NAME // // MessageText: // // {Illegal EA} // The specified extended attribute (EA) name contains at least one illegal character. // #define STATUS_INVALID_EA_NAME ((NTSTATUS)0x80000013L) // // MessageId: STATUS_EA_LIST_INCONSISTENT // // MessageText: // // {Inconsistent EA List} // The extended attribute (EA) list is inconsistent. // #define STATUS_EA_LIST_INCONSISTENT ((NTSTATUS)0x80000014L) // // MessageId: STATUS_INVALID_EA_FLAG // // MessageText: // // {Invalid EA Flag} // An invalid extended attribute (EA) flag was set. // #define STATUS_INVALID_EA_FLAG ((NTSTATUS)0x80000015L) // // MessageId: STATUS_VERIFY_REQUIRED // // MessageText: // // {Verifying Disk} // The media has changed and a verify operation is in progress so no reads or writes may be performed to the device, except those used in the verify operation. // #define STATUS_VERIFY_REQUIRED ((NTSTATUS)0x80000016L) // // MessageId: STATUS_EXTRANEOUS_INFORMATION // // MessageText: // // {Too Much Information} // The specified access control list (ACL) contained more information than was expected. // #define STATUS_EXTRANEOUS_INFORMATION ((NTSTATUS)0x80000017L) // // MessageId: STATUS_RXACT_COMMIT_NECESSARY // // MessageText: // // This warning level status indicates that the transaction state already exists for the registry sub-tree, but that a transaction commit was previously aborted. // The commit has NOT been completed, but has not been rolled back either (so it may still be committed if desired). // #define STATUS_RXACT_COMMIT_NECESSARY ((NTSTATUS)0x80000018L) // // MessageId: STATUS_NO_MORE_ENTRIES // // MessageText: // // {No More Entries} // No more entries are available from an enumeration operation. // #define STATUS_NO_MORE_ENTRIES ((NTSTATUS)0x8000001AL) // // MessageId: STATUS_FILEMARK_DETECTED // // MessageText: // // {Filemark Found} // A filemark was detected. // #define STATUS_FILEMARK_DETECTED ((NTSTATUS)0x8000001BL) // // MessageId: STATUS_MEDIA_CHANGED // // MessageText: // // {Media Changed} // The media may have changed. // #define STATUS_MEDIA_CHANGED ((NTSTATUS)0x8000001CL) // // MessageId: STATUS_BUS_RESET // // MessageText: // // {I/O Bus Reset} // An I/O bus reset was detected. // #define STATUS_BUS_RESET ((NTSTATUS)0x8000001DL) // // MessageId: STATUS_END_OF_MEDIA // // MessageText: // // {End of Media} // The end of the media was encountered. // #define STATUS_END_OF_MEDIA ((NTSTATUS)0x8000001EL) // // MessageId: STATUS_BEGINNING_OF_MEDIA // // MessageText: // // Beginning of tape or partition has been detected. // #define STATUS_BEGINNING_OF_MEDIA ((NTSTATUS)0x8000001FL) // // MessageId: STATUS_MEDIA_CHECK // // MessageText: // // {Media Changed} // The media may have changed. // #define STATUS_MEDIA_CHECK ((NTSTATUS)0x80000020L) // // MessageId: STATUS_SETMARK_DETECTED // // MessageText: // // A tape access reached a setmark. // #define STATUS_SETMARK_DETECTED ((NTSTATUS)0x80000021L) // // MessageId: STATUS_NO_DATA_DETECTED // // MessageText: // // During a tape access, the end of the data written is reached. // #define STATUS_NO_DATA_DETECTED ((NTSTATUS)0x80000022L) // // MessageId: STATUS_REDIRECTOR_HAS_OPEN_HANDLES // // MessageText: // // The redirector is in use and cannot be unloaded. // #define STATUS_REDIRECTOR_HAS_OPEN_HANDLES ((NTSTATUS)0x80000023L) // // MessageId: STATUS_SERVER_HAS_OPEN_HANDLES // // MessageText: // // The server is in use and cannot be unloaded. // #define STATUS_SERVER_HAS_OPEN_HANDLES ((NTSTATUS)0x80000024L) // // MessageId: STATUS_ALREADY_DISCONNECTED // // MessageText: // // The specified connection has already been disconnected. // #define STATUS_ALREADY_DISCONNECTED ((NTSTATUS)0x80000025L) // // MessageId: STATUS_LONGJUMP // // MessageText: // // A long jump has been executed. // #define STATUS_LONGJUMP ((NTSTATUS)0x80000026L) // // MessageId: STATUS_CLEANER_CARTRIDGE_INSTALLED // // MessageText: // // A cleaner cartridge is present in the tape library. // #define STATUS_CLEANER_CARTRIDGE_INSTALLED ((NTSTATUS)0x80000027L) // // MessageId: STATUS_PLUGPLAY_QUERY_VETOED // // MessageText: // // The Plug and Play query operation was not successful. // #define STATUS_PLUGPLAY_QUERY_VETOED ((NTSTATUS)0x80000028L) // // MessageId: STATUS_UNWIND_CONSOLIDATE // // MessageText: // // A frame consolidation has been executed. // #define STATUS_UNWIND_CONSOLIDATE ((NTSTATUS)0x80000029L) // // MessageId: STATUS_REGISTRY_HIVE_RECOVERED // // MessageText: // // {Registry Hive Recovered} // Registry hive (file): // %hs // was corrupted and it has been recovered. Some data might have been lost. // #define STATUS_REGISTRY_HIVE_RECOVERED ((NTSTATUS)0x8000002AL) // // MessageId: STATUS_DLL_MIGHT_BE_INSECURE // // MessageText: // // The application is attempting to run executable code from the module %hs. This may be insecure. An alternative, %hs, is available. Should the application use the secure module %hs? // #define STATUS_DLL_MIGHT_BE_INSECURE ((NTSTATUS)0x8000002BL) // // MessageId: STATUS_DLL_MIGHT_BE_INCOMPATIBLE // // MessageText: // // The application is loading executable code from the module %hs. This is secure, but may be incompatible with previous releases of the operating system. An alternative, %hs, is available. Should the application use the secure module %hs? // #define STATUS_DLL_MIGHT_BE_INCOMPATIBLE ((NTSTATUS)0x8000002CL) // // MessageId: DBG_EXCEPTION_NOT_HANDLED // // MessageText: // // Debugger did not handle the exception. // #ifndef UNDER_CE #define DBG_EXCEPTION_NOT_HANDLED ((NTSTATUS)0x80010001L) // winnt #endif // // MessageId: STATUS_CLUSTER_NODE_ALREADY_UP // // MessageText: // // The cluster node is already up. // #define STATUS_CLUSTER_NODE_ALREADY_UP ((NTSTATUS)0x80130001L) // // MessageId: STATUS_CLUSTER_NODE_ALREADY_DOWN // // MessageText: // // The cluster node is already down. // #define STATUS_CLUSTER_NODE_ALREADY_DOWN ((NTSTATUS)0x80130002L) // // MessageId: STATUS_CLUSTER_NETWORK_ALREADY_ONLINE // // MessageText: // // The cluster network is already online. // #define STATUS_CLUSTER_NETWORK_ALREADY_ONLINE ((NTSTATUS)0x80130003L) // // MessageId: STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE // // MessageText: // // The cluster network is already offline. // #define STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE ((NTSTATUS)0x80130004L) // // MessageId: STATUS_CLUSTER_NODE_ALREADY_MEMBER // // MessageText: // // The cluster node is already a member of the cluster. // #define STATUS_CLUSTER_NODE_ALREADY_MEMBER ((NTSTATUS)0x80130005L) ///////////////////////////////////////////////////////////////////////// // // Standard Error values // ///////////////////////////////////////////////////////////////////////// // // MessageId: STATUS_UNSUCCESSFUL // // MessageText: // // {Operation Failed} // The requested operation was unsuccessful. // #define STATUS_UNSUCCESSFUL ((NTSTATUS)0xC0000001L) // // MessageId: STATUS_NOT_IMPLEMENTED // // MessageText: // // {Not Implemented} // The requested operation is not implemented. // #define STATUS_NOT_IMPLEMENTED ((NTSTATUS)0xC0000002L) // // MessageId: STATUS_INVALID_INFO_CLASS // // MessageText: // // {Invalid Parameter} // The specified information class is not a valid information class for the specified object. // #define STATUS_INVALID_INFO_CLASS ((NTSTATUS)0xC0000003L) // ntsubauth // // MessageId: STATUS_INFO_LENGTH_MISMATCH // // MessageText: // // The specified information record length does not match the length required for the specified information class. // #define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xC0000004L) // // MessageId: STATUS_ACCESS_VIOLATION // // MessageText: // // The instruction at "0x%08lx" referenced memory at "0x%08lx". The memory could not be "%s". // #define STATUS_ACCESS_VIOLATION ((NTSTATUS)0xC0000005L) // winnt // // MessageId: STATUS_IN_PAGE_ERROR // // MessageText: // // The instruction at "0x%08lx" referenced memory at "0x%08lx". The required data was not placed into memory because of an I/O error status of "0x%08lx". // #define STATUS_IN_PAGE_ERROR ((NTSTATUS)0xC0000006L) // winnt // // MessageId: STATUS_PAGEFILE_QUOTA // // MessageText: // // The pagefile quota for the process has been exhausted. // #define STATUS_PAGEFILE_QUOTA ((NTSTATUS)0xC0000007L) // // MessageId: STATUS_INVALID_HANDLE // // MessageText: // // An invalid HANDLE was specified. // #define STATUS_INVALID_HANDLE ((NTSTATUS)0xC0000008L) // winnt // // MessageId: STATUS_BAD_INITIAL_STACK // // MessageText: // // An invalid initial stack was specified in a call to NtCreateThread. // #define STATUS_BAD_INITIAL_STACK ((NTSTATUS)0xC0000009L) // // MessageId: STATUS_BAD_INITIAL_PC // // MessageText: // // An invalid initial start address was specified in a call to NtCreateThread. // #define STATUS_BAD_INITIAL_PC ((NTSTATUS)0xC000000AL) // // MessageId: STATUS_INVALID_CID // // MessageText: // // An invalid Client ID was specified. // #define STATUS_INVALID_CID ((NTSTATUS)0xC000000BL) // // MessageId: STATUS_TIMER_NOT_CANCELED // // MessageText: // // An attempt was made to cancel or set a timer that has an associated APC and the subject thread is not the thread that originally set the timer with an associated APC routine. // #define STATUS_TIMER_NOT_CANCELED ((NTSTATUS)0xC000000CL) // // MessageId: STATUS_INVALID_PARAMETER // // MessageText: // // An invalid parameter was passed to a service or function. // #define STATUS_INVALID_PARAMETER ((NTSTATUS)0xC000000DL) // // MessageId: STATUS_NO_SUCH_DEVICE // // MessageText: // // A device which does not exist was specified. // #define STATUS_NO_SUCH_DEVICE ((NTSTATUS)0xC000000EL) // // MessageId: STATUS_NO_SUCH_FILE // // MessageText: // // {File Not Found} // The file %hs does not exist. // #define STATUS_NO_SUCH_FILE ((NTSTATUS)0xC000000FL) // // MessageId: STATUS_INVALID_DEVICE_REQUEST // // MessageText: // // The specified request is not a valid operation for the target device. // #define STATUS_INVALID_DEVICE_REQUEST ((NTSTATUS)0xC0000010L) // // MessageId: STATUS_END_OF_FILE // // MessageText: // // The end-of-file marker has been reached. There is no valid data in the file beyond this marker. // #define STATUS_END_OF_FILE ((NTSTATUS)0xC0000011L) // // MessageId: STATUS_WRONG_VOLUME // // MessageText: // // {Wrong Volume} // The wrong volume is in the drive. // Please insert volume %hs into drive %hs. // #define STATUS_WRONG_VOLUME ((NTSTATUS)0xC0000012L) // // MessageId: STATUS_NO_MEDIA_IN_DEVICE // // MessageText: // // {No Disk} // There is no disk in the drive. // Please insert a disk into drive %hs. // #define STATUS_NO_MEDIA_IN_DEVICE ((NTSTATUS)0xC0000013L) // // MessageId: STATUS_UNRECOGNIZED_MEDIA // // MessageText: // // {Unknown Disk Format} // The disk in drive %hs is not formatted properly. // Please check the disk, and reformat if necessary. // #define STATUS_UNRECOGNIZED_MEDIA ((NTSTATUS)0xC0000014L) // // MessageId: STATUS_NONEXISTENT_SECTOR // // MessageText: // // {Sector Not Found} // The specified sector does not exist. // #define STATUS_NONEXISTENT_SECTOR ((NTSTATUS)0xC0000015L) // // MessageId: STATUS_MORE_PROCESSING_REQUIRED // // MessageText: // // {Still Busy} // The specified I/O request packet (IRP) cannot be disposed of because the I/O operation is not complete. // #define STATUS_MORE_PROCESSING_REQUIRED ((NTSTATUS)0xC0000016L) // // MessageId: STATUS_NO_MEMORY // // MessageText: // // {Not Enough Quota} // Not enough virtual memory or paging file quota is available to complete the specified operation. // #define STATUS_NO_MEMORY ((NTSTATUS)0xC0000017L) // winnt // // MessageId: STATUS_CONFLICTING_ADDRESSES // // MessageText: // // {Conflicting Address Range} // The specified address range conflicts with the address space. // #define STATUS_CONFLICTING_ADDRESSES ((NTSTATUS)0xC0000018L) // // MessageId: STATUS_NOT_MAPPED_VIEW // // MessageText: // // Address range to unmap is not a mapped view. // #define STATUS_NOT_MAPPED_VIEW ((NTSTATUS)0xC0000019L) // // MessageId: STATUS_UNABLE_TO_FREE_VM // // MessageText: // // Virtual memory cannot be freed. // #define STATUS_UNABLE_TO_FREE_VM ((NTSTATUS)0xC000001AL) // // MessageId: STATUS_UNABLE_TO_DELETE_SECTION // // MessageText: // // Specified section cannot be deleted. // #define STATUS_UNABLE_TO_DELETE_SECTION ((NTSTATUS)0xC000001BL) // // MessageId: STATUS_INVALID_SYSTEM_SERVICE // // MessageText: // // An invalid system service was specified in a system service call. // #define STATUS_INVALID_SYSTEM_SERVICE ((NTSTATUS)0xC000001CL) // // MessageId: STATUS_ILLEGAL_INSTRUCTION // // MessageText: // // {EXCEPTION} // Illegal Instruction // An attempt was made to execute an illegal instruction. // #define STATUS_ILLEGAL_INSTRUCTION ((NTSTATUS)0xC000001DL) // winnt // // MessageId: STATUS_INVALID_LOCK_SEQUENCE // // MessageText: // // {Invalid Lock Sequence} // An attempt was made to execute an invalid lock sequence. // #define STATUS_INVALID_LOCK_SEQUENCE ((NTSTATUS)0xC000001EL) // // MessageId: STATUS_INVALID_VIEW_SIZE // // MessageText: // // {Invalid Mapping} // An attempt was made to create a view for a section which is bigger than the section. // #define STATUS_INVALID_VIEW_SIZE ((NTSTATUS)0xC000001FL) // // MessageId: STATUS_INVALID_FILE_FOR_SECTION // // MessageText: // // {Bad File} // The attributes of the specified mapping file for a section of memory cannot be read. // #define STATUS_INVALID_FILE_FOR_SECTION ((NTSTATUS)0xC0000020L) // // MessageId: STATUS_ALREADY_COMMITTED // // MessageText: // // {Already Committed} // The specified address range is already committed. // #define STATUS_ALREADY_COMMITTED ((NTSTATUS)0xC0000021L) // // MessageId: STATUS_ACCESS_DENIED // // MessageText: // // {Access Denied} // A process has requested access to an object, but has not been granted those access rights. // #define STATUS_ACCESS_DENIED ((NTSTATUS)0xC0000022L) // // MessageId: STATUS_BUFFER_TOO_SMALL // // MessageText: // // {Buffer Too Small} // The buffer is too small to contain the entry. No information has been written to the buffer. // #define STATUS_BUFFER_TOO_SMALL ((NTSTATUS)0xC0000023L) // // MessageId: STATUS_OBJECT_TYPE_MISMATCH // // MessageText: // // {Wrong Type} // There is a mismatch between the type of object required by the requested operation and the type of object that is specified in the request. // #define STATUS_OBJECT_TYPE_MISMATCH ((NTSTATUS)0xC0000024L) // // MessageId: STATUS_NONCONTINUABLE_EXCEPTION // // MessageText: // // {EXCEPTION} // Cannot Continue // Windows cannot continue from this exception. // #define STATUS_NONCONTINUABLE_EXCEPTION ((NTSTATUS)0xC0000025L) // winnt // // MessageId: STATUS_INVALID_DISPOSITION // // MessageText: // // An invalid exception disposition was returned by an exception handler. // #define STATUS_INVALID_DISPOSITION ((NTSTATUS)0xC0000026L) // winnt // // MessageId: STATUS_UNWIND // // MessageText: // // Unwind exception code. // #define STATUS_UNWIND ((NTSTATUS)0xC0000027L) // // MessageId: STATUS_BAD_STACK // // MessageText: // // An invalid or unaligned stack was encountered during an unwind operation. // #define STATUS_BAD_STACK ((NTSTATUS)0xC0000028L) // // MessageId: STATUS_INVALID_UNWIND_TARGET // // MessageText: // // An invalid unwind target was encountered during an unwind operation. // #define STATUS_INVALID_UNWIND_TARGET ((NTSTATUS)0xC0000029L) // // MessageId: STATUS_NOT_LOCKED // // MessageText: // // An attempt was made to unlock a page of memory which was not locked. // #define STATUS_NOT_LOCKED ((NTSTATUS)0xC000002AL) // // MessageId: STATUS_PARITY_ERROR // // MessageText: // // Device parity error on I/O operation. // #define STATUS_PARITY_ERROR ((NTSTATUS)0xC000002BL) // // MessageId: STATUS_UNABLE_TO_DECOMMIT_VM // // MessageText: // // An attempt was made to decommit uncommitted virtual memory. // #define STATUS_UNABLE_TO_DECOMMIT_VM ((NTSTATUS)0xC000002CL) // // MessageId: STATUS_NOT_COMMITTED // // MessageText: // // An attempt was made to change the attributes on memory that has not been committed. // #define STATUS_NOT_COMMITTED ((NTSTATUS)0xC000002DL) // // MessageId: STATUS_INVALID_PORT_ATTRIBUTES // // MessageText: // // Invalid Object Attributes specified to NtCreatePort or invalid Port Attributes specified to NtConnectPort // #define STATUS_INVALID_PORT_ATTRIBUTES ((NTSTATUS)0xC000002EL) // // MessageId: STATUS_PORT_MESSAGE_TOO_LONG // // MessageText: // // Length of message passed to NtRequestPort or NtRequestWaitReplyPort was longer than the maximum message allowed by the port. // #define STATUS_PORT_MESSAGE_TOO_LONG ((NTSTATUS)0xC000002FL) // // MessageId: STATUS_INVALID_PARAMETER_MIX // // MessageText: // // An invalid combination of parameters was specified. // #define STATUS_INVALID_PARAMETER_MIX ((NTSTATUS)0xC0000030L) // // MessageId: STATUS_INVALID_QUOTA_LOWER // // MessageText: // // An attempt was made to lower a quota limit below the current usage. // #define STATUS_INVALID_QUOTA_LOWER ((NTSTATUS)0xC0000031L) // // MessageId: STATUS_DISK_CORRUPT_ERROR // // MessageText: // // {Corrupt Disk} // The file system structure on the disk is corrupt and unusable. // Please run the Chkdsk utility on the volume %hs. // #define STATUS_DISK_CORRUPT_ERROR ((NTSTATUS)0xC0000032L) // // MessageId: STATUS_OBJECT_NAME_INVALID // // MessageText: // // Object Name invalid. // #define STATUS_OBJECT_NAME_INVALID ((NTSTATUS)0xC0000033L) // // MessageId: STATUS_OBJECT_NAME_NOT_FOUND // // MessageText: // // Object Name not found. // #define STATUS_OBJECT_NAME_NOT_FOUND ((NTSTATUS)0xC0000034L) // // MessageId: STATUS_OBJECT_NAME_COLLISION // // MessageText: // // Object Name already exists. // #define STATUS_OBJECT_NAME_COLLISION ((NTSTATUS)0xC0000035L) // // MessageId: STATUS_PORT_DISCONNECTED // // MessageText: // // Attempt to send a message to a disconnected communication port. // #define STATUS_PORT_DISCONNECTED ((NTSTATUS)0xC0000037L) // // MessageId: STATUS_DEVICE_ALREADY_ATTACHED // // MessageText: // // An attempt was made to attach to a device that was already attached to another device. // #define STATUS_DEVICE_ALREADY_ATTACHED ((NTSTATUS)0xC0000038L) // // MessageId: STATUS_OBJECT_PATH_INVALID // // MessageText: // // Object Path Component was not a directory object. // #define STATUS_OBJECT_PATH_INVALID ((NTSTATUS)0xC0000039L) // // MessageId: STATUS_OBJECT_PATH_NOT_FOUND // // MessageText: // // {Path Not Found} // The path %hs does not exist. // #define STATUS_OBJECT_PATH_NOT_FOUND ((NTSTATUS)0xC000003AL) // // MessageId: STATUS_OBJECT_PATH_SYNTAX_BAD // // MessageText: // // Object Path Component was not a directory object. // #define STATUS_OBJECT_PATH_SYNTAX_BAD ((NTSTATUS)0xC000003BL) // // MessageId: STATUS_DATA_OVERRUN // // MessageText: // // {Data Overrun} // A data overrun error occurred. // #define STATUS_DATA_OVERRUN ((NTSTATUS)0xC000003CL) // // MessageId: STATUS_DATA_LATE_ERROR // // MessageText: // // {Data Late} // A data late error occurred. // #define STATUS_DATA_LATE_ERROR ((NTSTATUS)0xC000003DL) // // MessageId: STATUS_DATA_ERROR // // MessageText: // // {Data Error} // An error in reading or writing data occurred. // #define STATUS_DATA_ERROR ((NTSTATUS)0xC000003EL) // // MessageId: STATUS_CRC_ERROR // // MessageText: // // {Bad CRC} // A cyclic redundancy check (CRC) checksum error occurred. // #define STATUS_CRC_ERROR ((NTSTATUS)0xC000003FL) // // MessageId: STATUS_SECTION_TOO_BIG // // MessageText: // // {Section Too Large} // The specified section is too big to map the file. // #define STATUS_SECTION_TOO_BIG ((NTSTATUS)0xC0000040L) // // MessageId: STATUS_PORT_CONNECTION_REFUSED // // MessageText: // // The NtConnectPort request is refused. // #define STATUS_PORT_CONNECTION_REFUSED ((NTSTATUS)0xC0000041L) // // MessageId: STATUS_INVALID_PORT_HANDLE // // MessageText: // // The type of port handle is invalid for the operation requested. // #define STATUS_INVALID_PORT_HANDLE ((NTSTATUS)0xC0000042L) // // MessageId: STATUS_SHARING_VIOLATION // // MessageText: // // A file cannot be opened because the share access flags are incompatible. // #define STATUS_SHARING_VIOLATION ((NTSTATUS)0xC0000043L) // // MessageId: STATUS_QUOTA_EXCEEDED // // MessageText: // // Insufficient quota exists to complete the operation // #define STATUS_QUOTA_EXCEEDED ((NTSTATUS)0xC0000044L) // // MessageId: STATUS_INVALID_PAGE_PROTECTION // // MessageText: // // The specified page protection was not valid. // #define STATUS_INVALID_PAGE_PROTECTION ((NTSTATUS)0xC0000045L) // // MessageId: STATUS_MUTANT_NOT_OWNED // // MessageText: // // An attempt to release a mutant object was made by a thread that was not the owner of the mutant object. // #define STATUS_MUTANT_NOT_OWNED ((NTSTATUS)0xC0000046L) // // MessageId: STATUS_SEMAPHORE_LIMIT_EXCEEDED // // MessageText: // // An attempt was made to release a semaphore such that its maximum count would have been exceeded. // #define STATUS_SEMAPHORE_LIMIT_EXCEEDED ((NTSTATUS)0xC0000047L) // // MessageId: STATUS_PORT_ALREADY_SET // // MessageText: // // An attempt to set a processes DebugPort or ExceptionPort was made, but a port already exists in the process or // an attempt to set a file's CompletionPort made, but a port was already set in the file. // #define STATUS_PORT_ALREADY_SET ((NTSTATUS)0xC0000048L) // // MessageId: STATUS_SECTION_NOT_IMAGE // // MessageText: // // An attempt was made to query image information on a section which does not map an image. // #define STATUS_SECTION_NOT_IMAGE ((NTSTATUS)0xC0000049L) // // MessageId: STATUS_SUSPEND_COUNT_EXCEEDED // // MessageText: // // An attempt was made to suspend a thread whose suspend count was at its maximum. // #define STATUS_SUSPEND_COUNT_EXCEEDED ((NTSTATUS)0xC000004AL) // // MessageId: STATUS_THREAD_IS_TERMINATING // // MessageText: // // An attempt was made to suspend a thread that has begun termination. // #define STATUS_THREAD_IS_TERMINATING ((NTSTATUS)0xC000004BL) // // MessageId: STATUS_BAD_WORKING_SET_LIMIT // // MessageText: // // An attempt was made to set the working set limit to an invalid value (minimum greater than maximum, etc). // #define STATUS_BAD_WORKING_SET_LIMIT ((NTSTATUS)0xC000004CL) // // MessageId: STATUS_INCOMPATIBLE_FILE_MAP // // MessageText: // // A section was created to map a file which is not compatible to an already existing section which maps the same file. // #define STATUS_INCOMPATIBLE_FILE_MAP ((NTSTATUS)0xC000004DL) // // MessageId: STATUS_SECTION_PROTECTION // // MessageText: // // A view to a section specifies a protection which is incompatible with the initial view's protection. // #define STATUS_SECTION_PROTECTION ((NTSTATUS)0xC000004EL) // // MessageId: STATUS_EAS_NOT_SUPPORTED // // MessageText: // // An operation involving EAs failed because the file system does not support EAs. // #define STATUS_EAS_NOT_SUPPORTED ((NTSTATUS)0xC000004FL) // // MessageId: STATUS_EA_TOO_LARGE // // MessageText: // // An EA operation failed because EA set is too large. // #define STATUS_EA_TOO_LARGE ((NTSTATUS)0xC0000050L) // // MessageId: STATUS_NONEXISTENT_EA_ENTRY // // MessageText: // // An EA operation failed because the name or EA index is invalid. // #define STATUS_NONEXISTENT_EA_ENTRY ((NTSTATUS)0xC0000051L) // // MessageId: STATUS_NO_EAS_ON_FILE // // MessageText: // // The file for which EAs were requested has no EAs. // #define STATUS_NO_EAS_ON_FILE ((NTSTATUS)0xC0000052L) // // MessageId: STATUS_EA_CORRUPT_ERROR // // MessageText: // // The EA is corrupt and non-readable. // #define STATUS_EA_CORRUPT_ERROR ((NTSTATUS)0xC0000053L) // // MessageId: STATUS_FILE_LOCK_CONFLICT // // MessageText: // // A requested read/write cannot be granted due to a conflicting file lock. // #define STATUS_FILE_LOCK_CONFLICT ((NTSTATUS)0xC0000054L) // // MessageId: STATUS_LOCK_NOT_GRANTED // // MessageText: // // A requested file lock cannot be granted due to other existing locks. // #define STATUS_LOCK_NOT_GRANTED ((NTSTATUS)0xC0000055L) // // MessageId: STATUS_DELETE_PENDING // // MessageText: // // A non close operation has been requested of a file object with a delete pending. // #define STATUS_DELETE_PENDING ((NTSTATUS)0xC0000056L) // // MessageId: STATUS_CTL_FILE_NOT_SUPPORTED // // MessageText: // // An attempt was made to set the control attribute on a file. This attribute is not supported in the target file system. // #define STATUS_CTL_FILE_NOT_SUPPORTED ((NTSTATUS)0xC0000057L) // // MessageId: STATUS_UNKNOWN_REVISION // // MessageText: // // Indicates a revision number encountered or specified is not one known by the service. It may be a more recent revision than the service is aware of. // #define STATUS_UNKNOWN_REVISION ((NTSTATUS)0xC0000058L) // // MessageId: STATUS_REVISION_MISMATCH // // MessageText: // // Indicates two revision levels are incompatible. // #define STATUS_REVISION_MISMATCH ((NTSTATUS)0xC0000059L) // // MessageId: STATUS_INVALID_OWNER // // MessageText: // // Indicates a particular Security ID may not be assigned as the owner of an object. // #define STATUS_INVALID_OWNER ((NTSTATUS)0xC000005AL) // // MessageId: STATUS_INVALID_PRIMARY_GROUP // // MessageText: // // Indicates a particular Security ID may not be assigned as the primary group of an object. // #define STATUS_INVALID_PRIMARY_GROUP ((NTSTATUS)0xC000005BL) // // MessageId: STATUS_NO_IMPERSONATION_TOKEN // // MessageText: // // An attempt has been made to operate on an impersonation token by a thread that is not currently impersonating a client. // #define STATUS_NO_IMPERSONATION_TOKEN ((NTSTATUS)0xC000005CL) // // MessageId: STATUS_CANT_DISABLE_MANDATORY // // MessageText: // // A mandatory group may not be disabled. // #define STATUS_CANT_DISABLE_MANDATORY ((NTSTATUS)0xC000005DL) // // MessageId: STATUS_NO_LOGON_SERVERS // // MessageText: // // There are currently no logon servers available to service the logon request. // #define STATUS_NO_LOGON_SERVERS ((NTSTATUS)0xC000005EL) // // MessageId: STATUS_NO_SUCH_LOGON_SESSION // // MessageText: // // A specified logon session does not exist. It may already have been terminated. // #define STATUS_NO_SUCH_LOGON_SESSION ((NTSTATUS)0xC000005FL) // // MessageId: STATUS_NO_SUCH_PRIVILEGE // // MessageText: // // A specified privilege does not exist. // #define STATUS_NO_SUCH_PRIVILEGE ((NTSTATUS)0xC0000060L) // // MessageId: STATUS_PRIVILEGE_NOT_HELD // // MessageText: // // A required privilege is not held by the client. // #define STATUS_PRIVILEGE_NOT_HELD ((NTSTATUS)0xC0000061L) // // MessageId: STATUS_INVALID_ACCOUNT_NAME // // MessageText: // // The name provided is not a properly formed account name. // #define STATUS_INVALID_ACCOUNT_NAME ((NTSTATUS)0xC0000062L) // // MessageId: STATUS_USER_EXISTS // // MessageText: // // The specified user already exists. // #define STATUS_USER_EXISTS ((NTSTATUS)0xC0000063L) // // MessageId: STATUS_NO_SUCH_USER // // MessageText: // // The specified user does not exist. // #define STATUS_NO_SUCH_USER ((NTSTATUS)0xC0000064L) // ntsubauth // // MessageId: STATUS_GROUP_EXISTS // // MessageText: // // The specified group already exists. // #define STATUS_GROUP_EXISTS ((NTSTATUS)0xC0000065L) // // MessageId: STATUS_NO_SUCH_GROUP // // MessageText: // // The specified group does not exist. // #define STATUS_NO_SUCH_GROUP ((NTSTATUS)0xC0000066L) // // MessageId: STATUS_MEMBER_IN_GROUP // // MessageText: // // The specified user account is already in the specified group account. // Also used to indicate a group cannot be deleted because it contains a member. // #define STATUS_MEMBER_IN_GROUP ((NTSTATUS)0xC0000067L) // // MessageId: STATUS_MEMBER_NOT_IN_GROUP // // MessageText: // // The specified user account is not a member of the specified group account. // #define STATUS_MEMBER_NOT_IN_GROUP ((NTSTATUS)0xC0000068L) // // MessageId: STATUS_LAST_ADMIN // // MessageText: // // Indicates the requested operation would disable or delete the last remaining administration account. // This is not allowed to prevent creating a situation in which the system cannot be administrated. // #define STATUS_LAST_ADMIN ((NTSTATUS)0xC0000069L) // // MessageId: STATUS_WRONG_PASSWORD // // MessageText: // // When trying to update a password, this return status indicates that the value provided as the current password is not correct. // #define STATUS_WRONG_PASSWORD ((NTSTATUS)0xC000006AL) // ntsubauth // // MessageId: STATUS_ILL_FORMED_PASSWORD // // MessageText: // // When trying to update a password, this return status indicates that the value provided for the new password contains values that are not allowed in passwords. // #define STATUS_ILL_FORMED_PASSWORD ((NTSTATUS)0xC000006BL) // // MessageId: STATUS_PASSWORD_RESTRICTION // // MessageText: // // When trying to update a password, this status indicates that some password update rule has been violated. For example, the password may not meet length criteria. // #define STATUS_PASSWORD_RESTRICTION ((NTSTATUS)0xC000006CL) // ntsubauth // // MessageId: STATUS_LOGON_FAILURE // // MessageText: // // The attempted logon is invalid. This is either due to a bad username or authentication information. // #define STATUS_LOGON_FAILURE ((NTSTATUS)0xC000006DL) // ntsubauth // // MessageId: STATUS_ACCOUNT_RESTRICTION // // MessageText: // // Indicates a referenced user name and authentication information are valid, but some user account restriction has prevented successful authentication (such as time-of-day restrictions). // #define STATUS_ACCOUNT_RESTRICTION ((NTSTATUS)0xC000006EL) // ntsubauth // // MessageId: STATUS_INVALID_LOGON_HOURS // // MessageText: // // The user account has time restrictions and may not be logged onto at this time. // #define STATUS_INVALID_LOGON_HOURS ((NTSTATUS)0xC000006FL) // ntsubauth // // MessageId: STATUS_INVALID_WORKSTATION // // MessageText: // // The user account is restricted such that it may not be used to log on from the source workstation. // #define STATUS_INVALID_WORKSTATION ((NTSTATUS)0xC0000070L) // ntsubauth // // MessageId: STATUS_PASSWORD_EXPIRED // // MessageText: // // The user account's password has expired. // #define STATUS_PASSWORD_EXPIRED ((NTSTATUS)0xC0000071L) // ntsubauth // // MessageId: STATUS_ACCOUNT_DISABLED // // MessageText: // // The referenced account is currently disabled and may not be logged on to. // #define STATUS_ACCOUNT_DISABLED ((NTSTATUS)0xC0000072L) // ntsubauth // // MessageId: STATUS_NONE_MAPPED // // MessageText: // // None of the information to be translated has been translated. // #define STATUS_NONE_MAPPED ((NTSTATUS)0xC0000073L) // // MessageId: STATUS_TOO_MANY_LUIDS_REQUESTED // // MessageText: // // The number of LUIDs requested may not be allocated with a single allocation. // #define STATUS_TOO_MANY_LUIDS_REQUESTED ((NTSTATUS)0xC0000074L) // // MessageId: STATUS_LUIDS_EXHAUSTED // // MessageText: // // Indicates there are no more LUIDs to allocate. // #define STATUS_LUIDS_EXHAUSTED ((NTSTATUS)0xC0000075L) // // MessageId: STATUS_INVALID_SUB_AUTHORITY // // MessageText: // // Indicates the sub-authority value is invalid for the particular use. // #define STATUS_INVALID_SUB_AUTHORITY ((NTSTATUS)0xC0000076L) // // MessageId: STATUS_INVALID_ACL // // MessageText: // // Indicates the ACL structure is not valid. // #define STATUS_INVALID_ACL ((NTSTATUS)0xC0000077L) // // MessageId: STATUS_INVALID_SID // // MessageText: // // Indicates the SID structure is not valid. // #define STATUS_INVALID_SID ((NTSTATUS)0xC0000078L) // // MessageId: STATUS_INVALID_SECURITY_DESCR // // MessageText: // // Indicates the SECURITY_DESCRIPTOR structure is not valid. // #define STATUS_INVALID_SECURITY_DESCR ((NTSTATUS)0xC0000079L) // // MessageId: STATUS_PROCEDURE_NOT_FOUND // // MessageText: // // Indicates the specified procedure address cannot be found in the DLL. // #define STATUS_PROCEDURE_NOT_FOUND ((NTSTATUS)0xC000007AL) // // MessageId: STATUS_INVALID_IMAGE_FORMAT // // MessageText: // // {Bad Image} // The application or DLL %hs is not a valid Windows image. Please check this against your installation diskette. // #define STATUS_INVALID_IMAGE_FORMAT ((NTSTATUS)0xC000007BL) // // MessageId: STATUS_NO_TOKEN // // MessageText: // // An attempt was made to reference a token that doesn't exist. // This is typically done by referencing the token associated with a thread when the thread is not impersonating a client. // #define STATUS_NO_TOKEN ((NTSTATUS)0xC000007CL) // // MessageId: STATUS_BAD_INHERITANCE_ACL // // MessageText: // // Indicates that an attempt to build either an inherited ACL or ACE was not successful. // This can be caused by a number of things. One of the more probable causes is the replacement of a CreatorId with an SID that didn't fit into the ACE or ACL. // #define STATUS_BAD_INHERITANCE_ACL ((NTSTATUS)0xC000007DL) // // MessageId: STATUS_RANGE_NOT_LOCKED // // MessageText: // // The range specified in NtUnlockFile was not locked. // #define STATUS_RANGE_NOT_LOCKED ((NTSTATUS)0xC000007EL) // // MessageId: STATUS_DISK_FULL // // MessageText: // // An operation failed because the disk was full. // #define STATUS_DISK_FULL ((NTSTATUS)0xC000007FL) // // MessageId: STATUS_SERVER_DISABLED // // MessageText: // // The GUID allocation server is [already] disabled at the moment. // #define STATUS_SERVER_DISABLED ((NTSTATUS)0xC0000080L) // // MessageId: STATUS_SERVER_NOT_DISABLED // // MessageText: // // The GUID allocation server is [already] enabled at the moment. // #define STATUS_SERVER_NOT_DISABLED ((NTSTATUS)0xC0000081L) // // MessageId: STATUS_TOO_MANY_GUIDS_REQUESTED // // MessageText: // // Too many GUIDs were requested from the allocation server at once. // #define STATUS_TOO_MANY_GUIDS_REQUESTED ((NTSTATUS)0xC0000082L) // // MessageId: STATUS_GUIDS_EXHAUSTED // // MessageText: // // The GUIDs could not be allocated because the Authority Agent was exhausted. // #define STATUS_GUIDS_EXHAUSTED ((NTSTATUS)0xC0000083L) // // MessageId: STATUS_INVALID_ID_AUTHORITY // // MessageText: // // The value provided was an invalid value for an identifier authority. // #define STATUS_INVALID_ID_AUTHORITY ((NTSTATUS)0xC0000084L) // // MessageId: STATUS_AGENTS_EXHAUSTED // // MessageText: // // There are no more authority agent values available for the given identifier authority value. // #define STATUS_AGENTS_EXHAUSTED ((NTSTATUS)0xC0000085L) // // MessageId: STATUS_INVALID_VOLUME_LABEL // // MessageText: // // An invalid volume label has been specified. // #define STATUS_INVALID_VOLUME_LABEL ((NTSTATUS)0xC0000086L) // // MessageId: STATUS_SECTION_NOT_EXTENDED // // MessageText: // // A mapped section could not be extended. // #define STATUS_SECTION_NOT_EXTENDED ((NTSTATUS)0xC0000087L) // // MessageId: STATUS_NOT_MAPPED_DATA // // MessageText: // // Specified section to flush does not map a data file. // #define STATUS_NOT_MAPPED_DATA ((NTSTATUS)0xC0000088L) // // MessageId: STATUS_RESOURCE_DATA_NOT_FOUND // // MessageText: // // Indicates the specified image file did not contain a resource section. // #define STATUS_RESOURCE_DATA_NOT_FOUND ((NTSTATUS)0xC0000089L) // // MessageId: STATUS_RESOURCE_TYPE_NOT_FOUND // // MessageText: // // Indicates the specified resource type cannot be found in the image file. // #define STATUS_RESOURCE_TYPE_NOT_FOUND ((NTSTATUS)0xC000008AL) // // MessageId: STATUS_RESOURCE_NAME_NOT_FOUND // // MessageText: // // Indicates the specified resource name cannot be found in the image file. // #define STATUS_RESOURCE_NAME_NOT_FOUND ((NTSTATUS)0xC000008BL) // // MessageId: STATUS_ARRAY_BOUNDS_EXCEEDED // // MessageText: // // {EXCEPTION} // Array bounds exceeded. // #define STATUS_ARRAY_BOUNDS_EXCEEDED ((NTSTATUS)0xC000008CL) // winnt // // MessageId: STATUS_FLOAT_DENORMAL_OPERAND // // MessageText: // // {EXCEPTION} // Floating-point denormal operand. // #define STATUS_FLOAT_DENORMAL_OPERAND ((NTSTATUS)0xC000008DL) // winnt // // MessageId: STATUS_FLOAT_DIVIDE_BY_ZERO // // MessageText: // // {EXCEPTION} // Floating-point division by zero. // #define STATUS_FLOAT_DIVIDE_BY_ZERO ((NTSTATUS)0xC000008EL) // winnt // // MessageId: STATUS_FLOAT_INEXACT_RESULT // // MessageText: // // {EXCEPTION} // Floating-point inexact result. // #define STATUS_FLOAT_INEXACT_RESULT ((NTSTATUS)0xC000008FL) // winnt // // MessageId: STATUS_FLOAT_INVALID_OPERATION // // MessageText: // // {EXCEPTION} // Floating-point invalid operation. // #define STATUS_FLOAT_INVALID_OPERATION ((NTSTATUS)0xC0000090L) // winnt // // MessageId: STATUS_FLOAT_OVERFLOW // // MessageText: // // {EXCEPTION} // Floating-point overflow. // #define STATUS_FLOAT_OVERFLOW ((NTSTATUS)0xC0000091L) // winnt // // MessageId: STATUS_FLOAT_STACK_CHECK // // MessageText: // // {EXCEPTION} // Floating-point stack check. // #define STATUS_FLOAT_STACK_CHECK ((NTSTATUS)0xC0000092L) // winnt // // MessageId: STATUS_FLOAT_UNDERFLOW // // MessageText: // // {EXCEPTION} // Floating-point underflow. // #define STATUS_FLOAT_UNDERFLOW ((NTSTATUS)0xC0000093L) // winnt // // MessageId: STATUS_INTEGER_DIVIDE_BY_ZERO // // MessageText: // // {EXCEPTION} // Integer division by zero. // #define STATUS_INTEGER_DIVIDE_BY_ZERO ((NTSTATUS)0xC0000094L) // winnt // // MessageId: STATUS_INTEGER_OVERFLOW // // MessageText: // // {EXCEPTION} // Integer overflow. // #define STATUS_INTEGER_OVERFLOW ((NTSTATUS)0xC0000095L) // winnt // // MessageId: STATUS_PRIVILEGED_INSTRUCTION // // MessageText: // // {EXCEPTION} // Privileged instruction. // #define STATUS_PRIVILEGED_INSTRUCTION ((NTSTATUS)0xC0000096L) // winnt // // MessageId: STATUS_TOO_MANY_PAGING_FILES // // MessageText: // // An attempt was made to install more paging files than the system supports. // #define STATUS_TOO_MANY_PAGING_FILES ((NTSTATUS)0xC0000097L) // // MessageId: STATUS_FILE_INVALID // // MessageText: // // The volume for a file has been externally altered such that the opened file is no longer valid. // #define STATUS_FILE_INVALID ((NTSTATUS)0xC0000098L) // // MessageId: STATUS_ALLOTTED_SPACE_EXCEEDED // // MessageText: // // When a block of memory is allotted for future updates, such as the memory allocated to hold discretionary access control and primary group information, successive updates may exceed the amount of memory originally allotted. // Since quota may already have been charged to several processes which have handles to the object, it is not reasonable to alter the size of the allocated memory. // Instead, a request that requires more memory than has been allotted must fail and the STATUS_ALLOTED_SPACE_EXCEEDED error returned. // #define STATUS_ALLOTTED_SPACE_EXCEEDED ((NTSTATUS)0xC0000099L) // // MessageId: STATUS_INSUFFICIENT_RESOURCES // // MessageText: // // Insufficient system resources exist to complete the API. // #define STATUS_INSUFFICIENT_RESOURCES ((NTSTATUS)0xC000009AL) // ntsubauth // // MessageId: STATUS_DFS_EXIT_PATH_FOUND // // MessageText: // // An attempt has been made to open a DFS exit path control file. // #define STATUS_DFS_EXIT_PATH_FOUND ((NTSTATUS)0xC000009BL) // // MessageId: STATUS_DEVICE_DATA_ERROR // // MessageText: // // STATUS_DEVICE_DATA_ERROR // #define STATUS_DEVICE_DATA_ERROR ((NTSTATUS)0xC000009CL) // // MessageId: STATUS_DEVICE_NOT_CONNECTED // // MessageText: // // STATUS_DEVICE_NOT_CONNECTED // #define STATUS_DEVICE_NOT_CONNECTED ((NTSTATUS)0xC000009DL) // // MessageId: STATUS_DEVICE_POWER_FAILURE // // MessageText: // // STATUS_DEVICE_POWER_FAILURE // #define STATUS_DEVICE_POWER_FAILURE ((NTSTATUS)0xC000009EL) // // MessageId: STATUS_FREE_VM_NOT_AT_BASE // // MessageText: // // Virtual memory cannot be freed as base address is not the base of the region and a region size of zero was specified. // #define STATUS_FREE_VM_NOT_AT_BASE ((NTSTATUS)0xC000009FL) // // MessageId: STATUS_MEMORY_NOT_ALLOCATED // // MessageText: // // An attempt was made to free virtual memory which is not allocated. // #define STATUS_MEMORY_NOT_ALLOCATED ((NTSTATUS)0xC00000A0L) // // MessageId: STATUS_WORKING_SET_QUOTA // // MessageText: // // The working set is not big enough to allow the requested pages to be locked. // #define STATUS_WORKING_SET_QUOTA ((NTSTATUS)0xC00000A1L) // // MessageId: STATUS_MEDIA_WRITE_PROTECTED // // MessageText: // // {Write Protect Error} // The disk cannot be written to because it is write protected. // Please remove the write protection from the volume %hs in drive %hs. // #define STATUS_MEDIA_WRITE_PROTECTED ((NTSTATUS)0xC00000A2L) // // MessageId: STATUS_DEVICE_NOT_READY // // MessageText: // // {Drive Not Ready} // The drive is not ready for use; its door may be open. // Please check drive %hs and make sure that a disk is inserted and that the drive door is closed. // #define STATUS_DEVICE_NOT_READY ((NTSTATUS)0xC00000A3L) // // MessageId: STATUS_INVALID_GROUP_ATTRIBUTES // // MessageText: // // The specified attributes are invalid, or incompatible with the attributes for the group as a whole. // #define STATUS_INVALID_GROUP_ATTRIBUTES ((NTSTATUS)0xC00000A4L) // // MessageId: STATUS_BAD_IMPERSONATION_LEVEL // // MessageText: // // A specified impersonation level is invalid. // Also used to indicate a required impersonation level was not provided. // #define STATUS_BAD_IMPERSONATION_LEVEL ((NTSTATUS)0xC00000A5L) // // MessageId: STATUS_CANT_OPEN_ANONYMOUS // // MessageText: // // An attempt was made to open an Anonymous level token. // Anonymous tokens may not be opened. // #define STATUS_CANT_OPEN_ANONYMOUS ((NTSTATUS)0xC00000A6L) // // MessageId: STATUS_BAD_VALIDATION_CLASS // // MessageText: // // The validation information class requested was invalid. // #define STATUS_BAD_VALIDATION_CLASS ((NTSTATUS)0xC00000A7L) // // MessageId: STATUS_BAD_TOKEN_TYPE // // MessageText: // // The type of a token object is inappropriate for its attempted use. // #define STATUS_BAD_TOKEN_TYPE ((NTSTATUS)0xC00000A8L) // // MessageId: STATUS_BAD_MASTER_BOOT_RECORD // // MessageText: // // The type of a token object is inappropriate for its attempted use. // #define STATUS_BAD_MASTER_BOOT_RECORD ((NTSTATUS)0xC00000A9L) // // MessageId: STATUS_INSTRUCTION_MISALIGNMENT // // MessageText: // // An attempt was made to execute an instruction at an unaligned address and the host system does not support unaligned instruction references. // #define STATUS_INSTRUCTION_MISALIGNMENT ((NTSTATUS)0xC00000AAL) // // MessageId: STATUS_INSTANCE_NOT_AVAILABLE // // MessageText: // // The maximum named pipe instance count has been reached. // #define STATUS_INSTANCE_NOT_AVAILABLE ((NTSTATUS)0xC00000ABL) // // MessageId: STATUS_PIPE_NOT_AVAILABLE // // MessageText: // // An instance of a named pipe cannot be found in the listening state. // #define STATUS_PIPE_NOT_AVAILABLE ((NTSTATUS)0xC00000ACL) // // MessageId: STATUS_INVALID_PIPE_STATE // // MessageText: // // The named pipe is not in the connected or closing state. // #define STATUS_INVALID_PIPE_STATE ((NTSTATUS)0xC00000ADL) // // MessageId: STATUS_PIPE_BUSY // // MessageText: // // The specified pipe is set to complete operations and there are current I/O operations queued so it cannot be changed to queue operations. // #define STATUS_PIPE_BUSY ((NTSTATUS)0xC00000AEL) // // MessageId: STATUS_ILLEGAL_FUNCTION // // MessageText: // // The specified handle is not open to the server end of the named pipe. // #define STATUS_ILLEGAL_FUNCTION ((NTSTATUS)0xC00000AFL) // // MessageId: STATUS_PIPE_DISCONNECTED // // MessageText: // // The specified named pipe is in the disconnected state. // #define STATUS_PIPE_DISCONNECTED ((NTSTATUS)0xC00000B0L) // // MessageId: STATUS_PIPE_CLOSING // // MessageText: // // The specified named pipe is in the closing state. // #define STATUS_PIPE_CLOSING ((NTSTATUS)0xC00000B1L) // // MessageId: STATUS_PIPE_CONNECTED // // MessageText: // // The specified named pipe is in the connected state. // #define STATUS_PIPE_CONNECTED ((NTSTATUS)0xC00000B2L) // // MessageId: STATUS_PIPE_LISTENING // // MessageText: // // The specified named pipe is in the listening state. // #define STATUS_PIPE_LISTENING ((NTSTATUS)0xC00000B3L) // // MessageId: STATUS_INVALID_READ_MODE // // MessageText: // // The specified named pipe is not in message mode. // #define STATUS_INVALID_READ_MODE ((NTSTATUS)0xC00000B4L) // // MessageId: STATUS_IO_TIMEOUT // // MessageText: // // {Device Timeout} // The specified I/O operation on %hs was not completed before the time-out period expired. // #define STATUS_IO_TIMEOUT ((NTSTATUS)0xC00000B5L) // // MessageId: STATUS_FILE_FORCED_CLOSED // // MessageText: // // The specified file has been closed by another process. // #define STATUS_FILE_FORCED_CLOSED ((NTSTATUS)0xC00000B6L) // // MessageId: STATUS_PROFILING_NOT_STARTED // // MessageText: // // Profiling not started. // #define STATUS_PROFILING_NOT_STARTED ((NTSTATUS)0xC00000B7L) // // MessageId: STATUS_PROFILING_NOT_STOPPED // // MessageText: // // Profiling not stopped. // #define STATUS_PROFILING_NOT_STOPPED ((NTSTATUS)0xC00000B8L) // // MessageId: STATUS_COULD_NOT_INTERPRET // // MessageText: // // The passed ACL did not contain the minimum required information. // #define STATUS_COULD_NOT_INTERPRET ((NTSTATUS)0xC00000B9L) // // MessageId: STATUS_FILE_IS_A_DIRECTORY // // MessageText: // // The file that was specified as a target is a directory and the caller specified that it could be anything but a directory. // #define STATUS_FILE_IS_A_DIRECTORY ((NTSTATUS)0xC00000BAL) // // Network specific errors. // // // // MessageId: STATUS_NOT_SUPPORTED // // MessageText: // // The request is not supported. // #define STATUS_NOT_SUPPORTED ((NTSTATUS)0xC00000BBL) // // MessageId: STATUS_REMOTE_NOT_LISTENING // // MessageText: // // This remote computer is not listening. // #define STATUS_REMOTE_NOT_LISTENING ((NTSTATUS)0xC00000BCL) // // MessageId: STATUS_DUPLICATE_NAME // // MessageText: // // A duplicate name exists on the network. // #define STATUS_DUPLICATE_NAME ((NTSTATUS)0xC00000BDL) // // MessageId: STATUS_BAD_NETWORK_PATH // // MessageText: // // The network path cannot be located. // #define STATUS_BAD_NETWORK_PATH ((NTSTATUS)0xC00000BEL) // // MessageId: STATUS_NETWORK_BUSY // // MessageText: // // The network is busy. // #define STATUS_NETWORK_BUSY ((NTSTATUS)0xC00000BFL) // // MessageId: STATUS_DEVICE_DOES_NOT_EXIST // // MessageText: // // This device does not exist. // #define STATUS_DEVICE_DOES_NOT_EXIST ((NTSTATUS)0xC00000C0L) // // MessageId: STATUS_TOO_MANY_COMMANDS // // MessageText: // // The network BIOS command limit has been reached. // #define STATUS_TOO_MANY_COMMANDS ((NTSTATUS)0xC00000C1L) // // MessageId: STATUS_ADAPTER_HARDWARE_ERROR // // MessageText: // // An I/O adapter hardware error has occurred. // #define STATUS_ADAPTER_HARDWARE_ERROR ((NTSTATUS)0xC00000C2L) // // MessageId: STATUS_INVALID_NETWORK_RESPONSE // // MessageText: // // The network responded incorrectly. // #define STATUS_INVALID_NETWORK_RESPONSE ((NTSTATUS)0xC00000C3L) // // MessageId: STATUS_UNEXPECTED_NETWORK_ERROR // // MessageText: // // An unexpected network error occurred. // #define STATUS_UNEXPECTED_NETWORK_ERROR ((NTSTATUS)0xC00000C4L) // // MessageId: STATUS_BAD_REMOTE_ADAPTER // // MessageText: // // The remote adapter is not compatible. // #define STATUS_BAD_REMOTE_ADAPTER ((NTSTATUS)0xC00000C5L) // // MessageId: STATUS_PRINT_QUEUE_FULL // // MessageText: // // The printer queue is full. // #define STATUS_PRINT_QUEUE_FULL ((NTSTATUS)0xC00000C6L) // // MessageId: STATUS_NO_SPOOL_SPACE // // MessageText: // // Space to store the file waiting to be printed is not available on the server. // #define STATUS_NO_SPOOL_SPACE ((NTSTATUS)0xC00000C7L) // // MessageId: STATUS_PRINT_CANCELLED // // MessageText: // // The requested print file has been canceled. // #define STATUS_PRINT_CANCELLED ((NTSTATUS)0xC00000C8L) // // MessageId: STATUS_NETWORK_NAME_DELETED // // MessageText: // // The network name was deleted. // #define STATUS_NETWORK_NAME_DELETED ((NTSTATUS)0xC00000C9L) // // MessageId: STATUS_NETWORK_ACCESS_DENIED // // MessageText: // // Network access is denied. // #define STATUS_NETWORK_ACCESS_DENIED ((NTSTATUS)0xC00000CAL) // // MessageId: STATUS_BAD_DEVICE_TYPE // // MessageText: // // {Incorrect Network Resource Type} // The specified device type (LPT, for example) conflicts with the actual device type on the remote resource. // #define STATUS_BAD_DEVICE_TYPE ((NTSTATUS)0xC00000CBL) // // MessageId: STATUS_BAD_NETWORK_NAME // // MessageText: // // {Network Name Not Found} // The specified share name cannot be found on the remote server. // #define STATUS_BAD_NETWORK_NAME ((NTSTATUS)0xC00000CCL) // // MessageId: STATUS_TOO_MANY_NAMES // // MessageText: // // The name limit for the local computer network adapter card was exceeded. // #define STATUS_TOO_MANY_NAMES ((NTSTATUS)0xC00000CDL) // // MessageId: STATUS_TOO_MANY_SESSIONS // // MessageText: // // The network BIOS session limit was exceeded. // #define STATUS_TOO_MANY_SESSIONS ((NTSTATUS)0xC00000CEL) // // MessageId: STATUS_SHARING_PAUSED // // MessageText: // // File sharing has been temporarily paused. // #define STATUS_SHARING_PAUSED ((NTSTATUS)0xC00000CFL) // // MessageId: STATUS_REQUEST_NOT_ACCEPTED // // MessageText: // // No more connections can be made to this remote computer at this time because there are already as many connections as the computer can accept. // #define STATUS_REQUEST_NOT_ACCEPTED ((NTSTATUS)0xC00000D0L) // // MessageId: STATUS_REDIRECTOR_PAUSED // // MessageText: // // Print or disk redirection is temporarily paused. // #define STATUS_REDIRECTOR_PAUSED ((NTSTATUS)0xC00000D1L) // // MessageId: STATUS_NET_WRITE_FAULT // // MessageText: // // A network data fault occurred. // #define STATUS_NET_WRITE_FAULT ((NTSTATUS)0xC00000D2L) // // MessageId: STATUS_PROFILING_AT_LIMIT // // MessageText: // // The number of active profiling objects is at the maximum and no more may be started. // #define STATUS_PROFILING_AT_LIMIT ((NTSTATUS)0xC00000D3L) // // MessageId: STATUS_NOT_SAME_DEVICE // // MessageText: // // {Incorrect Volume} // The target file of a rename request is located on a different device than the source of the rename request. // #define STATUS_NOT_SAME_DEVICE ((NTSTATUS)0xC00000D4L) // // MessageId: STATUS_FILE_RENAMED // // MessageText: // // The file specified has been renamed and thus cannot be modified. // #define STATUS_FILE_RENAMED ((NTSTATUS)0xC00000D5L) // // MessageId: STATUS_VIRTUAL_CIRCUIT_CLOSED // // MessageText: // // {Network Request Timeout} // The session with a remote server has been disconnected because the time-out interval for a request has expired. // #define STATUS_VIRTUAL_CIRCUIT_CLOSED ((NTSTATUS)0xC00000D6L) // // MessageId: STATUS_NO_SECURITY_ON_OBJECT // // MessageText: // // Indicates an attempt was made to operate on the security of an object that does not have security associated with it. // #define STATUS_NO_SECURITY_ON_OBJECT ((NTSTATUS)0xC00000D7L) // // MessageId: STATUS_CANT_WAIT // // MessageText: // // Used to indicate that an operation cannot continue without blocking for I/O. // #define STATUS_CANT_WAIT ((NTSTATUS)0xC00000D8L) // // MessageId: STATUS_PIPE_EMPTY // // MessageText: // // Used to indicate that a read operation was done on an empty pipe. // #define STATUS_PIPE_EMPTY ((NTSTATUS)0xC00000D9L) // // MessageId: STATUS_CANT_ACCESS_DOMAIN_INFO // // MessageText: // // Configuration information could not be read from the domain controller, either because the machine is unavailable, or access has been denied. // #define STATUS_CANT_ACCESS_DOMAIN_INFO ((NTSTATUS)0xC00000DAL) // // MessageId: STATUS_CANT_TERMINATE_SELF // // MessageText: // // Indicates that a thread attempted to terminate itself by default (called NtTerminateThread with NULL) and it was the last thread in the current process. // #define STATUS_CANT_TERMINATE_SELF ((NTSTATUS)0xC00000DBL) // // MessageId: STATUS_INVALID_SERVER_STATE // // MessageText: // // Indicates the Sam Server was in the wrong state to perform the desired operation. // #define STATUS_INVALID_SERVER_STATE ((NTSTATUS)0xC00000DCL) // // MessageId: STATUS_INVALID_DOMAIN_STATE // // MessageText: // // Indicates the Domain was in the wrong state to perform the desired operation. // #define STATUS_INVALID_DOMAIN_STATE ((NTSTATUS)0xC00000DDL) // // MessageId: STATUS_INVALID_DOMAIN_ROLE // // MessageText: // // This operation is only allowed for the Primary Domain Controller of the domain. // #define STATUS_INVALID_DOMAIN_ROLE ((NTSTATUS)0xC00000DEL) // // MessageId: STATUS_NO_SUCH_DOMAIN // // MessageText: // // The specified Domain did not exist. // #define STATUS_NO_SUCH_DOMAIN ((NTSTATUS)0xC00000DFL) // // MessageId: STATUS_DOMAIN_EXISTS // // MessageText: // // The specified Domain already exists. // #define STATUS_DOMAIN_EXISTS ((NTSTATUS)0xC00000E0L) // // MessageId: STATUS_DOMAIN_LIMIT_EXCEEDED // // MessageText: // // An attempt was made to exceed the limit on the number of domains per server for this release. // #define STATUS_DOMAIN_LIMIT_EXCEEDED ((NTSTATUS)0xC00000E1L) // // MessageId: STATUS_OPLOCK_NOT_GRANTED // // MessageText: // // Error status returned when oplock request is denied. // #define STATUS_OPLOCK_NOT_GRANTED ((NTSTATUS)0xC00000E2L) // // MessageId: STATUS_INVALID_OPLOCK_PROTOCOL // // MessageText: // // Error status returned when an invalid oplock acknowledgment is received by a file system. // #define STATUS_INVALID_OPLOCK_PROTOCOL ((NTSTATUS)0xC00000E3L) // // MessageId: STATUS_INTERNAL_DB_CORRUPTION // // MessageText: // // This error indicates that the requested operation cannot be completed due to a catastrophic media failure or on-disk data structure corruption. // #define STATUS_INTERNAL_DB_CORRUPTION ((NTSTATUS)0xC00000E4L) // // MessageId: STATUS_INTERNAL_ERROR // // MessageText: // // An internal error occurred. // #define STATUS_INTERNAL_ERROR ((NTSTATUS)0xC00000E5L) // // MessageId: STATUS_GENERIC_NOT_MAPPED // // MessageText: // // Indicates generic access types were contained in an access mask which should already be mapped to non-generic access types. // #define STATUS_GENERIC_NOT_MAPPED ((NTSTATUS)0xC00000E6L) // // MessageId: STATUS_BAD_DESCRIPTOR_FORMAT // // MessageText: // // Indicates a security descriptor is not in the necessary format (absolute or self-relative). // #define STATUS_BAD_DESCRIPTOR_FORMAT ((NTSTATUS)0xC00000E7L) // // Status codes raised by the Cache Manager which must be considered as // "expected" by its callers. // // // MessageId: STATUS_INVALID_USER_BUFFER // // MessageText: // // An access to a user buffer failed at an "expected" point in time. // This code is defined since the caller does not want to accept STATUS_ACCESS_VIOLATION in its filter. // #define STATUS_INVALID_USER_BUFFER ((NTSTATUS)0xC00000E8L) // // MessageId: STATUS_UNEXPECTED_IO_ERROR // // MessageText: // // If an I/O error is returned which is not defined in the standard FsRtl filter, it is converted to the following error which is guaranteed to be in the filter. // In this case information is lost, however, the filter correctly handles the exception. // #define STATUS_UNEXPECTED_IO_ERROR ((NTSTATUS)0xC00000E9L) // // MessageId: STATUS_UNEXPECTED_MM_CREATE_ERR // // MessageText: // // If an MM error is returned which is not defined in the standard FsRtl filter, it is converted to one of the following errors which is guaranteed to be in the filter. // In this case information is lost, however, the filter correctly handles the exception. // #define STATUS_UNEXPECTED_MM_CREATE_ERR ((NTSTATUS)0xC00000EAL) // // MessageId: STATUS_UNEXPECTED_MM_MAP_ERROR // // MessageText: // // If an MM error is returned which is not defined in the standard FsRtl filter, it is converted to one of the following errors which is guaranteed to be in the filter. // In this case information is lost, however, the filter correctly handles the exception. // #define STATUS_UNEXPECTED_MM_MAP_ERROR ((NTSTATUS)0xC00000EBL) // // MessageId: STATUS_UNEXPECTED_MM_EXTEND_ERR // // MessageText: // // If an MM error is returned which is not defined in the standard FsRtl filter, it is converted to one of the following errors which is guaranteed to be in the filter. // In this case information is lost, however, the filter correctly handles the exception. // #define STATUS_UNEXPECTED_MM_EXTEND_ERR ((NTSTATUS)0xC00000ECL) // // MessageId: STATUS_NOT_LOGON_PROCESS // // MessageText: // // The requested action is restricted for use by logon processes only. The calling process has not registered as a logon process. // #define STATUS_NOT_LOGON_PROCESS ((NTSTATUS)0xC00000EDL) // // MessageId: STATUS_LOGON_SESSION_EXISTS // // MessageText: // // An attempt has been made to start a new session manager or LSA logon session with an ID that is already in use. // #define STATUS_LOGON_SESSION_EXISTS ((NTSTATUS)0xC00000EEL) // // MessageId: STATUS_INVALID_PARAMETER_1 // // MessageText: // // An invalid parameter was passed to a service or function as the first argument. // #define STATUS_INVALID_PARAMETER_1 ((NTSTATUS)0xC00000EFL) // // MessageId: STATUS_INVALID_PARAMETER_2 // // MessageText: // // An invalid parameter was passed to a service or function as the second argument. // #define STATUS_INVALID_PARAMETER_2 ((NTSTATUS)0xC00000F0L) // // MessageId: STATUS_INVALID_PARAMETER_3 // // MessageText: // // An invalid parameter was passed to a service or function as the third argument. // #define STATUS_INVALID_PARAMETER_3 ((NTSTATUS)0xC00000F1L) // // MessageId: STATUS_INVALID_PARAMETER_4 // // MessageText: // // An invalid parameter was passed to a service or function as the fourth argument. // #define STATUS_INVALID_PARAMETER_4 ((NTSTATUS)0xC00000F2L) // // MessageId: STATUS_INVALID_PARAMETER_5 // // MessageText: // // An invalid parameter was passed to a service or function as the fifth argument. // #define STATUS_INVALID_PARAMETER_5 ((NTSTATUS)0xC00000F3L) // // MessageId: STATUS_INVALID_PARAMETER_6 // // MessageText: // // An invalid parameter was passed to a service or function as the sixth argument. // #define STATUS_INVALID_PARAMETER_6 ((NTSTATUS)0xC00000F4L) // // MessageId: STATUS_INVALID_PARAMETER_7 // // MessageText: // // An invalid parameter was passed to a service or function as the seventh argument. // #define STATUS_INVALID_PARAMETER_7 ((NTSTATUS)0xC00000F5L) // // MessageId: STATUS_INVALID_PARAMETER_8 // // MessageText: // // An invalid parameter was passed to a service or function as the eighth argument. // #define STATUS_INVALID_PARAMETER_8 ((NTSTATUS)0xC00000F6L) // // MessageId: STATUS_INVALID_PARAMETER_9 // // MessageText: // // An invalid parameter was passed to a service or function as the ninth argument. // #define STATUS_INVALID_PARAMETER_9 ((NTSTATUS)0xC00000F7L) // // MessageId: STATUS_INVALID_PARAMETER_10 // // MessageText: // // An invalid parameter was passed to a service or function as the tenth argument. // #define STATUS_INVALID_PARAMETER_10 ((NTSTATUS)0xC00000F8L) // // MessageId: STATUS_INVALID_PARAMETER_11 // // MessageText: // // An invalid parameter was passed to a service or function as the eleventh argument. // #define STATUS_INVALID_PARAMETER_11 ((NTSTATUS)0xC00000F9L) // // MessageId: STATUS_INVALID_PARAMETER_12 // // MessageText: // // An invalid parameter was passed to a service or function as the twelfth argument. // #define STATUS_INVALID_PARAMETER_12 ((NTSTATUS)0xC00000FAL) // // MessageId: STATUS_REDIRECTOR_NOT_STARTED // // MessageText: // // An attempt was made to access a network file, but the network software was not yet started. // #define STATUS_REDIRECTOR_NOT_STARTED ((NTSTATUS)0xC00000FBL) // // MessageId: STATUS_REDIRECTOR_STARTED // // MessageText: // // An attempt was made to start the redirector, but the redirector has already been started. // #define STATUS_REDIRECTOR_STARTED ((NTSTATUS)0xC00000FCL) // // MessageId: STATUS_STACK_OVERFLOW // // MessageText: // // A new guard page for the stack cannot be created. // #define STATUS_STACK_OVERFLOW ((NTSTATUS)0xC00000FDL) // winnt // // MessageId: STATUS_NO_SUCH_PACKAGE // // MessageText: // // A specified authentication package is unknown. // #define STATUS_NO_SUCH_PACKAGE ((NTSTATUS)0xC00000FEL) // // MessageId: STATUS_BAD_FUNCTION_TABLE // // MessageText: // // A malformed function table was encountered during an unwind operation. // #define STATUS_BAD_FUNCTION_TABLE ((NTSTATUS)0xC00000FFL) // // MessageId: STATUS_VARIABLE_NOT_FOUND // // MessageText: // // Indicates the specified environment variable name was not found in the specified environment block. // #define STATUS_VARIABLE_NOT_FOUND ((NTSTATUS)0xC0000100L) // // MessageId: STATUS_DIRECTORY_NOT_EMPTY // // MessageText: // // Indicates that the directory trying to be deleted is not empty. // #define STATUS_DIRECTORY_NOT_EMPTY ((NTSTATUS)0xC0000101L) // // MessageId: STATUS_FILE_CORRUPT_ERROR // // MessageText: // // {Corrupt File} // The file or directory %hs is corrupt and unreadable. // Please run the Chkdsk utility. // #define STATUS_FILE_CORRUPT_ERROR ((NTSTATUS)0xC0000102L) // // MessageId: STATUS_NOT_A_DIRECTORY // // MessageText: // // A requested opened file is not a directory. // #define STATUS_NOT_A_DIRECTORY ((NTSTATUS)0xC0000103L) // // MessageId: STATUS_BAD_LOGON_SESSION_STATE // // MessageText: // // The logon session is not in a state that is consistent with the requested operation. // #define STATUS_BAD_LOGON_SESSION_STATE ((NTSTATUS)0xC0000104L) // // MessageId: STATUS_LOGON_SESSION_COLLISION // // MessageText: // // An internal LSA error has occurred. An authentication package has requested the creation of a Logon Session but the ID of an already existing Logon Session has been specified. // #define STATUS_LOGON_SESSION_COLLISION ((NTSTATUS)0xC0000105L) // // MessageId: STATUS_NAME_TOO_LONG // // MessageText: // // A specified name string is too long for its intended use. // #define STATUS_NAME_TOO_LONG ((NTSTATUS)0xC0000106L) // // MessageId: STATUS_FILES_OPEN // // MessageText: // // The user attempted to force close the files on a redirected drive, but there were opened files on the drive, and the user did not specify a sufficient level of force. // #define STATUS_FILES_OPEN ((NTSTATUS)0xC0000107L) // // MessageId: STATUS_CONNECTION_IN_USE // // MessageText: // // The user attempted to force close the files on a redirected drive, but there were opened directories on the drive, and the user did not specify a sufficient level of force. // #define STATUS_CONNECTION_IN_USE ((NTSTATUS)0xC0000108L) // // MessageId: STATUS_MESSAGE_NOT_FOUND // // MessageText: // // RtlFindMessage could not locate the requested message ID in the message table resource. // #define STATUS_MESSAGE_NOT_FOUND ((NTSTATUS)0xC0000109L) // // MessageId: STATUS_PROCESS_IS_TERMINATING // // MessageText: // // An attempt was made to duplicate an object handle into or out of an exiting process. // #define STATUS_PROCESS_IS_TERMINATING ((NTSTATUS)0xC000010AL) // // MessageId: STATUS_INVALID_LOGON_TYPE // // MessageText: // // Indicates an invalid value has been provided for the LogonType requested. // #define STATUS_INVALID_LOGON_TYPE ((NTSTATUS)0xC000010BL) // // MessageId: STATUS_NO_GUID_TRANSLATION // // MessageText: // // Indicates that an attempt was made to assign protection to a file system file or directory and one of the SIDs in the security descriptor could not be translated into a GUID that could be stored by the file system. // This causes the protection attempt to fail, which may cause a file creation attempt to fail. // #define STATUS_NO_GUID_TRANSLATION ((NTSTATUS)0xC000010CL) // // MessageId: STATUS_CANNOT_IMPERSONATE // // MessageText: // // Indicates that an attempt has been made to impersonate via a named pipe that has not yet been read from. // #define STATUS_CANNOT_IMPERSONATE ((NTSTATUS)0xC000010DL) // // MessageId: STATUS_IMAGE_ALREADY_LOADED // // MessageText: // // Indicates that the specified image is already loaded. // #define STATUS_IMAGE_ALREADY_LOADED ((NTSTATUS)0xC000010EL) // // ============================================================ // NOTE: The following ABIOS error code should be reserved on // non ABIOS kernel. Eventually, I will remove the ifdef // ABIOS. // ============================================================ // // // MessageId: STATUS_ABIOS_NOT_PRESENT // // MessageText: // // STATUS_ABIOS_NOT_PRESENT // #define STATUS_ABIOS_NOT_PRESENT ((NTSTATUS)0xC000010FL) // // MessageId: STATUS_ABIOS_LID_NOT_EXIST // // MessageText: // // STATUS_ABIOS_LID_NOT_EXIST // #define STATUS_ABIOS_LID_NOT_EXIST ((NTSTATUS)0xC0000110L) // // MessageId: STATUS_ABIOS_LID_ALREADY_OWNED // // MessageText: // // STATUS_ABIOS_LID_ALREADY_OWNED // #define STATUS_ABIOS_LID_ALREADY_OWNED ((NTSTATUS)0xC0000111L) // // MessageId: STATUS_ABIOS_NOT_LID_OWNER // // MessageText: // // STATUS_ABIOS_NOT_LID_OWNER // #define STATUS_ABIOS_NOT_LID_OWNER ((NTSTATUS)0xC0000112L) // // MessageId: STATUS_ABIOS_INVALID_COMMAND // // MessageText: // // STATUS_ABIOS_INVALID_COMMAND // #define STATUS_ABIOS_INVALID_COMMAND ((NTSTATUS)0xC0000113L) // // MessageId: STATUS_ABIOS_INVALID_LID // // MessageText: // // STATUS_ABIOS_INVALID_LID // #define STATUS_ABIOS_INVALID_LID ((NTSTATUS)0xC0000114L) // // MessageId: STATUS_ABIOS_SELECTOR_NOT_AVAILABLE // // MessageText: // // STATUS_ABIOS_SELECTOR_NOT_AVAILABLE // #define STATUS_ABIOS_SELECTOR_NOT_AVAILABLE ((NTSTATUS)0xC0000115L) // // MessageId: STATUS_ABIOS_INVALID_SELECTOR // // MessageText: // // STATUS_ABIOS_INVALID_SELECTOR // #define STATUS_ABIOS_INVALID_SELECTOR ((NTSTATUS)0xC0000116L) // // MessageId: STATUS_NO_LDT // // MessageText: // // Indicates that an attempt was made to change the size of the LDT for a process that has no LDT. // #define STATUS_NO_LDT ((NTSTATUS)0xC0000117L) // // MessageId: STATUS_INVALID_LDT_SIZE // // MessageText: // // Indicates that an attempt was made to grow an LDT by setting its size, or that the size was not an even number of selectors. // #define STATUS_INVALID_LDT_SIZE ((NTSTATUS)0xC0000118L) // // MessageId: STATUS_INVALID_LDT_OFFSET // // MessageText: // // Indicates that the starting value for the LDT information was not an integral multiple of the selector size. // #define STATUS_INVALID_LDT_OFFSET ((NTSTATUS)0xC0000119L) // // MessageId: STATUS_INVALID_LDT_DESCRIPTOR // // MessageText: // // Indicates that the user supplied an invalid descriptor when trying to set up Ldt descriptors. // #define STATUS_INVALID_LDT_DESCRIPTOR ((NTSTATUS)0xC000011AL) // // MessageId: STATUS_INVALID_IMAGE_NE_FORMAT // // MessageText: // // The specified image file did not have the correct format. It appears to be NE format. // #define STATUS_INVALID_IMAGE_NE_FORMAT ((NTSTATUS)0xC000011BL) // // MessageId: STATUS_RXACT_INVALID_STATE // // MessageText: // // Indicates that the transaction state of a registry sub-tree is incompatible with the requested operation. // For example, a request has been made to start a new transaction with one already in progress, // or a request has been made to apply a transaction when one is not currently in progress. // #define STATUS_RXACT_INVALID_STATE ((NTSTATUS)0xC000011CL) // // MessageId: STATUS_RXACT_COMMIT_FAILURE // // MessageText: // // Indicates an error has occurred during a registry transaction commit. // The database has been left in an unknown, but probably inconsistent, state. // The state of the registry transaction is left as COMMITTING. // #define STATUS_RXACT_COMMIT_FAILURE ((NTSTATUS)0xC000011DL) // // MessageId: STATUS_MAPPED_FILE_SIZE_ZERO // // MessageText: // // An attempt was made to map a file of size zero with the maximum size specified as zero. // #define STATUS_MAPPED_FILE_SIZE_ZERO ((NTSTATUS)0xC000011EL) // // MessageId: STATUS_TOO_MANY_OPENED_FILES // // MessageText: // // Too many files are opened on a remote server. // This error should only be returned by the Windows redirector on a remote drive. // #define STATUS_TOO_MANY_OPENED_FILES ((NTSTATUS)0xC000011FL) // // MessageId: STATUS_CANCELLED // // MessageText: // // The I/O request was canceled. // #define STATUS_CANCELLED ((NTSTATUS)0xC0000120L) // // MessageId: STATUS_CANNOT_DELETE // // MessageText: // // An attempt has been made to remove a file or directory that cannot be deleted. // #define STATUS_CANNOT_DELETE ((NTSTATUS)0xC0000121L) // // MessageId: STATUS_INVALID_COMPUTER_NAME // // MessageText: // // Indicates a name specified as a remote computer name is syntactically invalid. // #define STATUS_INVALID_COMPUTER_NAME ((NTSTATUS)0xC0000122L) // // MessageId: STATUS_FILE_DELETED // // MessageText: // // An I/O request other than close was performed on a file after it has been deleted, // which can only happen to a request which did not complete before the last handle was closed via NtClose. // #define STATUS_FILE_DELETED ((NTSTATUS)0xC0000123L) // // MessageId: STATUS_SPECIAL_ACCOUNT // // MessageText: // // Indicates an operation has been attempted on a built-in (special) SAM account which is incompatible with built-in accounts. // For example, built-in accounts cannot be deleted. // #define STATUS_SPECIAL_ACCOUNT ((NTSTATUS)0xC0000124L) // // MessageId: STATUS_SPECIAL_GROUP // // MessageText: // // The operation requested may not be performed on the specified group because it is a built-in special group. // #define STATUS_SPECIAL_GROUP ((NTSTATUS)0xC0000125L) // // MessageId: STATUS_SPECIAL_USER // // MessageText: // // The operation requested may not be performed on the specified user because it is a built-in special user. // #define STATUS_SPECIAL_USER ((NTSTATUS)0xC0000126L) // // MessageId: STATUS_MEMBERS_PRIMARY_GROUP // // MessageText: // // Indicates a member cannot be removed from a group because the group is currently the member's primary group. // #define STATUS_MEMBERS_PRIMARY_GROUP ((NTSTATUS)0xC0000127L) // // MessageId: STATUS_FILE_CLOSED // // MessageText: // // An I/O request other than close and several other special case operations was attempted using a file object that had already been closed. // #define STATUS_FILE_CLOSED ((NTSTATUS)0xC0000128L) // // MessageId: STATUS_TOO_MANY_THREADS // // MessageText: // // Indicates a process has too many threads to perform the requested action. For example, assignment of a primary token may only be performed when a process has zero or one threads. // #define STATUS_TOO_MANY_THREADS ((NTSTATUS)0xC0000129L) // // MessageId: STATUS_THREAD_NOT_IN_PROCESS // // MessageText: // // An attempt was made to operate on a thread within a specific process, but the thread specified is not in the process specified. // #define STATUS_THREAD_NOT_IN_PROCESS ((NTSTATUS)0xC000012AL) // // MessageId: STATUS_TOKEN_ALREADY_IN_USE // // MessageText: // // An attempt was made to establish a token for use as a primary token but the token is already in use. A token can only be the primary token of one process at a time. // #define STATUS_TOKEN_ALREADY_IN_USE ((NTSTATUS)0xC000012BL) // // MessageId: STATUS_PAGEFILE_QUOTA_EXCEEDED // // MessageText: // // Page file quota was exceeded. // #define STATUS_PAGEFILE_QUOTA_EXCEEDED ((NTSTATUS)0xC000012CL) // // MessageId: STATUS_COMMITMENT_LIMIT // // MessageText: // // {Out of Virtual Memory} // Your system is low on virtual memory. To ensure that Windows runs properly, increase the size of your virtual memory paging file. For more information, see Help. // #define STATUS_COMMITMENT_LIMIT ((NTSTATUS)0xC000012DL) // // MessageId: STATUS_INVALID_IMAGE_LE_FORMAT // // MessageText: // // The specified image file did not have the correct format, it appears to be LE format. // #define STATUS_INVALID_IMAGE_LE_FORMAT ((NTSTATUS)0xC000012EL) // // MessageId: STATUS_INVALID_IMAGE_NOT_MZ // // MessageText: // // The specified image file did not have the correct format, it did not have an initial MZ. // #define STATUS_INVALID_IMAGE_NOT_MZ ((NTSTATUS)0xC000012FL) // // MessageId: STATUS_INVALID_IMAGE_PROTECT // // MessageText: // // The specified image file did not have the correct format, it did not have a proper e_lfarlc in the MZ header. // #define STATUS_INVALID_IMAGE_PROTECT ((NTSTATUS)0xC0000130L) // // MessageId: STATUS_INVALID_IMAGE_WIN_16 // // MessageText: // // The specified image file did not have the correct format, it appears to be a 16-bit Windows image. // #define STATUS_INVALID_IMAGE_WIN_16 ((NTSTATUS)0xC0000131L) // // MessageId: STATUS_LOGON_SERVER_CONFLICT // // MessageText: // // The Netlogon service cannot start because another Netlogon service running in the domain conflicts with the specified role. // #define STATUS_LOGON_SERVER_CONFLICT ((NTSTATUS)0xC0000132L) // // MessageId: STATUS_TIME_DIFFERENCE_AT_DC // // MessageText: // // The time at the Primary Domain Controller is different than the time at the Backup Domain Controller or member server by too large an amount. // #define STATUS_TIME_DIFFERENCE_AT_DC ((NTSTATUS)0xC0000133L) // // MessageId: STATUS_SYNCHRONIZATION_REQUIRED // // MessageText: // // The SAM database on a Windows Server is significantly out of synchronization with the copy on the Domain Controller. A complete synchronization is required. // #define STATUS_SYNCHRONIZATION_REQUIRED ((NTSTATUS)0xC0000134L) // // MessageId: STATUS_DLL_NOT_FOUND // // MessageText: // // {Unable To Locate Component} // This application has failed to start because %hs was not found. Re-installing the application may fix this problem. // #define STATUS_DLL_NOT_FOUND ((NTSTATUS)0xC0000135L) // // MessageId: STATUS_OPEN_FAILED // // MessageText: // // The NtCreateFile API failed. This error should never be returned to an application, it is a place holder for the Windows Lan Manager Redirector to use in its internal error mapping routines. // #define STATUS_OPEN_FAILED ((NTSTATUS)0xC0000136L) // // MessageId: STATUS_IO_PRIVILEGE_FAILED // // MessageText: // // {Privilege Failed} // The I/O permissions for the process could not be changed. // #define STATUS_IO_PRIVILEGE_FAILED ((NTSTATUS)0xC0000137L) // // MessageId: STATUS_ORDINAL_NOT_FOUND // // MessageText: // // {Ordinal Not Found} // The ordinal %ld could not be located in the dynamic link library %hs. // #define STATUS_ORDINAL_NOT_FOUND ((NTSTATUS)0xC0000138L) // // MessageId: STATUS_ENTRYPOINT_NOT_FOUND // // MessageText: // // {Entry Point Not Found} // The procedure entry point %hs could not be located in the dynamic link library %hs. // #define STATUS_ENTRYPOINT_NOT_FOUND ((NTSTATUS)0xC0000139L) // // MessageId: STATUS_CONTROL_C_EXIT // // MessageText: // // {Application Exit by CTRL+C} // The application terminated as a result of a CTRL+C. // #define STATUS_CONTROL_C_EXIT ((NTSTATUS)0xC000013AL) // winnt // // MessageId: STATUS_LOCAL_DISCONNECT // // MessageText: // // {Virtual Circuit Closed} // The network transport on your computer has closed a network connection. There may or may not be I/O requests outstanding. // #define STATUS_LOCAL_DISCONNECT ((NTSTATUS)0xC000013BL) // // MessageId: STATUS_REMOTE_DISCONNECT // // MessageText: // // {Virtual Circuit Closed} // The network transport on a remote computer has closed a network connection. There may or may not be I/O requests outstanding. // #define STATUS_REMOTE_DISCONNECT ((NTSTATUS)0xC000013CL) // // MessageId: STATUS_REMOTE_RESOURCES // // MessageText: // // {Insufficient Resources on Remote Computer} // The remote computer has insufficient resources to complete the network request. For instance, there may not be enough memory available on the remote computer to carry out the request at this time. // #define STATUS_REMOTE_RESOURCES ((NTSTATUS)0xC000013DL) // // MessageId: STATUS_LINK_FAILED // // MessageText: // // {Virtual Circuit Closed} // An existing connection (virtual circuit) has been broken at the remote computer. There is probably something wrong with the network software protocol or the network hardware on the remote computer. // #define STATUS_LINK_FAILED ((NTSTATUS)0xC000013EL) // // MessageId: STATUS_LINK_TIMEOUT // // MessageText: // // {Virtual Circuit Closed} // The network transport on your computer has closed a network connection because it had to wait too long for a response from the remote computer. // #define STATUS_LINK_TIMEOUT ((NTSTATUS)0xC000013FL) // // MessageId: STATUS_INVALID_CONNECTION // // MessageText: // // The connection handle given to the transport was invalid. // #define STATUS_INVALID_CONNECTION ((NTSTATUS)0xC0000140L) // // MessageId: STATUS_INVALID_ADDRESS // // MessageText: // // The address handle given to the transport was invalid. // #define STATUS_INVALID_ADDRESS ((NTSTATUS)0xC0000141L) // // MessageId: STATUS_DLL_INIT_FAILED // // MessageText: // // {DLL Initialization Failed} // Initialization of the dynamic link library %hs failed. The process is terminating abnormally. // #define STATUS_DLL_INIT_FAILED ((NTSTATUS)0xC0000142L) // // MessageId: STATUS_MISSING_SYSTEMFILE // // MessageText: // // {Missing System File} // The required system file %hs is bad or missing. // #define STATUS_MISSING_SYSTEMFILE ((NTSTATUS)0xC0000143L) // // MessageId: STATUS_UNHANDLED_EXCEPTION // // MessageText: // // {Application Error} // The exception %s (0x%08lx) occurred in the application at location 0x%08lx. // #define STATUS_UNHANDLED_EXCEPTION ((NTSTATUS)0xC0000144L) // // MessageId: STATUS_APP_INIT_FAILURE // // MessageText: // // {Application Error} // The application failed to initialize properly (0x%lx). Click on OK to terminate the application. // #define STATUS_APP_INIT_FAILURE ((NTSTATUS)0xC0000145L) // // MessageId: STATUS_PAGEFILE_CREATE_FAILED // // MessageText: // // {Unable to Create Paging File} // The creation of the paging file %hs failed (%lx). The requested size was %ld. // #define STATUS_PAGEFILE_CREATE_FAILED ((NTSTATUS)0xC0000146L) // // MessageId: STATUS_NO_PAGEFILE // // MessageText: // // {No Paging File Specified} // No paging file was specified in the system configuration. // #define STATUS_NO_PAGEFILE ((NTSTATUS)0xC0000147L) // // MessageId: STATUS_INVALID_LEVEL // // MessageText: // // {Incorrect System Call Level} // An invalid level was passed into the specified system call. // #define STATUS_INVALID_LEVEL ((NTSTATUS)0xC0000148L) // // MessageId: STATUS_WRONG_PASSWORD_CORE // // MessageText: // // {Incorrect Password to LAN Manager Server} // You specified an incorrect password to a LAN Manager 2.x or MS-NET server. // #define STATUS_WRONG_PASSWORD_CORE ((NTSTATUS)0xC0000149L) // // MessageId: STATUS_ILLEGAL_FLOAT_CONTEXT // // MessageText: // // {EXCEPTION} // A real-mode application issued a floating-point instruction and floating-point hardware is not present. // #define STATUS_ILLEGAL_FLOAT_CONTEXT ((NTSTATUS)0xC000014AL) // // MessageId: STATUS_PIPE_BROKEN // // MessageText: // // The pipe operation has failed because the other end of the pipe has been closed. // #define STATUS_PIPE_BROKEN ((NTSTATUS)0xC000014BL) // // MessageId: STATUS_REGISTRY_CORRUPT // // MessageText: // // {The Registry Is Corrupt} // The structure of one of the files that contains Registry data is corrupt, or the image of the file in memory is corrupt, or the file could not be recovered because the alternate copy or log was absent or corrupt. // #define STATUS_REGISTRY_CORRUPT ((NTSTATUS)0xC000014CL) // // MessageId: STATUS_REGISTRY_IO_FAILED // // MessageText: // // An I/O operation initiated by the Registry failed unrecoverably. // The Registry could not read in, or write out, or flush, one of the files that contain the system's image of the Registry. // #define STATUS_REGISTRY_IO_FAILED ((NTSTATUS)0xC000014DL) // // MessageId: STATUS_NO_EVENT_PAIR // // MessageText: // // An event pair synchronization operation was performed using the thread specific client/server event pair object, but no event pair object was associated with the thread. // #define STATUS_NO_EVENT_PAIR ((NTSTATUS)0xC000014EL) // // MessageId: STATUS_UNRECOGNIZED_VOLUME // // MessageText: // // The volume does not contain a recognized file system. // Please make sure that all required file system drivers are loaded and that the volume is not corrupt. // #define STATUS_UNRECOGNIZED_VOLUME ((NTSTATUS)0xC000014FL) // // MessageId: STATUS_SERIAL_NO_DEVICE_INITED // // MessageText: // // No serial device was successfully initialized. The serial driver will unload. // #define STATUS_SERIAL_NO_DEVICE_INITED ((NTSTATUS)0xC0000150L) // // MessageId: STATUS_NO_SUCH_ALIAS // // MessageText: // // The specified local group does not exist. // #define STATUS_NO_SUCH_ALIAS ((NTSTATUS)0xC0000151L) // // MessageId: STATUS_MEMBER_NOT_IN_ALIAS // // MessageText: // // The specified account name is not a member of the local group. // #define STATUS_MEMBER_NOT_IN_ALIAS ((NTSTATUS)0xC0000152L) // // MessageId: STATUS_MEMBER_IN_ALIAS // // MessageText: // // The specified account name is already a member of the local group. // #define STATUS_MEMBER_IN_ALIAS ((NTSTATUS)0xC0000153L) // // MessageId: STATUS_ALIAS_EXISTS // // MessageText: // // The specified local group already exists. // #define STATUS_ALIAS_EXISTS ((NTSTATUS)0xC0000154L) // // MessageId: STATUS_LOGON_NOT_GRANTED // // MessageText: // // A requested type of logon (e.g., Interactive, Network, Service) is not granted by the target system's local security policy. // Please ask the system administrator to grant the necessary form of logon. // #define STATUS_LOGON_NOT_GRANTED ((NTSTATUS)0xC0000155L) // // MessageId: STATUS_TOO_MANY_SECRETS // // MessageText: // // The maximum number of secrets that may be stored in a single system has been exceeded. The length and number of secrets is limited to satisfy United States State Department export restrictions. // #define STATUS_TOO_MANY_SECRETS ((NTSTATUS)0xC0000156L) // // MessageId: STATUS_SECRET_TOO_LONG // // MessageText: // // The length of a secret exceeds the maximum length allowed. The length and number of secrets is limited to satisfy United States State Department export restrictions. // #define STATUS_SECRET_TOO_LONG ((NTSTATUS)0xC0000157L) // // MessageId: STATUS_INTERNAL_DB_ERROR // // MessageText: // // The Local Security Authority (LSA) database contains an internal inconsistency. // #define STATUS_INTERNAL_DB_ERROR ((NTSTATUS)0xC0000158L) // // MessageId: STATUS_FULLSCREEN_MODE // // MessageText: // // The requested operation cannot be performed in fullscreen mode. // #define STATUS_FULLSCREEN_MODE ((NTSTATUS)0xC0000159L) // // MessageId: STATUS_TOO_MANY_CONTEXT_IDS // // MessageText: // // During a logon attempt, the user's security context accumulated too many security IDs. This is a very unusual situation. // Remove the user from some global or local groups to reduce the number of security ids to incorporate into the security context. // #define STATUS_TOO_MANY_CONTEXT_IDS ((NTSTATUS)0xC000015AL) // // MessageId: STATUS_LOGON_TYPE_NOT_GRANTED // // MessageText: // // A user has requested a type of logon (e.g., interactive or network) that has not been granted. An administrator has control over who may logon interactively and through the network. // #define STATUS_LOGON_TYPE_NOT_GRANTED ((NTSTATUS)0xC000015BL) // // MessageId: STATUS_NOT_REGISTRY_FILE // // MessageText: // // The system has attempted to load or restore a file into the registry, and the specified file is not in the format of a registry file. // #define STATUS_NOT_REGISTRY_FILE ((NTSTATUS)0xC000015CL) // // MessageId: STATUS_NT_CROSS_ENCRYPTION_REQUIRED // // MessageText: // // An attempt was made to change a user password in the security account manager without providing the necessary Windows cross-encrypted password. // #define STATUS_NT_CROSS_ENCRYPTION_REQUIRED ((NTSTATUS)0xC000015DL) // // MessageId: STATUS_DOMAIN_CTRLR_CONFIG_ERROR // // MessageText: // // A Windows Server has an incorrect configuration. // #define STATUS_DOMAIN_CTRLR_CONFIG_ERROR ((NTSTATUS)0xC000015EL) // // MessageId: STATUS_FT_MISSING_MEMBER // // MessageText: // // An attempt was made to explicitly access the secondary copy of information via a device control to the Fault Tolerance driver and the secondary copy is not present in the system. // #define STATUS_FT_MISSING_MEMBER ((NTSTATUS)0xC000015FL) // // MessageId: STATUS_ILL_FORMED_SERVICE_ENTRY // // MessageText: // // A configuration registry node representing a driver service entry was ill-formed and did not contain required value entries. // #define STATUS_ILL_FORMED_SERVICE_ENTRY ((NTSTATUS)0xC0000160L) // // MessageId: STATUS_ILLEGAL_CHARACTER // // MessageText: // // An illegal character was encountered. For a multi-byte character set this includes a lead byte without a succeeding trail byte. For the Unicode character set this includes the characters 0xFFFF and 0xFFFE. // #define STATUS_ILLEGAL_CHARACTER ((NTSTATUS)0xC0000161L) // // MessageId: STATUS_UNMAPPABLE_CHARACTER // // MessageText: // // No mapping for the Unicode character exists in the target multi-byte code page. // #define STATUS_UNMAPPABLE_CHARACTER ((NTSTATUS)0xC0000162L) // // MessageId: STATUS_UNDEFINED_CHARACTER // // MessageText: // // The Unicode character is not defined in the Unicode character set installed on the system. // #define STATUS_UNDEFINED_CHARACTER ((NTSTATUS)0xC0000163L) // // MessageId: STATUS_FLOPPY_VOLUME // // MessageText: // // The paging file cannot be created on a floppy diskette. // #define STATUS_FLOPPY_VOLUME ((NTSTATUS)0xC0000164L) // // MessageId: STATUS_FLOPPY_ID_MARK_NOT_FOUND // // MessageText: // // {Floppy Disk Error} // While accessing a floppy disk, an ID address mark was not found. // #define STATUS_FLOPPY_ID_MARK_NOT_FOUND ((NTSTATUS)0xC0000165L) // // MessageId: STATUS_FLOPPY_WRONG_CYLINDER // // MessageText: // // {Floppy Disk Error} // While accessing a floppy disk, the track address from the sector ID field was found to be different than the track address maintained by the controller. // #define STATUS_FLOPPY_WRONG_CYLINDER ((NTSTATUS)0xC0000166L) // // MessageId: STATUS_FLOPPY_UNKNOWN_ERROR // // MessageText: // // {Floppy Disk Error} // The floppy disk controller reported an error that is not recognized by the floppy disk driver. // #define STATUS_FLOPPY_UNKNOWN_ERROR ((NTSTATUS)0xC0000167L) // // MessageId: STATUS_FLOPPY_BAD_REGISTERS // // MessageText: // // {Floppy Disk Error} // While accessing a floppy-disk, the controller returned inconsistent results via its registers. // #define STATUS_FLOPPY_BAD_REGISTERS ((NTSTATUS)0xC0000168L) // // MessageId: STATUS_DISK_RECALIBRATE_FAILED // // MessageText: // // {Hard Disk Error} // While accessing the hard disk, a recalibrate operation failed, even after retries. // #define STATUS_DISK_RECALIBRATE_FAILED ((NTSTATUS)0xC0000169L) // // MessageId: STATUS_DISK_OPERATION_FAILED // // MessageText: // // {Hard Disk Error} // While accessing the hard disk, a disk operation failed even after retries. // #define STATUS_DISK_OPERATION_FAILED ((NTSTATUS)0xC000016AL) // // MessageId: STATUS_DISK_RESET_FAILED // // MessageText: // // {Hard Disk Error} // While accessing the hard disk, a disk controller reset was needed, but even that failed. // #define STATUS_DISK_RESET_FAILED ((NTSTATUS)0xC000016BL) // // MessageId: STATUS_SHARED_IRQ_BUSY // // MessageText: // // An attempt was made to open a device that was sharing an IRQ with other devices. // At least one other device that uses that IRQ was already opened. // Two concurrent opens of devices that share an IRQ and only work via interrupts is not supported for the particular bus type that the devices use. // #define STATUS_SHARED_IRQ_BUSY ((NTSTATUS)0xC000016CL) // // MessageId: STATUS_FT_ORPHANING // // MessageText: // // {FT Orphaning} // A disk that is part of a fault-tolerant volume can no longer be accessed. // #define STATUS_FT_ORPHANING ((NTSTATUS)0xC000016DL) // // MessageId: STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT // // MessageText: // // The system bios failed to connect a system interrupt to the device or bus for // which the device is connected. // #define STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT ((NTSTATUS)0xC000016EL) // // MessageId: STATUS_PARTITION_FAILURE // // MessageText: // // Tape could not be partitioned. // #define STATUS_PARTITION_FAILURE ((NTSTATUS)0xC0000172L) // // MessageId: STATUS_INVALID_BLOCK_LENGTH // // MessageText: // // When accessing a new tape of a multivolume partition, the current blocksize is incorrect. // #define STATUS_INVALID_BLOCK_LENGTH ((NTSTATUS)0xC0000173L) // // MessageId: STATUS_DEVICE_NOT_PARTITIONED // // MessageText: // // Tape partition information could not be found when loading a tape. // #define STATUS_DEVICE_NOT_PARTITIONED ((NTSTATUS)0xC0000174L) // // MessageId: STATUS_UNABLE_TO_LOCK_MEDIA // // MessageText: // // Attempt to lock the eject media mechanism fails. // #define STATUS_UNABLE_TO_LOCK_MEDIA ((NTSTATUS)0xC0000175L) // // MessageId: STATUS_UNABLE_TO_UNLOAD_MEDIA // // MessageText: // // Unload media fails. // #define STATUS_UNABLE_TO_UNLOAD_MEDIA ((NTSTATUS)0xC0000176L) // // MessageId: STATUS_EOM_OVERFLOW // // MessageText: // // Physical end of tape was detected. // #define STATUS_EOM_OVERFLOW ((NTSTATUS)0xC0000177L) // // MessageId: STATUS_NO_MEDIA // // MessageText: // // {No Media} // There is no media in the drive. // Please insert media into drive %hs. // #define STATUS_NO_MEDIA ((NTSTATUS)0xC0000178L) // // MessageId: STATUS_NO_SUCH_MEMBER // // MessageText: // // A member could not be added to or removed from the local group because the member does not exist. // #define STATUS_NO_SUCH_MEMBER ((NTSTATUS)0xC000017AL) // // MessageId: STATUS_INVALID_MEMBER // // MessageText: // // A new member could not be added to a local group because the member has the wrong account type. // #define STATUS_INVALID_MEMBER ((NTSTATUS)0xC000017BL) // // MessageId: STATUS_KEY_DELETED // // MessageText: // // Illegal operation attempted on a registry key which has been marked for deletion. // #define STATUS_KEY_DELETED ((NTSTATUS)0xC000017CL) // // MessageId: STATUS_NO_LOG_SPACE // // MessageText: // // System could not allocate required space in a registry log. // #define STATUS_NO_LOG_SPACE ((NTSTATUS)0xC000017DL) // // MessageId: STATUS_TOO_MANY_SIDS // // MessageText: // // Too many Sids have been specified. // #define STATUS_TOO_MANY_SIDS ((NTSTATUS)0xC000017EL) // // MessageId: STATUS_LM_CROSS_ENCRYPTION_REQUIRED // // MessageText: // // An attempt was made to change a user password in the security account manager without providing the necessary LM cross-encrypted password. // #define STATUS_LM_CROSS_ENCRYPTION_REQUIRED ((NTSTATUS)0xC000017FL) // // MessageId: STATUS_KEY_HAS_CHILDREN // // MessageText: // // An attempt was made to create a symbolic link in a registry key that already has subkeys or values. // #define STATUS_KEY_HAS_CHILDREN ((NTSTATUS)0xC0000180L) // // MessageId: STATUS_CHILD_MUST_BE_VOLATILE // // MessageText: // // An attempt was made to create a Stable subkey under a Volatile parent key. // #define STATUS_CHILD_MUST_BE_VOLATILE ((NTSTATUS)0xC0000181L) // // MessageId: STATUS_DEVICE_CONFIGURATION_ERROR // // MessageText: // // The I/O device is configured incorrectly or the configuration parameters to the driver are incorrect. // #define STATUS_DEVICE_CONFIGURATION_ERROR ((NTSTATUS)0xC0000182L) // // MessageId: STATUS_DRIVER_INTERNAL_ERROR // // MessageText: // // An error was detected between two drivers or within an I/O driver. // #define STATUS_DRIVER_INTERNAL_ERROR ((NTSTATUS)0xC0000183L) // // MessageId: STATUS_INVALID_DEVICE_STATE // // MessageText: // // The device is not in a valid state to perform this request. // #define STATUS_INVALID_DEVICE_STATE ((NTSTATUS)0xC0000184L) // // MessageId: STATUS_IO_DEVICE_ERROR // // MessageText: // // The I/O device reported an I/O error. // #define STATUS_IO_DEVICE_ERROR ((NTSTATUS)0xC0000185L) // // MessageId: STATUS_DEVICE_PROTOCOL_ERROR // // MessageText: // // A protocol error was detected between the driver and the device. // #define STATUS_DEVICE_PROTOCOL_ERROR ((NTSTATUS)0xC0000186L) // // MessageId: STATUS_BACKUP_CONTROLLER // // MessageText: // // This operation is only allowed for the Primary Domain Controller of the domain. // #define STATUS_BACKUP_CONTROLLER ((NTSTATUS)0xC0000187L) // // MessageId: STATUS_LOG_FILE_FULL // // MessageText: // // Log file space is insufficient to support this operation. // #define STATUS_LOG_FILE_FULL ((NTSTATUS)0xC0000188L) // // MessageId: STATUS_TOO_LATE // // MessageText: // // A write operation was attempted to a volume after it was dismounted. // #define STATUS_TOO_LATE ((NTSTATUS)0xC0000189L) // // MessageId: STATUS_NO_TRUST_LSA_SECRET // // MessageText: // // The workstation does not have a trust secret for the primary domain in the local LSA database. // #define STATUS_NO_TRUST_LSA_SECRET ((NTSTATUS)0xC000018AL) // // MessageId: STATUS_NO_TRUST_SAM_ACCOUNT // // MessageText: // // The SAM database on the Windows Server does not have a computer account for this workstation trust relationship. // #define STATUS_NO_TRUST_SAM_ACCOUNT ((NTSTATUS)0xC000018BL) // // MessageId: STATUS_TRUSTED_DOMAIN_FAILURE // // MessageText: // // The logon request failed because the trust relationship between the primary domain and the trusted domain failed. // #define STATUS_TRUSTED_DOMAIN_FAILURE ((NTSTATUS)0xC000018CL) // // MessageId: STATUS_TRUSTED_RELATIONSHIP_FAILURE // // MessageText: // // The logon request failed because the trust relationship between this workstation and the primary domain failed. // #define STATUS_TRUSTED_RELATIONSHIP_FAILURE ((NTSTATUS)0xC000018DL) // // MessageId: STATUS_EVENTLOG_FILE_CORRUPT // // MessageText: // // The Eventlog log file is corrupt. // #define STATUS_EVENTLOG_FILE_CORRUPT ((NTSTATUS)0xC000018EL) // // MessageId: STATUS_EVENTLOG_CANT_START // // MessageText: // // No Eventlog log file could be opened. The Eventlog service did not start. // #define STATUS_EVENTLOG_CANT_START ((NTSTATUS)0xC000018FL) // // MessageId: STATUS_TRUST_FAILURE // // MessageText: // // The network logon failed. This may be because the validation authority can't be reached. // #define STATUS_TRUST_FAILURE ((NTSTATUS)0xC0000190L) // // MessageId: STATUS_MUTANT_LIMIT_EXCEEDED // // MessageText: // // An attempt was made to acquire a mutant such that its maximum count would have been exceeded. // #define STATUS_MUTANT_LIMIT_EXCEEDED ((NTSTATUS)0xC0000191L) // // MessageId: STATUS_NETLOGON_NOT_STARTED // // MessageText: // // An attempt was made to logon, but the netlogon service was not started. // #define STATUS_NETLOGON_NOT_STARTED ((NTSTATUS)0xC0000192L) // // MessageId: STATUS_ACCOUNT_EXPIRED // // MessageText: // // The user's account has expired. // #define STATUS_ACCOUNT_EXPIRED ((NTSTATUS)0xC0000193L) // ntsubauth // // MessageId: STATUS_POSSIBLE_DEADLOCK // // MessageText: // // {EXCEPTION} // Possible deadlock condition. // #define STATUS_POSSIBLE_DEADLOCK ((NTSTATUS)0xC0000194L) // // MessageId: STATUS_NETWORK_CREDENTIAL_CONFLICT // // MessageText: // // Multiple connections to a server or shared resource by the same user, using more than one user name, are not allowed. Disconnect all previous connections to the server or shared resource and try again. // #define STATUS_NETWORK_CREDENTIAL_CONFLICT ((NTSTATUS)0xC0000195L) // // MessageId: STATUS_REMOTE_SESSION_LIMIT // // MessageText: // // An attempt was made to establish a session to a network server, but there are already too many sessions established to that server. // #define STATUS_REMOTE_SESSION_LIMIT ((NTSTATUS)0xC0000196L) // // MessageId: STATUS_EVENTLOG_FILE_CHANGED // // MessageText: // // The log file has changed between reads. // #define STATUS_EVENTLOG_FILE_CHANGED ((NTSTATUS)0xC0000197L) // // MessageId: STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT // // MessageText: // // The account used is an Interdomain Trust account. Use your global user account or local user account to access this server. // #define STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT ((NTSTATUS)0xC0000198L) // // MessageId: STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT // // MessageText: // // The account used is a Computer Account. Use your global user account or local user account to access this server. // #define STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT ((NTSTATUS)0xC0000199L) // // MessageId: STATUS_NOLOGON_SERVER_TRUST_ACCOUNT // // MessageText: // // The account used is an Server Trust account. Use your global user account or local user account to access this server. // #define STATUS_NOLOGON_SERVER_TRUST_ACCOUNT ((NTSTATUS)0xC000019AL) // // MessageId: STATUS_DOMAIN_TRUST_INCONSISTENT // // MessageText: // // The name or SID of the domain specified is inconsistent with the trust information for that domain. // #define STATUS_DOMAIN_TRUST_INCONSISTENT ((NTSTATUS)0xC000019BL) // // MessageId: STATUS_FS_DRIVER_REQUIRED // // MessageText: // // A volume has been accessed for which a file system driver is required that has not yet been loaded. // #define STATUS_FS_DRIVER_REQUIRED ((NTSTATUS)0xC000019CL) // // MessageId: STATUS_NO_USER_SESSION_KEY // // MessageText: // // There is no user session key for the specified logon session. // #define STATUS_NO_USER_SESSION_KEY ((NTSTATUS)0xC0000202L) // // MessageId: STATUS_USER_SESSION_DELETED // // MessageText: // // The remote user session has been deleted. // #define STATUS_USER_SESSION_DELETED ((NTSTATUS)0xC0000203L) // // MessageId: STATUS_RESOURCE_LANG_NOT_FOUND // // MessageText: // // Indicates the specified resource language ID cannot be found in the // image file. // #define STATUS_RESOURCE_LANG_NOT_FOUND ((NTSTATUS)0xC0000204L) // // MessageId: STATUS_INSUFF_SERVER_RESOURCES // // MessageText: // // Insufficient server resources exist to complete the request. // #define STATUS_INSUFF_SERVER_RESOURCES ((NTSTATUS)0xC0000205L) // // MessageId: STATUS_INVALID_BUFFER_SIZE // // MessageText: // // The size of the buffer is invalid for the specified operation. // #define STATUS_INVALID_BUFFER_SIZE ((NTSTATUS)0xC0000206L) // // MessageId: STATUS_INVALID_ADDRESS_COMPONENT // // MessageText: // // The transport rejected the network address specified as invalid. // #define STATUS_INVALID_ADDRESS_COMPONENT ((NTSTATUS)0xC0000207L) // // MessageId: STATUS_INVALID_ADDRESS_WILDCARD // // MessageText: // // The transport rejected the network address specified due to an invalid use of a wildcard. // #define STATUS_INVALID_ADDRESS_WILDCARD ((NTSTATUS)0xC0000208L) // // MessageId: STATUS_TOO_MANY_ADDRESSES // // MessageText: // // The transport address could not be opened because all the available addresses are in use. // #define STATUS_TOO_MANY_ADDRESSES ((NTSTATUS)0xC0000209L) // // MessageId: STATUS_ADDRESS_ALREADY_EXISTS // // MessageText: // // The transport address could not be opened because it already exists. // #define STATUS_ADDRESS_ALREADY_EXISTS ((NTSTATUS)0xC000020AL) // // MessageId: STATUS_ADDRESS_CLOSED // // MessageText: // // The transport address is now closed. // #define STATUS_ADDRESS_CLOSED ((NTSTATUS)0xC000020BL) // // MessageId: STATUS_CONNECTION_DISCONNECTED // // MessageText: // // The transport connection is now disconnected. // #define STATUS_CONNECTION_DISCONNECTED ((NTSTATUS)0xC000020CL) // // MessageId: STATUS_CONNECTION_RESET // // MessageText: // // The transport connection has been reset. // #define STATUS_CONNECTION_RESET ((NTSTATUS)0xC000020DL) // // MessageId: STATUS_TOO_MANY_NODES // // MessageText: // // The transport cannot dynamically acquire any more nodes. // #define STATUS_TOO_MANY_NODES ((NTSTATUS)0xC000020EL) // // MessageId: STATUS_TRANSACTION_ABORTED // // MessageText: // // The transport aborted a pending transaction. // #define STATUS_TRANSACTION_ABORTED ((NTSTATUS)0xC000020FL) // // MessageId: STATUS_TRANSACTION_TIMED_OUT // // MessageText: // // The transport timed out a request waiting for a response. // #define STATUS_TRANSACTION_TIMED_OUT ((NTSTATUS)0xC0000210L) // // MessageId: STATUS_TRANSACTION_NO_RELEASE // // MessageText: // // The transport did not receive a release for a pending response. // #define STATUS_TRANSACTION_NO_RELEASE ((NTSTATUS)0xC0000211L) // // MessageId: STATUS_TRANSACTION_NO_MATCH // // MessageText: // // The transport did not find a transaction matching the specific // token. // #define STATUS_TRANSACTION_NO_MATCH ((NTSTATUS)0xC0000212L) // // MessageId: STATUS_TRANSACTION_RESPONDED // // MessageText: // // The transport had previously responded to a transaction request. // #define STATUS_TRANSACTION_RESPONDED ((NTSTATUS)0xC0000213L) // // MessageId: STATUS_TRANSACTION_INVALID_ID // // MessageText: // // The transport does not recognized the transaction request identifier specified. // #define STATUS_TRANSACTION_INVALID_ID ((NTSTATUS)0xC0000214L) // // MessageId: STATUS_TRANSACTION_INVALID_TYPE // // MessageText: // // The transport does not recognize the transaction request type specified. // #define STATUS_TRANSACTION_INVALID_TYPE ((NTSTATUS)0xC0000215L) // // MessageId: STATUS_NOT_SERVER_SESSION // // MessageText: // // The transport can only process the specified request on the server side of a session. // #define STATUS_NOT_SERVER_SESSION ((NTSTATUS)0xC0000216L) // // MessageId: STATUS_NOT_CLIENT_SESSION // // MessageText: // // The transport can only process the specified request on the client side of a session. // #define STATUS_NOT_CLIENT_SESSION ((NTSTATUS)0xC0000217L) // // MessageId: STATUS_CANNOT_LOAD_REGISTRY_FILE // // MessageText: // // {Registry File Failure} // The registry cannot load the hive (file): // %hs // or its log or alternate. // It is corrupt, absent, or not writable. // #define STATUS_CANNOT_LOAD_REGISTRY_FILE ((NTSTATUS)0xC0000218L) // // MessageId: STATUS_DEBUG_ATTACH_FAILED // // MessageText: // // {Unexpected Failure in DebugActiveProcess} // An unexpected failure occurred while processing a DebugActiveProcess API request. You may choose OK to terminate the process, or Cancel to ignore the error. // #define STATUS_DEBUG_ATTACH_FAILED ((NTSTATUS)0xC0000219L) // // MessageId: STATUS_SYSTEM_PROCESS_TERMINATED // // MessageText: // // {Fatal System Error} // The %hs system process terminated unexpectedly with a status of 0x%08x (0x%08x 0x%08x). // The system has been shut down. // #define STATUS_SYSTEM_PROCESS_TERMINATED ((NTSTATUS)0xC000021AL) // // MessageId: STATUS_DATA_NOT_ACCEPTED // // MessageText: // // {Data Not Accepted} // The TDI client could not handle the data received during an indication. // #define STATUS_DATA_NOT_ACCEPTED ((NTSTATUS)0xC000021BL) // // MessageId: STATUS_NO_BROWSER_SERVERS_FOUND // // MessageText: // // {Unable to Retrieve Browser Server List} // The list of servers for this workgroup is not currently available. // #define STATUS_NO_BROWSER_SERVERS_FOUND ((NTSTATUS)0xC000021CL) // // MessageId: STATUS_VDM_HARD_ERROR // // MessageText: // // NTVDM encountered a hard error. // #define STATUS_VDM_HARD_ERROR ((NTSTATUS)0xC000021DL) // // MessageId: STATUS_DRIVER_CANCEL_TIMEOUT // // MessageText: // // {Cancel Timeout} // The driver %hs failed to complete a cancelled I/O request in the allotted time. // #define STATUS_DRIVER_CANCEL_TIMEOUT ((NTSTATUS)0xC000021EL) // // MessageId: STATUS_REPLY_MESSAGE_MISMATCH // // MessageText: // // {Reply Message Mismatch} // An attempt was made to reply to an LPC message, but the thread specified by the client ID in the message was not waiting on that message. // #define STATUS_REPLY_MESSAGE_MISMATCH ((NTSTATUS)0xC000021FL) // // MessageId: STATUS_MAPPED_ALIGNMENT // // MessageText: // // {Mapped View Alignment Incorrect} // An attempt was made to map a view of a file, but either the specified base address or the offset into the file were not aligned on the proper allocation granularity. // #define STATUS_MAPPED_ALIGNMENT ((NTSTATUS)0xC0000220L) // // MessageId: STATUS_IMAGE_CHECKSUM_MISMATCH // // MessageText: // // {Bad Image Checksum} // The image %hs is possibly corrupt. The header checksum does not match the computed checksum. // #define STATUS_IMAGE_CHECKSUM_MISMATCH ((NTSTATUS)0xC0000221L) // // MessageId: STATUS_LOST_WRITEBEHIND_DATA // // MessageText: // // {Delayed Write Failed} // Windows was unable to save all the data for the file %hs. The data has been lost. // This error may be caused by a failure of your computer hardware or network connection. Please try to save this file elsewhere. // #define STATUS_LOST_WRITEBEHIND_DATA ((NTSTATUS)0xC0000222L) // // MessageId: STATUS_CLIENT_SERVER_PARAMETERS_INVALID // // MessageText: // // The parameter(s) passed to the server in the client/server shared memory window were invalid. Too much data may have been put in the shared memory window. // #define STATUS_CLIENT_SERVER_PARAMETERS_INVALID ((NTSTATUS)0xC0000223L) // // MessageId: STATUS_PASSWORD_MUST_CHANGE // // MessageText: // // The user's password must be changed before logging on the first time. // #define STATUS_PASSWORD_MUST_CHANGE ((NTSTATUS)0xC0000224L) // ntsubauth // // MessageId: STATUS_NOT_FOUND // // MessageText: // // The object was not found. // #define STATUS_NOT_FOUND ((NTSTATUS)0xC0000225L) // // MessageId: STATUS_NOT_TINY_STREAM // // MessageText: // // The stream is not a tiny stream. // #define STATUS_NOT_TINY_STREAM ((NTSTATUS)0xC0000226L) // // MessageId: STATUS_RECOVERY_FAILURE // // MessageText: // // A transaction recover failed. // #define STATUS_RECOVERY_FAILURE ((NTSTATUS)0xC0000227L) // // MessageId: STATUS_STACK_OVERFLOW_READ // // MessageText: // // The request must be handled by the stack overflow code. // #define STATUS_STACK_OVERFLOW_READ ((NTSTATUS)0xC0000228L) // // MessageId: STATUS_FAIL_CHECK // // MessageText: // // A consistency check failed. // #define STATUS_FAIL_CHECK ((NTSTATUS)0xC0000229L) // // MessageId: STATUS_DUPLICATE_OBJECTID // // MessageText: // // The attempt to insert the ID in the index failed because the ID is already in the index. // #define STATUS_DUPLICATE_OBJECTID ((NTSTATUS)0xC000022AL) // // MessageId: STATUS_OBJECTID_EXISTS // // MessageText: // // The attempt to set the object's ID failed because the object already has an ID. // #define STATUS_OBJECTID_EXISTS ((NTSTATUS)0xC000022BL) // // MessageId: STATUS_CONVERT_TO_LARGE // // MessageText: // // Internal OFS status codes indicating how an allocation operation is handled. Either it is retried after the containing onode is moved or the extent stream is converted to a large stream. // #define STATUS_CONVERT_TO_LARGE ((NTSTATUS)0xC000022CL) // // MessageId: STATUS_RETRY // // MessageText: // // The request needs to be retried. // #define STATUS_RETRY ((NTSTATUS)0xC000022DL) // // MessageId: STATUS_FOUND_OUT_OF_SCOPE // // MessageText: // // The attempt to find the object found an object matching by ID on the volume but it is out of the scope of the handle used for the operation. // #define STATUS_FOUND_OUT_OF_SCOPE ((NTSTATUS)0xC000022EL) // // MessageId: STATUS_ALLOCATE_BUCKET // // MessageText: // // The bucket array must be grown. Retry transaction after doing so. // #define STATUS_ALLOCATE_BUCKET ((NTSTATUS)0xC000022FL) // // MessageId: STATUS_PROPSET_NOT_FOUND // // MessageText: // // The property set specified does not exist on the object. // #define STATUS_PROPSET_NOT_FOUND ((NTSTATUS)0xC0000230L) // // MessageId: STATUS_MARSHALL_OVERFLOW // // MessageText: // // The user/kernel marshalling buffer has overflowed. // #define STATUS_MARSHALL_OVERFLOW ((NTSTATUS)0xC0000231L) // // MessageId: STATUS_INVALID_VARIANT // // MessageText: // // The supplied variant structure contains invalid data. // #define STATUS_INVALID_VARIANT ((NTSTATUS)0xC0000232L) // // MessageId: STATUS_DOMAIN_CONTROLLER_NOT_FOUND // // MessageText: // // Could not find a domain controller for this domain. // #define STATUS_DOMAIN_CONTROLLER_NOT_FOUND ((NTSTATUS)0xC0000233L) // // MessageId: STATUS_ACCOUNT_LOCKED_OUT // // MessageText: // // The user account has been automatically locked because too many invalid logon attempts or password change attempts have been requested. // #define STATUS_ACCOUNT_LOCKED_OUT ((NTSTATUS)0xC0000234L) // ntsubauth // // MessageId: STATUS_HANDLE_NOT_CLOSABLE // // MessageText: // // NtClose was called on a handle that was protected from close via NtSetInformationObject. // #define STATUS_HANDLE_NOT_CLOSABLE ((NTSTATUS)0xC0000235L) // // MessageId: STATUS_CONNECTION_REFUSED // // MessageText: // // The transport connection attempt was refused by the remote system. // #define STATUS_CONNECTION_REFUSED ((NTSTATUS)0xC0000236L) // // MessageId: STATUS_GRACEFUL_DISCONNECT // // MessageText: // // The transport connection was gracefully closed. // #define STATUS_GRACEFUL_DISCONNECT ((NTSTATUS)0xC0000237L) // // MessageId: STATUS_ADDRESS_ALREADY_ASSOCIATED // // MessageText: // // The transport endpoint already has an address associated with it. // #define STATUS_ADDRESS_ALREADY_ASSOCIATED ((NTSTATUS)0xC0000238L) // // MessageId: STATUS_ADDRESS_NOT_ASSOCIATED // // MessageText: // // An address has not yet been associated with the transport endpoint. // #define STATUS_ADDRESS_NOT_ASSOCIATED ((NTSTATUS)0xC0000239L) // // MessageId: STATUS_CONNECTION_INVALID // // MessageText: // // An operation was attempted on a nonexistent transport connection. // #define STATUS_CONNECTION_INVALID ((NTSTATUS)0xC000023AL) // // MessageId: STATUS_CONNECTION_ACTIVE // // MessageText: // // An invalid operation was attempted on an active transport connection. // #define STATUS_CONNECTION_ACTIVE ((NTSTATUS)0xC000023BL) // // MessageId: STATUS_NETWORK_UNREACHABLE // // MessageText: // // The remote network is not reachable by the transport. // #define STATUS_NETWORK_UNREACHABLE ((NTSTATUS)0xC000023CL) // // MessageId: STATUS_HOST_UNREACHABLE // // MessageText: // // The remote system is not reachable by the transport. // #define STATUS_HOST_UNREACHABLE ((NTSTATUS)0xC000023DL) // // MessageId: STATUS_PROTOCOL_UNREACHABLE // // MessageText: // // The remote system does not support the transport protocol. // #define STATUS_PROTOCOL_UNREACHABLE ((NTSTATUS)0xC000023EL) // // MessageId: STATUS_PORT_UNREACHABLE // // MessageText: // // No service is operating at the destination port of the transport on the remote system. // #define STATUS_PORT_UNREACHABLE ((NTSTATUS)0xC000023FL) // // MessageId: STATUS_REQUEST_ABORTED // // MessageText: // // The request was aborted. // #define STATUS_REQUEST_ABORTED ((NTSTATUS)0xC0000240L) // // MessageId: STATUS_CONNECTION_ABORTED // // MessageText: // // The transport connection was aborted by the local system. // #define STATUS_CONNECTION_ABORTED ((NTSTATUS)0xC0000241L) // // MessageId: STATUS_BAD_COMPRESSION_BUFFER // // MessageText: // // The specified buffer contains ill-formed data. // #define STATUS_BAD_COMPRESSION_BUFFER ((NTSTATUS)0xC0000242L) // // MessageId: STATUS_USER_MAPPED_FILE // // MessageText: // // The requested operation cannot be performed on a file with a user mapped section open. // #define STATUS_USER_MAPPED_FILE ((NTSTATUS)0xC0000243L) // // MessageId: STATUS_AUDIT_FAILED // // MessageText: // // {Audit Failed} // An attempt to generate a security audit failed. // #define STATUS_AUDIT_FAILED ((NTSTATUS)0xC0000244L) // // MessageId: STATUS_TIMER_RESOLUTION_NOT_SET // // MessageText: // // The timer resolution was not previously set by the current process. // #define STATUS_TIMER_RESOLUTION_NOT_SET ((NTSTATUS)0xC0000245L) // // MessageId: STATUS_CONNECTION_COUNT_LIMIT // // MessageText: // // A connection to the server could not be made because the limit on the number of concurrent connections for this account has been reached. // #define STATUS_CONNECTION_COUNT_LIMIT ((NTSTATUS)0xC0000246L) // // MessageId: STATUS_LOGIN_TIME_RESTRICTION // // MessageText: // // Attempting to login during an unauthorized time of day for this account. // #define STATUS_LOGIN_TIME_RESTRICTION ((NTSTATUS)0xC0000247L) // // MessageId: STATUS_LOGIN_WKSTA_RESTRICTION // // MessageText: // // The account is not authorized to login from this station. // #define STATUS_LOGIN_WKSTA_RESTRICTION ((NTSTATUS)0xC0000248L) // // MessageId: STATUS_IMAGE_MP_UP_MISMATCH // // MessageText: // // {UP/MP Image Mismatch} // The image %hs has been modified for use on a uniprocessor system, but you are running it on a multiprocessor machine. // Please reinstall the image file. // #define STATUS_IMAGE_MP_UP_MISMATCH ((NTSTATUS)0xC0000249L) // // MessageId: STATUS_INSUFFICIENT_LOGON_INFO // // MessageText: // // There is insufficient account information to log you on. // #define STATUS_INSUFFICIENT_LOGON_INFO ((NTSTATUS)0xC0000250L) // // MessageId: STATUS_BAD_DLL_ENTRYPOINT // // MessageText: // // {Invalid DLL Entrypoint} // The dynamic link library %hs is not written correctly. The stack pointer has been left in an inconsistent state. // The entrypoint should be declared as WINAPI or STDCALL. Select YES to fail the DLL load. Select NO to continue execution. Selecting NO may cause the application to operate incorrectly. // #define STATUS_BAD_DLL_ENTRYPOINT ((NTSTATUS)0xC0000251L) // // MessageId: STATUS_BAD_SERVICE_ENTRYPOINT // // MessageText: // // {Invalid Service Callback Entrypoint} // The %hs service is not written correctly. The stack pointer has been left in an inconsistent state. // The callback entrypoint should be declared as WINAPI or STDCALL. Selecting OK will cause the service to continue operation. However, the service process may operate incorrectly. // #define STATUS_BAD_SERVICE_ENTRYPOINT ((NTSTATUS)0xC0000252L) // // MessageId: STATUS_LPC_REPLY_LOST // // MessageText: // // The server received the messages but did not send a reply. // #define STATUS_LPC_REPLY_LOST ((NTSTATUS)0xC0000253L) // // MessageId: STATUS_IP_ADDRESS_CONFLICT1 // // MessageText: // // There is an IP address conflict with another system on the network // #define STATUS_IP_ADDRESS_CONFLICT1 ((NTSTATUS)0xC0000254L) // // MessageId: STATUS_IP_ADDRESS_CONFLICT2 // // MessageText: // // There is an IP address conflict with another system on the network // #define STATUS_IP_ADDRESS_CONFLICT2 ((NTSTATUS)0xC0000255L) // // MessageId: STATUS_REGISTRY_QUOTA_LIMIT // // MessageText: // // {Low On Registry Space} // The system has reached the maximum size allowed for the system part of the registry. Additional storage requests will be ignored. // #define STATUS_REGISTRY_QUOTA_LIMIT ((NTSTATUS)0xC0000256L) // // MessageId: STATUS_PATH_NOT_COVERED // // MessageText: // // The contacted server does not support the indicated part of the DFS namespace. // #define STATUS_PATH_NOT_COVERED ((NTSTATUS)0xC0000257L) // // MessageId: STATUS_NO_CALLBACK_ACTIVE // // MessageText: // // A callback return system service cannot be executed when no callback is active. // #define STATUS_NO_CALLBACK_ACTIVE ((NTSTATUS)0xC0000258L) // // MessageId: STATUS_LICENSE_QUOTA_EXCEEDED // // MessageText: // // The service being accessed is licensed for a particular number of connections. // No more connections can be made to the service at this time because there are already as many connections as the service can accept. // #define STATUS_LICENSE_QUOTA_EXCEEDED ((NTSTATUS)0xC0000259L) // // MessageId: STATUS_PWD_TOO_SHORT // // MessageText: // // The password provided is too short to meet the policy of your user account. // Please choose a longer password. // #define STATUS_PWD_TOO_SHORT ((NTSTATUS)0xC000025AL) // // MessageId: STATUS_PWD_TOO_RECENT // // MessageText: // // The policy of your user account does not allow you to change passwords too frequently. // This is done to prevent users from changing back to a familiar, but potentially discovered, password. // If you feel your password has been compromised then please contact your administrator immediately to have a new one assigned. // #define STATUS_PWD_TOO_RECENT ((NTSTATUS)0xC000025BL) // // MessageId: STATUS_PWD_HISTORY_CONFLICT // // MessageText: // // You have attempted to change your password to one that you have used in the past. // The policy of your user account does not allow this. Please select a password that you have not previously used. // #define STATUS_PWD_HISTORY_CONFLICT ((NTSTATUS)0xC000025CL) // // MessageId: STATUS_PLUGPLAY_NO_DEVICE // // MessageText: // // You have attempted to load a legacy device driver while its device instance had been disabled. // #define STATUS_PLUGPLAY_NO_DEVICE ((NTSTATUS)0xC000025EL) // // MessageId: STATUS_UNSUPPORTED_COMPRESSION // // MessageText: // // The specified compression format is unsupported. // #define STATUS_UNSUPPORTED_COMPRESSION ((NTSTATUS)0xC000025FL) // // MessageId: STATUS_INVALID_HW_PROFILE // // MessageText: // // The specified hardware profile configuration is invalid. // #define STATUS_INVALID_HW_PROFILE ((NTSTATUS)0xC0000260L) // // MessageId: STATUS_INVALID_PLUGPLAY_DEVICE_PATH // // MessageText: // // The specified Plug and Play registry device path is invalid. // #define STATUS_INVALID_PLUGPLAY_DEVICE_PATH ((NTSTATUS)0xC0000261L) // // MessageId: STATUS_DRIVER_ORDINAL_NOT_FOUND // // MessageText: // // {Driver Entry Point Not Found} // The %hs device driver could not locate the ordinal %ld in driver %hs. // #define STATUS_DRIVER_ORDINAL_NOT_FOUND ((NTSTATUS)0xC0000262L) // // MessageId: STATUS_DRIVER_ENTRYPOINT_NOT_FOUND // // MessageText: // // {Driver Entry Point Not Found} // The %hs device driver could not locate the entry point %hs in driver %hs. // #define STATUS_DRIVER_ENTRYPOINT_NOT_FOUND ((NTSTATUS)0xC0000263L) // // MessageId: STATUS_RESOURCE_NOT_OWNED // // MessageText: // // {Application Error} // The application attempted to release a resource it did not own. Click on OK to terminate the application. // #define STATUS_RESOURCE_NOT_OWNED ((NTSTATUS)0xC0000264L) // // MessageId: STATUS_TOO_MANY_LINKS // // MessageText: // // An attempt was made to create more links on a file than the file system supports. // #define STATUS_TOO_MANY_LINKS ((NTSTATUS)0xC0000265L) // // MessageId: STATUS_QUOTA_LIST_INCONSISTENT // // MessageText: // // The specified quota list is internally inconsistent with its descriptor. // #define STATUS_QUOTA_LIST_INCONSISTENT ((NTSTATUS)0xC0000266L) // // MessageId: STATUS_FILE_IS_OFFLINE // // MessageText: // // The specified file has been relocated to offline storage. // #define STATUS_FILE_IS_OFFLINE ((NTSTATUS)0xC0000267L) // // MessageId: STATUS_EVALUATION_EXPIRATION // // MessageText: // // {Windows Evaluation Notification} // The evaluation period for this installation of Windows has expired. This system will shutdown in 1 hour. To restore access to this installation of Windows, please upgrade this installation using a licensed distribution of this product. // #define STATUS_EVALUATION_EXPIRATION ((NTSTATUS)0xC0000268L) // // MessageId: STATUS_ILLEGAL_DLL_RELOCATION // // MessageText: // // {Illegal System DLL Relocation} // The system DLL %hs was relocated in memory. The application will not run properly. // The relocation occurred because the DLL %hs occupied an address range reserved for Windows system DLLs. The vendor supplying the DLL should be contacted for a new DLL. // #define STATUS_ILLEGAL_DLL_RELOCATION ((NTSTATUS)0xC0000269L) // // MessageId: STATUS_LICENSE_VIOLATION // // MessageText: // // {License Violation} // The system has detected tampering with your registered product type. This is a violation of your software license. Tampering with product type is not permitted. // #define STATUS_LICENSE_VIOLATION ((NTSTATUS)0xC000026AL) // // MessageId: STATUS_DLL_INIT_FAILED_LOGOFF // // MessageText: // // {DLL Initialization Failed} // The application failed to initialize because the window station is shutting down. // #define STATUS_DLL_INIT_FAILED_LOGOFF ((NTSTATUS)0xC000026BL) // // MessageId: STATUS_DRIVER_UNABLE_TO_LOAD // // MessageText: // // {Unable to Load Device Driver} // %hs device driver could not be loaded. // Error Status was 0x%x // #define STATUS_DRIVER_UNABLE_TO_LOAD ((NTSTATUS)0xC000026CL) // // MessageId: STATUS_DFS_UNAVAILABLE // // MessageText: // // DFS is unavailable on the contacted server. // #define STATUS_DFS_UNAVAILABLE ((NTSTATUS)0xC000026DL) // // MessageId: STATUS_VOLUME_DISMOUNTED // // MessageText: // // An operation was attempted to a volume after it was dismounted. // #define STATUS_VOLUME_DISMOUNTED ((NTSTATUS)0xC000026EL) // // MessageId: STATUS_WX86_INTERNAL_ERROR // // MessageText: // // An internal error occurred in the Win32 x86 emulation subsystem. // #define STATUS_WX86_INTERNAL_ERROR ((NTSTATUS)0xC000026FL) // // MessageId: STATUS_WX86_FLOAT_STACK_CHECK // // MessageText: // // Win32 x86 emulation subsystem Floating-point stack check. // #define STATUS_WX86_FLOAT_STACK_CHECK ((NTSTATUS)0xC0000270L) // // MessageId: STATUS_VALIDATE_CONTINUE // // MessageText: // // The validation process needs to continue on to the next step. // #define STATUS_VALIDATE_CONTINUE ((NTSTATUS)0xC0000271L) // // MessageId: STATUS_NO_MATCH // // MessageText: // // There was no match for the specified key in the index. // #define STATUS_NO_MATCH ((NTSTATUS)0xC0000272L) // // MessageId: STATUS_NO_MORE_MATCHES // // MessageText: // // There are no more matches for the current index enumeration. // #define STATUS_NO_MORE_MATCHES ((NTSTATUS)0xC0000273L) // // MessageId: STATUS_NOT_A_REPARSE_POINT // // MessageText: // // The NTFS file or directory is not a reparse point. // #define STATUS_NOT_A_REPARSE_POINT ((NTSTATUS)0xC0000275L) // // MessageId: STATUS_IO_REPARSE_TAG_INVALID // // MessageText: // // The Windows I/O reparse tag passed for the NTFS reparse point is invalid. // #define STATUS_IO_REPARSE_TAG_INVALID ((NTSTATUS)0xC0000276L) // // MessageId: STATUS_IO_REPARSE_TAG_MISMATCH // // MessageText: // // The Windows I/O reparse tag does not match the one present in the NTFS reparse point. // #define STATUS_IO_REPARSE_TAG_MISMATCH ((NTSTATUS)0xC0000277L) // // MessageId: STATUS_IO_REPARSE_DATA_INVALID // // MessageText: // // The user data passed for the NTFS reparse point is invalid. // #define STATUS_IO_REPARSE_DATA_INVALID ((NTSTATUS)0xC0000278L) // // MessageId: STATUS_IO_REPARSE_TAG_NOT_HANDLED // // MessageText: // // The layered file system driver for this IO tag did not handle it when needed. // #define STATUS_IO_REPARSE_TAG_NOT_HANDLED ((NTSTATUS)0xC0000279L) // // MessageId: STATUS_REPARSE_POINT_NOT_RESOLVED // // MessageText: // // The NTFS symbolic link could not be resolved even though the initial file name is valid. // #define STATUS_REPARSE_POINT_NOT_RESOLVED ((NTSTATUS)0xC0000280L) // // MessageId: STATUS_DIRECTORY_IS_A_REPARSE_POINT // // MessageText: // // The NTFS directory is a reparse point. // #define STATUS_DIRECTORY_IS_A_REPARSE_POINT ((NTSTATUS)0xC0000281L) // // MessageId: STATUS_RANGE_LIST_CONFLICT // // MessageText: // // The range could not be added to the range list because of a conflict. // #define STATUS_RANGE_LIST_CONFLICT ((NTSTATUS)0xC0000282L) // // MessageId: STATUS_SOURCE_ELEMENT_EMPTY // // MessageText: // // The specified medium changer source element contains no media. // #define STATUS_SOURCE_ELEMENT_EMPTY ((NTSTATUS)0xC0000283L) // // MessageId: STATUS_DESTINATION_ELEMENT_FULL // // MessageText: // // The specified medium changer destination element already contains media. // #define STATUS_DESTINATION_ELEMENT_FULL ((NTSTATUS)0xC0000284L) // // MessageId: STATUS_ILLEGAL_ELEMENT_ADDRESS // // MessageText: // // The specified medium changer element does not exist. // #define STATUS_ILLEGAL_ELEMENT_ADDRESS ((NTSTATUS)0xC0000285L) // // MessageId: STATUS_MAGAZINE_NOT_PRESENT // // MessageText: // // The specified element is contained within a magazine that is no longer present. // #define STATUS_MAGAZINE_NOT_PRESENT ((NTSTATUS)0xC0000286L) // // MessageId: STATUS_REINITIALIZATION_NEEDED // // MessageText: // // The device requires reinitialization due to hardware errors. // #define STATUS_REINITIALIZATION_NEEDED ((NTSTATUS)0xC0000287L) // // MessageId: STATUS_DEVICE_REQUIRES_CLEANING // // MessageText: // // The device has indicated that cleaning is necessary. // #define STATUS_DEVICE_REQUIRES_CLEANING ((NTSTATUS)0x80000288L) // // MessageId: STATUS_DEVICE_DOOR_OPEN // // MessageText: // // The device has indicated that it's door is open. Further operations require it closed and secured. // #define STATUS_DEVICE_DOOR_OPEN ((NTSTATUS)0x80000289L) // // MessageId: STATUS_ENCRYPTION_FAILED // // MessageText: // // The file encryption attempt failed. // #define STATUS_ENCRYPTION_FAILED ((NTSTATUS)0xC000028AL) // // MessageId: STATUS_DECRYPTION_FAILED // // MessageText: // // The file decryption attempt failed. // #define STATUS_DECRYPTION_FAILED ((NTSTATUS)0xC000028BL) // // MessageId: STATUS_RANGE_NOT_FOUND // // MessageText: // // The specified range could not be found in the range list. // #define STATUS_RANGE_NOT_FOUND ((NTSTATUS)0xC000028CL) // // MessageId: STATUS_NO_RECOVERY_POLICY // // MessageText: // // There is no encryption recovery policy configured for this system. // #define STATUS_NO_RECOVERY_POLICY ((NTSTATUS)0xC000028DL) // // MessageId: STATUS_NO_EFS // // MessageText: // // The required encryption driver is not loaded for this system. // #define STATUS_NO_EFS ((NTSTATUS)0xC000028EL) // // MessageId: STATUS_WRONG_EFS // // MessageText: // // The file was encrypted with a different encryption driver than is currently loaded. // #define STATUS_WRONG_EFS ((NTSTATUS)0xC000028FL) // // MessageId: STATUS_NO_USER_KEYS // // MessageText: // // There are no EFS keys defined for the user. // #define STATUS_NO_USER_KEYS ((NTSTATUS)0xC0000290L) // // MessageId: STATUS_FILE_NOT_ENCRYPTED // // MessageText: // // The specified file is not encrypted. // #define STATUS_FILE_NOT_ENCRYPTED ((NTSTATUS)0xC0000291L) // // MessageId: STATUS_NOT_EXPORT_FORMAT // // MessageText: // // The specified file is not in the defined EFS export format. // #define STATUS_NOT_EXPORT_FORMAT ((NTSTATUS)0xC0000292L) // // MessageId: STATUS_FILE_ENCRYPTED // // MessageText: // // The specified file is encrypted and the user does not have the ability to decrypt it. // #define STATUS_FILE_ENCRYPTED ((NTSTATUS)0xC0000293L) // // MessageId: STATUS_WAKE_SYSTEM // // MessageText: // // The system has awoken // #define STATUS_WAKE_SYSTEM ((NTSTATUS)0x40000294L) // // MessageId: STATUS_WMI_GUID_NOT_FOUND // // MessageText: // // The guid passed was not recognized as valid by a WMI data provider. // #define STATUS_WMI_GUID_NOT_FOUND ((NTSTATUS)0xC0000295L) // // MessageId: STATUS_WMI_INSTANCE_NOT_FOUND // // MessageText: // // The instance name passed was not recognized as valid by a WMI data provider. // #define STATUS_WMI_INSTANCE_NOT_FOUND ((NTSTATUS)0xC0000296L) // // MessageId: STATUS_WMI_ITEMID_NOT_FOUND // // MessageText: // // The data item id passed was not recognized as valid by a WMI data provider. // #define STATUS_WMI_ITEMID_NOT_FOUND ((NTSTATUS)0xC0000297L) // // MessageId: STATUS_WMI_TRY_AGAIN // // MessageText: // // The WMI request could not be completed and should be retried. // #define STATUS_WMI_TRY_AGAIN ((NTSTATUS)0xC0000298L) // // MessageId: STATUS_SHARED_POLICY // // MessageText: // // The policy object is shared and can only be modified at the root // #define STATUS_SHARED_POLICY ((NTSTATUS)0xC0000299L) // // MessageId: STATUS_POLICY_OBJECT_NOT_FOUND // // MessageText: // // The policy object does not exist when it should // #define STATUS_POLICY_OBJECT_NOT_FOUND ((NTSTATUS)0xC000029AL) // // MessageId: STATUS_POLICY_ONLY_IN_DS // // MessageText: // // The requested policy information only lives in the Ds // #define STATUS_POLICY_ONLY_IN_DS ((NTSTATUS)0xC000029BL) // // MessageId: STATUS_VOLUME_NOT_UPGRADED // // MessageText: // // The volume must be upgraded to enable this feature // #define STATUS_VOLUME_NOT_UPGRADED ((NTSTATUS)0xC000029CL) // // MessageId: STATUS_REMOTE_STORAGE_NOT_ACTIVE // // MessageText: // // The remote storage service is not operational at this time. // #define STATUS_REMOTE_STORAGE_NOT_ACTIVE ((NTSTATUS)0xC000029DL) // // MessageId: STATUS_REMOTE_STORAGE_MEDIA_ERROR // // MessageText: // // The remote storage service encountered a media error. // #define STATUS_REMOTE_STORAGE_MEDIA_ERROR ((NTSTATUS)0xC000029EL) // // MessageId: STATUS_NO_TRACKING_SERVICE // // MessageText: // // The tracking (workstation) service is not running. // #define STATUS_NO_TRACKING_SERVICE ((NTSTATUS)0xC000029FL) // // MessageId: STATUS_SERVER_SID_MISMATCH // // MessageText: // // The server process is running under a SID different than that required by client. // #define STATUS_SERVER_SID_MISMATCH ((NTSTATUS)0xC00002A0L) // // Directory Service specific Errors // // // MessageId: STATUS_DS_NO_ATTRIBUTE_OR_VALUE // // MessageText: // // The specified directory service attribute or value does not exist. // #define STATUS_DS_NO_ATTRIBUTE_OR_VALUE ((NTSTATUS)0xC00002A1L) // // MessageId: STATUS_DS_INVALID_ATTRIBUTE_SYNTAX // // MessageText: // // The attribute syntax specified to the directory service is invalid. // #define STATUS_DS_INVALID_ATTRIBUTE_SYNTAX ((NTSTATUS)0xC00002A2L) // // MessageId: STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED // // MessageText: // // The attribute type specified to the directory service is not defined. // #define STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED ((NTSTATUS)0xC00002A3L) // // MessageId: STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS // // MessageText: // // The specified directory service attribute or value already exists. // #define STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS ((NTSTATUS)0xC00002A4L) // // MessageId: STATUS_DS_BUSY // // MessageText: // // The directory service is busy. // #define STATUS_DS_BUSY ((NTSTATUS)0xC00002A5L) // // MessageId: STATUS_DS_UNAVAILABLE // // MessageText: // // The directory service is not available. // #define STATUS_DS_UNAVAILABLE ((NTSTATUS)0xC00002A6L) // // MessageId: STATUS_DS_NO_RIDS_ALLOCATED // // MessageText: // // The directory service was unable to allocate a relative identifier. // #define STATUS_DS_NO_RIDS_ALLOCATED ((NTSTATUS)0xC00002A7L) // // MessageId: STATUS_DS_NO_MORE_RIDS // // MessageText: // // The directory service has exhausted the pool of relative identifiers. // #define STATUS_DS_NO_MORE_RIDS ((NTSTATUS)0xC00002A8L) // // MessageId: STATUS_DS_INCORRECT_ROLE_OWNER // // MessageText: // // The requested operation could not be performed because the directory service is not the master for that type of operation. // #define STATUS_DS_INCORRECT_ROLE_OWNER ((NTSTATUS)0xC00002A9L) // // MessageId: STATUS_DS_RIDMGR_INIT_ERROR // // MessageText: // // The directory service was unable to initialize the subsystem that allocates relative identifiers. // #define STATUS_DS_RIDMGR_INIT_ERROR ((NTSTATUS)0xC00002AAL) // // MessageId: STATUS_DS_OBJ_CLASS_VIOLATION // // MessageText: // // The requested operation did not satisfy one or more constraints associated with the class of the object. // #define STATUS_DS_OBJ_CLASS_VIOLATION ((NTSTATUS)0xC00002ABL) // // MessageId: STATUS_DS_CANT_ON_NON_LEAF // // MessageText: // // The directory service can perform the requested operation only on a leaf object. // #define STATUS_DS_CANT_ON_NON_LEAF ((NTSTATUS)0xC00002ACL) // // MessageId: STATUS_DS_CANT_ON_RDN // // MessageText: // // The directory service cannot perform the requested operation on the Relatively Defined Name (RDN) attribute of an object. // #define STATUS_DS_CANT_ON_RDN ((NTSTATUS)0xC00002ADL) // // MessageId: STATUS_DS_CANT_MOD_OBJ_CLASS // // MessageText: // // The directory service detected an attempt to modify the object class of an object. // #define STATUS_DS_CANT_MOD_OBJ_CLASS ((NTSTATUS)0xC00002AEL) // // MessageId: STATUS_DS_CROSS_DOM_MOVE_FAILED // // MessageText: // // An error occurred while performing a cross domain move operation. // #define STATUS_DS_CROSS_DOM_MOVE_FAILED ((NTSTATUS)0xC00002AFL) // // MessageId: STATUS_DS_GC_NOT_AVAILABLE // // MessageText: // // Unable to Contact the Global Catalog Server. // #define STATUS_DS_GC_NOT_AVAILABLE ((NTSTATUS)0xC00002B0L) // // MessageId: STATUS_DIRECTORY_SERVICE_REQUIRED // // MessageText: // // The requested operation requires a directory service, and none was available. // #define STATUS_DIRECTORY_SERVICE_REQUIRED ((NTSTATUS)0xC00002B1L) // // MessageId: STATUS_REPARSE_ATTRIBUTE_CONFLICT // // MessageText: // // The reparse attribute cannot be set as it is incompatible with an existing attribute. // #define STATUS_REPARSE_ATTRIBUTE_CONFLICT ((NTSTATUS)0xC00002B2L) // // MessageId: STATUS_CANT_ENABLE_DENY_ONLY // // MessageText: // // A group marked use for deny only can not be enabled. // #define STATUS_CANT_ENABLE_DENY_ONLY ((NTSTATUS)0xC00002B3L) // // MessageId: STATUS_FLOAT_MULTIPLE_FAULTS // // MessageText: // // {EXCEPTION} // Multiple floating point faults. // #define STATUS_FLOAT_MULTIPLE_FAULTS ((NTSTATUS)0xC00002B4L) // winnt // // MessageId: STATUS_FLOAT_MULTIPLE_TRAPS // // MessageText: // // {EXCEPTION} // Multiple floating point traps. // #define STATUS_FLOAT_MULTIPLE_TRAPS ((NTSTATUS)0xC00002B5L) // winnt // // MessageId: STATUS_DEVICE_REMOVED // // MessageText: // // The device has been removed. // #define STATUS_DEVICE_REMOVED ((NTSTATUS)0xC00002B6L) // // MessageId: STATUS_JOURNAL_DELETE_IN_PROGRESS // // MessageText: // // The volume change journal is being deleted. // #define STATUS_JOURNAL_DELETE_IN_PROGRESS ((NTSTATUS)0xC00002B7L) // // MessageId: STATUS_JOURNAL_NOT_ACTIVE // // MessageText: // // The volume change journal is not active. // #define STATUS_JOURNAL_NOT_ACTIVE ((NTSTATUS)0xC00002B8L) // // MessageId: STATUS_NOINTERFACE // // MessageText: // // The requested interface is not supported. // #define STATUS_NOINTERFACE ((NTSTATUS)0xC00002B9L) // // MessageId: STATUS_DS_ADMIN_LIMIT_EXCEEDED // // MessageText: // // A directory service resource limit has been exceeded. // #define STATUS_DS_ADMIN_LIMIT_EXCEEDED ((NTSTATUS)0xC00002C1L) // // MessageId: STATUS_DRIVER_FAILED_SLEEP // // MessageText: // // {System Standby Failed} // The driver %hs does not support standby mode. Updating this driver may allow the system to go to standby mode. // #define STATUS_DRIVER_FAILED_SLEEP ((NTSTATUS)0xC00002C2L) // // MessageId: STATUS_MUTUAL_AUTHENTICATION_FAILED // // MessageText: // // Mutual Authentication failed. The server's password is out of date at the domain controller. // #define STATUS_MUTUAL_AUTHENTICATION_FAILED ((NTSTATUS)0xC00002C3L) // // MessageId: STATUS_CORRUPT_SYSTEM_FILE // // MessageText: // // The system file %1 has become corrupt and has been replaced. // #define STATUS_CORRUPT_SYSTEM_FILE ((NTSTATUS)0xC00002C4L) // // MessageId: STATUS_DATATYPE_MISALIGNMENT_ERROR // // MessageText: // // {EXCEPTION} // Alignment Error // A datatype misalignment error was detected in a load or store instruction. // #define STATUS_DATATYPE_MISALIGNMENT_ERROR ((NTSTATUS)0xC00002C5L) // // MessageId: STATUS_WMI_READ_ONLY // // MessageText: // // The WMI data item or data block is read only. // #define STATUS_WMI_READ_ONLY ((NTSTATUS)0xC00002C6L) // // MessageId: STATUS_WMI_SET_FAILURE // // MessageText: // // The WMI data item or data block could not be changed. // #define STATUS_WMI_SET_FAILURE ((NTSTATUS)0xC00002C7L) // // MessageId: STATUS_COMMITMENT_MINIMUM // // MessageText: // // {Virtual Memory Minimum Too Low} // Your system is low on virtual memory. Windows is increasing the size of your virtual memory paging file. // During this process, memory requests for some applications may be denied. For more information, see Help. // #define STATUS_COMMITMENT_MINIMUM ((NTSTATUS)0xC00002C8L) // // MessageId: STATUS_REG_NAT_CONSUMPTION // // MessageText: // // {EXCEPTION} // Register NaT consumption faults. // A NaT value is consumed on a non speculative instruction. // #define STATUS_REG_NAT_CONSUMPTION ((NTSTATUS)0xC00002C9L) // winnt // // MessageId: STATUS_TRANSPORT_FULL // // MessageText: // // The medium changer's transport element contains media, which is causing the operation to fail. // #define STATUS_TRANSPORT_FULL ((NTSTATUS)0xC00002CAL) // // MessageId: STATUS_DS_SAM_INIT_FAILURE // // MessageText: // // Security Accounts Manager initialization failed because of the following error: // %hs // Error Status: 0x%x. // Please click OK to shutdown this system and reboot into Directory Services Restore Mode, check the event log for more detailed information. // #define STATUS_DS_SAM_INIT_FAILURE ((NTSTATUS)0xC00002CBL) // // MessageId: STATUS_ONLY_IF_CONNECTED // // MessageText: // // This operation is supported only when you are connected to the server. // #define STATUS_ONLY_IF_CONNECTED ((NTSTATUS)0xC00002CCL) // // MessageId: STATUS_DS_SENSITIVE_GROUP_VIOLATION // // MessageText: // // Only an administrator can modify the membership list of an administrative group. // #define STATUS_DS_SENSITIVE_GROUP_VIOLATION ((NTSTATUS)0xC00002CDL) // // MessageId: STATUS_PNP_RESTART_ENUMERATION // // MessageText: // // A device was removed so enumeration must be restarted. // #define STATUS_PNP_RESTART_ENUMERATION ((NTSTATUS)0xC00002CEL) // // MessageId: STATUS_JOURNAL_ENTRY_DELETED // // MessageText: // // The journal entry has been deleted from the journal. // #define STATUS_JOURNAL_ENTRY_DELETED ((NTSTATUS)0xC00002CFL) // // MessageId: STATUS_DS_CANT_MOD_PRIMARYGROUPID // // MessageText: // // Cannot change the primary group ID of a domain controller account. // #define STATUS_DS_CANT_MOD_PRIMARYGROUPID ((NTSTATUS)0xC00002D0L) // // MessageId: STATUS_SYSTEM_IMAGE_BAD_SIGNATURE // // MessageText: // // {Fatal System Error} // The system image %s is not properly signed. // The file has been replaced with the signed file. // The system has been shut down. // #define STATUS_SYSTEM_IMAGE_BAD_SIGNATURE ((NTSTATUS)0xC00002D1L) // // MessageId: STATUS_PNP_REBOOT_REQUIRED // // MessageText: // // Device will not start without a reboot. // #define STATUS_PNP_REBOOT_REQUIRED ((NTSTATUS)0xC00002D2L) // // MessageId: STATUS_POWER_STATE_INVALID // // MessageText: // // Current device power state cannot support this request. // #define STATUS_POWER_STATE_INVALID ((NTSTATUS)0xC00002D3L) // // MessageId: STATUS_DS_INVALID_GROUP_TYPE // // MessageText: // // The specified group type is invalid. // #define STATUS_DS_INVALID_GROUP_TYPE ((NTSTATUS)0xC00002D4L) // // MessageId: STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN // // MessageText: // // In mixed domain no nesting of global group if group is security enabled. // #define STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN ((NTSTATUS)0xC00002D5L) // // MessageId: STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN // // MessageText: // // In mixed domain, cannot nest local groups with other local groups, if the group is security enabled. // #define STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN ((NTSTATUS)0xC00002D6L) // // MessageId: STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER // // MessageText: // // A global group cannot have a local group as a member. // #define STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER ((NTSTATUS)0xC00002D7L) // // MessageId: STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER // // MessageText: // // A global group cannot have a universal group as a member. // #define STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER ((NTSTATUS)0xC00002D8L) // // MessageId: STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER // // MessageText: // // A universal group cannot have a local group as a member. // #define STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER ((NTSTATUS)0xC00002D9L) // // MessageId: STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER // // MessageText: // // A global group cannot have a cross domain member. // #define STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER ((NTSTATUS)0xC00002DAL) // // MessageId: STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER // // MessageText: // // A local group cannot have another cross domain local group as a member. // #define STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER ((NTSTATUS)0xC00002DBL) // // MessageId: STATUS_DS_HAVE_PRIMARY_MEMBERS // // MessageText: // // Can not change to security disabled group because of having primary members in this group. // #define STATUS_DS_HAVE_PRIMARY_MEMBERS ((NTSTATUS)0xC00002DCL) // // MessageId: STATUS_WMI_NOT_SUPPORTED // // MessageText: // // The WMI operation is not supported by the data block or method. // #define STATUS_WMI_NOT_SUPPORTED ((NTSTATUS)0xC00002DDL) // // MessageId: STATUS_INSUFFICIENT_POWER // // MessageText: // // There is not enough power to complete the requested operation. // #define STATUS_INSUFFICIENT_POWER ((NTSTATUS)0xC00002DEL) // // MessageId: STATUS_SAM_NEED_BOOTKEY_PASSWORD // // MessageText: // // Security Account Manager needs to get the boot password. // #define STATUS_SAM_NEED_BOOTKEY_PASSWORD ((NTSTATUS)0xC00002DFL) // // MessageId: STATUS_SAM_NEED_BOOTKEY_FLOPPY // // MessageText: // // Security Account Manager needs to get the boot key from floppy disk. // #define STATUS_SAM_NEED_BOOTKEY_FLOPPY ((NTSTATUS)0xC00002E0L) // // MessageId: STATUS_DS_CANT_START // // MessageText: // // Directory Service can not start. // #define STATUS_DS_CANT_START ((NTSTATUS)0xC00002E1L) // // MessageId: STATUS_DS_INIT_FAILURE // // MessageText: // // Directory Services could not start because of the following error: // %hs // Error Status: 0x%x. // Please click OK to shutdown this system and reboot into Directory Services Restore Mode, check the event log for more detailed information. // #define STATUS_DS_INIT_FAILURE ((NTSTATUS)0xC00002E2L) // // MessageId: STATUS_SAM_INIT_FAILURE // // MessageText: // // Security Accounts Manager initialization failed because of the following error: // %hs // Error Status: 0x%x. // Please click OK to shutdown this system and reboot into Safe Mode, check the event log for more detailed information. // #define STATUS_SAM_INIT_FAILURE ((NTSTATUS)0xC00002E3L) // // MessageId: STATUS_DS_GC_REQUIRED // // MessageText: // // The requested operation can be performed only on a global catalog server. // #define STATUS_DS_GC_REQUIRED ((NTSTATUS)0xC00002E4L) // // MessageId: STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY // // MessageText: // // A local group can only be a member of other local groups in the same domain. // #define STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY ((NTSTATUS)0xC00002E5L) // // MessageId: STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS // // MessageText: // // Foreign security principals cannot be members of universal groups. // #define STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS ((NTSTATUS)0xC00002E6L) // // MessageId: STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED // // MessageText: // // Your computer could not be joined to the domain. You have exceeded the maximum number of computer accounts you are allowed to create in this domain. Contact your system administrator to have this limit reset or increased. // #define STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED ((NTSTATUS)0xC00002E7L) // // MessageId: STATUS_MULTIPLE_FAULT_VIOLATION // // MessageText: // // STATUS_MULTIPLE_FAULT_VIOLATION // #define STATUS_MULTIPLE_FAULT_VIOLATION ((NTSTATUS)0xC00002E8L) // // MessageId: STATUS_CURRENT_DOMAIN_NOT_ALLOWED // // MessageText: // // This operation can not be performed on the current domain. // #define STATUS_CURRENT_DOMAIN_NOT_ALLOWED ((NTSTATUS)0xC00002E9L) // // MessageId: STATUS_CANNOT_MAKE // // MessageText: // // The directory or file cannot be created. // #define STATUS_CANNOT_MAKE ((NTSTATUS)0xC00002EAL) // // MessageId: STATUS_SYSTEM_SHUTDOWN // // MessageText: // // The system is in the process of shutting down. // #define STATUS_SYSTEM_SHUTDOWN ((NTSTATUS)0xC00002EBL) // // MessageId: STATUS_DS_INIT_FAILURE_CONSOLE // // MessageText: // // Directory Services could not start because of the following error: // %hs // Error Status: 0x%x. // Please click OK to shutdown the system. You can use the recovery console to diagnose the system further. // #define STATUS_DS_INIT_FAILURE_CONSOLE ((NTSTATUS)0xC00002ECL) // // MessageId: STATUS_DS_SAM_INIT_FAILURE_CONSOLE // // MessageText: // // Security Accounts Manager initialization failed because of the following error: // %hs // Error Status: 0x%x. // Please click OK to shutdown the system. You can use the recovery console to diagnose the system further. // #define STATUS_DS_SAM_INIT_FAILURE_CONSOLE ((NTSTATUS)0xC00002EDL) // // MessageId: STATUS_UNFINISHED_CONTEXT_DELETED // // MessageText: // // A security context was deleted before the context was completed. This is considered a logon failure. // #define STATUS_UNFINISHED_CONTEXT_DELETED ((NTSTATUS)0xC00002EEL) // // MessageId: STATUS_NO_TGT_REPLY // // MessageText: // // The client is trying to negotiate a context and the server requires user-to-user but didn't send a TGT reply. // #define STATUS_NO_TGT_REPLY ((NTSTATUS)0xC00002EFL) // // MessageId: STATUS_OBJECTID_NOT_FOUND // // MessageText: // // An object ID was not found in the file. // #define STATUS_OBJECTID_NOT_FOUND ((NTSTATUS)0xC00002F0L) // // MessageId: STATUS_NO_IP_ADDRESSES // // MessageText: // // Unable to accomplish the requested task because the local machine does not have any IP addresses. // #define STATUS_NO_IP_ADDRESSES ((NTSTATUS)0xC00002F1L) // // MessageId: STATUS_WRONG_CREDENTIAL_HANDLE // // MessageText: // // The supplied credential handle does not match the credential associated with the security context. // #define STATUS_WRONG_CREDENTIAL_HANDLE ((NTSTATUS)0xC00002F2L) // // MessageId: STATUS_CRYPTO_SYSTEM_INVALID // // MessageText: // // The crypto system or checksum function is invalid because a required function is unavailable. // #define STATUS_CRYPTO_SYSTEM_INVALID ((NTSTATUS)0xC00002F3L) // // MessageId: STATUS_MAX_REFERRALS_EXCEEDED // // MessageText: // // The number of maximum ticket referrals has been exceeded. // #define STATUS_MAX_REFERRALS_EXCEEDED ((NTSTATUS)0xC00002F4L) // // MessageId: STATUS_MUST_BE_KDC // // MessageText: // // The local machine must be a Kerberos KDC (domain controller) and it is not. // #define STATUS_MUST_BE_KDC ((NTSTATUS)0xC00002F5L) // // MessageId: STATUS_STRONG_CRYPTO_NOT_SUPPORTED // // MessageText: // // The other end of the security negotiation is requires strong crypto but it is not supported on the local machine. // #define STATUS_STRONG_CRYPTO_NOT_SUPPORTED ((NTSTATUS)0xC00002F6L) // // MessageId: STATUS_TOO_MANY_PRINCIPALS // // MessageText: // // The KDC reply contained more than one principal name. // #define STATUS_TOO_MANY_PRINCIPALS ((NTSTATUS)0xC00002F7L) // // MessageId: STATUS_NO_PA_DATA // // MessageText: // // Expected to find PA data for a hint of what etype to use, but it was not found. // #define STATUS_NO_PA_DATA ((NTSTATUS)0xC00002F8L) // // MessageId: STATUS_PKINIT_NAME_MISMATCH // // MessageText: // // The client certificate does not contain a valid UPN, or does not match the client name // in the logon request. Please contact your administrator. // #define STATUS_PKINIT_NAME_MISMATCH ((NTSTATUS)0xC00002F9L) // // MessageId: STATUS_SMARTCARD_LOGON_REQUIRED // // MessageText: // // Smartcard logon is required and was not used. // #define STATUS_SMARTCARD_LOGON_REQUIRED ((NTSTATUS)0xC00002FAL) // // MessageId: STATUS_KDC_INVALID_REQUEST // // MessageText: // // An invalid request was sent to the KDC. // #define STATUS_KDC_INVALID_REQUEST ((NTSTATUS)0xC00002FBL) // // MessageId: STATUS_KDC_UNABLE_TO_REFER // // MessageText: // // The KDC was unable to generate a referral for the service requested. // #define STATUS_KDC_UNABLE_TO_REFER ((NTSTATUS)0xC00002FCL) // // MessageId: STATUS_KDC_UNKNOWN_ETYPE // // MessageText: // // The encryption type requested is not supported by the KDC. // #define STATUS_KDC_UNKNOWN_ETYPE ((NTSTATUS)0xC00002FDL) // // MessageId: STATUS_SHUTDOWN_IN_PROGRESS // // MessageText: // // A system shutdown is in progress. // #define STATUS_SHUTDOWN_IN_PROGRESS ((NTSTATUS)0xC00002FEL) // // MessageId: STATUS_SERVER_SHUTDOWN_IN_PROGRESS // // MessageText: // // The server machine is shutting down. // #define STATUS_SERVER_SHUTDOWN_IN_PROGRESS ((NTSTATUS)0xC00002FFL) // // MessageId: STATUS_NOT_SUPPORTED_ON_SBS // // MessageText: // // This operation is not supported on a computer running Windows Server 2003 for Small Business Server // #define STATUS_NOT_SUPPORTED_ON_SBS ((NTSTATUS)0xC0000300L) // // MessageId: STATUS_WMI_GUID_DISCONNECTED // // MessageText: // // The WMI GUID is no longer available // #define STATUS_WMI_GUID_DISCONNECTED ((NTSTATUS)0xC0000301L) // // MessageId: STATUS_WMI_ALREADY_DISABLED // // MessageText: // // Collection or events for the WMI GUID is already disabled. // #define STATUS_WMI_ALREADY_DISABLED ((NTSTATUS)0xC0000302L) // // MessageId: STATUS_WMI_ALREADY_ENABLED // // MessageText: // // Collection or events for the WMI GUID is already enabled. // #define STATUS_WMI_ALREADY_ENABLED ((NTSTATUS)0xC0000303L) // // MessageId: STATUS_MFT_TOO_FRAGMENTED // // MessageText: // // The Master File Table on the volume is too fragmented to complete this operation. // #define STATUS_MFT_TOO_FRAGMENTED ((NTSTATUS)0xC0000304L) // // MessageId: STATUS_COPY_PROTECTION_FAILURE // // MessageText: // // Copy protection failure. // #define STATUS_COPY_PROTECTION_FAILURE ((NTSTATUS)0xC0000305L) // // MessageId: STATUS_CSS_AUTHENTICATION_FAILURE // // MessageText: // // Copy protection error - DVD CSS Authentication failed. // #define STATUS_CSS_AUTHENTICATION_FAILURE ((NTSTATUS)0xC0000306L) // // MessageId: STATUS_CSS_KEY_NOT_PRESENT // // MessageText: // // Copy protection error - The given sector does not contain a valid key. // #define STATUS_CSS_KEY_NOT_PRESENT ((NTSTATUS)0xC0000307L) // // MessageId: STATUS_CSS_KEY_NOT_ESTABLISHED // // MessageText: // // Copy protection error - DVD session key not established. // #define STATUS_CSS_KEY_NOT_ESTABLISHED ((NTSTATUS)0xC0000308L) // // MessageId: STATUS_CSS_SCRAMBLED_SECTOR // // MessageText: // // Copy protection error - The read failed because the sector is encrypted. // #define STATUS_CSS_SCRAMBLED_SECTOR ((NTSTATUS)0xC0000309L) // // MessageId: STATUS_CSS_REGION_MISMATCH // // MessageText: // // Copy protection error - The given DVD's region does not correspond to the // region setting of the drive. // #define STATUS_CSS_REGION_MISMATCH ((NTSTATUS)0xC000030AL) // // MessageId: STATUS_CSS_RESETS_EXHAUSTED // // MessageText: // // Copy protection error - The drive's region setting may be permanent. // #define STATUS_CSS_RESETS_EXHAUSTED ((NTSTATUS)0xC000030BL) /*++ MessageId's 0x030c - 0x031f (inclusive) are reserved for future **STORAGE** copy protection errors. --*/ // // MessageId: STATUS_PKINIT_FAILURE // // MessageText: // // The kerberos protocol encountered an error while validating the KDC certificate during smartcard Logon. There // is more information in the system event log. // #define STATUS_PKINIT_FAILURE ((NTSTATUS)0xC0000320L) // // MessageId: STATUS_SMARTCARD_SUBSYSTEM_FAILURE // // MessageText: // // The kerberos protocol encountered an error while attempting to utilize the smartcard subsystem. // #define STATUS_SMARTCARD_SUBSYSTEM_FAILURE ((NTSTATUS)0xC0000321L) // // MessageId: STATUS_NO_KERB_KEY // // MessageText: // // The target server does not have acceptable kerberos credentials. // #define STATUS_NO_KERB_KEY ((NTSTATUS)0xC0000322L) /*++ MessageId's 0x0323 - 0x034f (inclusive) are reserved for other future copy protection errors. --*/ // // MessageId: STATUS_HOST_DOWN // // MessageText: // // The transport determined that the remote system is down. // #define STATUS_HOST_DOWN ((NTSTATUS)0xC0000350L) // // MessageId: STATUS_UNSUPPORTED_PREAUTH // // MessageText: // // An unsupported preauthentication mechanism was presented to the kerberos package. // #define STATUS_UNSUPPORTED_PREAUTH ((NTSTATUS)0xC0000351L) // // MessageId: STATUS_EFS_ALG_BLOB_TOO_BIG // // MessageText: // // The encryption algorithm used on the source file needs a bigger key buffer than the one used on the destination file. // #define STATUS_EFS_ALG_BLOB_TOO_BIG ((NTSTATUS)0xC0000352L) // // MessageId: STATUS_PORT_NOT_SET // // MessageText: // // An attempt to remove a processes DebugPort was made, but a port was not already associated with the process. // #define STATUS_PORT_NOT_SET ((NTSTATUS)0xC0000353L) // // MessageId: STATUS_DEBUGGER_INACTIVE // // MessageText: // // An attempt to do an operation on a debug port failed because the port is in the process of being deleted. // #define STATUS_DEBUGGER_INACTIVE ((NTSTATUS)0xC0000354L) // // MessageId: STATUS_DS_VERSION_CHECK_FAILURE // // MessageText: // // This version of Windows is not compatible with the behavior version of directory forest, domain or domain controller. // #define STATUS_DS_VERSION_CHECK_FAILURE ((NTSTATUS)0xC0000355L) // // MessageId: STATUS_AUDITING_DISABLED // // MessageText: // // The specified event is currently not being audited. // #define STATUS_AUDITING_DISABLED ((NTSTATUS)0xC0000356L) // // MessageId: STATUS_PRENT4_MACHINE_ACCOUNT // // MessageText: // // The machine account was created pre-NT4. The account needs to be recreated. // #define STATUS_PRENT4_MACHINE_ACCOUNT ((NTSTATUS)0xC0000357L) // // MessageId: STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER // // MessageText: // // A account group can not have a universal group as a member. // #define STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER ((NTSTATUS)0xC0000358L) // // MessageId: STATUS_INVALID_IMAGE_WIN_32 // // MessageText: // // The specified image file did not have the correct format, it appears to be a 32-bit Windows image. // #define STATUS_INVALID_IMAGE_WIN_32 ((NTSTATUS)0xC0000359L) // // MessageId: STATUS_INVALID_IMAGE_WIN_64 // // MessageText: // // The specified image file did not have the correct format, it appears to be a 64-bit Windows image. // #define STATUS_INVALID_IMAGE_WIN_64 ((NTSTATUS)0xC000035AL) // // MessageId: STATUS_BAD_BINDINGS // // MessageText: // // Client's supplied SSPI channel bindings were incorrect. // #define STATUS_BAD_BINDINGS ((NTSTATUS)0xC000035BL) // // MessageId: STATUS_NETWORK_SESSION_EXPIRED // // MessageText: // // The client's session has expired, so the client must reauthenticate to continue accessing the remote resources. // #define STATUS_NETWORK_SESSION_EXPIRED ((NTSTATUS)0xC000035CL) // // MessageId: STATUS_APPHELP_BLOCK // // MessageText: // // AppHelp dialog canceled thus preventing the application from starting. // #define STATUS_APPHELP_BLOCK ((NTSTATUS)0xC000035DL) // // MessageId: STATUS_ALL_SIDS_FILTERED // // MessageText: // // The SID filtering operation removed all SIDs. // #define STATUS_ALL_SIDS_FILTERED ((NTSTATUS)0xC000035EL) // // MessageId: STATUS_NOT_SAFE_MODE_DRIVER // // MessageText: // // The driver was not loaded because the system is booting into safe mode. // #define STATUS_NOT_SAFE_MODE_DRIVER ((NTSTATUS)0xC000035FL) // // MessageId: STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT // // MessageText: // // Access to %1 has been restricted by your Administrator by the default software restriction policy level. // #define STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT ((NTSTATUS)0xC0000361L) // // MessageId: STATUS_ACCESS_DISABLED_BY_POLICY_PATH // // MessageText: // // Access to %1 has been restricted by your Administrator by location with policy rule %2 placed on path %3 // #define STATUS_ACCESS_DISABLED_BY_POLICY_PATH ((NTSTATUS)0xC0000362L) // // MessageId: STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER // // MessageText: // // Access to %1 has been restricted by your Administrator by software publisher policy. // #define STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER ((NTSTATUS)0xC0000363L) // // MessageId: STATUS_ACCESS_DISABLED_BY_POLICY_OTHER // // MessageText: // // Access to %1 has been restricted by your Administrator by policy rule %2. // #define STATUS_ACCESS_DISABLED_BY_POLICY_OTHER ((NTSTATUS)0xC0000364L) // // MessageId: STATUS_FAILED_DRIVER_ENTRY // // MessageText: // // The driver was not loaded because it failed it's initialization call. // #define STATUS_FAILED_DRIVER_ENTRY ((NTSTATUS)0xC0000365L) // // MessageId: STATUS_DEVICE_ENUMERATION_ERROR // // MessageText: // // The "%hs" encountered an error while applying power or reading the device configuration. // This may be caused by a failure of your hardware or by a poor connection. // #define STATUS_DEVICE_ENUMERATION_ERROR ((NTSTATUS)0xC0000366L) // // MessageId: STATUS_WAIT_FOR_OPLOCK // // MessageText: // // An operation is blocked waiting for an oplock. // #define STATUS_WAIT_FOR_OPLOCK ((NTSTATUS)0x00000367L) // // MessageId: STATUS_MOUNT_POINT_NOT_RESOLVED // // MessageText: // // The create operation failed because the name contained at least one mount point which resolves to a volume to which the specified device object is not attached. // #define STATUS_MOUNT_POINT_NOT_RESOLVED ((NTSTATUS)0xC0000368L) // // MessageId: STATUS_INVALID_DEVICE_OBJECT_PARAMETER // // MessageText: // // The device object parameter is either not a valid device object or is not attached to the volume specified by the file name. // #define STATUS_INVALID_DEVICE_OBJECT_PARAMETER ((NTSTATUS)0xC0000369L) // // MessageId: STATUS_MCA_OCCURED // // MessageText: // // A Machine Check Error has occurred. Please check the system eventlog for additional information. // #define STATUS_MCA_OCCURED ((NTSTATUS)0xC000036AL) // // MessageId: STATUS_DRIVER_BLOCKED_CRITICAL // // MessageText: // // Driver %2 has been blocked from loading. // #define STATUS_DRIVER_BLOCKED_CRITICAL ((NTSTATUS)0xC000036BL) // // MessageId: STATUS_DRIVER_BLOCKED // // MessageText: // // Driver %2 has been blocked from loading. // #define STATUS_DRIVER_BLOCKED ((NTSTATUS)0xC000036CL) // // MessageId: STATUS_DRIVER_DATABASE_ERROR // // MessageText: // // There was error [%2] processing the driver database. // #define STATUS_DRIVER_DATABASE_ERROR ((NTSTATUS)0xC000036DL) // // MessageId: STATUS_SYSTEM_HIVE_TOO_LARGE // // MessageText: // // System hive size has exceeded its limit. // #define STATUS_SYSTEM_HIVE_TOO_LARGE ((NTSTATUS)0xC000036EL) // // MessageId: STATUS_INVALID_IMPORT_OF_NON_DLL // // MessageText: // // A dynamic link library (DLL) referenced a module that was neither a DLL nor the process's executable image. // #define STATUS_INVALID_IMPORT_OF_NON_DLL ((NTSTATUS)0xC000036FL) // // MessageId: STATUS_DS_SHUTTING_DOWN // // MessageText: // // The Directory Service is shuting down. // #define STATUS_DS_SHUTTING_DOWN ((NTSTATUS)0x40000370L) // // MessageId: STATUS_SMARTCARD_WRONG_PIN // // MessageText: // // An incorrect PIN was presented to the smart card // #define STATUS_SMARTCARD_WRONG_PIN ((NTSTATUS)0xC0000380L) // // MessageId: STATUS_SMARTCARD_CARD_BLOCKED // // MessageText: // // The smart card is blocked // #define STATUS_SMARTCARD_CARD_BLOCKED ((NTSTATUS)0xC0000381L) // // MessageId: STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED // // MessageText: // // No PIN was presented to the smart card // #define STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED ((NTSTATUS)0xC0000382L) // // MessageId: STATUS_SMARTCARD_NO_CARD // // MessageText: // // No smart card available // #define STATUS_SMARTCARD_NO_CARD ((NTSTATUS)0xC0000383L) // // MessageId: STATUS_SMARTCARD_NO_KEY_CONTAINER // // MessageText: // // The requested key container does not exist on the smart card // #define STATUS_SMARTCARD_NO_KEY_CONTAINER ((NTSTATUS)0xC0000384L) // // MessageId: STATUS_SMARTCARD_NO_CERTIFICATE // // MessageText: // // The requested certificate does not exist on the smart card // #define STATUS_SMARTCARD_NO_CERTIFICATE ((NTSTATUS)0xC0000385L) // // MessageId: STATUS_SMARTCARD_NO_KEYSET // // MessageText: // // The requested keyset does not exist // #define STATUS_SMARTCARD_NO_KEYSET ((NTSTATUS)0xC0000386L) // // MessageId: STATUS_SMARTCARD_IO_ERROR // // MessageText: // // A communication error with the smart card has been detected. // #define STATUS_SMARTCARD_IO_ERROR ((NTSTATUS)0xC0000387L) // // MessageId: STATUS_DOWNGRADE_DETECTED // // MessageText: // // The system detected a possible attempt to compromise security. Please ensure that you can contact the server that authenticated you. // #define STATUS_DOWNGRADE_DETECTED ((NTSTATUS)0xC0000388L) // // MessageId: STATUS_SMARTCARD_CERT_REVOKED // // MessageText: // // The smartcard certificate used for authentication has been revoked. // Please contact your system administrator. There may be additional information in the // event log. // #define STATUS_SMARTCARD_CERT_REVOKED ((NTSTATUS)0xC0000389L) // // MessageId: STATUS_ISSUING_CA_UNTRUSTED // // MessageText: // // An untrusted certificate authority was detected While processing the // smartcard certificate used for authentication. Please contact your system // administrator. // #define STATUS_ISSUING_CA_UNTRUSTED ((NTSTATUS)0xC000038AL) // // MessageId: STATUS_REVOCATION_OFFLINE_C // // MessageText: // // The revocation status of the smartcard certificate used for // authentication could not be determined. Please contact your system administrator. // #define STATUS_REVOCATION_OFFLINE_C ((NTSTATUS)0xC000038BL) // // MessageId: STATUS_PKINIT_CLIENT_FAILURE // // MessageText: // // The smartcard certificate used for authentication was not trusted. Please // contact your system administrator. // #define STATUS_PKINIT_CLIENT_FAILURE ((NTSTATUS)0xC000038CL) // // MessageId: STATUS_SMARTCARD_CERT_EXPIRED // // MessageText: // // The smartcard certificate used for authentication has expired. Please // contact your system administrator. // #define STATUS_SMARTCARD_CERT_EXPIRED ((NTSTATUS)0xC000038DL) // // MessageId: STATUS_DRIVER_FAILED_PRIOR_UNLOAD // // MessageText: // // The driver could not be loaded because a previous version of the driver is still in memory. // #define STATUS_DRIVER_FAILED_PRIOR_UNLOAD ((NTSTATUS)0xC000038EL) // // MessageId: STATUS_SMARTCARD_SILENT_CONTEXT // // MessageText: // // The smartcard provider could not perform the action since the context was acquired as silent. // #define STATUS_SMARTCARD_SILENT_CONTEXT ((NTSTATUS)0xC000038FL) /* MessageId up to 0x400 is reserved for smart cards */ // // MessageId: STATUS_PER_USER_TRUST_QUOTA_EXCEEDED // // MessageText: // // The current user's delegated trust creation quota has been exceeded. // #define STATUS_PER_USER_TRUST_QUOTA_EXCEEDED ((NTSTATUS)0xC0000401L) // // MessageId: STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED // // MessageText: // // The total delegated trust creation quota has been exceeded. // #define STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED ((NTSTATUS)0xC0000402L) // // MessageId: STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED // // MessageText: // // The current user's delegated trust deletion quota has been exceeded. // #define STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED ((NTSTATUS)0xC0000403L) // // MessageId: STATUS_DS_NAME_NOT_UNIQUE // // MessageText: // // The requested name already exists as a unique identifier. // #define STATUS_DS_NAME_NOT_UNIQUE ((NTSTATUS)0xC0000404L) // // MessageId: STATUS_DS_DUPLICATE_ID_FOUND // // MessageText: // // The requested object has a non-unique identifier and cannot be retrieved. // #define STATUS_DS_DUPLICATE_ID_FOUND ((NTSTATUS)0xC0000405L) // // MessageId: STATUS_DS_GROUP_CONVERSION_ERROR // // MessageText: // // The group cannot be converted due to attribute restrictions on the requested group type. // #define STATUS_DS_GROUP_CONVERSION_ERROR ((NTSTATUS)0xC0000406L) // // MessageId: STATUS_VOLSNAP_PREPARE_HIBERNATE // // MessageText: // // {Volume Shadow Copy Service} // Please wait while the Volume Shadow Copy Service prepares volume %hs for hibernation. // #define STATUS_VOLSNAP_PREPARE_HIBERNATE ((NTSTATUS)0xC0000407L) // // MessageId: STATUS_USER2USER_REQUIRED // // MessageText: // // Kerberos sub-protocol User2User is required. // #define STATUS_USER2USER_REQUIRED ((NTSTATUS)0xC0000408L) // // MessageId: STATUS_STACK_BUFFER_OVERRUN // // MessageText: // // The system detected an overrun of a stack-based buffer in this application. This // overrun could potentially allow a malicious user to gain control of this application. // #define STATUS_STACK_BUFFER_OVERRUN ((NTSTATUS)0xC0000409L) // // MessageId: STATUS_NO_S4U_PROT_SUPPORT // // MessageText: // // The Kerberos subsystem encountered an error. A service for user protocol request was made // against a domain controller which does not support service for user. // #define STATUS_NO_S4U_PROT_SUPPORT ((NTSTATUS)0xC000040AL) // // MessageId: STATUS_CROSSREALM_DELEGATION_FAILURE // // MessageText: // // An attempt was made by this server to make a Kerberos constrained delegation request for a target // outside of the server's realm. This is not supported, and indicates a misconfiguration on this // server's allowed to delegate to list. Please contact your administrator. // #define STATUS_CROSSREALM_DELEGATION_FAILURE ((NTSTATUS)0xC000040BL) // // MessageId: STATUS_REVOCATION_OFFLINE_KDC // // MessageText: // // The revocation status of the domain controller certificate used for smartcard // authentication could not be determined. There is additional information in the system event // log. Please contact your system administrator. // #define STATUS_REVOCATION_OFFLINE_KDC ((NTSTATUS)0xC000040CL) // // MessageId: STATUS_ISSUING_CA_UNTRUSTED_KDC // // MessageText: // // An untrusted certificate authority was detected while processing the // domain controller certificate used for authentication. There is additional information in // the system event log. Please contact your system administrator. // #define STATUS_ISSUING_CA_UNTRUSTED_KDC ((NTSTATUS)0xC000040DL) // // MessageId: STATUS_KDC_CERT_EXPIRED // // MessageText: // // The domain controller certificate used for smartcard logon has expired. // Please contact your system administrator with the contents of your system event log. // #define STATUS_KDC_CERT_EXPIRED ((NTSTATUS)0xC000040EL) // // MessageId: STATUS_KDC_CERT_REVOKED // // MessageText: // // The domain controller certificate used for smartcard logon has been revoked. // Please contact your system administrator with the contents of your system event log. // #define STATUS_KDC_CERT_REVOKED ((NTSTATUS)0xC000040FL) // // MessageId: STATUS_PARAMETER_QUOTA_EXCEEDED // // MessageText: // // Data present in one of the parameters is more than the function can operate on. // #define STATUS_PARAMETER_QUOTA_EXCEEDED ((NTSTATUS)0xC0000410L) // // MessageId: STATUS_HIBERNATION_FAILURE // // MessageText: // // The system has failed to hibernate (The error code is %hs). Hibernation will be disabled until the system is restarted. // #define STATUS_HIBERNATION_FAILURE ((NTSTATUS)0xC0000411L) // // MessageId: STATUS_DELAY_LOAD_FAILED // // MessageText: // // An attempt to delay-load a .dll or get a function address in a delay-loaded .dll failed. // #define STATUS_DELAY_LOAD_FAILED ((NTSTATUS)0xC0000412L) // // MessageId: STATUS_AUTHENTICATION_FIREWALL_FAILED // // MessageText: // // Logon Failure: The machine you are logging onto is protected by an authentication firewall. The specified account is not allowed to authenticate to the machine. // #define STATUS_AUTHENTICATION_FIREWALL_FAILED ((NTSTATUS)0xC0000413L) // // MessageId: STATUS_VDM_DISALLOWED // // MessageText: // // %hs is a 16-bit application. You do not have permissions to execute 16-bit applications. Check your permissions with your system administrator. // #define STATUS_VDM_DISALLOWED ((NTSTATUS)0xC0000414L) // // MessageId: STATUS_HUNG_DISPLAY_DRIVER_THREAD // // MessageText: // // {Display Driver Stopped Responding} // The %hs display driver has stopped working normally. Save your work and reboot the system to restore full display functionality. // The next time you reboot the machine a dialog will be displayed giving you a chance to report this failure to Microsoft. // #define STATUS_HUNG_DISPLAY_DRIVER_THREAD ((NTSTATUS)0xC0000415L) /*++ MessageId=0x0420 Facility=System Severity=ERROR SymbolicName=STATUS_ASSERTION_FAILURE Language=English An assertion failure has occurred. . --*/ #define STATUS_ASSERTION_FAILURE ((NTSTATUS)0xC0000420L) /*++ MessageId=0x0423 Facility=System Severity=ERROR SymbolicName=STATUS_CALLBACK_POP_STACK Language=English An exception has occurred in a user mode callback and the kernel callback frame should be removed. . --*/ #define STATUS_CALLBACK_POP_STACK ((NTSTATUS)0xC0000423L) /*++ MessageId=0x0424 Facility=System Severity=ERROR SymbolicName=STATUS_INCOMPATIBLE_DRIVER_BLOCKED Language=English %1 has been blocked from loading due to incompatibility with this system. Please contact your software vendor for a compatible version of the driver. . --*/ #define STATUS_INCOMPATIBLE_DRIVER_BLOCKED ((NTSTATUS)0xC0000424L) // // MessageId: STATUS_ENCOUNTERED_WRITE_IN_PROGRESS // // MessageText: // // The attempted write operation encountered a write already in progress for some portion of the range. // #define STATUS_ENCOUNTERED_WRITE_IN_PROGRESS ((NTSTATUS)0xC0000433L) // // MessageId: STATUS_WOW_ASSERTION // // MessageText: // // WOW Assertion Error. // #define STATUS_WOW_ASSERTION ((NTSTATUS)0xC0009898L) // // MessageId: DBG_NO_STATE_CHANGE // // MessageText: // // Debugger did not perform a state change. // #define DBG_NO_STATE_CHANGE ((NTSTATUS)0xC0010001L) // // MessageId: DBG_APP_NOT_IDLE // // MessageText: // // Debugger has found the application is not idle. // #define DBG_APP_NOT_IDLE ((NTSTATUS)0xC0010002L) // // MessageId: RPC_NT_INVALID_STRING_BINDING // // MessageText: // // The string binding is invalid. // #define RPC_NT_INVALID_STRING_BINDING ((NTSTATUS)0xC0020001L) // // MessageId: RPC_NT_WRONG_KIND_OF_BINDING // // MessageText: // // The binding handle is not the correct type. // #define RPC_NT_WRONG_KIND_OF_BINDING ((NTSTATUS)0xC0020002L) // // MessageId: RPC_NT_INVALID_BINDING // // MessageText: // // The binding handle is invalid. // #define RPC_NT_INVALID_BINDING ((NTSTATUS)0xC0020003L) // // MessageId: RPC_NT_PROTSEQ_NOT_SUPPORTED // // MessageText: // // The RPC protocol sequence is not supported. // #define RPC_NT_PROTSEQ_NOT_SUPPORTED ((NTSTATUS)0xC0020004L) // // MessageId: RPC_NT_INVALID_RPC_PROTSEQ // // MessageText: // // The RPC protocol sequence is invalid. // #define RPC_NT_INVALID_RPC_PROTSEQ ((NTSTATUS)0xC0020005L) // // MessageId: RPC_NT_INVALID_STRING_UUID // // MessageText: // // The string UUID is invalid. // #define RPC_NT_INVALID_STRING_UUID ((NTSTATUS)0xC0020006L) // // MessageId: RPC_NT_INVALID_ENDPOINT_FORMAT // // MessageText: // // The endpoint format is invalid. // #define RPC_NT_INVALID_ENDPOINT_FORMAT ((NTSTATUS)0xC0020007L) // // MessageId: RPC_NT_INVALID_NET_ADDR // // MessageText: // // The network address is invalid. // #define RPC_NT_INVALID_NET_ADDR ((NTSTATUS)0xC0020008L) // // MessageId: RPC_NT_NO_ENDPOINT_FOUND // // MessageText: // // No endpoint was found. // #define RPC_NT_NO_ENDPOINT_FOUND ((NTSTATUS)0xC0020009L) // // MessageId: RPC_NT_INVALID_TIMEOUT // // MessageText: // // The timeout value is invalid. // #define RPC_NT_INVALID_TIMEOUT ((NTSTATUS)0xC002000AL) // // MessageId: RPC_NT_OBJECT_NOT_FOUND // // MessageText: // // The object UUID was not found. // #define RPC_NT_OBJECT_NOT_FOUND ((NTSTATUS)0xC002000BL) // // MessageId: RPC_NT_ALREADY_REGISTERED // // MessageText: // // The object UUID has already been registered. // #define RPC_NT_ALREADY_REGISTERED ((NTSTATUS)0xC002000CL) // // MessageId: RPC_NT_TYPE_ALREADY_REGISTERED // // MessageText: // // The type UUID has already been registered. // #define RPC_NT_TYPE_ALREADY_REGISTERED ((NTSTATUS)0xC002000DL) // // MessageId: RPC_NT_ALREADY_LISTENING // // MessageText: // // The RPC server is already listening. // #define RPC_NT_ALREADY_LISTENING ((NTSTATUS)0xC002000EL) // // MessageId: RPC_NT_NO_PROTSEQS_REGISTERED // // MessageText: // // No protocol sequences have been registered. // #define RPC_NT_NO_PROTSEQS_REGISTERED ((NTSTATUS)0xC002000FL) // // MessageId: RPC_NT_NOT_LISTENING // // MessageText: // // The RPC server is not listening. // #define RPC_NT_NOT_LISTENING ((NTSTATUS)0xC0020010L) // // MessageId: RPC_NT_UNKNOWN_MGR_TYPE // // MessageText: // // The manager type is unknown. // #define RPC_NT_UNKNOWN_MGR_TYPE ((NTSTATUS)0xC0020011L) // // MessageId: RPC_NT_UNKNOWN_IF // // MessageText: // // The interface is unknown. // #define RPC_NT_UNKNOWN_IF ((NTSTATUS)0xC0020012L) // // MessageId: RPC_NT_NO_BINDINGS // // MessageText: // // There are no bindings. // #define RPC_NT_NO_BINDINGS ((NTSTATUS)0xC0020013L) // // MessageId: RPC_NT_NO_PROTSEQS // // MessageText: // // There are no protocol sequences. // #define RPC_NT_NO_PROTSEQS ((NTSTATUS)0xC0020014L) // // MessageId: RPC_NT_CANT_CREATE_ENDPOINT // // MessageText: // // The endpoint cannot be created. // #define RPC_NT_CANT_CREATE_ENDPOINT ((NTSTATUS)0xC0020015L) // // MessageId: RPC_NT_OUT_OF_RESOURCES // // MessageText: // // Not enough resources are available to complete this operation. // #define RPC_NT_OUT_OF_RESOURCES ((NTSTATUS)0xC0020016L) // // MessageId: RPC_NT_SERVER_UNAVAILABLE // // MessageText: // // The RPC server is unavailable. // #define RPC_NT_SERVER_UNAVAILABLE ((NTSTATUS)0xC0020017L) // // MessageId: RPC_NT_SERVER_TOO_BUSY // // MessageText: // // The RPC server is too busy to complete this operation. // #define RPC_NT_SERVER_TOO_BUSY ((NTSTATUS)0xC0020018L) // // MessageId: RPC_NT_INVALID_NETWORK_OPTIONS // // MessageText: // // The network options are invalid. // #define RPC_NT_INVALID_NETWORK_OPTIONS ((NTSTATUS)0xC0020019L) // // MessageId: RPC_NT_NO_CALL_ACTIVE // // MessageText: // // There are no remote procedure calls active on this thread. // #define RPC_NT_NO_CALL_ACTIVE ((NTSTATUS)0xC002001AL) // // MessageId: RPC_NT_CALL_FAILED // // MessageText: // // The remote procedure call failed. // #define RPC_NT_CALL_FAILED ((NTSTATUS)0xC002001BL) // // MessageId: RPC_NT_CALL_FAILED_DNE // // MessageText: // // The remote procedure call failed and did not execute. // #define RPC_NT_CALL_FAILED_DNE ((NTSTATUS)0xC002001CL) // // MessageId: RPC_NT_PROTOCOL_ERROR // // MessageText: // // An RPC protocol error occurred. // #define RPC_NT_PROTOCOL_ERROR ((NTSTATUS)0xC002001DL) // // MessageId: RPC_NT_UNSUPPORTED_TRANS_SYN // // MessageText: // // The transfer syntax is not supported by the RPC server. // #define RPC_NT_UNSUPPORTED_TRANS_SYN ((NTSTATUS)0xC002001FL) // // MessageId: RPC_NT_UNSUPPORTED_TYPE // // MessageText: // // The type UUID is not supported. // #define RPC_NT_UNSUPPORTED_TYPE ((NTSTATUS)0xC0020021L) // // MessageId: RPC_NT_INVALID_TAG // // MessageText: // // The tag is invalid. // #define RPC_NT_INVALID_TAG ((NTSTATUS)0xC0020022L) // // MessageId: RPC_NT_INVALID_BOUND // // MessageText: // // The array bounds are invalid. // #define RPC_NT_INVALID_BOUND ((NTSTATUS)0xC0020023L) // // MessageId: RPC_NT_NO_ENTRY_NAME // // MessageText: // // The binding does not contain an entry name. // #define RPC_NT_NO_ENTRY_NAME ((NTSTATUS)0xC0020024L) // // MessageId: RPC_NT_INVALID_NAME_SYNTAX // // MessageText: // // The name syntax is invalid. // #define RPC_NT_INVALID_NAME_SYNTAX ((NTSTATUS)0xC0020025L) // // MessageId: RPC_NT_UNSUPPORTED_NAME_SYNTAX // // MessageText: // // The name syntax is not supported. // #define RPC_NT_UNSUPPORTED_NAME_SYNTAX ((NTSTATUS)0xC0020026L) // // MessageId: RPC_NT_UUID_NO_ADDRESS // // MessageText: // // No network address is available to use to construct a UUID. // #define RPC_NT_UUID_NO_ADDRESS ((NTSTATUS)0xC0020028L) // // MessageId: RPC_NT_DUPLICATE_ENDPOINT // // MessageText: // // The endpoint is a duplicate. // #define RPC_NT_DUPLICATE_ENDPOINT ((NTSTATUS)0xC0020029L) // // MessageId: RPC_NT_UNKNOWN_AUTHN_TYPE // // MessageText: // // The authentication type is unknown. // #define RPC_NT_UNKNOWN_AUTHN_TYPE ((NTSTATUS)0xC002002AL) // // MessageId: RPC_NT_MAX_CALLS_TOO_SMALL // // MessageText: // // The maximum number of calls is too small. // #define RPC_NT_MAX_CALLS_TOO_SMALL ((NTSTATUS)0xC002002BL) // // MessageId: RPC_NT_STRING_TOO_LONG // // MessageText: // // The string is too long. // #define RPC_NT_STRING_TOO_LONG ((NTSTATUS)0xC002002CL) // // MessageId: RPC_NT_PROTSEQ_NOT_FOUND // // MessageText: // // The RPC protocol sequence was not found. // #define RPC_NT_PROTSEQ_NOT_FOUND ((NTSTATUS)0xC002002DL) // // MessageId: RPC_NT_PROCNUM_OUT_OF_RANGE // // MessageText: // // The procedure number is out of range. // #define RPC_NT_PROCNUM_OUT_OF_RANGE ((NTSTATUS)0xC002002EL) // // MessageId: RPC_NT_BINDING_HAS_NO_AUTH // // MessageText: // // The binding does not contain any authentication information. // #define RPC_NT_BINDING_HAS_NO_AUTH ((NTSTATUS)0xC002002FL) // // MessageId: RPC_NT_UNKNOWN_AUTHN_SERVICE // // MessageText: // // The authentication service is unknown. // #define RPC_NT_UNKNOWN_AUTHN_SERVICE ((NTSTATUS)0xC0020030L) // // MessageId: RPC_NT_UNKNOWN_AUTHN_LEVEL // // MessageText: // // The authentication level is unknown. // #define RPC_NT_UNKNOWN_AUTHN_LEVEL ((NTSTATUS)0xC0020031L) // // MessageId: RPC_NT_INVALID_AUTH_IDENTITY // // MessageText: // // The security context is invalid. // #define RPC_NT_INVALID_AUTH_IDENTITY ((NTSTATUS)0xC0020032L) // // MessageId: RPC_NT_UNKNOWN_AUTHZ_SERVICE // // MessageText: // // The authorization service is unknown. // #define RPC_NT_UNKNOWN_AUTHZ_SERVICE ((NTSTATUS)0xC0020033L) // // MessageId: EPT_NT_INVALID_ENTRY // // MessageText: // // The entry is invalid. // #define EPT_NT_INVALID_ENTRY ((NTSTATUS)0xC0020034L) // // MessageId: EPT_NT_CANT_PERFORM_OP // // MessageText: // // The operation cannot be performed. // #define EPT_NT_CANT_PERFORM_OP ((NTSTATUS)0xC0020035L) // // MessageId: EPT_NT_NOT_REGISTERED // // MessageText: // // There are no more endpoints available from the endpoint mapper. // #define EPT_NT_NOT_REGISTERED ((NTSTATUS)0xC0020036L) // // MessageId: RPC_NT_NOTHING_TO_EXPORT // // MessageText: // // No interfaces have been exported. // #define RPC_NT_NOTHING_TO_EXPORT ((NTSTATUS)0xC0020037L) // // MessageId: RPC_NT_INCOMPLETE_NAME // // MessageText: // // The entry name is incomplete. // #define RPC_NT_INCOMPLETE_NAME ((NTSTATUS)0xC0020038L) // // MessageId: RPC_NT_INVALID_VERS_OPTION // // MessageText: // // The version option is invalid. // #define RPC_NT_INVALID_VERS_OPTION ((NTSTATUS)0xC0020039L) // // MessageId: RPC_NT_NO_MORE_MEMBERS // // MessageText: // // There are no more members. // #define RPC_NT_NO_MORE_MEMBERS ((NTSTATUS)0xC002003AL) // // MessageId: RPC_NT_NOT_ALL_OBJS_UNEXPORTED // // MessageText: // // There is nothing to unexport. // #define RPC_NT_NOT_ALL_OBJS_UNEXPORTED ((NTSTATUS)0xC002003BL) // // MessageId: RPC_NT_INTERFACE_NOT_FOUND // // MessageText: // // The interface was not found. // #define RPC_NT_INTERFACE_NOT_FOUND ((NTSTATUS)0xC002003CL) // // MessageId: RPC_NT_ENTRY_ALREADY_EXISTS // // MessageText: // // The entry already exists. // #define RPC_NT_ENTRY_ALREADY_EXISTS ((NTSTATUS)0xC002003DL) // // MessageId: RPC_NT_ENTRY_NOT_FOUND // // MessageText: // // The entry is not found. // #define RPC_NT_ENTRY_NOT_FOUND ((NTSTATUS)0xC002003EL) // // MessageId: RPC_NT_NAME_SERVICE_UNAVAILABLE // // MessageText: // // The name service is unavailable. // #define RPC_NT_NAME_SERVICE_UNAVAILABLE ((NTSTATUS)0xC002003FL) // // MessageId: RPC_NT_INVALID_NAF_ID // // MessageText: // // The network address family is invalid. // #define RPC_NT_INVALID_NAF_ID ((NTSTATUS)0xC0020040L) // // MessageId: RPC_NT_CANNOT_SUPPORT // // MessageText: // // The requested operation is not supported. // #define RPC_NT_CANNOT_SUPPORT ((NTSTATUS)0xC0020041L) // // MessageId: RPC_NT_NO_CONTEXT_AVAILABLE // // MessageText: // // No security context is available to allow impersonation. // #define RPC_NT_NO_CONTEXT_AVAILABLE ((NTSTATUS)0xC0020042L) // // MessageId: RPC_NT_INTERNAL_ERROR // // MessageText: // // An internal error occurred in RPC. // #define RPC_NT_INTERNAL_ERROR ((NTSTATUS)0xC0020043L) // // MessageId: RPC_NT_ZERO_DIVIDE // // MessageText: // // The RPC server attempted an integer divide by zero. // #define RPC_NT_ZERO_DIVIDE ((NTSTATUS)0xC0020044L) // // MessageId: RPC_NT_ADDRESS_ERROR // // MessageText: // // An addressing error occurred in the RPC server. // #define RPC_NT_ADDRESS_ERROR ((NTSTATUS)0xC0020045L) // // MessageId: RPC_NT_FP_DIV_ZERO // // MessageText: // // A floating point operation at the RPC server caused a divide by zero. // #define RPC_NT_FP_DIV_ZERO ((NTSTATUS)0xC0020046L) // // MessageId: RPC_NT_FP_UNDERFLOW // // MessageText: // // A floating point underflow occurred at the RPC server. // #define RPC_NT_FP_UNDERFLOW ((NTSTATUS)0xC0020047L) // // MessageId: RPC_NT_FP_OVERFLOW // // MessageText: // // A floating point overflow occurred at the RPC server. // #define RPC_NT_FP_OVERFLOW ((NTSTATUS)0xC0020048L) // // MessageId: RPC_NT_NO_MORE_ENTRIES // // MessageText: // // The list of RPC servers available for auto-handle binding has been exhausted. // #define RPC_NT_NO_MORE_ENTRIES ((NTSTATUS)0xC0030001L) // // MessageId: RPC_NT_SS_CHAR_TRANS_OPEN_FAIL // // MessageText: // // The file designated by DCERPCCHARTRANS cannot be opened. // #define RPC_NT_SS_CHAR_TRANS_OPEN_FAIL ((NTSTATUS)0xC0030002L) // // MessageId: RPC_NT_SS_CHAR_TRANS_SHORT_FILE // // MessageText: // // The file containing the character translation table has fewer than 512 bytes. // #define RPC_NT_SS_CHAR_TRANS_SHORT_FILE ((NTSTATUS)0xC0030003L) // // MessageId: RPC_NT_SS_IN_NULL_CONTEXT // // MessageText: // // A null context handle is passed as an [in] parameter. // #define RPC_NT_SS_IN_NULL_CONTEXT ((NTSTATUS)0xC0030004L) // // MessageId: RPC_NT_SS_CONTEXT_MISMATCH // // MessageText: // // The context handle does not match any known context handles. // #define RPC_NT_SS_CONTEXT_MISMATCH ((NTSTATUS)0xC0030005L) // // MessageId: RPC_NT_SS_CONTEXT_DAMAGED // // MessageText: // // The context handle changed during a call. // #define RPC_NT_SS_CONTEXT_DAMAGED ((NTSTATUS)0xC0030006L) // // MessageId: RPC_NT_SS_HANDLES_MISMATCH // // MessageText: // // The binding handles passed to a remote procedure call do not match. // #define RPC_NT_SS_HANDLES_MISMATCH ((NTSTATUS)0xC0030007L) // // MessageId: RPC_NT_SS_CANNOT_GET_CALL_HANDLE // // MessageText: // // The stub is unable to get the call handle. // #define RPC_NT_SS_CANNOT_GET_CALL_HANDLE ((NTSTATUS)0xC0030008L) // // MessageId: RPC_NT_NULL_REF_POINTER // // MessageText: // // A null reference pointer was passed to the stub. // #define RPC_NT_NULL_REF_POINTER ((NTSTATUS)0xC0030009L) // // MessageId: RPC_NT_ENUM_VALUE_OUT_OF_RANGE // // MessageText: // // The enumeration value is out of range. // #define RPC_NT_ENUM_VALUE_OUT_OF_RANGE ((NTSTATUS)0xC003000AL) // // MessageId: RPC_NT_BYTE_COUNT_TOO_SMALL // // MessageText: // // The byte count is too small. // #define RPC_NT_BYTE_COUNT_TOO_SMALL ((NTSTATUS)0xC003000BL) // // MessageId: RPC_NT_BAD_STUB_DATA // // MessageText: // // The stub received bad data. // #define RPC_NT_BAD_STUB_DATA ((NTSTATUS)0xC003000CL) // // MessageId: RPC_NT_CALL_IN_PROGRESS // // MessageText: // // A remote procedure call is already in progress for this thread. // #define RPC_NT_CALL_IN_PROGRESS ((NTSTATUS)0xC0020049L) // // MessageId: RPC_NT_NO_MORE_BINDINGS // // MessageText: // // There are no more bindings. // #define RPC_NT_NO_MORE_BINDINGS ((NTSTATUS)0xC002004AL) // // MessageId: RPC_NT_GROUP_MEMBER_NOT_FOUND // // MessageText: // // The group member was not found. // #define RPC_NT_GROUP_MEMBER_NOT_FOUND ((NTSTATUS)0xC002004BL) // // MessageId: EPT_NT_CANT_CREATE // // MessageText: // // The endpoint mapper database entry could not be created. // #define EPT_NT_CANT_CREATE ((NTSTATUS)0xC002004CL) // // MessageId: RPC_NT_INVALID_OBJECT // // MessageText: // // The object UUID is the nil UUID. // #define RPC_NT_INVALID_OBJECT ((NTSTATUS)0xC002004DL) // // MessageId: RPC_NT_NO_INTERFACES // // MessageText: // // No interfaces have been registered. // #define RPC_NT_NO_INTERFACES ((NTSTATUS)0xC002004FL) // // MessageId: RPC_NT_CALL_CANCELLED // // MessageText: // // The remote procedure call was cancelled. // #define RPC_NT_CALL_CANCELLED ((NTSTATUS)0xC0020050L) // // MessageId: RPC_NT_BINDING_INCOMPLETE // // MessageText: // // The binding handle does not contain all required information. // #define RPC_NT_BINDING_INCOMPLETE ((NTSTATUS)0xC0020051L) // // MessageId: RPC_NT_COMM_FAILURE // // MessageText: // // A communications failure occurred during a remote procedure call. // #define RPC_NT_COMM_FAILURE ((NTSTATUS)0xC0020052L) // // MessageId: RPC_NT_UNSUPPORTED_AUTHN_LEVEL // // MessageText: // // The requested authentication level is not supported. // #define RPC_NT_UNSUPPORTED_AUTHN_LEVEL ((NTSTATUS)0xC0020053L) // // MessageId: RPC_NT_NO_PRINC_NAME // // MessageText: // // No principal name registered. // #define RPC_NT_NO_PRINC_NAME ((NTSTATUS)0xC0020054L) // // MessageId: RPC_NT_NOT_RPC_ERROR // // MessageText: // // The error specified is not a valid Windows RPC error code. // #define RPC_NT_NOT_RPC_ERROR ((NTSTATUS)0xC0020055L) // // MessageId: RPC_NT_UUID_LOCAL_ONLY // // MessageText: // // A UUID that is valid only on this computer has been allocated. // #define RPC_NT_UUID_LOCAL_ONLY ((NTSTATUS)0x40020056L) // // MessageId: RPC_NT_SEC_PKG_ERROR // // MessageText: // // A security package specific error occurred. // #define RPC_NT_SEC_PKG_ERROR ((NTSTATUS)0xC0020057L) // // MessageId: RPC_NT_NOT_CANCELLED // // MessageText: // // Thread is not cancelled. // #define RPC_NT_NOT_CANCELLED ((NTSTATUS)0xC0020058L) // // MessageId: RPC_NT_INVALID_ES_ACTION // // MessageText: // // Invalid operation on the encoding/decoding handle. // #define RPC_NT_INVALID_ES_ACTION ((NTSTATUS)0xC0030059L) // // MessageId: RPC_NT_WRONG_ES_VERSION // // MessageText: // // Incompatible version of the serializing package. // #define RPC_NT_WRONG_ES_VERSION ((NTSTATUS)0xC003005AL) // // MessageId: RPC_NT_WRONG_STUB_VERSION // // MessageText: // // Incompatible version of the RPC stub. // #define RPC_NT_WRONG_STUB_VERSION ((NTSTATUS)0xC003005BL) // // MessageId: RPC_NT_INVALID_PIPE_OBJECT // // MessageText: // // The RPC pipe object is invalid or corrupted. // #define RPC_NT_INVALID_PIPE_OBJECT ((NTSTATUS)0xC003005CL) // // MessageId: RPC_NT_INVALID_PIPE_OPERATION // // MessageText: // // An invalid operation was attempted on an RPC pipe object. // #define RPC_NT_INVALID_PIPE_OPERATION ((NTSTATUS)0xC003005DL) // // MessageId: RPC_NT_WRONG_PIPE_VERSION // // MessageText: // // Unsupported RPC pipe version. // #define RPC_NT_WRONG_PIPE_VERSION ((NTSTATUS)0xC003005EL) // // MessageId: RPC_NT_PIPE_CLOSED // // MessageText: // // The RPC pipe object has already been closed. // #define RPC_NT_PIPE_CLOSED ((NTSTATUS)0xC003005FL) // // MessageId: RPC_NT_PIPE_DISCIPLINE_ERROR // // MessageText: // // The RPC call completed before all pipes were processed. // #define RPC_NT_PIPE_DISCIPLINE_ERROR ((NTSTATUS)0xC0030060L) // // MessageId: RPC_NT_PIPE_EMPTY // // MessageText: // // No more data is available from the RPC pipe. // #define RPC_NT_PIPE_EMPTY ((NTSTATUS)0xC0030061L) // // MessageId: RPC_NT_INVALID_ASYNC_HANDLE // // MessageText: // // Invalid asynchronous remote procedure call handle. // #define RPC_NT_INVALID_ASYNC_HANDLE ((NTSTATUS)0xC0020062L) // // MessageId: RPC_NT_INVALID_ASYNC_CALL // // MessageText: // // Invalid asynchronous RPC call handle for this operation. // #define RPC_NT_INVALID_ASYNC_CALL ((NTSTATUS)0xC0020063L) // // MessageId: RPC_NT_SEND_INCOMPLETE // // MessageText: // // Some data remains to be sent in the request buffer. // #define RPC_NT_SEND_INCOMPLETE ((NTSTATUS)0x400200AFL) // // MessageId: STATUS_ACPI_INVALID_OPCODE // // MessageText: // // An attempt was made to run an invalid AML opcode // #define STATUS_ACPI_INVALID_OPCODE ((NTSTATUS)0xC0140001L) // // MessageId: STATUS_ACPI_STACK_OVERFLOW // // MessageText: // // The AML Interpreter Stack has overflowed // #define STATUS_ACPI_STACK_OVERFLOW ((NTSTATUS)0xC0140002L) // // MessageId: STATUS_ACPI_ASSERT_FAILED // // MessageText: // // An inconsistent state has occurred // #define STATUS_ACPI_ASSERT_FAILED ((NTSTATUS)0xC0140003L) // // MessageId: STATUS_ACPI_INVALID_INDEX // // MessageText: // // An attempt was made to access an array outside of its bounds // #define STATUS_ACPI_INVALID_INDEX ((NTSTATUS)0xC0140004L) // // MessageId: STATUS_ACPI_INVALID_ARGUMENT // // MessageText: // // A required argument was not specified // #define STATUS_ACPI_INVALID_ARGUMENT ((NTSTATUS)0xC0140005L) // // MessageId: STATUS_ACPI_FATAL // // MessageText: // // A fatal error has occurred // #define STATUS_ACPI_FATAL ((NTSTATUS)0xC0140006L) // // MessageId: STATUS_ACPI_INVALID_SUPERNAME // // MessageText: // // An invalid SuperName was specified // #define STATUS_ACPI_INVALID_SUPERNAME ((NTSTATUS)0xC0140007L) // // MessageId: STATUS_ACPI_INVALID_ARGTYPE // // MessageText: // // An argument with an incorrect type was specified // #define STATUS_ACPI_INVALID_ARGTYPE ((NTSTATUS)0xC0140008L) // // MessageId: STATUS_ACPI_INVALID_OBJTYPE // // MessageText: // // An object with an incorrect type was specified // #define STATUS_ACPI_INVALID_OBJTYPE ((NTSTATUS)0xC0140009L) // // MessageId: STATUS_ACPI_INVALID_TARGETTYPE // // MessageText: // // A target with an incorrect type was specified // #define STATUS_ACPI_INVALID_TARGETTYPE ((NTSTATUS)0xC014000AL) // // MessageId: STATUS_ACPI_INCORRECT_ARGUMENT_COUNT // // MessageText: // // An incorrect number of arguments were specified // #define STATUS_ACPI_INCORRECT_ARGUMENT_COUNT ((NTSTATUS)0xC014000BL) // // MessageId: STATUS_ACPI_ADDRESS_NOT_MAPPED // // MessageText: // // An address failed to translate // #define STATUS_ACPI_ADDRESS_NOT_MAPPED ((NTSTATUS)0xC014000CL) // // MessageId: STATUS_ACPI_INVALID_EVENTTYPE // // MessageText: // // An incorrect event type was specified // #define STATUS_ACPI_INVALID_EVENTTYPE ((NTSTATUS)0xC014000DL) // // MessageId: STATUS_ACPI_HANDLER_COLLISION // // MessageText: // // A handler for the target already exists // #define STATUS_ACPI_HANDLER_COLLISION ((NTSTATUS)0xC014000EL) // // MessageId: STATUS_ACPI_INVALID_DATA // // MessageText: // // Invalid data for the target was specified // #define STATUS_ACPI_INVALID_DATA ((NTSTATUS)0xC014000FL) // // MessageId: STATUS_ACPI_INVALID_REGION // // MessageText: // // An invalid region for the target was specified // #define STATUS_ACPI_INVALID_REGION ((NTSTATUS)0xC0140010L) // // MessageId: STATUS_ACPI_INVALID_ACCESS_SIZE // // MessageText: // // An attempt was made to access a field outside of the defined range // #define STATUS_ACPI_INVALID_ACCESS_SIZE ((NTSTATUS)0xC0140011L) // // MessageId: STATUS_ACPI_ACQUIRE_GLOBAL_LOCK // // MessageText: // // The Global system lock could not be acquired // #define STATUS_ACPI_ACQUIRE_GLOBAL_LOCK ((NTSTATUS)0xC0140012L) // // MessageId: STATUS_ACPI_ALREADY_INITIALIZED // // MessageText: // // An attempt was made to reinitialize the ACPI subsystem // #define STATUS_ACPI_ALREADY_INITIALIZED ((NTSTATUS)0xC0140013L) // // MessageId: STATUS_ACPI_NOT_INITIALIZED // // MessageText: // // The ACPI subsystem has not been initialized // #define STATUS_ACPI_NOT_INITIALIZED ((NTSTATUS)0xC0140014L) // // MessageId: STATUS_ACPI_INVALID_MUTEX_LEVEL // // MessageText: // // An incorrect mutex was specified // #define STATUS_ACPI_INVALID_MUTEX_LEVEL ((NTSTATUS)0xC0140015L) // // MessageId: STATUS_ACPI_MUTEX_NOT_OWNED // // MessageText: // // The mutex is not currently owned // #define STATUS_ACPI_MUTEX_NOT_OWNED ((NTSTATUS)0xC0140016L) // // MessageId: STATUS_ACPI_MUTEX_NOT_OWNER // // MessageText: // // An attempt was made to access the mutex by a process that was not the owner // #define STATUS_ACPI_MUTEX_NOT_OWNER ((NTSTATUS)0xC0140017L) // // MessageId: STATUS_ACPI_RS_ACCESS // // MessageText: // // An error occurred during an access to Region Space // #define STATUS_ACPI_RS_ACCESS ((NTSTATUS)0xC0140018L) // // MessageId: STATUS_ACPI_INVALID_TABLE // // MessageText: // // An attempt was made to use an incorrect table // #define STATUS_ACPI_INVALID_TABLE ((NTSTATUS)0xC0140019L) // // MessageId: STATUS_ACPI_REG_HANDLER_FAILED // // MessageText: // // The registration of an ACPI event failed // #define STATUS_ACPI_REG_HANDLER_FAILED ((NTSTATUS)0xC0140020L) // // MessageId: STATUS_ACPI_POWER_REQUEST_FAILED // // MessageText: // // An ACPI Power Object failed to transition state // #define STATUS_ACPI_POWER_REQUEST_FAILED ((NTSTATUS)0xC0140021L) // // Terminal Server specific Errors // // // MessageId: STATUS_CTX_WINSTATION_NAME_INVALID // // MessageText: // // Session name %1 is invalid. // #define STATUS_CTX_WINSTATION_NAME_INVALID ((NTSTATUS)0xC00A0001L) // // MessageId: STATUS_CTX_INVALID_PD // // MessageText: // // The protocol driver %1 is invalid. // #define STATUS_CTX_INVALID_PD ((NTSTATUS)0xC00A0002L) // // MessageId: STATUS_CTX_PD_NOT_FOUND // // MessageText: // // The protocol driver %1 was not found in the system path. // #define STATUS_CTX_PD_NOT_FOUND ((NTSTATUS)0xC00A0003L) // // MessageId: STATUS_CTX_CDM_CONNECT // // MessageText: // // The Client Drive Mapping Service Has Connected on Terminal Connection. // #define STATUS_CTX_CDM_CONNECT ((NTSTATUS)0x400A0004L) // // MessageId: STATUS_CTX_CDM_DISCONNECT // // MessageText: // // The Client Drive Mapping Service Has Disconnected on Terminal Connection. // #define STATUS_CTX_CDM_DISCONNECT ((NTSTATUS)0x400A0005L) // // MessageId: STATUS_CTX_CLOSE_PENDING // // MessageText: // // A close operation is pending on the Terminal Connection. // #define STATUS_CTX_CLOSE_PENDING ((NTSTATUS)0xC00A0006L) // // MessageId: STATUS_CTX_NO_OUTBUF // // MessageText: // // There are no free output buffers available. // #define STATUS_CTX_NO_OUTBUF ((NTSTATUS)0xC00A0007L) // // MessageId: STATUS_CTX_MODEM_INF_NOT_FOUND // // MessageText: // // The MODEM.INF file was not found. // #define STATUS_CTX_MODEM_INF_NOT_FOUND ((NTSTATUS)0xC00A0008L) // // MessageId: STATUS_CTX_INVALID_MODEMNAME // // MessageText: // // The modem (%1) was not found in MODEM.INF. // #define STATUS_CTX_INVALID_MODEMNAME ((NTSTATUS)0xC00A0009L) // // MessageId: STATUS_CTX_RESPONSE_ERROR // // MessageText: // // The modem did not accept the command sent to it. // Verify the configured modem name matches the attached modem. // #define STATUS_CTX_RESPONSE_ERROR ((NTSTATUS)0xC00A000AL) // // MessageId: STATUS_CTX_MODEM_RESPONSE_TIMEOUT // // MessageText: // // The modem did not respond to the command sent to it. // Verify the modem is properly cabled and powered on. // #define STATUS_CTX_MODEM_RESPONSE_TIMEOUT ((NTSTATUS)0xC00A000BL) // // MessageId: STATUS_CTX_MODEM_RESPONSE_NO_CARRIER // // MessageText: // // Carrier detect has failed or carrier has been dropped due to disconnect. // #define STATUS_CTX_MODEM_RESPONSE_NO_CARRIER ((NTSTATUS)0xC00A000CL) // // MessageId: STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE // // MessageText: // // Dial tone not detected within required time. // Verify phone cable is properly attached and functional. // #define STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE ((NTSTATUS)0xC00A000DL) // // MessageId: STATUS_CTX_MODEM_RESPONSE_BUSY // // MessageText: // // Busy signal detected at remote site on callback. // #define STATUS_CTX_MODEM_RESPONSE_BUSY ((NTSTATUS)0xC00A000EL) // // MessageId: STATUS_CTX_MODEM_RESPONSE_VOICE // // MessageText: // // Voice detected at remote site on callback. // #define STATUS_CTX_MODEM_RESPONSE_VOICE ((NTSTATUS)0xC00A000FL) // // MessageId: STATUS_CTX_TD_ERROR // // MessageText: // // Transport driver error // #define STATUS_CTX_TD_ERROR ((NTSTATUS)0xC00A0010L) // // MessageId: STATUS_CTX_LICENSE_CLIENT_INVALID // // MessageText: // // The client you are using is not licensed to use this system. Your logon request is denied. // #define STATUS_CTX_LICENSE_CLIENT_INVALID ((NTSTATUS)0xC00A0012L) // // MessageId: STATUS_CTX_LICENSE_NOT_AVAILABLE // // MessageText: // // The system has reached its licensed logon limit. // Please try again later. // #define STATUS_CTX_LICENSE_NOT_AVAILABLE ((NTSTATUS)0xC00A0013L) // // MessageId: STATUS_CTX_LICENSE_EXPIRED // // MessageText: // // The system license has expired. Your logon request is denied. // #define STATUS_CTX_LICENSE_EXPIRED ((NTSTATUS)0xC00A0014L) // // MessageId: STATUS_CTX_WINSTATION_NOT_FOUND // // MessageText: // // The specified session cannot be found. // #define STATUS_CTX_WINSTATION_NOT_FOUND ((NTSTATUS)0xC00A0015L) // // MessageId: STATUS_CTX_WINSTATION_NAME_COLLISION // // MessageText: // // The specified session name is already in use. // #define STATUS_CTX_WINSTATION_NAME_COLLISION ((NTSTATUS)0xC00A0016L) // // MessageId: STATUS_CTX_WINSTATION_BUSY // // MessageText: // // The requested operation cannot be completed because the Terminal Connection is currently busy processing a connect, disconnect, reset, or delete operation. // #define STATUS_CTX_WINSTATION_BUSY ((NTSTATUS)0xC00A0017L) // // MessageId: STATUS_CTX_BAD_VIDEO_MODE // // MessageText: // // An attempt has been made to connect to a session whose video mode is not supported by the current client. // #define STATUS_CTX_BAD_VIDEO_MODE ((NTSTATUS)0xC00A0018L) // // MessageId: STATUS_CTX_GRAPHICS_INVALID // // MessageText: // // The application attempted to enable DOS graphics mode. // DOS graphics mode is not supported. // #define STATUS_CTX_GRAPHICS_INVALID ((NTSTATUS)0xC00A0022L) // // MessageId: STATUS_CTX_NOT_CONSOLE // // MessageText: // // The requested operation can be performed only on the system console. // This is most often the result of a driver or system DLL requiring direct console access. // #define STATUS_CTX_NOT_CONSOLE ((NTSTATUS)0xC00A0024L) // // MessageId: STATUS_CTX_CLIENT_QUERY_TIMEOUT // // MessageText: // // The client failed to respond to the server connect message. // #define STATUS_CTX_CLIENT_QUERY_TIMEOUT ((NTSTATUS)0xC00A0026L) // // MessageId: STATUS_CTX_CONSOLE_DISCONNECT // // MessageText: // // Disconnecting the console session is not supported. // #define STATUS_CTX_CONSOLE_DISCONNECT ((NTSTATUS)0xC00A0027L) // // MessageId: STATUS_CTX_CONSOLE_CONNECT // // MessageText: // // Reconnecting a disconnected session to the console is not supported. // #define STATUS_CTX_CONSOLE_CONNECT ((NTSTATUS)0xC00A0028L) // // MessageId: STATUS_CTX_SHADOW_DENIED // // MessageText: // // The request to control another session remotely was denied. // #define STATUS_CTX_SHADOW_DENIED ((NTSTATUS)0xC00A002AL) // // MessageId: STATUS_CTX_WINSTATION_ACCESS_DENIED // // MessageText: // // A process has requested access to a session, but has not been granted those access rights. // #define STATUS_CTX_WINSTATION_ACCESS_DENIED ((NTSTATUS)0xC00A002BL) // // MessageId: STATUS_CTX_INVALID_WD // // MessageText: // // The Terminal Connection driver %1 is invalid. // #define STATUS_CTX_INVALID_WD ((NTSTATUS)0xC00A002EL) // // MessageId: STATUS_CTX_WD_NOT_FOUND // // MessageText: // // The Terminal Connection driver %1 was not found in the system path. // #define STATUS_CTX_WD_NOT_FOUND ((NTSTATUS)0xC00A002FL) // // MessageId: STATUS_CTX_SHADOW_INVALID // // MessageText: // // The requested session cannot be controlled remotely. // You cannot control your own session, a session that is trying to control your session, // a session that has no user logged on, nor control other sessions from the console. // #define STATUS_CTX_SHADOW_INVALID ((NTSTATUS)0xC00A0030L) // // MessageId: STATUS_CTX_SHADOW_DISABLED // // MessageText: // // The requested session is not configured to allow remote control. // #define STATUS_CTX_SHADOW_DISABLED ((NTSTATUS)0xC00A0031L) // // MessageId: STATUS_RDP_PROTOCOL_ERROR // // MessageText: // // The RDP protocol component %2 detected an error in the protocol stream and has disconnected the client. // #define STATUS_RDP_PROTOCOL_ERROR ((NTSTATUS)0xC00A0032L) // // MessageId: STATUS_CTX_CLIENT_LICENSE_NOT_SET // // MessageText: // // Your request to connect to this Terminal server has been rejected. // Your Terminal Server Client license number has not been entered for this copy of the Terminal Client. // Please call your system administrator for help in entering a valid, unique license number for this Terminal Server Client. // Click OK to continue. // #define STATUS_CTX_CLIENT_LICENSE_NOT_SET ((NTSTATUS)0xC00A0033L) // // MessageId: STATUS_CTX_CLIENT_LICENSE_IN_USE // // MessageText: // // Your request to connect to this Terminal server has been rejected. // Your Terminal Server Client license number is currently being used by another user. // Please call your system administrator to obtain a new copy of the Terminal Server Client with a valid, unique license number. // Click OK to continue. // #define STATUS_CTX_CLIENT_LICENSE_IN_USE ((NTSTATUS)0xC00A0034L) // // MessageId: STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE // // MessageText: // // The remote control of the console was terminated because the display mode was changed. Changing the display mode in a remote control session is not supported. // #define STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE ((NTSTATUS)0xC00A0035L) // // MessageId: STATUS_CTX_SHADOW_NOT_RUNNING // // MessageText: // // Remote control could not be terminated because the specified session is not currently being remotely controlled. // #define STATUS_CTX_SHADOW_NOT_RUNNING ((NTSTATUS)0xC00A0036L) // // MessageId: STATUS_PNP_BAD_MPS_TABLE // // MessageText: // // A device is missing in the system BIOS MPS table. This device will not be used. // Please contact your system vendor for system BIOS update. // #define STATUS_PNP_BAD_MPS_TABLE ((NTSTATUS)0xC0040035L) // // MessageId: STATUS_PNP_TRANSLATION_FAILED // // MessageText: // // A translator failed to translate resources. // #define STATUS_PNP_TRANSLATION_FAILED ((NTSTATUS)0xC0040036L) // // MessageId: STATUS_PNP_IRQ_TRANSLATION_FAILED // // MessageText: // // A IRQ translator failed to translate resources. // #define STATUS_PNP_IRQ_TRANSLATION_FAILED ((NTSTATUS)0xC0040037L) // // MessageId: STATUS_PNP_INVALID_ID // // MessageText: // // Driver %2 returned invalid ID for a child device (%3). // #define STATUS_PNP_INVALID_ID ((NTSTATUS)0xC0040038L) // // MessageId: STATUS_SXS_SECTION_NOT_FOUND // // MessageText: // // The requested section is not present in the activation context. // #define STATUS_SXS_SECTION_NOT_FOUND ((NTSTATUS)0xC0150001L) // // MessageId: STATUS_SXS_CANT_GEN_ACTCTX // // MessageText: // // Windows was not able to process the application binding information. // Please refer to your System Event Log for further information. // #define STATUS_SXS_CANT_GEN_ACTCTX ((NTSTATUS)0xC0150002L) // // MessageId: STATUS_SXS_INVALID_ACTCTXDATA_FORMAT // // MessageText: // // The application binding data format is invalid. // #define STATUS_SXS_INVALID_ACTCTXDATA_FORMAT ((NTSTATUS)0xC0150003L) // // MessageId: STATUS_SXS_ASSEMBLY_NOT_FOUND // // MessageText: // // The referenced assembly is not installed on your system. // #define STATUS_SXS_ASSEMBLY_NOT_FOUND ((NTSTATUS)0xC0150004L) // // MessageId: STATUS_SXS_MANIFEST_FORMAT_ERROR // // MessageText: // // The manifest file does not begin with the required tag and format information. // #define STATUS_SXS_MANIFEST_FORMAT_ERROR ((NTSTATUS)0xC0150005L) // // MessageId: STATUS_SXS_MANIFEST_PARSE_ERROR // // MessageText: // // The manifest file contains one or more syntax errors. // #define STATUS_SXS_MANIFEST_PARSE_ERROR ((NTSTATUS)0xC0150006L) // // MessageId: STATUS_SXS_ACTIVATION_CONTEXT_DISABLED // // MessageText: // // The application attempted to activate a disabled activation context. // #define STATUS_SXS_ACTIVATION_CONTEXT_DISABLED ((NTSTATUS)0xC0150007L) // // MessageId: STATUS_SXS_KEY_NOT_FOUND // // MessageText: // // The requested lookup key was not found in any active activation context. // #define STATUS_SXS_KEY_NOT_FOUND ((NTSTATUS)0xC0150008L) // // MessageId: STATUS_SXS_VERSION_CONFLICT // // MessageText: // // A component version required by the application conflicts with another component version already active. // #define STATUS_SXS_VERSION_CONFLICT ((NTSTATUS)0xC0150009L) // // MessageId: STATUS_SXS_WRONG_SECTION_TYPE // // MessageText: // // The type requested activation context section does not match the query API used. // #define STATUS_SXS_WRONG_SECTION_TYPE ((NTSTATUS)0xC015000AL) // // MessageId: STATUS_SXS_THREAD_QUERIES_DISABLED // // MessageText: // // Lack of system resources has required isolated activation to be disabled for the current thread of execution. // #define STATUS_SXS_THREAD_QUERIES_DISABLED ((NTSTATUS)0xC015000BL) // // MessageId: STATUS_SXS_ASSEMBLY_MISSING // // MessageText: // // The referenced assembly could not be found. // #define STATUS_SXS_ASSEMBLY_MISSING ((NTSTATUS)0xC015000CL) // // MessageId: STATUS_SXS_RELEASE_ACTIVATION_CONTEXT // // MessageText: // // A kernel mode component is releasing a reference on an activation context. // #define STATUS_SXS_RELEASE_ACTIVATION_CONTEXT ((NTSTATUS)0x4015000DL) // // MessageId: STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET // // MessageText: // // An attempt to set the process default activation context failed because the process default activation context was already set. // #define STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET ((NTSTATUS)0xC015000EL) #if defined(STATUS_SUCCESS) || (_WIN32_WINNT > 0x0500) || (_WIN32_FUSION >= 0x0100) // winnt // // MessageId: STATUS_SXS_EARLY_DEACTIVATION // // MessageText: // // The activation context being deactivated is not the most recently activated one. // #define STATUS_SXS_EARLY_DEACTIVATION ((NTSTATUS)0xC015000FL) // winnt // // MessageId: STATUS_SXS_INVALID_DEACTIVATION // // MessageText: // // The activation context being deactivated is not active for the current thread of execution. // #define STATUS_SXS_INVALID_DEACTIVATION ((NTSTATUS)0xC0150010L) // winnt #endif // winnt // // MessageId: STATUS_SXS_MULTIPLE_DEACTIVATION // // MessageText: // // The activation context being deactivated has already been deactivated. // #define STATUS_SXS_MULTIPLE_DEACTIVATION ((NTSTATUS)0xC0150011L) // // MessageId: STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY // // MessageText: // // The activation context of system default assembly could not be generated. // #define STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY ((NTSTATUS)0xC0150012L) // // MessageId: STATUS_SXS_PROCESS_TERMINATION_REQUESTED // // MessageText: // // A component used by the isolation facility has requested to terminate the process. // #define STATUS_SXS_PROCESS_TERMINATION_REQUESTED ((NTSTATUS)0xC0150013L) // // MessageId: STATUS_SXS_CORRUPT_ACTIVATION_STACK // // MessageText: // // The activation context activation stack for the running thread of execution is corrupt. // #define STATUS_SXS_CORRUPT_ACTIVATION_STACK ((NTSTATUS)0xC0150014L) // // MessageId: STATUS_SXS_CORRUPTION // // MessageText: // // The application isolation metadata for this process or thread has become corrupt. // #define STATUS_SXS_CORRUPTION ((NTSTATUS)0xC0150015L) // // MessageId: STATUS_CLUSTER_INVALID_NODE // // MessageText: // // The cluster node is not valid. // #define STATUS_CLUSTER_INVALID_NODE ((NTSTATUS)0xC0130001L) // // MessageId: STATUS_CLUSTER_NODE_EXISTS // // MessageText: // // The cluster node already exists. // #define STATUS_CLUSTER_NODE_EXISTS ((NTSTATUS)0xC0130002L) // // MessageId: STATUS_CLUSTER_JOIN_IN_PROGRESS // // MessageText: // // A node is in the process of joining the cluster. // #define STATUS_CLUSTER_JOIN_IN_PROGRESS ((NTSTATUS)0xC0130003L) // // MessageId: STATUS_CLUSTER_NODE_NOT_FOUND // // MessageText: // // The cluster node was not found. // #define STATUS_CLUSTER_NODE_NOT_FOUND ((NTSTATUS)0xC0130004L) // // MessageId: STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND // // MessageText: // // The cluster local node information was not found. // #define STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND ((NTSTATUS)0xC0130005L) // // MessageId: STATUS_CLUSTER_NETWORK_EXISTS // // MessageText: // // The cluster network already exists. // #define STATUS_CLUSTER_NETWORK_EXISTS ((NTSTATUS)0xC0130006L) // // MessageId: STATUS_CLUSTER_NETWORK_NOT_FOUND // // MessageText: // // The cluster network was not found. // #define STATUS_CLUSTER_NETWORK_NOT_FOUND ((NTSTATUS)0xC0130007L) // // MessageId: STATUS_CLUSTER_NETINTERFACE_EXISTS // // MessageText: // // The cluster network interface already exists. // #define STATUS_CLUSTER_NETINTERFACE_EXISTS ((NTSTATUS)0xC0130008L) // // MessageId: STATUS_CLUSTER_NETINTERFACE_NOT_FOUND // // MessageText: // // The cluster network interface was not found. // #define STATUS_CLUSTER_NETINTERFACE_NOT_FOUND ((NTSTATUS)0xC0130009L) // // MessageId: STATUS_CLUSTER_INVALID_REQUEST // // MessageText: // // The cluster request is not valid for this object. // #define STATUS_CLUSTER_INVALID_REQUEST ((NTSTATUS)0xC013000AL) // // MessageId: STATUS_CLUSTER_INVALID_NETWORK_PROVIDER // // MessageText: // // The cluster network provider is not valid. // #define STATUS_CLUSTER_INVALID_NETWORK_PROVIDER ((NTSTATUS)0xC013000BL) // // MessageId: STATUS_CLUSTER_NODE_DOWN // // MessageText: // // The cluster node is down. // #define STATUS_CLUSTER_NODE_DOWN ((NTSTATUS)0xC013000CL) // // MessageId: STATUS_CLUSTER_NODE_UNREACHABLE // // MessageText: // // The cluster node is not reachable. // #define STATUS_CLUSTER_NODE_UNREACHABLE ((NTSTATUS)0xC013000DL) // // MessageId: STATUS_CLUSTER_NODE_NOT_MEMBER // // MessageText: // // The cluster node is not a member of the cluster. // #define STATUS_CLUSTER_NODE_NOT_MEMBER ((NTSTATUS)0xC013000EL) // // MessageId: STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS // // MessageText: // // A cluster join operation is not in progress. // #define STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS ((NTSTATUS)0xC013000FL) // // MessageId: STATUS_CLUSTER_INVALID_NETWORK // // MessageText: // // The cluster network is not valid. // #define STATUS_CLUSTER_INVALID_NETWORK ((NTSTATUS)0xC0130010L) // // MessageId: STATUS_CLUSTER_NO_NET_ADAPTERS // // MessageText: // // No network adapters are available. // #define STATUS_CLUSTER_NO_NET_ADAPTERS ((NTSTATUS)0xC0130011L) // // MessageId: STATUS_CLUSTER_NODE_UP // // MessageText: // // The cluster node is up. // #define STATUS_CLUSTER_NODE_UP ((NTSTATUS)0xC0130012L) // // MessageId: STATUS_CLUSTER_NODE_PAUSED // // MessageText: // // The cluster node is paused. // #define STATUS_CLUSTER_NODE_PAUSED ((NTSTATUS)0xC0130013L) // // MessageId: STATUS_CLUSTER_NODE_NOT_PAUSED // // MessageText: // // The cluster node is not paused. // #define STATUS_CLUSTER_NODE_NOT_PAUSED ((NTSTATUS)0xC0130014L) // // MessageId: STATUS_CLUSTER_NO_SECURITY_CONTEXT // // MessageText: // // No cluster security context is available. // #define STATUS_CLUSTER_NO_SECURITY_CONTEXT ((NTSTATUS)0xC0130015L) // // MessageId: STATUS_CLUSTER_NETWORK_NOT_INTERNAL // // MessageText: // // The cluster network is not configured for internal cluster communication. // #define STATUS_CLUSTER_NETWORK_NOT_INTERNAL ((NTSTATUS)0xC0130016L) // // MessageId: STATUS_CLUSTER_POISONED // // MessageText: // // The cluster node has been poisoned. // #define STATUS_CLUSTER_POISONED ((NTSTATUS)0xC0130017L) // // MessageId: STATUS_LOG_SECTOR_INVALID // // MessageText: // // Log service found an invalid log sector. // #define STATUS_LOG_SECTOR_INVALID ((NTSTATUS)0xC01A0001L) // // MessageId: STATUS_LOG_SECTOR_PARITY_INVALID // // MessageText: // // Log service encountered a log sector with invalid block parity. // #define STATUS_LOG_SECTOR_PARITY_INVALID ((NTSTATUS)0xC01A0002L) // // MessageId: STATUS_LOG_SECTOR_REMAPPED // // MessageText: // // Log service encountered a remapped log sector. // #define STATUS_LOG_SECTOR_REMAPPED ((NTSTATUS)0xC01A0003L) // // MessageId: STATUS_LOG_BLOCK_INCOMPLETE // // MessageText: // // Log service encountered a partial or incomplete log block. // #define STATUS_LOG_BLOCK_INCOMPLETE ((NTSTATUS)0xC01A0004L) // // MessageId: STATUS_LOG_INVALID_RANGE // // MessageText: // // Log service encountered an attempt access data outside the active log range. // #define STATUS_LOG_INVALID_RANGE ((NTSTATUS)0xC01A0005L) // // MessageId: STATUS_LOG_BLOCKS_EXHAUSTED // // MessageText: // // Log service user log marshalling buffers are exhausted. // #define STATUS_LOG_BLOCKS_EXHAUSTED ((NTSTATUS)0xC01A0006L) // // MessageId: STATUS_LOG_READ_CONTEXT_INVALID // // MessageText: // // Log service encountered an attempt read from a marshalling area with an invalid read context. // #define STATUS_LOG_READ_CONTEXT_INVALID ((NTSTATUS)0xC01A0007L) // // MessageId: STATUS_LOG_RESTART_INVALID // // MessageText: // // Log service encountered an invalid log restart area. // #define STATUS_LOG_RESTART_INVALID ((NTSTATUS)0xC01A0008L) // // MessageId: STATUS_LOG_BLOCK_VERSION // // MessageText: // // Log service encountered an invalid log block version. // #define STATUS_LOG_BLOCK_VERSION ((NTSTATUS)0xC01A0009L) // // MessageId: STATUS_LOG_BLOCK_INVALID // // MessageText: // // Log service encountered an invalid log block. // #define STATUS_LOG_BLOCK_INVALID ((NTSTATUS)0xC01A000AL) // // MessageId: STATUS_LOG_READ_MODE_INVALID // // MessageText: // // Log service encountered an attempt to read the log with an invalid read mode. // #define STATUS_LOG_READ_MODE_INVALID ((NTSTATUS)0xC01A000BL) // // MessageId: STATUS_LOG_NO_RESTART // // MessageText: // // Log service encountered a log stream with no restart area. // #define STATUS_LOG_NO_RESTART ((NTSTATUS)0x401A000CL) // // MessageId: STATUS_LOG_METADATA_CORRUPT // // MessageText: // // Log service encountered a corrupted metadata file. // #define STATUS_LOG_METADATA_CORRUPT ((NTSTATUS)0xC01A000DL) // // MessageId: STATUS_LOG_METADATA_INVALID // // MessageText: // // Log service encountered a metadata file that could not be created by the log file system. // #define STATUS_LOG_METADATA_INVALID ((NTSTATUS)0xC01A000EL) // // MessageId: STATUS_LOG_METADATA_INCONSISTENT // // MessageText: // // Log service encountered a metadata file with inconsistent data. // #define STATUS_LOG_METADATA_INCONSISTENT ((NTSTATUS)0xC01A000FL) // // MessageId: STATUS_LOG_RESERVATION_INVALID // // MessageText: // // Log service encountered an attempt to erroneously allocate or dispose reservation space. // #define STATUS_LOG_RESERVATION_INVALID ((NTSTATUS)0xC01A0010L) // // MessageId: STATUS_LOG_CANT_DELETE // // MessageText: // // Log service cannot delete log file or file system container. // #define STATUS_LOG_CANT_DELETE ((NTSTATUS)0xC01A0011L) // // MessageId: STATUS_LOG_CONTAINER_LIMIT_EXCEEDED // // MessageText: // // Log service has reached the maximum allowable containers allocated to a log file. // #define STATUS_LOG_CONTAINER_LIMIT_EXCEEDED ((NTSTATUS)0xC01A0012L) // // MessageId: STATUS_LOG_START_OF_LOG // // MessageText: // // Log service has attempted to read or write backwards past the start of the log. // #define STATUS_LOG_START_OF_LOG ((NTSTATUS)0xC01A0013L) // // MessageId: STATUS_LOG_POLICY_ALREADY_INSTALLED // // MessageText: // // Log policy could not be installed because a policy of the same type is already present. // #define STATUS_LOG_POLICY_ALREADY_INSTALLED ((NTSTATUS)0xC01A0014L) // // MessageId: STATUS_LOG_POLICY_NOT_INSTALLED // // MessageText: // // Log policy in question was not installed at the time of the request. // #define STATUS_LOG_POLICY_NOT_INSTALLED ((NTSTATUS)0xC01A0015L) // // MessageId: STATUS_LOG_POLICY_INVALID // // MessageText: // // The installed set of policies on the log is invalid. // #define STATUS_LOG_POLICY_INVALID ((NTSTATUS)0xC01A0016L) // // MessageId: STATUS_LOG_POLICY_CONFLICT // // MessageText: // // A policy on the log in question prevented the operation from completing. // #define STATUS_LOG_POLICY_CONFLICT ((NTSTATUS)0xC01A0017L) // // MessageId: STATUS_LOG_PINNED_ARCHIVE_TAIL // // MessageText: // // Log space cannot be reclaimed because the log is pinned by the archive tail. // #define STATUS_LOG_PINNED_ARCHIVE_TAIL ((NTSTATUS)0xC01A0018L) // // MessageId: STATUS_LOG_RECORD_NONEXISTENT // // MessageText: // // Log record is not a record in the log file. // #define STATUS_LOG_RECORD_NONEXISTENT ((NTSTATUS)0xC01A0019L) // // MessageId: STATUS_LOG_RECORDS_RESERVED_INVALID // // MessageText: // // Number of reserved log records or the adjustment of the number of reserved log records is invalid. // #define STATUS_LOG_RECORDS_RESERVED_INVALID ((NTSTATUS)0xC01A001AL) // // MessageId: STATUS_LOG_SPACE_RESERVED_INVALID // // MessageText: // // Reserved log space or the adjustment of the log space is invalid. // #define STATUS_LOG_SPACE_RESERVED_INVALID ((NTSTATUS)0xC01A001BL) // // MessageId: STATUS_LOG_TAIL_INVALID // // MessageText: // // A new or existing archive tail or base of the active log is invalid. // #define STATUS_LOG_TAIL_INVALID ((NTSTATUS)0xC01A001CL) // // MessageId: STATUS_LOG_FULL // // MessageText: // // Log space is exhausted. // #define STATUS_LOG_FULL ((NTSTATUS)0xC01A001DL) // // MessageId: STATUS_LOG_MULTIPLEXED // // MessageText: // // Log is multiplexed, no direct writes to the physical log is allowed. // #define STATUS_LOG_MULTIPLEXED ((NTSTATUS)0xC01A001EL) // // MessageId: STATUS_LOG_DEDICATED // // MessageText: // // The operation failed because the log is a dedicated log. // #define STATUS_LOG_DEDICATED ((NTSTATUS)0xC01A001FL) // // MessageId: STATUS_LOG_ARCHIVE_NOT_IN_PROGRESS // // MessageText: // // The operation requires an archive context. // #define STATUS_LOG_ARCHIVE_NOT_IN_PROGRESS ((NTSTATUS)0xC01A0020L) // // MessageId: STATUS_LOG_ARCHIVE_IN_PROGRESS // // MessageText: // // Log archival is in progress. // #define STATUS_LOG_ARCHIVE_IN_PROGRESS ((NTSTATUS)0xC01A0021L) // // MessageId: STATUS_LOG_EPHEMERAL // // MessageText: // // The operation requires a non-ephemeral log, but the log is ephemeral. // #define STATUS_LOG_EPHEMERAL ((NTSTATUS)0xC01A0022L) // // MessageId: STATUS_LOG_NOT_ENOUGH_CONTAINERS // // MessageText: // // The log must have at least two containers before it can be read from or written to. // #define STATUS_LOG_NOT_ENOUGH_CONTAINERS ((NTSTATUS)0xC01A0023L) // // MessageId: STATUS_LOG_CLIENT_ALREADY_REGISTERED // // MessageText: // // A log client has already registered on the stream. // #define STATUS_LOG_CLIENT_ALREADY_REGISTERED ((NTSTATUS)0xC01A0024L) // // MessageId: STATUS_LOG_CLIENT_NOT_REGISTERED // // MessageText: // // A log client has not been registered on the stream. // #define STATUS_LOG_CLIENT_NOT_REGISTERED ((NTSTATUS)0xC01A0025L) // // MessageId: STATUS_LOG_FULL_HANDLER_IN_PROGRESS // // MessageText: // // A request has already been made to handle the log full condition. // #define STATUS_LOG_FULL_HANDLER_IN_PROGRESS ((NTSTATUS)0xC01A0026L) // // MessageId: STATUS_LOG_CONTAINER_READ_FAILED // // MessageText: // // Log service enountered an error when attempting to read from a log container. // #define STATUS_LOG_CONTAINER_READ_FAILED ((NTSTATUS)0xC01A0027L) // // MessageId: STATUS_LOG_CONTAINER_WRITE_FAILED // // MessageText: // // Log service enountered an error when attempting to write to a log container. // #define STATUS_LOG_CONTAINER_WRITE_FAILED ((NTSTATUS)0xC01A0028L) // // MessageId: STATUS_LOG_CONTAINER_OPEN_FAILED // // MessageText: // // Log service enountered an error when attempting open a log container. // #define STATUS_LOG_CONTAINER_OPEN_FAILED ((NTSTATUS)0xC01A0029L) // // MessageId: STATUS_LOG_CONTAINER_STATE_INVALID // // MessageText: // // Log service enountered an invalid container state when attempting a requested action. // #define STATUS_LOG_CONTAINER_STATE_INVALID ((NTSTATUS)0xC01A002AL) // // MessageId: STATUS_LOG_STATE_INVALID // // MessageText: // // Log service is not in the correct state to perform a requested action. // #define STATUS_LOG_STATE_INVALID ((NTSTATUS)0xC01A002BL) // // MessageId: STATUS_LOG_PINNED // // MessageText: // // Log space cannot be reclaimed because the log is pinned. // #define STATUS_LOG_PINNED ((NTSTATUS)0xC01A002CL) // // MessageId: STATUS_LOG_METADATA_FLUSH_FAILED // // MessageText: // // Log metadata flush failed. // #define STATUS_LOG_METADATA_FLUSH_FAILED ((NTSTATUS)0xC01A002DL) // // MessageId: STATUS_LOG_INCONSISTENT_SECURITY // // MessageText: // // Security on the log and its containers is inconsistent. // #define STATUS_LOG_INCONSISTENT_SECURITY ((NTSTATUS)0xC01A002EL) // // MessageId: STATUS_COULD_NOT_RESIZE_LOG // // MessageText: // // The log could not be set to the requested size. // #define STATUS_COULD_NOT_RESIZE_LOG ((NTSTATUS)0x80190009L) /*lint -restore */ // Resume checking for different macro definitions // winnt // end_ntsecapi #endif // WIN32_NO_STATUS // winnt #endif // _NTSTATUS_ pcsc-cyberjack-3.99.5final.sp05/cjeca32/stdafx.h000066400000000000000000000051731231776762100212020ustar00rootroot00000000000000// stdafx.h : Includedatei für Standardsystem-Includedateien // oder häufig verwendete projektspezifische Includedateien, // die nur in unregelmäßigen Abständen geändert werden. // #ifndef ECA_STDAFX_H #define ECA_STDAFX_H // -------------------------------------------------------------------------- // Platform: Windows // Ändern Sie folgende Definitionen für Plattformen, die älter als die unten angegebenen sind. // In MSDN finden Sie die neuesten Informationen über die entsprechenden Werte für die unterschiedlichen Plattformen. # ifndef WINVER // Lassen Sie die Verwendung spezifischer Features von Windows XP oder später zu. # define WINVER 0x0501 // Ändern Sie dies in den geeigneten Wert für andere Versionen von Windows. # endif # ifndef _WIN32_WINNT // Lassen Sie die Verwendung spezifischer Features von Windows XP oder später zu. # define _WIN32_WINNT 0x0501 // Ändern Sie dies in den geeigneten Wert für andere Versionen von Windows. # endif # ifndef _WIN32_WINDOWS // Lassen Sie die Verwendung spezifischer Features von Windows 98 oder später zu. # define _WIN32_WINDOWS 0x0410 // Ändern Sie dies in den geeigneten Wert für Windows Me oder höher. # endif # ifndef _WIN32_IE // Lassen Sie die Verwendung spezifischer Features von IE 6.0 oder später zu. # define _WIN32_IE 0x0600 // Ändern Sie dies in den geeigneten Wert für andere Versionen von IE. # endif # define WIN32_LEAN_AND_MEAN // Selten verwendete Teile der Windows-Header nicht einbinden. # define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1 # define _INSERT_KEY_EVENTS #ifdef UNDER_CE #define STRSAFE_NO_DEPRECATE struct _CONTEXT; struct CONTEXT; typedef struct _CONTEXT *PCONTEXT; #pragma comment(lib, "Coredll.lib") #include "excpt.h" #define _EXP_CTAPI #endif // -------------------------------------------------------------------------- // common for all systems #include #include "ntstatus.h" #include "cjeca32.h" #include "PCSC10.h" #include "Debug.h" #include "RSCTCriticalSection.h" #include "BaseCommunication.h" #ifdef _WINDOWS #ifdef UNDER_CE #include "USBCommunicationCe.h" #else #include "USBCommunication.h" #include "SerialCommunication.h" #endif #endif #include "BaseReader.h" #include "CCIDReader.h" #include "EC30Reader.h" #include "ECAReader.h" #include "SECReader.h" #include "ECFReader.h" #include "ECPReader.h" #include "ECRReader.h" #include "ECBReader.h" #include "ECMReader.h" #include "EFBReader.h" #include "RFSReader.h" #include "RFKReader.h" #include "PPAReader.h" #include "CPTReader.h" #include "RFUReader.h" #include "CGOReader.h" #include "WAVReader.h" #include "Reader.h" #endif pcsc-cyberjack-3.99.5final.sp05/cjeca32/version.h000066400000000000000000000005301231776762100213660ustar00rootroot00000000000000 #ifndef CJECA32_VERSION_H #define CJECA32_VERSION_H #define FVER_MAJOR 2 #define FVER_MINOR 2 #define FVER_PATCHLEVEL 7 #define FVER_BUILD 0 #define FVER_STRING "2, 2, 7, 0" #define PVER_MAJOR 6 #define PVER_MINOR 10 #define PVER_PATCHLEVEL 0 #define PVER_BUILD 0 #define PVER_STRING "6, 10, 0, 0" #endif pcsc-cyberjack-3.99.5final.sp05/configure.ac000066400000000000000000000473171231776762100206220ustar00rootroot00000000000000# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. # y ###------------------------------------------------------------------------- # # The following line makes sure that this file is always touched when a new # revision is checked out. # # # $Revision$ # # info CYBERJACK_BUGREPORT_ADDR="" AC_PREREQ(2.61) AC_INIT AC_CANONICAL_TARGET([]) AC_CONFIG_SRCDIR([cjeca32/BaseCommunication.cpp]) AC_CONFIG_HEADERS([config.h]) LT_INIT AC_CONFIG_MACRO_DIR([m4]) AM_MAINTAINER_MODE ###------------------------------------------------------------------------- # # versions # CYBERJACK_VERSION_MAJOR=3 CYBERJACK_VERSION_MINOR=99 CYBERJACK_VERSION_PATCHLEVEL=5 CYBERJACK_VERSION_BUILD=0 dnl "stable", "rcX", "betaX", "cvs" CYBERJACK_VERSION_TAG="final.SP05" CYBERJACK_VERSION_FULL_STRING="$CYBERJACK_VERSION_MAJOR.$CYBERJACK_VERSION_MINOR.$CYBERJACK_VERSION_PATCHLEVEL-${CYBERJACK_VERSION_TAG}-r${CYBERJACK_VERSION_BUILD}" CYBERJACK_VERSION_STRING="$CYBERJACK_VERSION_MAJOR.$CYBERJACK_VERSION_MINOR.$CYBERJACK_VERSION_PATCHLEVEL" ###------------------------------------------------------------------------- # # SO version for cyberjack library # CYBERJACK_SO_CURRENT="6" CYBERJACK_SO_AGE="0" CYBERJACK_SO_REVISION="0" CYBERJACK_SO_EFFECTIVE="`echo \$(($CYBERJACK_SO_CURRENT-$CYBERJACK_SO_AGE))`" ###------------------------------------------------------------------------- # # Create release strings # case "$CYBERJACK_VERSION_TAG" in cvs|svn|git) CYBERJACK_VERSION_RELEASE_STRING="$CYBERJACK_VERSION_MAJOR.$CYBERJACK_VERSION_MINOR.$CYBERJACK_VERSION_PATCHLEVEL.r${CYBERJACK_VERSION_BUILD}" ;; stable) CYBERJACK_VERSION_RELEASE_STRING="$CYBERJACK_VERSION_MAJOR.$CYBERJACK_VERSION_MINOR.$CYBERJACK_VERSION_PATCHLEVEL" ;; *) CYBERJACK_VERSION_RELEASE_STRING="$CYBERJACK_VERSION_MAJOR.$CYBERJACK_VERSION_MINOR.$CYBERJACK_VERSION_PATCHLEVEL${CYBERJACK_VERSION_TAG}" ;; esac AC_SUBST(CYBERJACK_VERSION_MAJOR) AC_SUBST(CYBERJACK_VERSION_MINOR) AC_SUBST(CYBERJACK_VERSION_PATCHLEVEL) AC_SUBST(CYBERJACK_VERSION_BUILD) AC_SUBST(CYBERJACK_VERSION_TAG) AC_SUBST(CYBERJACK_VERSION_FULL_STRING) AC_SUBST(CYBERJACK_VERSION_STRING) AC_SUBST(CYBERJACK_VERSION_RELEASE_STRING) AC_DEFINE_UNQUOTED(CYBERJACK_VERSION_MAJOR,$CYBERJACK_VERSION_MAJOR, [major version]) AC_DEFINE_UNQUOTED(CYBERJACK_VERSION_MINOR,$CYBERJACK_VERSION_MINOR, [minor version]) AC_DEFINE_UNQUOTED(CYBERJACK_VERSION_PATCHLEVEL,$CYBERJACK_VERSION_PATCHLEVEL, [patchlevel]) AC_DEFINE_UNQUOTED(CYBERJACK_VERSION_BUILD,$CYBERJACK_VERSION_BUILD, [build]) AC_DEFINE_UNQUOTED(CYBERJACK_VERSION_STRING,"$CYBERJACK_VERSION_STRING", [version string]) AC_DEFINE_UNQUOTED(CYBERJACK_VERSION_FULL_STRING,"$CYBERJACK_VERSION_FULL_STRING", [full version string]) AC_DEFINE_UNQUOTED(CYBERJACK_VERSION_TAG, "$CYBERJACK_VERSION_TAG", [tag]) AC_SUBST(CYBERJACK_SO_CURRENT) AC_SUBST(CYBERJACK_SO_REVISION) AC_SUBST(CYBERJACK_SO_AGE) AC_SUBST(CYBERJACK_SO_EFFECTIVE) AM_INIT_AUTOMAKE(ifd-cyberjack, $CYBERJACK_VERSION_RELEASE_STRING) ###------------------------------------------------------------------------- # check for OS AQ_CHECK_OS ###------------------------------------------------------------------------- # prefix handling AC_PREFIX_DEFAULT(/usr) if test "x$prefix" = "xNONE"; then prefix=$ac_default_prefix ac_configure_args="$ac_configure_args --prefix $prefix" fi AC_SUBST(prefix) ###------------------------------------------------------------------------- # # static/shared handling # AC_ENABLE_STATIC(no) AC_ENABLE_SHARED(yes) ###------------------------------------------------------------------------- # # Checks for programs. # AC_PROG_CC AC_PROG_CXX AC_PROG_OBJC AC_PROG_INSTALL AC_LIBTOOL_WIN32_DLL AC_LIBTOOL_RC AC_PROG_LIBTOOL AC_PROG_AWK AC_CHECK_PROG(SED,sed,sed) ACX_PTHREAD PKG_PROG_PKG_CONFIG ###------------------------------------------------------------------------- # # Search for dlopen # LIBS="" AC_SEARCH_LIBS(dlopen, [c dl], [have_dlopen="yes"], [have_dlopen="no"]) if test "x${have_dlopen}" != "xyes"; then AC_MSG_ERROR([ *** You are missing support for dynamic loading of modules. *** Therefore cjgeldkarte will not work.]) else AC_DEFINE(WITH_DLLIB, 1, [whether DL library is available]) AC_DEFINE(HAS_DLOPEN, 1, [whether function dlopen is available]) if test "$LIBS" = "-lc"; then LIBS="" fi dl_libs="$LIBS" LIBS="" fi AC_SUBST(dl_libs) ###------------------------------------------------------------------------- # # Checks for header files. # AC_HEADER_STDC #AC_CHECK_HEADERS([regex.h]) AC_CHECK_HEADERS([pthread.h]) ###------------------------------------------------------------------------- # # Checks for typedefs, structures, and compiler characteristics. # AC_C_CONST ###------------------------------------------------------------------------- # # Checks for library functions. # ###------------------------------------------------------------------------- # # OS dependant settings # cyberjack_ldflags="-L\${libdir}" cyberjack_libs="-lcyberjack" cyberjack_internal_libname="libctapi-cyberjack.la" cyberjack_headerdir_am="\$(includedir)" cyberjack_headerdir="\${includedir}" cyberjack_config_file="\${sysconfdir}/cyberjack.conf" case "$OS_TYPE" in windows) cyberjack_sys_is_windows=1 ;; *) cyberjack_sys_is_windows=0 ;; esac if test "$OSYSTEM" = "osx"; then COCOA_FRAMEWORK="-framework Cocoa" FOUNDATION_FRAMEWORK="-framework CoreFoundation" SYSCONF_FRAMEWORK="-framework SystemConfiguration" IOKIT_FRAMEWORK="-framework IOKit" cyberjack_config_file="/etc/cyberjack.conf" fi AM_CONDITIONAL(IS_WINDOWS, [test "$OS_TYPE" = "windows"]) AM_CONDITIONAL(IS_OSX, [test "$OSYSTEM" = "osx"]) AM_CONDITIONAL(IS_LINUX, [test "$OSYSTEM" = "linux"]) AC_SUBST(cyberjack_sys_is_windows) AC_SUBST(cyberjack_config_file) AC_SUBST(cyberjack_platform_def) AC_SUBST(COCOA_FRAMEWORK) AC_SUBST(FOUNDATION_FRAMEWORK) AC_SUBST(SYSCONF_FRAMEWORK) AC_SUBST(IOKIT_FRAMEWORK) ###------------------------------------------------------------------------- AC_MSG_CHECKING(whether non-serial access is wanted) AC_ARG_ENABLE(mac-universal, AS_HELP_STRING([--enable-mac-universal], [Build Mac universal binaries]), enable_mac_universal=$enableval, enable_mac_universal="no") # # check for disable-nonserial # AC_MSG_CHECKING(whether non-serial access is wanted) AC_ARG_ENABLE(nonserial, [ --enable-nonserial enable non-serial (default=yes)], [ case "${enableval}" in yes) enable_nonserial="yes";; no) enable_nonserial="no";; *) AC_MSG_ERROR(bad value ${enableval} for --enable-nonserial);; esac ], enable_nonserial="yes") if test "$enable_nonserial" = "yes"; then AC_DEFINE(ENABLE_NONSERIAL, 1, [whether non-serial interfaces should be enabled]) fi AM_CONDITIONAL(ENABLE_NONSERIAL, [test "$enable_nonserial" = "yes"]) AC_MSG_RESULT($enable_nonserial) AC_SUBST(enable_nonserial) if test "$enable_nonserial" = "yes"; then ###------------------------------------------------------------------------- # # libUSB-1.0 # pkg_modules="libusb-1.0 >= 1.0.0" PKG_CHECK_MODULES(libusb, [$pkg_modules], [have_libusb="yes"], [have_libusb="no"]) if test "$have_libusb" = "yes"; then AC_DEFINE(USE_USB1, 1, [if libUSB-1.0 is available]) libusb_includes="$libusb_CFLAGS" libusb_libs="$libusb_LIBS" else ###------------------------------------------------------------------------- # # libusb-0.x # pkg_modules="libusb < 1.0.0" PKG_CHECK_MODULES(libusb, [$pkg_modules], [have_libusb="yes"], [have_libusb="no"]) if test "$have_libusb" = "yes"; then libusb_includes="$libusb_CFLAGS" libusb_libs="$libusb_LIBS" else AC_MSG_ERROR([ *** LibUSB not found, please install the packages libusb and *** libusb-devel (or libusb-dev on Debian).]) fi fi AC_SUBST(libusb_includes) AC_SUBST(libusb_libs) ###------------------------------------------------------------------------- # # HAL # AC_MSG_CHECKING(if HAL support desired) AC_ARG_ENABLE(hal, [ --enable-hal enable HAL support (default=yes)], enable_hal="$enableval", enable_hal="no") AC_MSG_RESULT($enable_hal) if test "$enable_hal" = "yes"; then pkg_modules="hal >= 0.5.0" PKG_CHECK_MODULES(hal, [$pkg_modules], [have_hal="yes"], [have_hal="no"]) if test "$have_hal" = "yes"; then AC_DEFINE(HAVE_HAL, 1, [if HAL is available]) hal_includes="$hal_CFLAGS" hal_libs="$hal_LIBS" fi fi fi AC_SUBST(hal_libs) AC_SUBST(hal_includes) # --------------------------------------------------------------------------- # check for PC/SC # AQ_CHECK_PCSC AM_CONDITIONAL(USE_PCSC, [test "$have_pcsc" = "yes"]) # check pcsc-lite version PCSC_NEEDED_VERSION="1.4.0" PKG_CHECK_EXISTS([libpcsclite], [PKG_CHECK_MODULES(PCSC, libpcsclite >= $PCSC_NEEDED_VERSION, [ AC_DEFINE(HAVE_PCSC, 1, [if PC/SC is available]) pcsc_includes="$PCSC_CFLAGS" pcsc_libraries="$PCSC_LIBS" pcsc_lib="$PCSC_LIBS" cyberjack_ifd_filename="libifd-cyberjack.so" cyberjack_ifd_dropdir=`pkg-config --variable=usbdropdir libpcsclite` AC_SUBST(pcsc_includes) AC_SUBST(pcsc_libraries) AC_SUBST(pcsc_lib) ], [ AC_MSG_ERROR([install pcsc-lite $PCSC_NEEDED_VERSION or later]) ] )], [ AC_MSG_WARN([libpcsclite not found by pkg-config so we try m4]) if test "$have_pcsc" != "yes"; then AC_MSG_ERROR([install pcsc-lite $PCSC_NEEDED_VERSION or later]) else AC_DEFINE(HAVE_PCSC, 1, [if PC/SC is available]) case "$OSYSTEM" in osx) cyberjack_ifd_filename="libifd-cyberjack.dylib" cyberjack_ifd_dropdir="/usr/libexec/SmartCardServices/drivers" # use our own PC/SC headers for MacOSX pcsc_includes="-I/System/Library/Frameworks/PCSC.framework/Headers -I\$(top_srcdir)/include/macosx -I\$(top_srcdir)/include/macosx/PCSC" if test "x$enable_mac_universal" = "xyes" ; then mac_version_min="-mmacosx-version-min=10.5" mac_arches="-arch x86_64" #mac_arches="-arch i386" #mac_arches="-arch i386 -arch x86_64" mac_sysroot="-framework PCSC -isysroot /Developer/SDKs/MacOSX10.6.sdk" LDFLAGS="$LDFLAGS $mac_arches $mac_sysroot $mac_version_min" CFLAGS="$CFLAGS $CFLAGS $mac_arches $mac_sysroot $mac_version_min" CXXFLAGS="$CXXFLAGS $mac_arches" fi ;; linux) cyberjack_ifd_filename="libifd-cyberjack.so" cyberjack_ifd_dropdir="\$(libdir)/pcsc/drivers" ;; esac fi ] ) AC_ARG_WITH(usbdropdir, [ --with-usbdropdir pcsc bundle location], [ usbdropdir="${withval}" ], [ usbdropdir="${cyberjack_ifd_dropdir}" ] ) AC_SUBST(cyberjack_ifd_filename) AC_SUBST(usbdropdir) # --------------------------------------------------------------------------- # check for LibXML2 # AQ_CHECK_XML2 AM_CONDITIONAL(USE_XML2, [test "$have_libxml2" = "yes"]) ###------------------------------------------------------------------------- # Check for fox toolkit # AQ_CHECK_FOX AM_CONDITIONAL(WITH_FOX, [test "$have_fox" = "yes"]) ###------------------------------------------------------------------------- # # check for release # AC_MSG_CHECKING(whether this is an official release) AC_ARG_ENABLE(release, [ --enable-release make this an official release (default=no)], [ case "${enableval}" in yes) enable_release="yes";; no) enable_release="no";; *) AC_MSG_ERROR(bad value ${enableval} for --enable-release);; esac ], enable_release="no") if test "$enable_release" = "yes"; then STRIPALL="-s" else STRIPALL="" fi AC_SUBST(STRIPALL) AC_MSG_RESULT($enable_release) ###------------------------------------------------------------------------- # # check for pthread-based approach # AC_MSG_CHECKING(whether the threaded approach is wanted) AC_ARG_ENABLE(threads, [ --enable-threads enable threads (default=no)], [ case "${enableval}" in yes) enable_threads="yes";; no) enable_threads="no";; *) AC_MSG_ERROR(bad value ${enableval} for --enable-threads);; esac ], enable_threads="no") if test "$enable_threads" = "yes"; then AC_DEFINE_UNQUOTED(USE_THREADS, 1, [whether pthreads are to be used]) THREAD_LIBS="-lpthread" else THREAD_LIBS="" fi AC_SUBST(USE_THREADS) AC_SUBST(THREAD_LIBS) AC_MSG_RESULT($enable_threads) ###------------------------------------------------------------------------- # # check whether udev support is wanted # AC_ARG_ENABLE(udev, [ --enable-udev create udev files], [ ENABLE_UDEV="${enableval}" ], [ ENABLE_UDEV="yes" ] ) ###------------------------------------------------------------------------- # # GCC version (check for usability) # AC_MSG_CHECKING(if symbol visibility is supported) AC_ARG_ENABLE(visibility, [ --enable-visibility enable visibility (default=no)], enable_visibility="$enableval", enable_visibility="yes") AC_MSG_RESULT($enable_visibility) if test "$enable_visibility" = "yes"; then AC_MSG_CHECKING(if symbol visibility is supported) visibility_cflags="" case `$CC --version|head -n1|cut -f1 -d " "` in gcc | gcc-* | *-gcc | *-gcc-*) dnl Determine version number (watch out: the outside square dnl parenteses are vitally important here!) gccversion=["` ${CC} -dumpversion `"] case $gccversion in 4.*) # Activate -fvisibility=hidden only for explicit 4.x gcc # versions. We never now what future gcc's might do with # that argument, and we also can't be sure that other # gcc's happen to show very weird version # numbers. Therefore leave the default at non-activated. visibility_supported="yes, gcc-${gccversion}" AC_DEFINE(GCC_WITH_VISIBILITY_ATTRIBUTE, 1, [visibility]) visibility_cflags="-fvisibility=hidden" ;; *) # Default: -fvisibility=hidden not activated. visibility_supported="no (needs gcc >=4.0, you have gcc-${gccversion})" ;; esac ;; *) visibility_supported="no (needs gcc >=4.0, you use $CC)" ;; esac # -fvisibility is at least not available on MinGW/gcc-3.4.4 (will # give an "unrecognized cmdline option"). Also, unfortunately I # don't know an easy way to ask the compiler here. Maybe # http://autoconf-archive.cryp.to/ax_cflags_gcc_option.html case "$OS_TYPE" in windows) visibility_supported="no (not yet on MinGW/Windows)" visibility_cflags="" ;; *) ;; esac else visibility_supported="no (not wanted)" visibility_cflags="" fi AC_MSG_RESULT(${visibility_supported}) AC_SUBST(visibility_cflags) ###------------------------------------------------------------------------- # # RPM distribution specific stuff AC_MSG_CHECKING(whether this is an RPM distribution) RPM_COMMAND="`which rpm`" RPM_DIST_NAME="" RPM_DIST_TAG="" RPM_DIST_VER="" if test "$ENABLE_UDEV" = "yes"; then ETC_SUBDIRS="udev" else ETC_SUBDIRS="" fi USE_HOTPLUG=0 USE_UDEV=0 USE_HAL=0 CONFIGURE_HAL="no" UDEV_RULES_FILE="rules.new" RPM_PCSC_DROPDIR="%{_libdir}/readers" if test -n "${RPM_COMMAND}"; then if test -x "${RPM_COMMAND}"; then if test -e "/etc/mandriva-release"; then RPM_DIST_NAME="mandriva" RPM_DIST_TAG="mdk" # RPM_DIST_VER="`rpm -q --queryformat='%{VERSION}' mandriva-release 2>/dev/null`" read v1 v2 v3 v4 v5 Mon, 02 Sep 2013 22:13:40 +0200 pcsc-cyberjack (3.99.5final.sp04) unstable; urgency=low * Add support for CyberJack Go * Update to the Reiner-SCT repository -- Frank Neuber Thu, 22 Nov 2012 14:50:33 +0100 pcsc-cyberjack (3.99.5final.SP02-1) unstable; urgency=low * Upload to unstable (Closes: #637742) * Add myself to Uploaders -- Reinhard Tartler Sun, 07 Aug 2011 21:03:23 +0200 pcsc-cyberjack (3.99.5final.SP02) stable; urgency=low * released 3.99.5final.SP02 * PinVerify/Modify-Problem Responsecode 0x6b80 fixed -- Frank Neuber Tue, 14 Jun 2011 09:53:20 +0200 pcsc-cyberjack (3.99.5final.SP01) stable; urgency=low * released 3.99.5final.SP01 * new version numbering 3.99.5final.SPXX * return the PackageVersion 3.99.5 over APDU: FF 9A 01 07 00 * fix pin change/modify problem on pinpad * remove the cyberjack group dependency -- Frank Neuber Wed, 01 Jun 2011 17:36:03 +0200 pcsc-cyberjack (3.99.5final) stable; urgency=low * released 3.99.5final * make sure that tue pcscd is restarted after installation on suse and on ubuntu -- Frank Neuber Thu, 12 May 2011 13:27:28 +0200 pcsc-cyberjack (3.99.5stable) stable; urgency=low * released 3.99.5stable * code merge with main driver sources at Reiner SCT from Mon, 9 May 2011 15:02:38 +0200 -- Frank Neuber Wed, 11 May 2011 15:21:34 +0200 pcsc-cyberjack (3.99.6rc5) stable; urgency=low * released 3.99.6rc5 * fix usb init context problem on osx 10.6 64 bit * add support building universal binarys on osx -- Frank Neuber Wed, 13 Apr 2011 11:48:25 +0200 pcsc-cyberjack (3.99.6rc4) stable; urgency=low * released 3.99.6rc4 * add support for newer pcscd which pass the interface number in the usb descriptor * add support for libudev which is used in pcscd 1.7.0 -- Frank Neuber Tue, 05 Apr 2011 14:28:42 +0200 pcsc-cyberjack (3.99.6rc3) stable; urgency=low * released 3.99.6rc3 * chance driver version to 3.99 APDU ff9a010700 * add reader name APDU ff9a010300 * fix buffer length (tested with GET CHALLENGE command APDU 00840000ff) -- Frank Neuber Mon, 04 Apr 2011 12:16:17 +0200 pcsc-cyberjack (3.99.6rc2) stable; urgency=low * released 3.99.6rc2 * merge 3.99.6beta into 3.99.5rc2 * add support for FEATURE_EXECUTE_PACE only for readers with RSCT_READER_HARDWARE_MASK_PACE flag -- Frank Neuber Thu, 24 Mar 2011 11:43:53 +0100 pcsc-cyberjack (3.99.5rc1) stable; urgency=low * released 3.99.5rc1 * add support for FEATURE_EXECUTE_PACE -- Frank Neuber Fri, 18 Mar 2011 10:35:44 +0100 libifd-cyberjack6 (3.99.6beta-1) stable; urgency=low * released 3.99.6beta * compiles on OpenSuSE 11.4 -- Martin Preuss Sat, 18 Mar 2011 23:58:00 +0200 libifd-cyberjack6 (3.99.5beta-1) stable; urgency=low * released 3.99.5beta * merged with main driver sources at Reiner SCT -- Martin Preuss Mon, 14 Feb 2011 19:46:00 +0200 libifd-cyberjack6 (3.99.4beta-1) stable; urgency=low * released 3.99.4beta * merged with main driver sources at Reiner SCT * added support for new 0x501er readers -- Martin Preuss Thu, 10 Feb 2011 18:15:00 +0200 libifd-cyberjack6 (3.99.3beta-1) stable; urgency=low * released 3.99.3beta * merged with main driver sources at Reiner SCT * added support for 0x300er readers -- Martin Preuss Wed, 02 Feb 2011 22:16:00 +0200 libifd-cyberjack6 (3.99.1beta-1) stable; urgency=low * released 3.99.1beta * reorganized driver to only support the IFD API * merged with main driver sources at Reiner SCT * removed support for old 0x100er readers * temporarily removed support for 0x300er readers (support for those readers in the new driver is not yet finished) -- Martin Preuss Sat, 04 Dec 2010 13:35:00 +0200 pcsc-cyberjack-3.99.5final.sp05/debian/compat000066400000000000000000000000021231776762100207400ustar00rootroot000000000000008 pcsc-cyberjack-3.99.5final.sp05/debian/control000066400000000000000000000022711231776762100211470ustar00rootroot00000000000000Source: pcsc-cyberjack Section: misc Priority: optional Maintainer: Frank Neuber Uploaders: Reinhard Tartler Build-Depends: autotools-dev, debhelper (>= 8), dh-autoreconf, libfox-1.6-dev, libhal-dev, libpcsclite-dev, libusb-1.0-0-dev, libxml2-dev Standards-Version: 3.9.2 Homepage: http://www.reiner-sct.com/ Vcs-Git: git://git.debian.org/git/collab-maint/pcsc-cyberjack.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/pcsc-cyberjack.git Package: libifd-cyberjack6 Architecture: any Depends: pcscd, ${misc:Depends}, ${shlibs:Depends} Provides: pcsc-ifd-handler Suggests: pcsc-tools Recommends: Description: REINER SCT cyberJack USB chipcard reader user space driver This package includes the IFD driver for the cyberJack contactless (RFID) and contact USB chipcard reader. Package: fxcyberjack Architecture: any Depends: ${misc:Depends}, ${shlibs:Depends} Recommends: libifd-cyberjack6 Description: Graphical diagnostics and maintenance tool for Reiner SCT Cyberjacks This package contains the graphical tool which allows diagnosing typical driver setup problems. It is also able to flash new software to current cyberJack readers. pcsc-cyberjack-3.99.5final.sp05/debian/copyright000066400000000000000000000043411231776762100214770ustar00rootroot00000000000000This package was debianized by Martin Preuss on Thu, 10 Aug 2006 21:43:31 +0200. It was downloaded from http://www.reiner-sct.de/ Package maintenance was taken over by Frank Neuber and Reinhard Tartler . Both hold copyrights on changes files matching debian/* Upstream Author: Copyright: 2001, 2004-2007 REINER SCT Matthias Bruestle, Harald Welte Martin Preuss (support@reiner-sct.com) License: This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA The Debian packaging is (C) 2006, Martin Preuss and is licensed under the GPL, see `/usr/share/common-licenses/GPL'. The files matching ./doc/verifypin_*.c are not used during package build. Both carry the following copyright notice: scardcontrol.c: sample code to use/test SCardControl() API Copyright (C) 2004-2005 Ludovic Rousseau 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 2 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, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA pcsc-cyberjack-3.99.5final.sp05/debian/docs000066400000000000000000000000401231776762100204070ustar00rootroot00000000000000doc/README.txt doc/LIESMICH.txt pcsc-cyberjack-3.99.5final.sp05/debian/fxcyberjack.install000066400000000000000000000000241231776762100234210ustar00rootroot00000000000000usr/bin/fxcyberjack pcsc-cyberjack-3.99.5final.sp05/debian/libifd-cyberjack6.dirs000066400000000000000000000003761231776762100237050ustar00rootroot00000000000000usr/bin usr/lib usr/lib/pcsc usr/lib/pcsc/drivers usr/lib/pcsc/drivers/libifd-cyberjack.bundle usr/lib/pcsc/drivers/libifd-cyberjack.bundle usr/lib/pcsc/drivers/libifd-cyberjack.bundle/Contents usr/lib/pcsc/drivers/libifd-cyberjack.bundle/Contents/Linux pcsc-cyberjack-3.99.5final.sp05/debian/libifd-cyberjack6.examples000066400000000000000000000000331231776762100245500ustar00rootroot00000000000000etc/cyberjack.conf.default pcsc-cyberjack-3.99.5final.sp05/debian/libifd-cyberjack6.install000066400000000000000000000001041231776762100243770ustar00rootroot00000000000000usr/lib/pcsc/drivers usr/bin/cyberjack usr/lib/cyberjack/getdist.sh pcsc-cyberjack-3.99.5final.sp05/debian/libifd-cyberjack6.manpages000066400000000000000000000000201231776762100245210ustar00rootroot00000000000000doc/cyberjack.8 pcsc-cyberjack-3.99.5final.sp05/debian/libifd-cyberjack6.udev000066400000000000000000000015761231776762100237120ustar00rootroot00000000000000# If not adding the device, go away ACTION!="add", GOTO="cyberjack_rules_end" SUBSYSTEM!="usb", GOTO="cyberjack_rules_end" ENV{DEVTYPE}!="usb_device", GOTO="cyberjack_rules_end" ATTR{idVendor}=="0c4b", ATTR{idProduct}=="0100", MODE="660", GROUP="pcscd" ATTR{idVendor}=="0c4b", ATTR{idProduct}=="0300", MODE="660", GROUP="pcscd" ATTR{idVendor}=="0c4b", ATTR{idProduct}=="0400", MODE="660", GROUP="pcscd" ATTR{idVendor}=="0c4b", ATTR{idProduct}=="0401", MODE="660", GROUP="pcscd" ATTR{idVendor}=="0c4b", ATTR{idProduct}=="0500", MODE="660", GROUP="pcscd" ATTR{idVendor}=="0c4b", ATTR{idProduct}=="0501", MODE="660", GROUP="pcscd" ATTR{idVendor}=="0c4b", ATTR{idProduct}=="0502", MODE="660", GROUP="pcscd" ATTR{idVendor}=="0c4b", ATTR{idProduct}=="0504", MODE="660", GROUP="pcscd" ATTR{idVendor}=="0c4b", ATTR{idProduct}=="0505", MODE="660", GROUP="pcscd" # All done LABEL="cyberjack_rules_end" pcsc-cyberjack-3.99.5final.sp05/debian/patches/000077500000000000000000000000001231776762100211715ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/debian/patches/series000066400000000000000000000000001231776762100223740ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/debian/rules000077500000000000000000000010231231776762100206160ustar00rootroot00000000000000#!/usr/bin/make -f # -*- makefile -*- %: dh $@ --parallel --with autoreconf override_dh_clean: dh_clean rm -rf autom4te.cache/ override_dh_auto_configure: dh_auto_configure -- --sysconfdir=/etc/cyberjack override_dh_install: mkdir -p debian/libifd-cyberjack6/etc/cyberjack cp -v etc/cyberjack.conf.default \ debian/libifd-cyberjack6/etc/cyberjack/cyberjack.conf find debian/tmp -name '*.la' -exec sed -i "/dependency_libs/ s/'.*'/''/" {} + dh_install override_dh_installchangelogs: dh_installchangelogs ChangeLog pcsc-cyberjack-3.99.5final.sp05/debian/source/000077500000000000000000000000001231776762100210425ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/debian/source/format000066400000000000000000000000141231776762100222500ustar00rootroot000000000000003.0 (quilt) pcsc-cyberjack-3.99.5final.sp05/debian/source/options000066400000000000000000000000521231776762100224550ustar00rootroot00000000000000unapply-patches abort-on-upstream-changes pcsc-cyberjack-3.99.5final.sp05/doc/000077500000000000000000000000001231776762100170655ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/doc/LIESMICH.html000066400000000000000000001303501231776762100211520ustar00rootroot00000000000000 Treiber für REINER SCT cyberJack pinpad/e-com USB Kartenleser

Treiber für REINER SCT cyberJack pinpad/e-com USB Kartenleser

2008/02/12

Dies ist das Handbuch zum Linux-Treiber für die Reiner SCT cyberJack Kartenleser.


1. Übersicht

Dieser Treiber für die Cyberjack Pinpad/ecom-Familie von USB Kartenlesegeräten implementiert den CTAPI Standard in der Version 1.1 sowie das PC/SC-Interface von pcsc-lite.

Er ist vollständig im Userspace implementiert. Dadurch entfallen Schwierigkeiten mit unterschiedlichen Kernel-Versionen, dem Kompilieren und Patchen von Kerneln etc.

Sämtliche Zugriffe werden über das usb devfs in /proc/bus/usb (oder /dev/bus/usb für udev-basierte systeme) abgewickelt.

Behandlung von Dateirechten geschieht ausschließlich über udev. Das Skript cyberjack.rules - falls es nach /etc/udev/rules.d installiert wurde - wird automatisch von udev aufgerufen, sobald der Leser angeschlossen wird. Es setzt die Dateirechte für das entsprechende Gerät, so daß anschliessend die Benutzer der Gruppe cyberjack darauf zugreifen können.

Für mehr Informationen über den Kartenleser selbst besuchen Sie bitte http://www.reiner-sct.com/. Dort finden Sie auch einen Onlineshop, in dem Sie diesen Leser bestellen können.


2. Von diesem Treiber unterstützte Geräte

Die folgenden Reiner-SCT Kartenleser werden unterstützt:

Product ProductID
REINER SCT cyberJack pinpad USB 0x100
REINER SCT cyberJack e-com USB 0x100
REINER SCT cyberJack pinpad_a USB 0x300
REINER SCT cyberJack e-com_a USB 0x400
Mit dem Kommando lsusb können Sie sich alle USB-Geräte anzeigen lassen. Es zeigt die Hersteller- und Gerätekennung aller angeschlossenen Geräte an, beispielsweise:

Bus Nr Device Nr   VeID:PrID
Bus 002 Device 002 ID 0451:1446
Bus 002 Device 006 ID 0c4b:0400

Die REINER SCT Herstellerkennung ist 0c4b. Die Produktkennungen finden Sie in der vorigen Tabelle.


3. Distributions-spezifische Hinweise

Sie finden alle Pakete unter http://www.reiner-sct.com/content/view/32/43/#linux.

Die meisten Pakete erzeugen eine Gruppe cyberjack. Dieser Gruppe müssen alle Benutzer zugeordnet werden, die Zugriff auf das Gerät haben sollen. Das erreichen Sie am einfachsten über das KDE-Programm kuser oder das Administrations-Programm Ihres Systems (bei SuSE z.B. yast). Eine Ausnahme stellt hier SuSE 10.1 dar, hier müssen Sie keine Benutzer- Zuordnung vornehmen (ab SuSE 10.2 hingegen schon).

Nach der Installation des Paketes und der Benutzerzuordnung sollten Sie Ihren Rechner neu starten, damit die Änderungen gültig werden.


3.1. RPM-basiert

Reiner-SCT bietet RPM-Pakete für die folgenden Distributionen an:

  • SuSE 10.3

  • SuSE 10.2

  • SuSE 10.1

  • SuSE 10.0

  • Fedora Core 7

  • Fedora Core 6

  • Fedora Core 5

Installieren Sie das entsprechende Paket einfach durch das folgende Kommando: rpm -i <Paketdatei>

Sollten Sie bereits ein älteres Treiberpaket installiert haben, verwenden Sie stattdessen das folgende Kommando: rpm -U <Paketdatei>

Es gibt allerdings eine Besonderheit bei Verwendung von SuSE10.0 auf einem 64-Bit-System mit der Anwendung "Moneyplex": Da diese Anwendung leider eine 32-Bit-Anwendung ist, kann sie nur mit der 32-Bit-Version unseres Treibers arbeiten. Leider war der Kernel von SuSE10.0 noch nicht in der Lage, alle 32-Bit-Aufrufe des Treibers nach 64-Bit umzuwandeln. Hier muss daher eine Aenderung an der Datei /etc/cyberjack.conf vorgenommen werden. Fuegen Sie bitte die folgende Zeile ein: "flags=0x20000".


3.1.1. Einrichtung unter SuSE Linux

Nach der Installation des Treibers muessen Sie die Benutzer, die auf den Leser zugreifen koennen sollen, in die Gruppe "cyberjack" einfuegen.

Am einfachsten geschieht dies mit Yast: Starten Sie Yast, rufen Sie das Menu "Sicherheit und Benutzer" auf und dort "Gruppen bearbeiten und anlegen".

Es erscheint ein Fenster, das standardmaessig die Systemgruppen nicht anzeigt, daher muessen Sie den Filter aendern. Klicken Sie dazu unten rechts auf "Filter festlegen" und waehlen Sie dort "Systemgruppen". Daraufhin sollten Sie in der Liste auch die Gruppe "cyberjack" finden, die Sie dann markieren muessen. Anschliessend klicken Sie unten auf "Bearbeiten".

In dem Fenster, welches dann erscheint, setzen Sie bei den aufgefuehrten Benutzern, die auf den Leser zugreifen koennen sollen, die Markierung.

Klicken Sie nun auf "Uebernehmen" und starten Sie das System neu, Der Leser sollte nun fuer die markierten Benutzer verwendbar sein.


3.2. DEB-basiert

Reiner-SCT bietet DEB-Pakete für die folgenden Distributionen:

  • Debian stable

  • Debian unstable

  • Ubuntu 6.10

  • Ubuntu 7.04

  • Ubuntu 7.10

Installieren Sie das entsprechende Paket mit: dpkg -i <Paketdatei>


3.3. Alle anderen Distributionen

Es gibt momentan wenig Erfahrungen mit anderen Linux-Distributionen. Haben Sie ein RPM-basiertes System, so können Sie probieren eigene RPM-Paket zu erstellen: rpm --rebuild <Quellpaketdatei> oder rpmbuild --rebuild <Quellpaketdatei>

Falls Sie den Treiber selber kompilieren wollen, wechseln Sie in das Hauptverzeichnis des entpackten Treiber-Paketes und geben Sie die folgenden Befehle ein: ./configure make

Anschließend können Sie den Treiber auf Ihr System installieren. Dazu benötigen Sie sehr wahrscheinlich Administrator-Rechte. make install


4. Firmware-Update

Die aktuelle Version dieses Treibers enthaelt das Tool "cjflash" welches das Aktualisieren der Firmware des Lesers erlaubt.

Derzeit koennen damit allerdings nur die neuesten Cyberjack-Leser aktualisiert werden (mit der Produkt-Kennung 0x400)

Der Linux-Treiber funktioniert mit diesen Geraeten nur mit einer Firmware in der Version groesser oder gleich 3.0.6. Sollte Ihr Leser eine aeltere Version enthalten, ist ein Update zwingend noetig. Auch nach diesem Update funktioniert der Leser weiterhin auch unter Windows.

Um die Firmware zu aktualiseren geben Sie bitte das folgenden Kommando in einer Konsole ein: cjflash 1 Kernel_V30_07.bin Kernel_V30_07.bin.ecoma.sgn ecoma2.bky

Das erste Argument ist die Nummer des Lesers (beginnend mit "1", der 2. Leser hat die Nummer "2" etc). Das naechste Argument ist der Name der Datei mit der neuen Firmware gefolgt vom Namen der Datei mit der Signatur der neuen Firmware.

Nachdem Sie das Kommando eingegeben haben fragt der Leser nach einer Bestaetigung. Druecken Sie die "OK"-Taste auf der Tastatur des Lesers zur Bestaetigung oder brechen Sie den Vorgang mit "CANCEL" ab.

Sollte der Leser "haengen" nachdem Sie "OK" oder "CANCEL" gedrueckt haben, muessen Sie den Leser abziehen und neu anschliessen. Anschliessend muessen Sie eine leicht modifizierte Version des obrigen Kommandos verwenden: CJ_USB_MODE=1 cjflash 1 Kernel_V30_07.bin Kernel_V30_07.bin.ecoma.sgn

Hiermit wird die Umgebungsvariable "CJ_USB_MODE" gesetzt bevor das Update durchgefuehrt wird. Dadurch weiss der Treiber, dass es sich um einen Leser mit einer fuer Linux problematischen Firmware handelt und spricht ihn etwas anders an.

Bitte setzen Sie die Umgebungsvariable nur, wenn "cjflash" sonst nicht funktioniert!


5. Support

Support für diesen Treiber bietet REINER SCT. E-mail: support@reiner-sct.com Postadresse: Schwabacher Str. 34, 90762 Fürth, Deutschland

Bitte fügen Sie ihrer Problembeschreibung die folgenden Informationen bei:

  • Name und Version des verwendeten Programmes, mit dem der Fehler auftrat

  • die vollständige Fehlermeldung

  • den Namen und die Version der von Ihnen verwendeten Linux-Distribution (z.B. SuSE 10.1, Debian 3.0r1 testing)

  • CPU-Typ (z.B. der Inhalt der Datei /proc/cpuinfo)

  • Kernelversion (z.B. die Ausgabe des Befehls uname -r)

  • Liste der angeschlossenen USB-Geräte (z.B. die Ausgabe des Befehls lsusb)


6. Troubleshooting

6.1. Erste Schritte

Mit dem Treiber wird das Tool "cyberjack" installiert. Es erzeugt Dateien mit Daten, die fuer den Support von Reiner SCT wichtig sind. Fuehren Sie daher in einer Konsole den folgenden Befehl aus; cyberjack

Dabei entstehen im aktuellen Verzeichnis 3 Dateien. Schauen Sie sich zuerst die Datei cyberjack-hints.log an. Sie enthaelt eventuell bereits Hinweise, was Sie auf Ihrem System tun koennen, um das Problem selbst zu beheben (oft sind es nur Kleinigkeiten).

Sollte das nicht zum Erfolg fuehren, senden Sie bitte die ebenfalls entstandene Datei "cyberjack.xml" mit Ihrer Support-Anfrage mit, damit wir alle noetigen Informationen haben, um Ihnen helfen zu koennen.


6.2. Aeltere cyberJacks

cyberJacks mit der USB-Kennung 0x100 (alte Ecom/Pinpad) machen mitunter Probleme mit aktuellen Treibern.

Falls das bei Ihnen der Fall sein sollte, gibt es die Moeglichkeit, das Verhalten des Treibers zu beeinflussen:

cyberjack addflags 0x100000

Dieses Kommando muessen Sie als root ausfuehren. Es setzt ein Flag welches den Treiber bei jedem Initialisieren des Lesers ein Reset-Kommando schicken laesst.


6.3. Große Anzahl von Lesern

Der cyberJack wurde mit bis zu 52 gleichzeitig angeschlossenen Geräten (über 7-Port Hubs) getestet. Dabei gibt es allerdings etwas zu beachten:

  • Linux bis Version 2.4.19 hängt sich vollständig auf, wenn zu viele Geräte angeschlossen sind. Versionen ab 2.4.20 weisen dieses Problem nicht mehr auf.

  • Es treten manchmal timeout-Fehler auf. Das Problem scheint hier im Linux-Kernel selbst zu liegen (usb-uhci). Mit schnelleren Rechnern tritt dieses Problem nicht mehr auf (ab 2GHz).

  • Sollte es immer noch nicht wie gewünscht funktionieren, sollten Sie die beteiligten USB-Controller-Karten und/oder Hubs austauschen. Es gibt hier offensichtlich eine besonders große Streubreite in der Qualität dieser Geräte.

Der Daten-Durchsatz nimmt nicht ab, wenn Sie statt einem 50 Kartenleser anschließen und konstant auslesen (getestet mit den Kommandos SELECT und READ_BINARY).


6.4. Hotplugging

Linux unterstützt hotplugging (das Einstecken und Entfernen von USB-Geräten bei laufendem Betrieb). Dies wird durch das udev-System implementiert.

Sie finden udev-Skriptdateien für die REINER SCT Kartenleser im Verzeichnis etc/udev des Quellpaketes.

Da udev-Skripte Distributions-spezifisch sind (nicht alle verwenden udev, und SuSE verwendet ausserdem resmgr, zudem sind auch die Namen der Skripte nicht einheitlich), können wir nicht für alle am Markt existierenden Distributionen die passenden Skripte bereitstellen. Die von uns gelieferten RPM- und DEB-Pakete installieren die für das jeweilige System passenden Dateien an die vorgesehene Stelle, so daß mit diesen Paketen hotplugging problemlos möglich ist.


6.5. Logging

Dieser Treiber erlaubt die Aufzeichnung der Kommunikation mit dem Kartenleser. Sie schalten es ein, indem Sie als root das Kommando cyberjack addflags 0xffff ausfuehren. Dann schreibt der Treiber die Logmeldungen in die Datei /tmp/cj.log.


7. Bekannte Probleme

Leider enthalten alle Kernel bi einschliesslich Version 2.6.12-rc5 einen schweren Fehler in der Behandlung von asynchronen URB's (USB Request Block) im Userspace. Dieser Fehler hat nichts mit dem Reiner SCT Treiber zu tun, dennoch betrifft er auch unseren Treiber für PC/SC. Der Fehler tritt auf, wenn der PC/SC Dienst beendet wird und kann im schlimmsten Fall zum vollständigen Absturz des Kernels führen.

Es wurde eine Lösung erarbeitet, die aber bisher nicht offizieller Bestandteil des Linux-Kernels ist. Wir bieten unsere Lösung aber als patch an (in Form der Datei patches/usb-async_urb-devio-oops-fix.patch).

Falls Sie PC/SC in Verbindung mit einem betroffenen Kernel verwenden wollen, raten wir daher dringend dazu den mitgelieferten Patch anzuwenden.


8. Anwendungen

8.1. Moneyplex

Moneyplex bringt seine eigenen Treiber fuer die bekanntesten Geraete mit. Leider sind die Treiber fuer den Cyberjack, die sich auf der Moneyplex-CD befinden, meist veraltet und funktionieren auf aktuellen Systemen nicht.

Sie sollten daher unbedingt den jeweils aktuellsten Treiber von unserer Homepage herunterladen und installieren.

Anschliessend muessen Sie dann im entsprechenden Konfigurationsmenue von Moneyplex direkt unseren Treiber angeben (je nach System entweder in /usr/lib oder in /usr/lib/readers, Dateiname ist "libctapi-cyberjack.so".

Damit sollte Moneyplex auch mit dem Cyberjack zusammenarbeiten koennen.


8.1.1. Moneyplex auf 64-Bit-Systemen

Moneyplex ist eine 32-Bit-Anwendung. Als solche kann sie zwar auch auf 64-Bit-Systemen ausgefuehrt werden, findet aber auf solchen Systemen keine Kartenleser-Treiber (weil es nach 32-Bit-Treibern sucht, die aber auf einem solchen System normalerweise nicht vorhanden sind).

Es wurde allerdings auch fuer diesen Fall eine Loesung mit Matrica erarbeitet. Moneyplex liefert - spaetestens nach einem Update - einen Proxy-Treiber mit (libproxy-cyberjack.so), welcher einer 32-Bit-Anwendung erlaubt, auf die installierten 64-Bit-Treiber zuzugreifen.

Diesen Treiber finden Sie normalerweise im Moneyplex-Verzeichnis ($HOME/moneyplex), und dort ueblicherweise im Unterverzeichnis "ctapi". Waehlen Sie diesen Treiber in Moneyplex aus.


9. Zusätzliche Information

9.1. CT-API

Die CT-API Spezifikation erhalten Sie auf der Seite http://www.darmstadt.gmd.de/~eckstein/CT/mkt.html

Bitte beachten Sie, daß die Port-Nummern bei 1 beginnen (wie in den Spezifikationen vorgesehen).


9.2. PC/SC

Dieser Treiber bietet inzwischen auch einen PC/SC-Treiber für pcsc-lite an. Er wurde mit pcsc-lite-1.2.0 getestet.


9.2.1. Installation

Für RPM-basierte Systeme ist der sogenannte IFD-Treiber im Paket ctapi-cyberjack-ifd enthalten.

Falls Sie den Treiber aus dem Quellpaket selber kompilieren, wird durch make install der IFD-Treiber an die passende Stelle in Ihrem System (normalerweise /usr/lib/pcsc/drivers/) installiert.


9.3. Multithreading

Dieser Treiber ist nicht thread-safe, d.h. es können nicht mehrere Threads des gleichen Programmes auf den gleichen Leser zugreifen (dies würde aber ohnehin meist zu Problemen auf der Karte führen).

Allerdings können unterschiedliche Threads des gleichen Programmes auf unterschiedliche Geräte zugreifen. So können also beispielsweise 3 Threads gleichzeitig auf 3 Karten in 3 unterschiedlichen Geräten zugreifen.


9.4. Kommandolaänge

Die Kommandolänge ist derzeit auf ISO7816 short commands reduziert. Dies bedeutet allerdings im normalen Betrieb keine Einschränkung.


9.5. Tastendruck Callback

IS8 rsct_setkeycb(IU16ctn, void (*cb) (void *user_data));

Die Funktion rsct_setkeycb wurde hinzugefügt, um laufenden Programmen eine Rückmeldung über gedrückte Tasten des Lesers zu geben. Die Funktion, die als 2. Argument dieses Aufrufes geliefert wird, wird jeweils aufgerufen, wenn ein C4- oder F4 S-Block vom Leser empfangen wurde. Die Anwendung kann dann beispielsweise einen Piepton erzeugen, oder die Anzahl der gedrückten Tasten anzeigen.


9.6. Informationen zur Treiberversion

void rsct_version(IU8*vmajor, IU8*vminor, IU8*vpatchlevel, IU16*vbuild);

Die Funktion rsct_version gibt die vollstaendige Version des Treibers in den uebergebenen Variablen zurueck.


9.7. Zusaetzliche CT_init Ersatz-Funktion

IS8 rsct_init_name(IU16ctn, const char*device_name);

Die Funktion rsct_init_name erlaubt die direkte Angabe des Geraetes wie bei PC/SC. Damit kann eindeutig festgelegt werden, welches Geraet verwendet werden soll. Der Geraetename ist wie folgt aufgebaut: "usb:VENDOR_ID/PRODUCT_ID:libusb:BUS_ID:DEVICE_ID". Fuer einen neuen Cyberjack an /proc/bus/usb/003/002 lautet der Name demnach: "usb:0c4b/0300:libusb:003:002".


9.8. Feste Zurodnung der Portnummer zu Lesern

Die Funktion CT_init erlaubt eine feste Zurdnung von Portnummern zu bestimmten Lesern. Das bedeutet beispielsweise, dass immer der gleiche Leser unter der gleichen Portnummer angesprochen wird, egal an welchem USB-Port das Geraet angeschlossen ist.

Dies erreichen Sie, indem Sie als Portnummer die folgenden Nummern verwenden:

  • 0x9000 (dezimal 36864) fuer das erste Geraet

  • 0x9001 (dezimal 36865) fuer das zweite Geraet

und so weiter.

Die Zuordnung geschieht ueber eine Text-Datei, in der pro Zeile eine Seriennummer gespeichert ist (normalerweise ist dies $HOME/cyberjack_serials).

Der Treiber aktualisiert diese Datei selbststaendig, es ist hierzu kein Benutzereingriff noetig. Falls die Datei beim Aufruf von CT_init() noch nicht existiert, wird sie erzeugt. Wenn sie bereits existiert, und der angeschlossene Leser bereits in dieser Datei aufgefuehrt wird, bleibt die Datei unveraendert. Der Treiber fuegt lediglich neue Leser an das Ende der Datei an.

Die erste Seriennummer dieser Datei wird ueber den Portwert 0x9000 angesprochen, die zweite ueber 0x9001 etc.


9.9. Serielle Leser

Der aktuelle Treiber unterstuetzt den Lesertyp Ecom A via seriellem Anschluss.

Dazu muessen Sie die folgenden Portnummern verwenden:

  • 0xa000 (dezimal 40960) fuer Anschluß an COM1 (/dev/ttyS0)

  • 0xa001 (dezimal 40961) fuer Anschluß an COM2 (/dev/ttyS1)

und so weiter.

9.10. Zurodnung alter Cyberjack zu ttyUSB-Devices

Die Funktion CT_init erlaubt fuer aeltere Cyberjack Ecoms und PinPads (mit der USB-Id 0x100) eine direkte Zurodnung von Port-Werten zu /dev/ttyUSBx-Geraeten.

Dies erreichen Sie, indem Sie als Portnummer die folgenden Nummern verwenden:

  • 0x8000 (dezimal 32768) fuer /dev/ttyUSB0

  • 0x8001 (dezimal 32769) fuer /dev/ttyUSB1

und so weiter.

9.11. Pin-Ueberpruefung mit der PC/SC Funktion SCardControl

Die folgende Tabelle zeigt Werte fuer die einzelnden Felder der Struktur PSCS_VERIFY_STRUCTURE die mit ASCII und FPIN2-kodierten Pins getestet wurden.

Feld ASCII FPIN2
bTimerOut 00 00
bTimerOut2 00 00
bmFormatString 82 81
bmPINBlockString 04 48
bmPINLengthFormat 00 04
wPINMaxExtraDigit 0408 0408
bEntryValidationCondition 02 02
bNumberMessage 01 01
wLangId 0904 0904
bMsgIndex 00 00
bTeoPrologue 0-2 00 00

10. Mitgelieferte Anwendungen

10.1. cyberjack

Diese Anwendung dient zum einen dem Testen des Treibers und Lesers zum anderen der Aenderung von Einstellungen des Treibers.

Die Einstellungen des Treibers finden sich in der Konfigurationsdatei cyberjack.conf. Es wird je nach Distribution in dem Verzeichnis /etc, /etc/cyberjack oder /usr/etc erwartet.

Standardmaessig wird von den binaeren Paketen eine Beispieldatei mit dem Namen cyberjack.conf.default angelegt die als Ausgangsdatei fuer eigene Konfigurationen verwendet werden kann.

Gespeicherte Einstellungen beinhalten derzeit eine Reihe von Flags sowie einige Dateinamen (wie z.B. der Name der Logdatei etc).


10.1.1. Kommandos addflags/delflags

Da die Konfiguration je nach Distribution an unterschiedlichen Stellen im System abgelegt wird wurde das Tool "cyberjack" um zwei neue Kommandos erweitert:

  • cyberjack addflags 0xffff

  • cyberjack delflags 0xffff

Damit koennen bestimmte Flags gesetzt oder geloescht werden. Derzeit stehen die folgenden Flags zur Verfuegung:

Wert Name Beschreibung
0x00000001 DEBUG_GENERIC Schaltet generelle Debug-Meldungen ein. Diese Meldungen werden in die Logdatei geschrieben (normalerweise /tmp/cj.log).
0x00000002 DEBUG_READER Schaltet Leser-bezogene Debug-Meldungen ein.
0x00000004 DEBUG_CTAPI Schaltet CTAPI-bezogene Debug-Meldungen ein.
0x00000008 DEBUG_AUSB Schaltet USB-bezogene Debug-Meldungen ein.
0x00000010 DEBUG_CJPPA Schaltet bestimmte Debug-Meldungen des Cyberjack PinPad A ein.
0x00000020 DEBUG_ECOM Schaltet bestimmte Debug-Meldungen des Cyberjack Ecom ein.
0x00000040 DEBUG_TRANSFER Schaltet IO-bezogene Debug-Meldungen ein.
0x00000080 DEBUG_USB Schaltet weitere USB-bezogene Debug-Meldungen ein.
0x00000100 DEBUG_IFD Schaltet IFD-bezogene Debug-Meldungen ein (PC/SC)
0x00000200 DEBUG_ECA Schaltet bestimmte Debug-Meldungen des Cyberjack Ecom A ein.
0x00001000 NO_BEEP Schaltet die Signaltoene bei Tastendruecken aus.
0x00002000 ECOM_KERNEL Verwendet den Kernel-Treiber fuer den Cyberjack Ecom/Pinpad mit der USB ID 0x100. Dies kann verwendet werden, wenn der normale Userspace-Treiber auf Ihrem System nicht funktioniert.
0x00004000 ALLOW_INPUT Erlaubt das Kommando INPUT. Dies ist normalerweise aus Sicherheitsgruenden deaktiviert. Nur ganz spezielle Anwendungen benoetigen dieses Kommando, insbesondere Banking-Programme benoetigen es jedoch nicht. Sie sollten sich daher gut ueberlegen, ob Sie das Kommando aktivieren wollen, denn es kann dazu verwendet werden, Ihnen eine unsichere Pin-Eingabe als sicher vorzutaeuschen.
0x00008000 BEEP_NO_X11 Normalerweise versucht der Treiber fuer die Signaltoene auf einen laufenden X11-Server zuzugreifen (Ihre grafische Oberflaeche). Wenn dies nicht gelingt, wird versucht die Signaltoene ueber andere Methoden zu erzeugen. Mit diesem Flag koennen Sie verhindern, dass der X11-Server kontaktiert wird.
0x00010000 RESET_BEFORE Dieses Flag betrifft nur aeltere cyberJacks (pinpad und ecom mit der USB-Kennung 0x100). Wenn dieses Flag gesetzt ist, fuehrt der Treiber ein Reset durch. Dies sollte normalerweise nicht noetig sein, kann aber mit manchen Lesern den Betrieb ueberhaupt erst ermoeglichen.

Wenn Sie also ein ausfuehrliches Logging einschalten wollen, fuehren Sie das folgende Kommando aus: cyberjack addflags 0xffff Sie sehen hier, dass der angegebene Wert 0xffff alle Flags enthaelt, deren Name mit DEBUG_ anfaengt.

Wenn Sie nun zusaetzlich den Cyberjack Ecom/Pinpad ueber den Kernel-Treiber verwenden wollen, koennen Sie dazu entweder anschliessend ein zusaetzliches Kommando eingeben; cyberjack addflags 0x20000 oder Sie fuegen das Flag dem ersten Aufruf gleich hinzu, wie in cyberjack addflags 0x2ffff


10.1.2. Kommando check

Dieses Kommando wird standardmaessig angenommen, wenn Sie keines angeben.

Es ueberprueft Ihr System und erzeugt 3 Dateien im aktuellen Verzeichnis:

  • cyberjack-hints.log: Diese Datei enthaelt bei gefundenen Problemen Hinweise, wie Sie diese beheben koennen.

  • cyberjack-report.log: Diese Datei enthaelt einen Bericht ueber die Ergebnisse des Systemtests.

  • cyberjack.xml: Diese Datei enthaelt die Ergebnisse der Tests in einer Form, die dem Support von Reiner SCT hilft Sie bei Problemen zu unterstuetzen. Sie sollten diese Datei daher immer mitsenden.

pcsc-cyberjack-3.99.5final.sp05/doc/LIESMICH.pdf000066400000000000000000002732611231776762100207700ustar00rootroot00000000000000%PDF-1.4 %Çì¢ 6 0 obj <> stream xœÅ[Ks·N帿b³)ïpðÀ·È–mJ¶#[ŒS;Š/Ù¤Hš"åÈÿ(ÿ)U¾ø7ä¤Cºñ˜n`°»dJª”«,ƒG£_?€ýy9ôb9àéߣW‹½oÝòìõ"ô.ÅòéÔ:_ü¼é!^>:€ ~)u?úA,N" ÒôF.G£`íƒW‹ï»ƒ•S½²Öt7+ÑÚ ®;Y­‡ÞŽZ×ý¸’ýà¤—Ý ø>ŒÎ•ßoVk +8­ºÓÕF Ú¨î]«|ø>ú~¶ûv5ÀÊh×=ŽC»ýiƒ¯Ãw˜®òw¯ Ì‚ †~Ýsêü„†Ä ì8vG+ØhÊvo#…ÊJ“èj3Ý¡7žÖ¶{{…5¦;d#ŽVÂõÖüsêýÇÁ“…½Þ/×Jö@0òy=±‡Xv9õÑ×´…¶¢;ž¸´¦@ㄾ®‰GÔ{5Íy…Œ{9šî¯ÄÙçÄÙGÈÓƒžÒw¶=ˆFŒ½•Àƒ[Ú‹3érbÝEE`øüšµ›¼En¡&Â6R44pÐÀ;™x÷Õj­zmœ‘>Ñ[åUT-à°U&ÒgœFà.lä„·È[K K;Û=ƒf/¬õ*«Wz”‰Ê‹Ýá=¨Ñ"Ù¹—š©¢÷LH]kß;ÈåZ*ä"±Ÿ„“z§Q0]:g<Øõ£©ƒî©Þ+Üþ&ìi¥Hµ‚s;/º³8Éݽ¤ù·xßKP¡Ül?Â49­54Z.j€0#ZI&êñJƒ+0}ÚôëÖ÷`Z *Øóyè4jŒÇQd°-'{%U÷ùj­{/U¨xºW $ ¶…I«î‹id%ÐoÑ4ÖBöyX·ë8¹µG„ÓgY}6ƒ7˜Ž’4ô°³´AëÖÂÂ9ír­eï&I~Iö¨a?‚‰x€)’ÖX#‚ªH5Нa+c¼ÖQjÀÉ€1¯Mïœ <œ/ dfPظŒó@õã ^ˆ€Y®—`z¨·éóQœcAm_¢eHÒØý{A…ÓÐ0±Aà ä/‘YÒ+“ †Q°]iƒÒü5ŠXÎà`0p :­ˆ ‘we‹¾˜–bßÑtD^àÝ4ô&’*À0§N¶è ~—½mû6(©~Ãþ—õþ6¡®Òz¸ä•4(y^ UÜØ`wøC¯Üˆ&pÞŒ¨3CT–ÄòtùHO‚V8)³tqw&´sTpÉ¢O“9@áÂÔÌõÛ™:â€K¢á¢9 h¦UB¦ÎQH\Ö+ºñܧÀ Þ ŒJ[‹×:›¬H9¨0}”òÝ¿ÃJj°Aè¬p´ ·Î¢TÁðw"C,v2è>Z°ªQF]NóÊ+e[6¬A°bp»nr»÷±ál­•V‚xÁŠ’‚G¸FYŠÏfk¾ gp%tfReý&õöi'ü΢$T ^Ø2¥|;)òN­û‰–š«ŽÍjžéÙ¤ÿM£¹¦½i>å^a”ù;Óð«iè+òk¢õ³•Œ¶NòõÙPFÕ5+f ¶‡XóMH`5mŠá€¿é=DÁ€µî]¶_2~Œ‹´Ó-C¬ø{Û<41íbö½¶C•\ôÙL”•ÍÿN½Í?À>,˘Âx½ ØØ6¬°çÖ4è5€8Ë]×|];„°yÅ"CÁê¼öÌУÏ÷ÝŸ™E“Æî'ƒ…`•$©Õ¦΄ãIy+§L†~œ1yäljÏo»”ï@¼cHÛ<£" ¶piM•Sg‚iô‰DÄb´ÒUÐ}`õ/L{Ójf¼‡\9ệ¤#3ó–Ãd¡Á>“ ¢m0Œ%§+t«N:.3†"'ÉùB–59ßM掼Ã_·‚$bëdÔ_4U½my¥ç\'âJOô8Zz$ï g'C]c¤]´çO¿Ï"I_€6ÛÿŒVÂGµÔ$}"îµÿõí\×:6“çÀ1%¡VL+1ƒà6hmÑ>6…*™’]&¿6ôÔžì"šbäxÂìàxF?Ö‘íï…à²dn›ÞäGR·“²Ü.ÿ\Û 8+’œ¤‘Lʧ+@W§µe‰. \Ö^DpJq^›£Ç-ŽfÎSacš”Ýð†@(ù¸”nŠ¥ÚáK(TÂL3!u(BÔ4Œ!|JMØÖN6Ƚ'Ô|CÍÓÖ ­<D‚Š´s+UkÒ iTÓ´=Úîšš7Ô¼¢æ5÷ŠÃåfûô{»¤@À­sŽBP@ÌDð žì¯Xh´8fjÚœØ)¤qü b¶#X2‰ù”pð¹<èBv@ªàlÜT¡aY`8à§c8^î$¿Âj 8›î¤éxXæ•MÚx6ÿ-­O‘äܧWHÅl÷‡U2^£9…ÌÐÏ:àY•Ô›2¢¢ñ „ vîzÃPÃeÐ?Aî—‹ƒ?}ß=šWv”—5Ê´Ãò*Ä¿kùë³è­Û"LŽi,J`lß9·«ri»žÛö˜ÛÃ<øY «›)1©Ðw’E2 É Kú:›ÏaUÏDÓö”­Ä"ï¨$Ûg¤Ô÷o›‡êÓ¢#¾‰ìTïîë® ˆdâF÷ÊPJ©ÿ†”&'ÿŽ×QÎ[ˆÃ£âë©’…z[ØëÀß0Ïò¶ ­ †™oú‰š‡M7uN;¹C䋿nÛ}°S…¤ÖùŽB‡”ÍAâîy ±%_Ç %b·ÇÛâ*Q¨®š‚` G fÏÍ(­%% ⣟2ƒVéü¡yKÍ#j²±wÔœ¹ÍÐûf6MŒ~» R¨×ð•LŠÇ[%ãUdß–èhæqÂçmö}K1gÕ¥ŸiVŠÐUª¡Ç«ÕuªaB6·ÁQ1ëKIŽŠÔæ® ÉWÅÍ_ö¦íŒhVrSÖ[2vTÝ-sT‚üù ˜­°Y,æ™ÇÓÍU—§!R/ËòÜÕÂcÍóÖ¬1ŒW/hͶ13Ü'…øL€âÕ·Þ_Rö´íZ*_&Èß@̼l¹ÒQ+au…«ÒDœ&¬Ät/MͬA3ÖªwFår(Þ;ghóº]Vdšü+ï uVˆkv^ oðuíRô{‰€²IßÿJ»*À§G©Ø ù)×lWÁZׇÐß®J–8…a¼uøÖcbçC®ª>JÒW–U箲 ®(Œ¿åjŽå½ŒÆLQ”Ø,äm¹¯ïÇë­¦û ͉m®šªApåV35˜=¸ð^5ßÛ£6Ôçòí2øÍÏY@‰ÛízÖ,p¤ÎÙ~Ðäm?|8w‚HÓ¤˜nÎ| =M|“k¿˜9ÛaT 5N7–,S.t>­õŸº¶]U2›WÊÕe“PzuÙôÙ»WO ’¶Ì“êÒ)LW˜6ßâ•uiªØ]ë§Îy”QeœÛÊÑ“ ïz+ÄÿVÑk áC\íSѨMWÓÃ1ˆzQ[ŠS£¯sGTe"ÍTvž„Iñ僠—¹˜>ðû¢Ê‘Bþ1Ûœ}¿­›ÅÃ1ÏØë‹!v5ð1õîU͘iòp£lCöl„VÌÕí0~2EµŠù‹*)HpûmTûJ+“àt÷vú¦‰m{ÇWÚ©ųLÅ>¢H¹f$er°‹®]F²)ÝŠ—ÄAö"³iâ-\‘»p!]/‰âùíR;å­3Ý©=Ø}UAÔŽg†ÃÐkPkØÌL!“ Õ¯ ¿[9‡Ou¼¬ˆ‘Ð-FÆJAìeO #QáÁ!{{ÈzQÔÖAÌdºƒ.ó6¼g˦wŽø€œ @YÛCŠÉ_˜_aìåz1 ŸGâ#}ö }×\ D.nÔ£¯–•ˆ:<Ò–ø“í*ñhÎÚ·óݤ5lìûxw¼Â Û!S¾³M¨UT:[¨ÞÀÙô¸Š³wbRïùËÄM/ƒµî…ÿ?Ä)Týežˆ=ðŠ´y~¿·.6ô]s"aŸz?hôø`ñÍâç¥û •ú¬<š@8À¿£q@þ¾éÑþboÿ«åíÍÝÉbïoK±Øûÿ÷èÙ'ðÏþ§Ë?,ï/ßûZ!D‚…„øBë´Xhã°øeÅô,4¢¥°À`õlR㛕{«}pl¹dt›øçŽzØÈdfœãüdJzˆûO¦ŒlœÌt­N†ÎwÔ '“é'1ôÒp2Fm:±Qn \~ø‰7+˜Å‡Çïƒ{Õ-VbŸQøúÆ‚5ÉÈ>1ÜtÐoÿÍÑ)endstream endobj 7 0 obj 3508 endobj 16 0 obj <> stream xœÝ\ÛŽ· ü8_1@^f‚ Õ¼4/~³,%^+6di“¶ƒ@—•´‘¼²%mû?òGùCžü*6É*v³·wvw,Ä0àm±ÙlYuªê{¾[wB®;ü/ý}òÍêÖ¿~þv[×r}¯\½\}·’é]ê½¾} Hµ"XeÍúøÙJ¦þÊz¡ÕÚù^8¸ñÍê«ÍñÖ*!­6›7[„õÖoN¶;)¬ÕAoN· £;'7·»^xï]¾oµ‡‡vÊ¡mØ<£®?—®é¾éäæÁv§… ºï7wéòh»3BYÙëÍç[#z¸ üþÀéÂæaõãÒónk/‚·›'4ëh‚3³Ö¢·u›O·Úc•Ú<*Ÿl•F¿y‰/W¢ïÕæÛx;HÙ§5F¹9£VÖa*Ø®ß<¥Ö[ô›Ê.Ê߇Îg°õ5=ö Ì¡ë…é7Þî:áºÎ[™Ö"v¸=¬’zs/®‹v&OïÂj©6ïš38£Ù¾Â®3°'Û¿ºR½ʃî?]y[Fš¬%4bÿ»Ç«/Vß­ V˜¨t _KzÑùµsRá_ÐéÛG«[GŸ­ß½9?YÝúëZ®n}‚ÿ»}ÿcøstgý›ÕÝ£õ%ü0ì;6Pç…Ùk £ -›“ LÞÒ{áí`s÷ã6™`añ”Ö‡;Ž*oœGÁK 6sN­O¶R-;ÛM¦Ó|ŹdZ‰X2­Á4TC24̉dhÌOéòœ.£dÊ÷!IáˆÐäéýœÄ½ö.®òþÏ+h5*ÿõ¬ïohàŸh˜Ñe »Kt”õVÔXß‚Åv@he`ª`à‹¶}\†B¬í-ìb­ì¬y@¨EØ €ºé’y7å­ŸÔ}D·è!Ú‚(.A)B1s?g¥±FÚ<ÐSôF8F@™¹usÑl¼_ÙnØ~uE¸‘p²4vÔXz.šÂþRÌ›‚é04xc5ÍÊt=´Y)/ú_ƒU±§wt±¨itø‡Ö×6¦ïR6&Ú¥CØÒþBÌë?îöMÅ@W«iKª—{úº+Ù’ÔBš_ƒ1]ÕE¥û¯î+݉$º®©x³©±MlÚš¾ž­í/ż}ÈNݘ¼ÊXM[ë‚ÿü– N„_ƒ©íé· ä¹'C-ÌÖSèý-ìÀ[—,Œm]ÓÀÌõ l!fÂó>ÇÚÏ.dˆ‹ëLŽ>ÅZwÆsNç*6¨†S°™÷ÒòàèÞV#5#“ÆžLÙ%Sò3êË^@#à‚ž á{Qh˜WäqÞ#:/ÚÛz¯˜`jK#VË¢LïeQ§ÿ’:‘/c×I%Ä`ždFÌžàÂ:æÈî3ë}]aãµåkÄd|U‹|œ5K–Ì¡â¬ëаÇOÔú®)Äd÷ârüH­Œcªô¼E>–•c‚±ñ‰dÓmN*Ï_/p~qü ÛÞXxj`d}Èó×^4¿8j½õPœ²<H@HTmV–¢D?™®k¢„3‰óvz|E­¯šÞlÁh½Žñ¤8¥î5`ÈN*x¨SÃÔÎɘjSÆ çå ÉÑ1{&Ÿô5N'Œ­/·VH¼çg“÷z73Xp¾Ò à“eÈêÇTG:;£‰ME#Ë«Í-?Ä^Ë\(=EW¶xF¥;w-cC½2aFÄßc-PÅ›œ>SkB@¦GUÖNHÅt¹7$ö÷mYN[}ÙL>,3á®XuÅW^Oy³w w“cµBT«\¸™Lâ"J´A„”HÜf¦ÉHo3Š¡RcÍpÙÌÅ: Íåð‚(UKq§RÈ“‚ƒðøŸ-ItþI’Pòsö|©Q]”^UÆz £‘Å2º^¬¿l{€ øw Všõ P|-?$—r¿”¸¨®uD¦©ZÁ5ÖmÎò$$û&‡79VÓŠ¥ê÷dZ¯”hv[ùlÆ9=dþ¯D$%IÁVv©–R—bΖ(Ú3§¶g¬ CföÜà~žT±`Ì7µcéËÔÅ-–}`qµÖ•¸¬ ;*°qàYFÜ`³d+iè²§*¶¤VrżÕ4/m¹\DŽý%žµö>8»w}“cµÚ·¶~äè!«UêAŽCK„ÈÁÅ9 rØË"Ç¡ÅEäàâ^ 9=KD>K¶’Œh4„›ÈÑœ õv丂ÄóÖîÕþçnn¬«po½ ¢³ÌBR<Z%ÛHº@R ÚZ[¡]¿D[2¥F©*¥wïšyù„¥šò%pÔÁž4óÛ1u0j|žY£föIÓKTŸ\{h€)Ä]°º¯CÖÖ¢‹¼@¾4tù¸\6yCIdH99HÊï´ÉØÝ/»ÁVøuÑN祑¨I¶q%!ð·W^É&ƒ!ƒ\ß%ac²ÙxÖ•½‹:´Ì×8áúà×; `R6gLâÀRÎPî·‹5:(Ü… çëï¶„=Õd[kb6s†ÌhÛ¤3Z—ƶMdè^Ø%чR#;Ç{‹Z9WX_÷àú¤å&ðÍ+6YÖ W .»–‹bq$½ur¾Çg%*&XÕ5§Ê ª-®ñYkaÙøÍ@ø¤œ»æ ÈÖ˜”¸Ÿß6Ñ/PÇñ©ëß–ûLÛ‡¹Ï‹³fe×óviIм nX™å¨†-8Óê {Œ™©A÷á®m5“"Hô)í²Öù¢”ëç:¾Þ™ªVÀL‚ÞôíèjT„LøVê`´IQ¯ôMÀ?ªº\Ï? À$îåøý¾ GXÝ'BªK£jžÂWòêë¥ÐCúJ÷èQÁ1ÖMF›¢6,z®Ä"O;ýÔ€b¼˜u½£`ãG Aˆ-/i²àî9 v2¹qÄÄB®ie#S̼sÂKß/U§¾qTùÇr––°¬Õ)ƒÓ¦™~Ié#GžÓ%½— ð,º nîYZ?ŽlõžQ¸I'ÔØ^# £Ä/jßêÞPRÖŽ9ÚIèÙÀ zÅÌíäb­tT O%Cn|U±=LvFœEO=)­ò usèÕæ4s‘téÌ›a>l"çJg|#!¸s”œ­2så/ÈL–*óeLBŠø‚v²Ók¸qU ”pe0¨´,µEÝcugšÙ£îÇTR@4Òü×ËðU U¯éô„NË™X/ø)™ÚvCÙ„lVº›ž»`ÅC5àFébü%ãüˆé8õeÂ6ýñŸÀ¡óQ $ù$ ÓJ•…­c2 ŽÿzŒè—ÝBH…­?&|Ñश|\7Åi¢Z³nS?le(µùzCÒLŒ%SH È)Æ4™» D0 ÈÚÂÜ ìÉצFR½:6‚d³#"ˆEDF‚Ç €ürK¥%ÊùzKbgÐíù¡$Ɖ°Ï iY†3=‡Œ°€jù£ú\ÀÔì˜KeÞíµÖñv>j½d·ã›|4޽á´9B1\¶¥3û<|á ¸ßüJm´L±˜›ñÔ!ä„lÌ@6œøZ¤òÚÑ(óÙÓÌ‘'^ÒUèSÇYƒÖØeÈÉ;xêa}kG-›…¸¤¤FÇòvT ûFFRŸ‡+;ŽgÈh ‹kGYoŠžÈvŸL,Þ;°7! &ë‡/hKþþ§Õñï¾ªÊ QF'Vã‰Â9 Œñ·T®8¡×|Ù2Öaâ}Ù!¾,ø`”ü£““:jHŸíO8q༭,µí³÷›#áòw™UvÑ&»gL½Q¸„…§Ï:L,{àéjÛ©ÐÅäÁVxVþ>©"@Ëgèm º³TvQSÌø)‘ì1 Î#½WHAâ{\gQçrê$¼ÞžË>0P“›«‘žêËm"ö¬¹Y)vðŽå£K>Zÿ2 šuõ)T;VlÇ LIiª”8±¯W؈ pÞ{³'œgmFŠRÿŠKŒ’Hw¦°„u,ö4ì«JQkÝ!üD7+ó˜£P—òÖêGlb¦Û¾„‰k;MÐg¾'÷Ö>·^Ÿ*éP…¥L¥Òø2ø f$û7Jnš^v²Ìoœ]D5«³‹¤†‹‘›.­Í©æï¤¯ÓT—&~îÖÉ÷:Wùÿ±¤ÝKZj]ûÌõü¸{¸æ×ȯ>"X¢<Íž ÀÜX”Š1BÅzgðS§N“SÅZËù­/VÿÀ­Zendstream endobj 17 0 obj 3640 endobj 22 0 obj <> stream xœÍ\Ýn·Ú;=…Ы=EÎfù³Üeˆ›¸Mâi¢hƒ^(–-©²eÇ–›ÄïÑ7ìcô¢Ãß’óR¬…/Lïrù;óÍÌ7süýñ4ŠãÉý‰?~~ôþWëñùë#ÿôXž[WG߉ø)ö>~pylGk¤ÑÇ'ODì/Í:*y¼¬ó¸À‹çGß';#Ga”^í”ÍjÖáÉn/Fc”UÃån‚aÔ´ˆá»Ý~×u]Ò{£Vøh/µ•±ÃSìúßÜ5¾×“¾ÚíÕ(­šçál~ºÛëQ1«á‹ghZúþ+7€Åb‡¯ó¨È=OàµZG»šá1®ú'\`gÕjœÍd–á³Ò£6R§¹ã㔣Vv®Üärœg9¼ô¯­s<x(†k|J:„¡¬™æá Ÿ¾Ÿ‘¥ìýþg;­iîé üì9¬ašG=ßìöÓ¸LÓjD< ßáA8!)Ôð¹?µè´÷>lV 9ܰ+¸ÆÕ>s–IÃq<Ùýãä³#9/£\AvNÎ@V^瑚³„‡®?Þt¼¸1„p‚·×“§õV8êÅ.aœÃ'Ëdô’?!²êš“0i·;1Z%&朅‰§ºZ¸êØ|DiRn÷þÞ´¢¢­á{>Áž&¿gw’Öµëÿó.æb¸êDÇL2,çÓüå5çow¶ZS99Åå>ç¤yÙÈ”ë[,-=¼v«4£×ätás-agióBO†,à5bM9j’t²î°™U&ÅX” †  Št œQ0‘ ÚZ _î„1™MZªûæjgF¡Vcè@7ðÍ _ta¯óðOw˸À˜ŠJðáÂÁž×dMo¨Îs¨Â~uŠï_‡.«N’ûíEþæ®ù¼Æ×ƒG&VÛpJ¢i»’1Ÿ»‰¬t{&ÍS§ª¤ü _ÐH©Á2¸o½Fj0n“Hûr†iqš'!© 3ÏVŒBΘÓÓËÜô:¥¤e N¹¢J}èûÌ“—ˆÜ<Åæ6Ÿ`ó›g8á)Û|v‰Íßç&‡CJŽ«ÇÝGG'¿ý–(Á^±o Í$7ëuxU}%ž«¬N–×ÍpPü…ƒ¸.à°Ìt€ÒúúÅ€Bý#ÂyƒM2¯ÑS9Ù¹c“s¯ë!§¨šà%§gDúš$¼Î> ÙÕ)»ížœ€›ü>ûAý…)LjBVÍzR¸¾÷Ü@bþåö.éÌùqdnTöÀ3[Äd‹²—\–({–x*­-s˾©åÜ7Ïü¨˜ÆB£Rž@°jÅ÷ª9Ã2Á-r]çì šƒñ ˆ<*Å{+Q)í,¨ºZ¼ß—wQ-¸ŒÊ- ZU/±™ÖD õOÁÃ5xŠpƒ"~Y£o^aó 6o°ÙàiÝ|†ñ4}§û´»½ƒgOü&cÀ¢¼n@Às<2‚Z“ò)½íh±zÆÎ@.ðœàhÏ<ï½ES‚×Þ`}C­+“" ýF$hÕ¨Òÿ I.©JÂRÁ÷æ!ç2šþºøI¸£wÀ™7ÕFüëóˆ8€hà¹ÈiR冽7壱d ‰öu€S TÒ׊<΄ŸŒNö¬v.ðGW UM2üSwGó(´îœâ5‹%.œT¸€ïe°ƒÆ& Häpò’ÅKÒOà'ŠEaf-«¦HT ‚ó˜ì`3ú¹ýa{œm Ó>rB`,Á™Šøäq#5ö½Á&Šy³ÎÃoܳš`EvW¢,BµB·Ä¢M<)ÿ…Êû®€?æYãT º¸Äݤ>&‚~¬ ‘nÞ (ìYн>"cáfU*Í?†°‡õŒ] Y!kü_Yr;x"è¥òCÙ‘p¯£F¢Ž^Öî#u*?〨évÍæˆ¼Awgn ucuÈùZ³ŸØ™AÆç £&˜’Ô+*£ö /ÅbËXÒŸü´Ü—–úã.…º ±¹Ï†îA&@A‘ëBÏb"ËA*55ªf´>Ó$ÞߊjRü¢å}F$*:e;tŒfujµþ‘»“'¿Ð`ñƒum½Ð !F¥JÿòU´\Y^8N9X¶Ï3#¡3 ÉË57Ò³ì*ü<žF»½h |¿a¸-=SâîB¼$ddÑ—oIÞ Ï•¶ÅöÇc}„û! Áïå­å wQjïmœW2“¼GM§–èêÓܵ’}8<]P±Eä—#·{V`pÄeá3“k( Iw§ëd; ]ùjÎO/ X”Yÿ–€ø[œßÕÊ´1!›M«ãx?Fx"|⟈ì’^NC—ŠëC¯…ÜËg^pÁr§2Ñuœƒ+a ³‡ØœR±­Ù§AÆ$+ ®þ€:—®¯?åÒ÷ý˜hÑÑÖ¡`¤§%“ªª>{ŒOß§O¿ ß϶e‰:€þ©¿–êvã_áeµšÛ\Y¹– kF ý¯2¿Þð×¥[[&âœ0*±R¹¬˜ ç¿™näIP€Õ"ª:0–0(9ÛBƒEÉîÓ_Ó´QÝ‚f*Pž¤™ˆ[ \{à Îá(z1FÊGÝ.pkÆ+eþŽŒWâ"•VS*.¯ð%µµ'TZ;íý:.Q¯ó ªœ³ù;'ºBèUE·Á 4†uÄN‡š™/ðÉJP7meÅ-lÄg´Ïg§,€‚eYÐSí¾Rã¤ÝXbó¡\õ8Á>ñ¦fVž6ƒžód=  gÓæó‡Kr){Òá±Ï“­pÆØõÎo1lÍ›ðpmÊÌžA“ ÄÓSîàž’8À“¼T7ÿª<‹øu^*ù<n¥’¢£rJ›¨$ÌW"wøÐ±éPƒ*rB|”y–pß’´xo^op‚·8-¿DÜnJw/]ž¨dd’Éâ)×3´Y[5s$£J°ñ ή ³” O®Þ’‡­ð²ËÃzþÙRʦºÇ¨]<=Ãæ6 “J-øò©í n½)ª«ñ’ì,ÄK¿oò䨒Ê-·¸0‚ÎÏZáœYŸ‹/àØ*Âai2^<ð=_îÆæép~"H™@Z6}ÆiÚjSdz²>”£ä½šqBïµÖ(RÝ¯å¹æÖÌWe"ÈñgÎc‘Ÿs:Va\@–ÕR®í.Db °EDä +ÿ:˵Ù,mâÙ@t‰#ø†{)éÀ‡\Å^SòÇT›ß¡øÝ*ݺôØ6jM—qUëˆÎ|eqABl ÙxŸûhK‹oeàI€–ì·´<þnú[Gípby$Í` @L¼âÂæ—U+§¥ ,Á‚šð=¿cãBÑb|_R`’)€áWY¯ø—>• ÎX!ʧ-ݺ—Ø!ó6r­ bëy•öŠäžîø;_WÀð–ƒN*¶xu“¢;Hèa´Îw™r9P †*-sn=Û„ÕWãLS~Ã}Gk¸I’¢þPj7dÇ4V…@’ ðKmzWøE_Ud\°ÿñ—T¼Çõ<ìoUê¤ áNc-|Ÿ´—+¬ò <V±X1’d²kzÙÉë¥ *æ­$Öeü*š>…Vóir@„o¥9;¤y£²¹KÝ·¡dÁຫßly mÓ« k`j‚–sQ_ˆ3Ö¡jñâ•*₵0 ±˜‘HïEwÍU8dsÇüHYŒánÃÙšU'/ñ-Ë}Ñ€š1%dk‡©M=€}Á‚Âu ÌûÀq!$ú‘ØTsפոê~ ròŸª&ÝcÑ®:0]k ëŽÓªZjëÝÏâ'­-³\ÿŽzÉrV¦ªOŽ¢±ø†//iœ½Í"ÉJÙÛºR£¸ÉŒjš7£¸-¦¬I#p¸rç¤-ÏÚýLÖ+ýž¤gÙ*S< bA>îV¥DêÓ¯NfZý™Ï¬ v| Œa9f ìëÁsY¹_öQ8ö hϰŒšïÑ÷>œ³c5¥,ukm|EveÒÏÜëÏ¿ãDØÍ5Ùq’†wHø¦çêÿ D ~¼ ¦5´ø>…JŸœýþüügÖendstream endobj 23 0 obj 3667 endobj 28 0 obj <> stream xœÅ[Is·>äÆ_ñʧy)?û’J¥JŠíÄ–’ÒB';Š‹D󉔹D–þG~_þ…O9¤1Ø3=|ãXÅA ¦§èåënðÇgbÅãOþ}øfïÁs¿zuµ7ήÄêqíý¸'ò<¯^=Ú‡„\¬´zµ²'òzi=Srå¼a¼ÙûnØ_[É„Uz¸\«À¬·~8^o³V5œ®9Q܉áåzc˜÷Þ•çVyxi#u`ʆá¤-ýO]šŸk.†çëb2(c†/ÛðëõF3i…QÃ_ךüüy$ ™paxQ©þ±®Ü‡Çʳàípظ~ß\àZ1c¹uÃ7k¥™¶RuááZJ¦UðÃYü¸dÆÈáíø8aòžÀ¤ÎÛ,ZHËÍpÔf´×+›Q~¸/ÄÙ‹öÚà¦ÍðízÙãÜ[‘÷b\ð(íjx<î‹rº°Ÿ'a•Ã5ÉÁyãv8®a;Ž×ÿØÿfOǤÝÙ?]¹ª”f{ “qýƒça%4S°£Qï6š[Æýj# ã.¸DFÁA‚­0äƒ$šÛÈÀ™ùb-™Õ.بQKµµ n™ÜD&Œ—ÖÀ)s¦<(ŸÉ ¥«::­ß9®sQ3á3Q„ëJ(ɶ„ŒGIP .VûOööû(dÜc ßÏ›`„«„ †ÈŽ.×"0/A»Ò[àôEäJ/'úl,“JÍ Õ ñÁÅÎ3Í‚Eû`Ñ_D…±Œ²3¹Gõk›f|O×BÅ= ¡p}¶¶LÀ¾Z,Êu³óãl:Z%Õ[¿RLd3ˆS§»Þ¾¨K·mé«©GFñ-<—`ÉN¸´ÙtWÕ ¡.›EvÞOx&€êMýzç4Y‹²ÈZš ç”j“¿«tªú¹h†BŒ6”©ÂoÐ{.ñ玃P‡\ØÂV¤(/'g¢%èôA¿}Ú2çUÚ'´Æ:w@‘Ú6Rí$H± “ᘯ¾áו릙2Û©V,H—n)Ü!®ÿxI¿E’ŽŠ(9_âñ|ÍO3gÛžGÿÊà(”h³¼wÖè u)Bã{ÐwáSÍýâ4n ø-[¬þë;¦êz‹q"EC:¤\Ö Éb0!E,%¸Æ¦UܸqÅ G®W #öT‹÷F|'a¼,€+G‘wGpïu#u‡ð “èðœ±wx“Ap€Uo"+"t‡ŒÿS_.õ Ðitø#÷@^¥:ŠŠ;Ã]¶ ÏÚ0F½ à #u™=]o,ÐÂðû6û´ HbÇmx݆Gäk×äk§mø‡:¤P_ÐäÅYP¨OQ¨ïaxÛq!àð-Âoé9ÓÚ  w>¢?'Œy*ì dÊ(&£VÉ”óg6 ØÀcC‡…ê %øâ‚Jß´£—Æ•àh ‚ú<±ì97Kå9å’"øÌ(NÓŪ‚.èh‚_b—T1!Òà‹¶ÍÎ,hêÔzÏË9¼›ã‰"Ö^Ò¥zÈÎOÖžJp9¤™#ŒvÓf¤šáÅŒ¸¤à‘Ø¢§m’n‚afN /ð]?èä“&"úXc¶!ÊŸÚ§P^øqà5¥mà5jðêt"Æ. ¿€bëðÎà WÃbâðgÄçÁ4GÞÙ éKPñÜæ<ÈŠUJþ Nò”ðwû½ëq;)äY·S„Km º…ä1!æY¤ö(^Ñõòíl|\œ”)xt»P&Ü’þ¶yÑDáýw¬Ì³ÊøÑ×õµ–”μx…"ë½È…À0Ã_ÓˆÚCÁ1ŒK‹f‡O€¾¹IŒ¥jQ÷!b9ÿºÁ©ÆÓ2<,mö‡6KÃ­ÙÆŒ_ á}äÌCÂÚ¹#œ4oDL*o§m„ˆ3ò5’nŠKépƸT++ÿ³aÅò>ÀÎVÝÏ0#t"ÁŒà=~™Æ~q $(!êLGYë´¦aÙùªª*wB¾O]³om ôü„¬¡Ì°¯È޼B^@£Ë;Ã+åŠ-³6´áa^´áyžçûPœc*Šû»""Ä¢}{ˆv²ø}Øtñ5Yñ¦Kˆÿ^Ša ¥š¨øç,d¶~Þ¬&Û¼Q ÆÛzß%ŽÑT/¸â“-á[¨ÍÝâJ‰¦ÎÎÒÃñý]‰Ä›ô~Œ¤V“ï#Vg‘3kÊIâ‘“Ð{…ì:šˆ¹KF+lJ2å)Ä1éNÿL:zT3xÕÖR.O/W¢›°‚np£p—¦9ÃI{Ôg8¢8ƒý>2 `v™ÚÎþ2m‹=±$ºêÌÁÌY! £wý»š¥° ãA7RTNá¾ósÊËÓµ}:ºçvŠ1ެ¸›€Rë»xÑ’'’ŽüŠÌ+12¡©Er‹oÙ#sÇbÇ2#BHüéQ,xê9 hGA®t4—cìà3Àï˸Ti'Ç’.€-)!ν‹KmP®àGå­«kC±‹q6_Ÿ4Û[2^E)ó‚o)²©4Ì´B»+¡kÉ&ÎR!GǸFÑGܳíãGôÚÇz´´ÐTë}1™zu­)ØÄ¿­l¸Ó|ÛâXS;ên J¹“·‹ŠÂ’É*ÖÿQ§šFˆ(!Ú5dGÈÓU©R÷Òzg>²¿ö‚q¡pÅ™ü6S’Ãg£ÞÄt÷훿ɉ“B‰Óµ«-|~–NW+¹”Í!™v¶ ‹PÆâ¤e"unc>DŸ£Ó’í°?¢üL„5«’¬‚.à¿¢â"‹¢@ _¦«à“ ä\JÍs)ºŠ¶ïIëbu Š .Xh:ièçho‘ A©S³¦ëæ!Z3>Ê[l ·JÚ‡>´É™ÙŽ4Q·mV$Y„ÅËX7²Zê­Óñ;r  ·‚½©ãBŽeêã¦w[jWNòÁiC«4êFáng>I6šfξµ[&tÓPø¦è{ªYA‹ÿÃL•"ÕÃì¡<«5Ú³J!Ôî#y&2áú^ÄGz”dÏ÷ó(YU|p”,¦MM©Âðý@:•‰jŽÆ–ÝV¦=LÜïÞÁ´ÙŒB–‚ÌŸ­^óx-‹—~çæÙg¥t5LBϬìî$ýÔ†ºàMn^'¿_wrFH×~žìpJ©‹]*+ÜL5ñ,ÑNÝ»zPÀÛR£!/Hy· Þ·ôžïÖVŒŠÅd’„S¬¨&^ã±Ë¥­[1êXÿ‰†Hçk’Ñ%‰Ešù’d¥èÜnŸîªxݦ%•û…ružhÚ±´Ä.œtr{"€ôªÛÌBà‚ä ýÂu÷ÑeóÐáÜ™0c‘zZ.HÔ— ÐÝò2é-™ý¸‘nP}1ÍNîB>î¾ÖwAr³Åî{Ú·h×_ϵÖÙˆ£G“wÑàRÞ¥­mÆö-ˆá™Þ-¶÷—|V©oÞ3)ÛÎ,[F3±ìþ&Äç©èæúÆJÉùù°¼¯é:îþϤÝû˜'E ÿ `.ð½›]^¢Á$q?W)à¡Ù™õޝ¡–WßlVô]‡Ümßé*Èæ|&~„õËí,“±§3[ÌŒèâùÌ&2Æ˼Âw÷ß6b³,}ÞVJGão Î&õYÒ¼&rà,ÌØx]ºCWÒ„û9‹…Àì’î-. è€E×øûºÂ¨-2 ´…6|:âý=WÞuË0HÏ×¶ð¢ÜçÃò·½Êžß× ¥ýZÌ®6^l+:Ý©ñ—û{Ïàç¿IêŸendstream endobj 29 0 obj 3198 endobj 33 0 obj <> stream xœÍ\Ùr·­JÞøŒŸæ¦rGƒÁîªT%²”ErlG¦ýb§\¤(R²(R&Eoÿ‘?ôgø!Ø»ôܹ¢—¸ô æ 4z9½ÌýêpÙáäÿ¥ÿŸ¾:¸÷Äžß„«‡ìðq¡^|uÀÒS}xÿÈ=ÀæC;Z5+qxtvÀÒøY™‘χÚÈQ»¯>Ž6j™âb¸Þp;*£Ìðl³e£RÜòáÅfrÓðI³ád³•£1FçûŠ÷ÐvväÊg0ôÇ24Ýžl¶|œ-—rxä?7[1ΊI>|°£t¤Å÷Ÿø ÄÈ´>.³¾WF¹Û܌֨á)¬ú;Xàªù(Õ¤ôðhÃÅ(Ô<ÇeàÓÍ<‚[3¼ô/ŸG)çáu¸m“‰'î".á*§²j’Ã)\½¡¥lÃþ¥LÞ€¿z½rk˜ä(äðÉf;zšŒb‰aÀýÈ¡™ñáqà ×"/Áß›ålÞ+¸„Õ^øzŽÏ6ÿ9zt0K=ÎÆÉÎÑ©“•›2SÇKwÑw‚7aÁÛŠI“9t+…¶:Î6¢¬–¸=÷£x╱EìòJÃ;ümÃFËÙ$Ò}1[å%Ì ÐÄýTb´³[Ìð͆±‘KίT2<ÒÏɧQº|÷oýRÌh¸ÈOyYz œDü»­N;½@;l“fž±b]ƒÜ£«—~abÔ³Î)Á%¥9?ä¤ôã†Ca)™ƒR£çÑý7-Yø.Ũ˜Éãž:†·Þø·ê‘óÙi~ÙËUŠxÑm%m5sðÝR'œ™²6‹ßŸÓHÍ´pîTAXƒ^„Ž‘ǀÛy³Ö = 5j[©­ñ­”#¢[bŠži@÷/j¾{Ùœäú Þ-W£òÍâÐÙBÿ@P>êÖñqËÜÿjš#;™™Å™¾ò È ¼ò¹[e#›ÕÀ€| žy äe;@ØI§·ò ?’9‘cÑUIoXF¸zä =•p,ÒÒÃU´²ëj,1àÿ¹ôLŽäÊžyä+ Én€<šhÒB)ƒJßõE3ùN´Ã—@~WHÒ­8Ã?ŠÃ-Ÿ ˜X\àäUÕ¿IÅ}ª}AÔGë4—0~N¬ÿЦ½Þ8O5MLd“æ}Õ-Éþ¸¹Ð«.áþ7-sHÞù‡€Fü}é,¸±È&–Üù¸]±…¡â|dŽÅ§”/AVý}aÕ€¼XÚ™Ýàû|€ËØq±É†Æmñ²\ì--¸ ÿÔ3ÓÀ[­ÜšÛŠšYï0£U–gV&zÇÏ.¹;ª?ùÅs‡ ÍdægXݘžR™eF¨želŠSIÌi%ü€²|ì´\ä¼~/ 9î- ‘NÝeޙǃpÕóo›܉´&òI:R §põóMѵÌ)®÷ÐV¤7hôŽç0vQŸ“âìÔgwÜ4I ,ê,±Ü­¨3-Nø ¬W¶àÀýâdé0Г½© Dxq‘z=ZÛÅ%uÿ6)Ÿ%`:¾¶?¼ÿ"¤á3¬2h$ÒŽs±ÁX‡¡Ç<f')†_o˜™uÖ« Ñ cÔ9ú·Ñú—w.,ÖñgÔ†’þEÖxnA“ú`Ï_-§=÷§Æö§í•ªöœù¸Ûh#Äcço˜¢²ôÞUÄv‡E?A®–cµ€a¬0÷‡S ÈûGü,ÊA((GLÍèW‘%ÚšÑ £8S‡'hliòå1(q»ºêÀ gfgÜ”\m¢PÔDg‰à¡Jï‚ÏŸÔ[FµáM"³ªŽ?×Ba”¢“FœWvÜë·–«â÷v (<¥fÄ”ãh •³-¬…‡ŸžSkì¥×w¿d€H‚”q"Õl6q@̽ má- ÐЯœ¹ÚV~Á-iëPöëåF9`4Ù6MååA¹­upG›Ô!'¬ò&¢­Œ,®±Êj†)AÁɽïC¤Á#mÃ#¶×m 'fçZýv DÄY‡Ï‘UhÎ:½•W¶ Ò ôY/›ß4ëbXÒ¼w ¼-šeθñ:µ+¸_²»ÏöߊpÎ.F.Ê”x×Ë+(媱€m0RTÜ"sD{ $ÞÏ[çÌ_2¬Kâ­ýVÈ™+†|ºa^u…ìÀ»6“Áœè³d^±ÏSd%å"HÀy§mæZK¦Ä|½°%šöš„]$ H©åâÇ$iB?—ß½PëÍɆOΦp‘}±à!Pñ\&ryÞ]´»Á>U±uðƒV÷ŒRzâ)…yÒ95Ý ´AëH‰0Ä3Ç¡R.xåhZË  £Kºâxcžèp½œJN˜¢æ‘™Œè|h†ï¥HÞì9¨óB•ç¯hVŒ°ß£*FÈ@½-»às<¢ 6ãœõü”RÞT6j\"€°z!˜?åê+/~¬Ï<0ë¢k†UŽö”` ÉÌB6ZÝÝ’¤Å&Oê9U;Ò; ¥¹E»;xA†,ÏIMÌHkì>QÈqší!ÃWë !F_U¹§ÍÔŸFodAj é]Vçkx]Ò"¬’t3õD]jÙ±’ð~²UH2S:9ì0A5iÚ^ô¢ÌýPù&Èc0¶6eÌ›s äF‘ugV4Õ‡·¼ÚßUkÛdÛïŠ"}ÓöâÚ$!ÞÔJ*ŽÞ9OÎwÙÀüè4š¿.%…RbA}Ë'ß΢vÍÈ%"M„œx›°îà:¥»BKº$Ç;=Í$šÁãEæLŒ¾öÁ€âuê™éoƬ—©û»«hLLîýY˜ßƒÅ#²¢ó yŸû/ ?òü3>s­I\}ùÈ3 Q… bP™§”ò$”òäo©¶\-"ëaAæÓ‘Õ2ÿöåɶÚí)\å@NíØöªròÈ_»Æ·ÀÁ¶Þæõ?\§5Ù‰A¤ERÚ~2˜á!«A{ÓN’ß¼j ù[ÞÅ€(Q{ܘñ5R-d‘£BN(çì×<)G ‰r7ú,é˜"š3Ò¢ù‹òž`L8Ÿ„©9ÎÁ<\EÆËñ|“;ø_xÚ›Žl&qr.7SFÎÓ„£”#CÎŒî2ÁíO¯I‡}Læ±²¤” ç±RêhÁz^Åû+4NN¾ÂisfV ]¹®N Â`´àâº#I¨<ð{¯R8@•A×ê:Zî?Â*Zš¾&÷QÕn5n>ÚøTù,ò$»£æqæçŸ!dÂ9«cJ„óòj„Y­ÐPôú&-:ÃT]kùy½níÒ4쎹äå"¯ë¨åÅÄ*C`†®ž­„Àh-hݾ[-û6‰–X{‘¬#Œ{ä ²;T¹#y €šÖîæp|âKÉX2jCç»–"ÓÕTÄc=8A1.ÒÛ®ÓhÕEí[Cb=µ}½‚ýû;*–˜j(²u(Þ£“²‘_¼Ž6ÒÑøReâ¦è)äÒÉ€J©sŽð~É:’¹M"o/­¤³½kä}¾Â›~Þ¢š·ð$¿ñ[<ÌŠÐ tÙø ÜšìŒ¹SÞ`Ì==±=:dCG!sý%¬à÷…×dÄ¢›”Äàî´êJêå¬y†Ì/Ü^ô%mÚÐðÞè¶m£tòbŠ€ÈaìÈQĨº î=±‡L3“¹åÎ=}¸u|"›-¦ä6µöèÙbã^¦T:ÇÓÉ~ol<É'™Iõ HïWB¬™;UãlûZÓ´ÿV! øš$+ü™ÙŽr¸gÅþXYÈàöôŽˆ¤J„bŽ3–³í0ÐT%&×!PqÀd?7mu««) ¦‡'T½ú&ƒ üW\¼Êéá¯2”ÿ&ƒG±2”ÖÑã[xB»ANî]X7p©Ëë „0®’6Û±àžNüËþ²‘£ÔÖ.õ{¬Wá5³µø›| §´ëó·vÇÀ $A÷×jû§ØÚ˜MÐå†ýíw úIéDÏǺ@wä%¯åB;=AHxœ:c7Š x×'mÖ§ Šä Ÿ¢ÉS ‹Ëу-ç9»t¹¨à¢ïaN])ÐTôãB WäÜLé0­#s$f·¤¡ß¿°‚ž~ö!-ãjŠx ðt8²¤D é¬ðGeV¤¯`ÚwÆMo%KÖoHžï¿†„‡Ö‹Ø‹Yƒßb³÷ÏùMu@©ãü'rT%ß~Ý™pßHF7š M]Qœ¨噢#¥)º´y{‡´·UŒEÀöà¬ç(â>þëÎSOJ)NON/ôïQý¸|=äÊ5ŸV”»O:<—'%ŸÕžý_¨XBÃ$@+ºxNHºÏ™n•ŸÓ>N-VS!$»rÞÆ.°åªÀÄWi½˜ïT£*á]DÆ )2ðg$§Û߬H»VÁ1›·—õÕx³ËÜ.÷ÒMo?t) Tø3Õ÷wµ/ %Swuá"ÎJìÛd š-»K /ÅÉ$ï3?·L£€äŽGÐD É‚ìe×»jšV¿«Ww}Dî´2óÑv­·vS‚ò=¦ÅNêysF ]ÀaÎ_Ù Æ/’v%FQÞQß›PØð ª äú —¶þ;~dÒt´£$M8ËCêdì>)„`Û§9ÆÖ…Ê>(r¦ãÜÉ2ãÞ#ô^@‚¾´í¿ë·&}‰î#øæGh×FPøµZ5ɲѱR> stream xœµ\KwÅ^d§_¡Ãjnw<ý˜~$+L‚!9ÁQ²,$Û’d]°l°ý?òûØøg°Hõ³ª{jî•…9^ÐÌíégÕW_=F?O£8žÂ¿üßÇ/Žî=rÇ7Gñé±8þª¶.~<ù¦Üûøþ ¼ ä±½‘FŸœ‰Ü_7*ylÝ_"º} %+! uYÇú$¨¼›)þ^×ßo*|½ÂŸOq¤+|z…³’¡ø’Á‚*Bê(—csí(¬­àÄ;ü•Åëºþ‹Ú ò#  ƒNÐìå»j~/×ùÚ^„my ÀÔ‹k¼MÇM¹"Ãå~Š'ó„5 AUÕ4Îðô±ýõB<ŠõŒ2ÝŠvb ÆÈŠ ÷ ÌpQšŽõÛÜQð¯KÀ­… Û¦Û‚ôËtq?m„å´C¬§ ¶8˜íÍŠâ^/7K˜Ôó(´I{PbÒÙ‚‡¡‚Ÿ ¬qU¯ãdψäT ]/òZgM”„Õ!rÞAØu°Sfø¢.pyaa/8?Ñ›Ná¾ \(îµÖD(,L8~'%J(ge+R›Ñ:¿¢×ûÆš,­½#ÈGÏo—© YTüj)ð•ítSօЬñÐpΫæúx%(OŸ WéfDµ¿_ ù™¨áÓþ¨+È+&éU¼îŽL¦þ\ R2™Rù ý#Í,s9¢ÇÁb‚ˆÃQ¿Åæ6Ÿbó%6¿Çæ)6É`—µÉ™í­² P’b¿ÃZ>'šuŠê´ ÇI¡ÓièÆüÝ&Ù["-ˆ¾t¦¼H„§ªû"Á„Ó’®ðoLË+'oö:9 è õð0á6â*o y¶¥ViQ刢ÕTyß žÇÚ1†°Ã®ÌÕb²áP¾ˆo9,éסlÖ³òPû¸‘9»ÑÉ~·2x ·áŠÁÒµ«4Óï1ºÙQû Ãþ¼±‰ K‚êó6ŸH4’•Þ'Uœ'­²^Çæ6Ÿbó%6¿ÇæB¯ãÓKln±ù ›Ï±yÍWؼÁæˆS\as‡Í‹½(wMDáôöBÇ /µäJŸ.4¯ÓíLâ‚O]ΘK€Þ@ÎÎu ð¨œ-æÁØ“†f6ʯì¨ä<ü&k¦&xíGE#Š÷ðóFpÒŒê¢qšpÈçÔÓÏ÷äWÌßy!p:GkâÖÉ•øøYhÈ _$Òavã ÞöTc=BQLƒ4+÷ˆ©­R®ªmå¶—UBvkF©Eqþ÷ð4œ¸dж85áiY¥ ®01eåŒþYõå%Ljˆ/¹4d*OÔ^$È[gý1'cM¼î¹À4+÷,9]ôìhðw·ÃsêufòeoAÙmhooz…¯©pÆ‹ vE*ñÛ9è@_v­§Qf¸ä°ç9¬Þ|w¬ö» ªUn¯ÁCH^Z^UKço‰,“K¿ê±¨ð²h$­Ú#¡¬”¤Ò~Ø«pùï#H+,ˆä‚¾cEÿå‰HÎkNôXâpo3¨q$ž×"ÖYd ÊtöÎ:êåâÕ’Ê Ž´oÕøBC]›ðSg=y'dѶìf­öFŒ(sU“ÍÕhd ÖI£¥h-59‹p]O>÷…ëb_â™d âóÔ‚šl£šaa>JðjŒª Ó¤{l)è—5ÒI,6¬ZÐH(ÑÌØ&Âô"8W¸­}FÜJ‚çµ®‰ÀLëå‡H§NF¾=^1 ÏQ‚¬‡ü¢L´üŠLQâS³<¬™+™‰Z…‹«ª=H¾ɇá lÜ„\NÞº¶¸˜aÛEýÉ)’³aŸvU»Ñ±t WSk-¼*Í51Ç•%‰2¹\Kãº{Ú—§<|¼‡‡ß547pŠIff ‚j¯®±C„lÅ»¬Ñ¶ÜÎt{®•KI.môÙL¡¶Ñ¢‡Ÿ5°ýðŠwËôNx9ç„´N$ÀM€­–¤ÞÖžg˜HZ¼RJëÃÓ’< ùR@ÙL,¿Ö,ç]†|RΡX_r(¾Z1&€œAäa42¶8!¤äß/¶K¬ãlå|êªÆ­uʼfœC ½_³Ð[Tů6RzZ„…[ñî8*>ÌLÇS}ôû‰úp‡S‰yˆlóXÆ BËIè09A’ÅŽ^ŒtsÆ[dÄ»¨1þöÆô‡Qt†ÓšyvŽÄRW½  3“ùé÷Íú+Œ"›ÏÉÛ¼Û๖°CLØë´uö©p8ÀûÂ9SÀ½e04Ò’Ê_ †æ¥gG#žwË3~{Ê6¿EÈA†F­â¼ ¾Ø ;ªÕ¼7Sœ=ë;Ùüš GžgQ|«šŸ™‹.¯²Ø^šA–ÜŠÛÑ*SñÈi:†´…Ž÷áâJŸÉ¿²å=„2ñ~öª_à,4©Øm €ï™pú«ž#-#Ç ›‰†Öq »DjÔžB€,.‡2ËeG;VSÇ…vð~qº³ºÉ[„—å]d²eGwh ¬‘&RÆ+Îâ¬û”ï"@z'‰c~S 6¶Ø˜ÛŸj˜‚K¬%Âð»…Ýg/F!K¾->}Â6ϱyÅŽ‹Qõp³ õAÑ@ç‡o°)°9Ý©¹Æ¬>ç³èO)HvwAõ»$†gAƒKÄL5¦º£8±/AÈ]¦3©¨¼¶Ü$=(·Œ)¹³CÙvóþB%"tÝ5ø +É2\ÞGŒE%¤ìû‚›p'M޼O ç}š Œï”6Ѫ¡9¾|¨Xù@ÎŒÀEq” —§è pA×zvRÐ 8ëzáK,0£m(ä;N iÔ‡üÎ/:¨x²-”~É1 6ØCŸò4è9Frû@y¯à,]«GªVb‰¾N2¨­;ˆD™ˆŠ­–¤y{T§ƒJ‘¤bÙR²Qá½ ÅEt³Þ'ˆ¢ÀÃú> stream xœ½\Ks·®ò‘¿bo™MyG`ð:F–Äv\¶Ì$•²S.Q”(Z©eIÖÿtHãÝzv––•âA# ƒGÝ_?fŸm¦‘m&÷ÿ½ÿäèÖ]³9{qä[7lóU¾z|ôìˆÅÿL±÷æö1<ÀøÆŽVq5oŽ±ØŸ+3 ¾ÑFŽn<9úa8Þ*>2%æáùVØQe†Û•V çÛ †“fÃÉv'GcŒN÷•0ðÐŽÏvÊK×÷¹k¼?Ol¸»Ý‰‘[!åðy¹üûv7\1)†o¶ó(áÒâûwÝóÈ´¾Ï£~–{ÃmaFkÔp¿ÌúM™à¬Å(Õ¤ôðåVÌã¬8îåŽ÷·œ³°fxì^ÎG)ùðÔß¶ŒÉ¸'ÐȆËÒŠ:„¡¬šäpZZo•ÇÐTv~ýÒN&-Àµ^•ÇžÀ&9Îrøçv7zšŒbq/|‡Ûa‡8ÃW~_„žÓÜý°XÁøð’œÁe™í…ë §¶ãÁö¿Ç_q©Gn@vŽOAV^䑺½„F×o‚·›'5Nf3gmuçŽ[ˆ² ,2$™ ²"A«÷J‡~þ®õ2Ü®ÈáK£ë0‰´×îùGá¶¹ñ ”vžÞúÖIÛ[lÐ[Dž¸ñ-‡íÀ—/á)®G£%ýÜGåØÜSHËÓ\Üý“rÿS·[b4³~A‚°‹„óÒuV£6NrØh›f<…IÐušjuSTó8qµ 2.)ð9bÔV 2ߟâ­!N’2%½ÿy9ä—Õêe»A/Èûá ç­ƒI1®Ó»4Ü–§LÑq])9'aöké[ƒƒÒjŽbšŽ+]žÆ³m¤n5Wd×2Å—Ça5šñj5E¦Ý^ïâfï‡Ö‰W{î pÝ@ċljơ¢þtA1ý8d ž•Q¬¼•Ê™ÛJè ZðÐA¸û’¹£Jn„2Ìû«­u;Û¤…]Oؤ¸®eø+|4 $¨Rð‡¬Ü×mT`1k3笠‘6£¤dƒIXÑ¿ q]ÿ”»«,²Û fªçï|j5a@ÿƒ:ü¸-#Œ0±ÑΠX‚y°6 ®·i0À<&ÆRpÖVXit{¥Œ•ÃŒÚvÜN#ôþ¶å ¶N‘\ÁI £™œÝI³P œIέy¤ëÒx¶5£– ŽïÌ7‚ªpBÃv”ƒVn ÷Í4IÊÊ {èfÿõÑñŸH‡9kÓS/íN¯ãÁɪõíáÐ(A…€ÕÖ«€,ÁY¿+ò­OI‡”ÕY~W¹"mÜæ º(7ÿ‚—{XGÃü4J%Åä¨Öë¶ ©ë @S¹˜­B M…Ô¥@ó²èú Øñx¶mÍ\€{j¦‡W[fF>Mi¡Ëb$k.˜4J1¢B THf…éA˜”œáU¿•Vd8åï5Œa‚:œgqB"‚´#’–‡…ïö4îw¢£ iàlÔ^Þ/—·Êåu¹<-—h„Wù’">°*½ö”´ yƒ½Nà-ÂDk?ã»ÞUG0s»wQpzÑb+?××Ûx9K{Ÿ¢f©NI4ˆ$èÿ˜¼O \µdŠÓµÏÆ(ð VÌŒ©ü|Ô±¢×Ba«ÒXt<:¼·¤è{%Ë S9ÂÆI/÷IúwZ8f•‡ZÂêw•Eê¢Ò^Ipw, þ+ŠU"5°é<Ò† ®Zqé|*£|LH0¿«Ñ/•0Ã*ðP9§Áã4qHsÆ€Ibqº6·õfQ2ÞPQ,Ân'¶¢1É ¢%gÈ.Â&Â7Ü`ßêzÏÁbª¤n"ÛH4Ñø bj.Ù[kდÿ†6¦=CÜßEÉÕ$Ž0éNÏÅè3¥…žRÊ!×ᬵ„{ ‡Å§] F>Â(¢º"-JÇõè ö&Ñn¼ëPÙXüfç˜x…°Ú“ðΔ& ô4ËF!gì}udîH'[ÅB/È=)óD"‹Nä‰ ÿp&Wˆi6¡›6•i¾³Læ£7ÖNÒý5CH;j$ð÷2~¤•lÞîP¼ìñó`‹éàåö ðÐѶÚÅÆkÝs<Aáöf* „B óÓÊ`)ñHĪˆïþ#éø%2ö )2·˜1âø/™®9º›ð*0ˆk±ßòQrªg¤fXÍ5ÐA´e{3ð¶Q)+`DŠ€Wo*þm>k„åÝÖ'\2’Žg¢p&³Ÿ—˜éíü†B¡á]&¬±.ñLæUå« š-mÖ]´T¬Æ`xû½ÇƒŽ3<Ôÿ®P›Åäg<¦§…p* ¼ó¼]R6~…gn~~J­…<˜gQüÁ:¶ãµ>8P´þÁêôÏžÚ4ÑAZYÁΉ5ùÔŠ&Ñ >– ¨¾ÕÀ7Íd0Mf%{¢Òh£Ð ˆõP[ßrrt欳ëmÇd¤;œ¿J¢­‚¿ÞxhF®±å¤§N› ´T]$@¥–õCT‹Ctx9ò#>©bóOÈWÖEÚ`Ô¡I?ÂqYõ}A oL =#_µèB§ÄÉýYÉúø`.¡r€’Ê~]Òy( è3{ó$XÌÜùFŸÙSÖÄÄ^ì˜r|T|«í‘Nì‚F‹à !úxë„|¦)'ó„tVsiBÛÇêS.³\øSªD1bÕ áŒo¡§?$ºYó׎ûT˜0ËÞ¦÷xn’¦'ß„Výx%Œ¾@Äxà„žNÑå*™}¥É: A…¹oHÜ4D[¹S€Þ[c™ÓZ:¯R!9bÑ@tðšv»´bªGI!‹jªÖ˜yA®Ðb?­ôÊ.žFmÿè<íÝ壘—³DÑ)APC EÙ¿P”W¯Rì1î8/XP”Æû%)AÝñ§˜/MÒŒ2oÊå ™&x^..—÷Èôƒƒ›e Ï$îpJ^>,—ä¸gåöKj YÒ“ÅÆ×äXk—”-`pUvíl2~È»&ƒŸˆÚÑ®lãsúLÓ¿¥*ýÔ*VQ B%ÂýI雥Õ.ð²ˆE sàMöü3„‹Œ1%jP ª8ë£ ” h–,ˆaÖÀÚZ•p$vÙêÆiç{HN—Ê 2`6;”óCIÁ'åò)™¼Oâz$QyE¡’B’´%ÇJ0C=¡z˜+髇¥‚'|í—/ìJË4©¾dsÊž®pEaÃ¥ÉaéN´qWw ,6U ”¼R£d.ì°sÅñ®<üù–YÇòXXgxêÄ…*”ÃÚ…;8À^¦Ø`ÚA ¡§D­d"Õé-€É.—’¹Å"!¦qBg7IÒ ·Ò5e…™ÑösÀQ.è4ú!õ_)–(þhK PùÚ' ]¬³S ]½“îF³Û‘tÚïªÚ÷áFÃ(¿@ù`ZqÕ@•¨ Rúå-©I²!`tšŽöaŠEESýŒ¿ÐÙA:ç—‹Itn?iµYóâëJ›$!xý,­m]Š·°6žÑA›uƒ£hÇhÓˆ²†Ù€§÷ÔûòúØh_ù¡*rQ…@ Û¹R䇵nð_ïÖeÑô‡ÝØ W:–½Hݽð¶Ö!ÙºŠTtQ ÔL‰ÓzÉýY1Áy”­\o"ÕGÔ¡ç+ÇÍÕi1GUxIà.¬Ìt?Zêþ¢­àY('­¸\û”ï÷ðþÀSwé»^Ò>’VrÚK%ÐjÁ "²(æqž²¹ôgÍ‹a`·ý¡ÁþWà¶5éÜ÷5aÓÙ26 ¡Äº#@çgsÐ#|µü0I—VÔ÷ŸbRAõ=¡ë°‡‹a2òK4d1ûŸé¶+é5ñt%CÉj>yn x´^K`ØãU5tJgõ+ýå"Á}õ†è)*dkœfNû©Ñ¯13!s{+ñkÿÉ亶ê÷Àf˜>S›Õ òãÒyH÷ÈçÇGßÁßÿÄ(endstream endobj 44 0 obj 4160 endobj 48 0 obj <> stream xœÍ[ÉrÇð_pøÐíÐ4º–®Å7Q¢mm¶LŽíK>€ Rˆ‹Héà¯õgøà¬=«+kfJlöTW×’ïåËÌêïç‰Ïî/þ{öòèä‘9¾x}äï³ã/òÕåÑ÷G,þgŽ­láÆídWòxûìˆÅö\™Iðcm–IÃ/¾¶£âSB¯Fa'e”žŽ6)%¬^Œ3t#f͆'ãf™Œ1:ý®„‡6\ÚI(;<+Mÿ“›Æßå̆GãFLÜŠe–ËÏÆœ¸b‹þ4ÊiK‹ä:Óvxœ{ý$·ÜÂÏÂL֨ᬌúÇ2ÀΨŴ¨YéáóQÈI*·ÓÜðlä|’šáÒ½œOˇ[ÿ³el‰k7Ùp]+«æe8/wOÊch(?ÿÅÎ&MÀݽ)½„1ÌË$—á¯ãfžô<ÅâZø q&†/üº-ÓÜïa²‚ñá 9‚ë2Ú+×@Ï–ãéøÏíçG|Ñ7`;Ûs°•×¹§f-á¦kòÈ3x„-Þî6r“‘Ç®&½Xº1þaag1L0vÍ'¥Åð1\NVÌʯ*lÀÌÁ(ß¹Ke…Nû' ìjp.Œþm¹‹\Œ°O-¸"zZåaËI€!¸aKF»βgž†-`|Æ7 ÖÑØe`èÞ†Ûy2`è_9ë•°&°ó$Œ†Õ€æË§#Ÿañ ;Mß–Ÿ¯rï¡! }xŸ†Ñغ»ÙñöË£ío¿q¯ç“³Lfäl:l²±Ž§#ƒwiîP’îÝ–Ë+l$®¥’ Þ¿á àä¾ ÈE ÿûE¹|ã×`d:ØÐb¥L6´0ÕAÔÓ„>Ýa¤ Û×ë›î!·Ýt Ë»Ýzñ%OÀQÏŒ'´¹ã/wð¶×T.À®<ò€ûõŸ&(-MS—ùæ)5¿rõ¦ê3½>,µáøÌB;0F0×KæwwÖÃÇÔ3I3=-wQ5µøY ½tYî €¶µu¨‘@Î/ç©p¿è±óÊ2*k o+ôDÛ“£ ©Z 7qêž éq=éŽË› fâ{xÛk¸mÚÄ}Ú0àÃLšçÀ8×aJ¸$øDiÆucVî¡Üïü,$‡‡Ð¶ž•¦—¥«Ü„Ødà. ±z`Íäèw䟟Ça[‹ß‹çYÜU)rˆ]‡ßwÐ]\gOw"óüŒ|uKwà3Þç–›bøEt|š]2 Û_9l–¡­ñFZŠ¿çÕ544-½Îê%âzqK¸þaTNÏ1µ¿W¥OšAoƒ´´9+H9^•¶cå¨íe¹D € ä†|ì)ZhT:80ç2̘´]®yv=²«š ‰tµGN0‡Íñ`ÎRâq¶„ÕšV§9,Òvq] tM¡ùùÊaxàO^wI)üx€(£{Qš9t»©X‰zCʆ+’ê ÖÒSÉ)5К¶<£ÂåÛòš4 Ƶã];… ´&`

&aÀh“N׿é{ xLöi·â˜°µ` E9I2y4Œ[®uDíô®–Y>v›¦,XÕÒ Ê[@KV+n¡GRfÕ„¢æˆóbMñI£ŸÉ^1”„n3«ûȘ…OzBÞ÷Ä-~Þþ~mÚ¹¬)¢Àþ§^T×*¬«I™¡T°Í/F"HÚŽð*2¨p,2g„¨Ó(c˜ »«4Á/ ù¦b?]™š®¸ÔBÐoL -fµ]i.ÉMæ5ØVdÂ\~$3B­Êd>¦v ©–N8BkÒGD©°Ö´¯lHw Cè,’ÇtÃ&$Z+ÙOT¾¾ÍÔn¿ ¯p@ëøíP ý»61 ! Á¯ G̬e¶²/Z&¿ ªÒpµ©„J¨e íî²±1¥èï×ZF‹à„T /¢7·7,ïIÑ9mtü’öCè-ü¤ïx‚W}R€wRîÒ9-¸›5H•¬‹Á˜õ6õ)Ú%d3´¦¢…%z¬f%o•ªre¯‰môìakj×þk×õ"fa:®á™9ýHs¢Ôêa“~–£â6¯°r˜÷K,™ÐF`-q²,G*Ë¢“žøé D)½´“gHkÌý#˜°wËÏŸc I‡c¥S"+¾Šz¡™jŒæÃTU'}ò2‹†í)Y’¡)÷I³4£^–þDΦp@‹A&AjÉtJb¹xÐÖ¼f,‰Q¾ƒŠŽb"ô2§Qn¨DÊÿšdt·¶[_k€½wûIâÆÕ¡D)‘¸|¿W;¹´è,Õ°½7¹‘Ó ýÊá‚£ÏqãÆÄ^¼ºK³XgvÂUx¬A¸nKË«ò‚Ø’Á¢5øoêôÐÛðZ|:œkà+ëUþ]æ« ¸V­¸P®bå`k¤#-ÿ"X(Ø’ô{iùØ[ç» óu¾ OxUžny»Â%¤ÊÍëñœí8­1Õwâì¨1÷¦¼U¹+wl²«óÒeÔt‡ í—„öõR*±#Óìj‰B/HNÜ[A)bõ&ÌñÛQG9ï #š¶~²Ê Ä ¼¶¼MàÇÌÓ¤ ¹X€tåQR˨íʜޟõ½áФ…Ù½CšN²9F]—T™¡V Õ.cÐÈꕲ GS:»"/†W-7ˆy#¥ó'Æ~ÉgB,ë’÷/sæ½-@w&£¶ Ã+ËOLhd'†8+8DT"JÛ]îà ¦+âÎIÜ¿ä™KI"…¹¦!Æ4"Lþ(h&0Ѐù°wÝ’(]†ü Dú¶ˆ”ñÒë„€Ø_,9Èñ䇿& ŠnHžE˜G†GW¹ÐcÁШžÏg·h4jtv21‚,0 —%Œ9E©‘þ_k¢Àã©HôíXÖ¡–ù›øêM>ãFð0rº ÞÊÊy!ãë9/¿‚uÄKÇ®ûáÎs;>Q ²L»wÑ7‡‹‰õ¢Þ±˜Ä~]^õ{œè¥UUe,ªl{7õe9~xÓ0]–7¦>%ðþøÜû#S¤6Y÷O!ÌÑ9-SØ[ûGwi6§ý}ägJÚÉþr©r—óݵ •Ȥù*K6‹¼R–l%- ƒ£ˆ¯=ÔàîêT·ŽçU@•G8§“@‡º¦”úñ®ITçIo)vC“¬KâðM(Q¹£§Àk]8ƒù:»4d…Ùß—±”ìT#Y¤þ³|³fÆö'Ò°Ê#SèÆ  úÒ4BxÐý‹BòÕèÝÙ9dà®Ò¼+;ç%*!MYg!®E¤NOÚ¸\>H2fĤX·ˆ±KÖ¬ÏÑd' ;¤C§Õš£r~Ýk]ØäHüeÉh?È'åvibײS¯î›¼°VtÊoQ Û:io"ȇ5®we+ÕìxØdØw"•D1©6{®—ªßÒ~©õ%†Sy»"e½¶°\!Zt„åÃŽÓYnúnX{­(¥Ü·;sË9NŠÓªU'.“ì;@±ZÿÅ@èð3~ïZAɆ}ç+þO"M¤áxŒè ÇÿìœêßàgàlÆ;`CF™Š$ó4›ºHÒMɸ „ s¥=ö“¿Émñq­?£k$–਌¶Ž>šEâä$À!×?íê Û «$Ú䚤¥_cç¨L®ò´ÇŽPªÂè–B}Aµ‰‘ ¸EvYH²ŽWžä¢äA.Öΰûé2·}ç‘+s¤0v'+) ^ ªqS_û,úË®ºìì¾Q€÷ÿ}4À‡Lô¾‚x¾Ú:Ê£5MzGÆ‚®\ÀßõË;ÄÈ?ã/µ'[„­2iXrÖx7ãúø»|÷fýîí“–QºCÛ‘ÁHë…—÷5Àôó×nLI¥`ò®Kkz…Ù¾tñå:°ŽòÝËv´¾hÝð%Öü,†­`;†·$—þD²fQ1è }N¨wv1UÒhRÄyLJ¯ôs³NQt¤MÆ—¥šYgÖŸžÄçA2Î’áp7Aõùº§î¾¡Ñ.=W>ÇMCv<Üýþþ àeMendstream endobj 49 0 obj 3521 endobj 53 0 obj <> stream xœÕ[K·rÜ_1ÇCC5ßlädÇȲX^ŸìÀ؇v¥ìKöî:þl.ú >é*6ÙU쮞YEB@qÙ|‹U_½8¿®:¥Wþ+ÿŸ\<~–Vç·¹w¥WOÇÖÅÁ¯ºüѕѫÏa‚6«^õÁ·:<;Ðe¼ IY³ŠÉ«®~Zn‚Q:X·þmc{RHëç›­V!ØÞ®_n:XÆvQ¯7[¯RJ±~6Á¤­q½²¡_ŸÑÐwãÐòÝuzýl³µÊôÖûõÔ|²Ù:e‚övýÝÆ)Íž† 8¥c¿þa\õ/ãÈCøl“êSXŸÕ¯‰Àª­ò¡ qýõÆ:å‚1ë£qàÉÆålŸÖ¸¹QÞ›õ«ü¹×Úž@§^_S/0,ՇίO©÷1Mc¤lóù}ߥz콡iW@Cç•óë7ÛNÅ®KA^äŸ 2Ú®Ÿf¾Øè* ø}8¬Õf}'RpMÔ^â€Ø9`ÇóÍß¿>0>*“@vOAVnÇ•f¼„N‚×qÁÛº.¨.­€Båb‡u>Ëdº>pVÞ‰MØÈxÝûz“=ÜoÙÞ뀭·~B½/hìüÐ8à審h#°R«ÞêÎjœ˜ šÚ¯´S°/+ja8(,ÐØéï=lÚÛ.H!WB54¬okúNÁhë-Z`3œt=àá€Ñf_µ–иNÜû›ƒÃO~ZŽz¸xß È¨ÅSzç&RŸa Xu¸Á%«šÐ5ÐÁÖ”±W²Vicù™fîŠ^Y'+Ì"{®yìíhªN¦÷Î$¿ªBšw^0ùbÐ’Ô…c½¤[¸𛀌lñcšþƒð™Úp/.6õ@¯c¸âŒÀYt‰3ZjâxpBÁÀ·j5e/£ô’(™Ùª)¸‰*ˆZâ,œ6T·›•®àš‹¿­Âi£æÆvÊÛžc~CH?ê]ã²LOœdlj@¶Î²ó¢Û@`1íEVw£Ç׸­÷¸Õ0 tf¸ÎsQ%çt <,©áØ+  p >erÙï«4À_üPxsCbŒÔ©y§I 4¢k[¿_#-&E`Éí8ô”$mQ_±/™ÜÇ9¾ë}iºÁÙhç‹è5~¾VO¾¯ï°_ŽZúŽ˜]%ÔèÙè§‘º‹ü³¶sõöT:I·"C&ò]ãxU}"yMë“¶JX7m=¡º”¨¨*®ÊÙ•¨ðßE6‰™ìóŒ,G 4·Þ~Ÿ€j5 $‹‡èz>g1‡ÑÿDÁ#ÑYRÙЫZ]1«È ·ò}ãm_l‚Ò6…Æ‚Œö.rkÃNÊ#ª&B·3Aøš†O]ž¨Mª`ét\ÿƒÖb€|Bc™[Ç6{I°wÖ ¯î“%]p°²0gìˆvcpº7ü"ˆpq¸„í¨µx_Nï5é’VfÍۛǴ㠱•ãÍ$H*¾ôÇó¤dßiµ€ÅȺx5 R²výýÌ^NÆÎ¸‘%ïÕT1qhb°†z*Ä&ªži½¼úLG½Ê¦½–‡Ø8ØÀÝ@É »-.UùlähP\­œ«Š‹¡«îÁaë—ÜËÖ˨>!]ìH®h±7‰Ûþ»ëFí ¤$=Zž!¹ÈL_å1˜Ô¦Xªè’çrGêÎVbªF—$™AØD뾯dήqÌlÁ5‚ùzB' &Ûè®i¦*¾eZД\#ž |4WÑ>rnåf`êè3+=ÆPYÈgÑTÙ Nj3Û+Ã=ýÖˆWm˜)#‡ž õBlÏÌ ;²»°%¦4ó ´ìõ0^L <=A†úF"€©ñÑô´ÓØ4®†²­–@§±^%£Ã3$ÑtÚwYekó–š¿Q“½¤æKj‹c_QóDÜâDœv*ÒÀvûšÏű·Òº’^kÔÈL}è>äÔ°œ±½•£G;ìÈ4é#còÁÐ¬NiµõÙóë—S.VJ¹|‹þ¿Cù»ß ›5þ—5år‡¤V4-ó¾4%SAˆC­ÌaF¯KÀ;žæ‘©ëêBHÐuîyµà×ïÒü¯¥qØX3!sJíØÐYb¹¸~5gÊpeX1¬`f‡Ù2rl虸Vµî>2h."—:œØiu›&jüCP‹qèR¨²œ×-9tʬÍ7q¶w•’­±‚÷k<'ɶ´íò"KBµx´w…Ùuà/Æ+«<ƒÊ7pðX®öRÄ…¹‰yÛ*T~šR'ÈIhÙÜ«s.Œa×ÎÚ@=8^cðiÌÝ;kýrKmŽfoØÀ’8sþL”w^¾!·ž—l€=ß WìbÚ #Uù³7^s­ØÉŽy¾Ga™<Ÿ-øÝ9±Á:q÷a©Ä•ãŸàDNëxaJ#69Þå8aB*ò`^Hê=«(ÙÕfÖ̲\hZH¯ ‰Wc<ÂÒÝ÷ÕqåE1vf"ùx—ŽÍS>Ódµí—¼:øË@Éÿ¯°¿ðaâ £š¿Ú£ÛâNïiWĶ…@°°Sá?X¡ßÕ‚£Ì&³P„±ò¼@@Ð;”±ØBÆ€÷µzÜôæ%¦‘÷põ:ï‘™ØÿÝŸ[æ¢ÃqâÅ °hjßRçòÓ¤’Òû¯ xÎz!A1>áÕÐ63á¤ÌÄÓ ›ÖŸ±i†«QÖ‡>Ô–æY–P` ‡ê͉ØÏ&½Ó×4˜¸˜Õ«Œ\*…æiûÞš À`ðTø ¯>õÉì“­à¬ðdz§¥^+DEoh q…[Óå\Zò·KcáeÓöòi FÆ }/`°T-Y”¿2èˆ#5il±çÒt¦}bú•’/ .ÛW“º™9(Ô Ø·Áàð - Õ– &’7"+å<ðäE‚Õ.‡¦¦ #XÍ=Œös P§”$`½÷û µ^x´û3 ²LŠàË0ý¼åóaaCéžhޢ뵨Dƒ»²òÓÊÄøšÉ³©ò£Ú@N`WÈf?‘› »†ò_£!>ÁÚð0±z;ðÌ´NRzdOvæ«Áx?}Óš/™ƒÃ ¾‡1¹VW?`R <)ý|b²Ý8eª½Õ%å-ÃÉÆrû8¼ÖNàUÀ‘è"íy9’IÆä˜Ö¡Ãа‹‰i 0ŸF“y|’K¾svxï84ÓØ–0®©áÀe±8¬Nº¥æ 5ï¨ù‹8–UOØØ‹é€Ü|=Û_Ø—ÂO¨î@{àØ©1ÕU7{BÍ©©©&Uï&Œ.íÉô¹y=­ù4Dé@D=Aö ?¾)*݈U'„«^+ XÏ΂;€Rbž ‘ßì<fašáìÇ»‰×ªÃ÷f¬d%õ Ã´Ȉ¹ë 3šåª¡\ûE¬î‰·ÇzñxRûÏ;‹z%Ý nV•y¿¯FUúYŠ)7Y»ë9wúJD9×™¢ÃS†3&^ˆ^Ss.q¤Ã 7#øÞž¿=Ý™z.1×6{ÔL~sd[—TNÒPÍb±«‹àp#V_éæÕÌÌcÅ¡»B¡¼ëÌgf?]ˆ`¼öd©?¼"3š'þ²/5:¡<ÒÄßü0²ZÓ9„ò¾Ì³c>Ü}ñz¼¶.Cý5ÛußÛ¼áA zÝÃ^ûžNE²³ü©*«É]“v}öBlµ«mÅH~W|]òf¡ÒÅ2¶ß׸ë“Ç“0 ¸óøó8¹6"ª˜9#ýcÕÞy@Ñ©9þ”B“@´øÏ”äŸKÍ“!iÀ[ mïb™Ù½Ò/á² Wið¦!K¬©rH¹t¿ðã ½ÏSäu›DÞO‹/Y 4 õmø“ÕÙïNCDÓtó›"žAûâðà{ø÷o8ÿm¢endstream endobj 54 0 obj 3442 endobj 59 0 obj <> stream xœÝ\I“Ǿϯ˜pøÐÏ¡×Ô¾à“A’„± #Ä,0Œf13HâøßúàÌ®ªÎ¬îê÷‹ ŠêZ³rùryü¸/z¹/ðOþûørïÎã°z½7ôîËý¯ÇÖùÞ{2ÿCäÑû÷`‚Tû±N9³ðbOæñÊ…^«}lïáÃåÞwÝÁÊ©^:mº7+{\螯ֲwNGÝ­,£…—ÝÑjmû‚/ß0i­Lìµ‹Ý úßqhþn„ì¯ÖºWQ[Û}AÍ«µé•“VwV¦·ÐŒüûc\ÀôÒÇîɸêýqä|Ö¡ÁuÇtê_è€ §Ö½uÂùî«•6½qJu‡ãÀã•R½Ñ1t縹ê­UÝëás”Òfš@§ì®¨— HKE'lwB½wh;Êz¸¿"” `ï+šv g¶7¶ûfµ½"8™i1 ¸—(¤¤î¾袽)GÀïé²Zªî¦y‚+:íðÂ9ž¯þ}ðÕž²¾Wxçàxåz\iFKèÄñÀx‚3ÞÚ׋°'ì>­ó^ÄE`–Š˜o+TSÆõA¸î~f|Uµ@>ЕޝuAÍëÌ¢> UÊØÛôܸåŸïé”Yp$k>Ù–IËÕ8ÿ3|5¯eÓaó³ÍÆ/t•®ëƒ\½2–Xߌ›­ñ³)V™q°“q[ôM»/W²Z ƒ+r?;×tÃ{㞌¬ŒE™äÓRoW2ôJÝèP—iû e÷dœqÓuf;ÐS®°]ëøŠ÷^âQ£.äRøbô ÇáŒÙñû)ñ}- Js™êÝn¹8;'1®Ð£J’@‚Ð}Ζ8«„OYÓ; ò_Øv¶ÏLD•í}[qÒäzÐDŠ®3I×RÁ)„J”='†f¢A\ŒÄýèUÌûmšþˆ†¶…ózT¿¯ièÙL9ᬋÉ,Y’(&0´Ãó¬Â[–­¹`ùÏQ"Ø$¶㸛©tpZ3aä"]益àv\`¦”ˆЦ‘ìyÜIøµî¥Vå9ah}«/•¾äÐè>˜"‡´ç;:È!-ÿrü~ )àMQˆ1¼eóv'ÄçYÜŒôU ½ÌTž7é?yK0^(@ AöB ÏUÂõvû˜xÁ-(’D /UàÓ?Ÿ6õ[UFµ>Ѹ/M¯– 64¿ØR€gB¦Çˆpê¨#H@ êB´c}kH£€…Ÿ#î'z¼F|±’H} Ã+ê(-µ1ªêµuo\–¼Á“Û Úì²cš„°yy`$dã2 i Ü$*¯*¬q(r‚—@\„r8RI_N¢ñÆ¥|”iS/`úQk'˜ªÍŠèÁð”Nþ¾"ç\][n‘áŒÜt‰ï…Oa á <Ü;øÓw°<›²Â &®4Ϩy26ÓjÊðÕ¨K\-‹×šwMÍcjÞPó5Ù!žM…_Xìlv`ÄÕWã´ÖéGø}G;< æ7Ô ÕZ x}ÙÆFŸ±ßŸ&›YË7œ»_ KK_Róš?PóÕôúKWÒ  Ðæ[µ„Õîx)×[ã¯q¯3j^}š{yÄ n×{yÃ'»×ëæ{ÝPó˜š/©yAMÆÏo›½ÉaÁïä´NÖ`úÚ´ÔtÕª@T¡?!YލyÛ|yF€“÷yîïW4ñÏÓ‰µW¦-\É‚J“?o»d#RUÌ]`nÐ5–dvôl‰"÷“šÏÔ3t­R‹S†!ùÉ‹M‰Ïdm¦+:—pt>åi OQìϨ#Z²eä…(@\Ëmº ‘-{C‡349q6›ûW(Li†Ôvß®$º°R-WÚŸ­T_ÄM1¶A >€öƒH¬€—ƒ²Õò;F¡f‡J«*5‰Ó¤³È§¼Û怣¦·ø}ÌàCXÀxG Fk× 3qg'°î•1ôNjö‡z.(»âá쬸ìŤ御ßИ䢎ù®+™CêXÉ15™>ÈðÖhÛ€·€jíà&LÕµ¾…kŸr½¥f‚wÁsäú¼…a½(™á1ÂE,›fòiw²3ò}VCË«2TL«£6ˆH‘N ¿çDÿ60ŒÚ„ßìèkêý’vºm¢òó€ò;€à¤sŸP3lF¾ˆ ?N¿3({5Õä¦]Qóp†`9œ¸ÁäzK߆1Å/(_e˜ˆ!¥Í]º¾…eÙRM«Æ- ìe£ì¥² ¨Œ!¸ƒ¨R‡ä,>fž›cŸ5¯ÇŽ|Ùš¶ 2¾žRçý?é¶gr¶jqë®ÏÑ·Š°è½0Õ¶øMðCæ‰YC<$Æ¥‚Þ ÃšßÛèäœÁ¼ÖRó/…õJ¾¨¬UÁHÐ,ÅÐJZÃÅî¯íx(;íâíxÃe?m_5ÌY†»*EOá %q¹©;”ezÒøŒ6%Éë*~Îð ‹÷³SÝäÔÑXXæ|FåI} …Êp„ÚAl&«³÷™€¦¶Ÿ®R`ØX–b P¼ûf5 %òØ:¾i£"¹%o|háûè—bçŒWšÜVÇ›µ(½‡gÉ2C/›!éÂlÖ}f{»r˜Ê–naþöLÜìîšSO-S/Á|ß›1V¶DÆôæ†yO,“Æà:£"JÆ€uQjçÅdœ8 L¶*&)m,þ¢Šó OŠ©ƒ4Ë!A¿]›¼ C¶‰rÊuyéMù­Dü:¿õAù^–¾šÏ•ü lwQGC7¸õ0õà2ÐPa¶è]ºÎ· &äšãC÷ˆŠ?ø?Xûñ˜“}6n÷€ÈǧÝ!N¢ḋ­…U«òi¼Ü *¸(iÛéÆƒŒñîNÃLfg¾Ä:¦4 `Ȳ…î­îZPu5D¹Ö3bj°µ>Obë$K6³Ò“oÙ,¶ØýV™Êö}3ƒ1¤{d´(º °v(‚íMm_[(ípF{ÀíRò»Ê'ÊÔÖ0]ß÷ÿB<=‹ÊÔ…?È0^ J¢¹Î.§¨çÅ3,gL;04Ì–e³6³ÈÞT4Ý “;ÍÑ;T)Ìêa+„­q%·K³ b;Ëúh¤&…¯£5cC T™ÆË}²,½d<˜ÐX¤ R¨[$žˆÇЄ!:2ÊåìI^g½¬ywjuIO¥Å2ó¨0ç´q,6xwv‚ɶ1ŠqBò]ÛÇR8T;Ut‡Š;¤Šú¯Ç ÚRª8´Bj_RbfQca£!&zzx‡BH9˜cŽ+ ¨b €‚„–<|Eßc°E—Yót/@z0iX¶hƒä;ág¸“•ŸzØÔø¦”ë¦ÖdŸ€ ¿:Oº‡tæa–‘ºÐ £Í”¿ÎImà}vÏ–Ó‹¡p_ûý†îSxà`·Ý4”@Aƒ!€‰ËJï‡R ¢ Û•~ÍÜ «ŸyJÐ`SíXΓ”ï·­N¬HóÍÔ˲¸{ÕÜò¦uSÚ’iøÚ.4\ª’{W=•€É…°)úR“ŒÛ'ØX•ƒ›=ÌŽ?HÚ4TT×÷,Þ¥œ5—îù`–Bãb)Z€¥ÍFNR»þí=‚l@áYo~£²ºUµUY]!ÉgäÒg$ÃI%d«Zº|Ç[ß bÁ9XÖ&x­ÜŪ™Ø¶‹¡‰Tñí T'$˜¸ßM®Þ6… ,Ⳙl¾Àîår~A÷( ›ÂtTG’W`šmå¡”ìÅR]»—d÷uó\ó"d7äìvqnÒÔƒ]*Ó‹d¾ ƒ@PäA·C.nÙòÈ÷fAô˜˜2¯æeK“Œ•ÕaÁ3¦"nVÙ=5ù'åsñ0¬ZíOƒ.ѻÊ3k¾˜Å¾‹¶™¼]¦ÎQC•:ÑvqŽ.ÏŒLÅ×ùãzp›3Aç"Ótž©ÕVÊsΘD‡Ç £eìpÆCÆãÐQ—/„–\Ãõ´ž­Ïa:ºì«B–‘¿†Q"öB¹­%Ð ø5+qfœ¹K,™€Ó£ŒZ°¨·0Ô‡ƒ1|_¼g6a2tóï èÔ˺“¹­#f÷hÀU<Ðt!ô@5VI÷úˆ‘Î4a>6…p‚xøgjÆIe講Ix1+?×ÕLr`e2Àˆ\ñèè1hZÌ1Âx,ÖI?ÌRȃի~14+™`ˆE]›ÓrÛʱÚ.ÉÇg ›^žo-ÃoõØòwôØö×~lv…é­r ¿Þ˳—öÌÀµc'%ÍŒW[Ïì*Scùfe-˜Ü&Ee»EJžRŽ…›…?š@ofh&w-ºµôì˜Éåp…lõô¥ŒúónJôtÆK~áš\Šño‹u¬\Ñ.Yd´?·‚Ð A6üdÝôf'œšÓȈW'?t´Xb·ÝÕ{ݬ…Ãà.O¹û–°›£â­ÙOE«¢ ë߇jzÚF—’Ó€á§Bõï?ëÐû¹T~¡ø”Â-¯›ßç’9Oó<A°±˜`!ã['f²×nÓÛW[äp®«'ŽÑ†T­_&F þ‰ VÚÌC¹úb Æ £åJa.³¼œÁÄî#«üm!…ûwÔ`Z x&‘¥ŽG)ü¥Ïlßœý`š”ú'ºy-–´lzD³Bãi˜µYŒŽv°fš­¨ÿ[#³·Akæ ÙÊ…àì/öþþ^ôªiendstream endobj 60 0 obj 3589 endobj 64 0 obj <> stream xœÝ[Ys·ÎóþŠ}œMeAÜäMԑЖY¢âŠã”ŠEŠ&Eê mIÿ#¿/$i`tcÃå*’ì¤\e>¾>€}½äL,yø/ýûìåbç¡[¿]ÄÞ¥X~]Z§‹× ‘þàiôrw&¹ôÌ[iõrÿh!ÒxiSrÙ;Ãzøðrñ÷ne%VéîÍJyfuÝóÕZ0k•WÝÉŠÃ2Š÷¢{ºZæœëów«LZK홲¾;¡ÿ.CÓwÍE÷pµVLzeLw›{«µfÒ £ºoWšhzúýaX@3ÑûîQYõv¹Ÿ•cÞÙîRý œ¡Z1c¹í»¯VJ3m¥ìÊÀg+)™VÞu§asÉŒ‘Ý«øÙ aO StçØK KyËMwˆ½;8²Žç7ž»|€Ð{Ó^ Ü0mºÇ«5g=çΊċ8`wàªû:òEõ:“¾‡UBv—M Αڳ0 çØñ|õý¯ÒôL:ÐýCЕ·e¥ /¡3ŒÅãTñÖš[ÆÝ(dº÷ý°ÎpëAYL^É;èŠe©*Éœ :µƒ+:Žð?I×{Õ^è;Oq(áÃU‘:z†ß‡½´ô6>(ÍI“oP’—@€ì™OâËC"æ×4.ò{- HÏë=IÎ8ö²¹ÂI0à¸ê „ª³1³¢NàP²j³“@v%zß<âqéüC…bΪúÜl8Kg½tN ÆuÖ¹ÀJ#ÀÀ}÷b3ß ”|ÀÞ«À Íz`æéʨ ·îRqfÀÞlX÷®½{#Ò0~6<¾‰p“%áš–Or[ĆXÈoWD Õt,Ñ„#<ÚñDü Ñ5áÕ˜7#…NÔN8ŠÁö8ï†é×€‘—Êj »>©ÆôˆÜ&C"èÁ¿cJ ›ü ÒmGÙÄqUæ:.´bBáH}ÈíØ}“ Rºß„7ôÕ!ÆyÝ Ø)—7ÐæM—p 4€ñnëQË£S:¦Á{Œ­ïi$BlòÇNbØ; ïc³Æ”žSjÊ€« l€î£ë'‡Ÿå•QJj\$ @Õ; K•\›$ÈÍP<“ð8ƒK‘ýÙÆ Ás2¯éƒ¬ƒâ8.–û÷û¿¯#½†‹är­I#ykÓÊvøh)ÁÇÈœ¦OÞÈÙ& öe˜ï%¸PÚ±0D‡ó8ñ¹qy«@jÁ×G†¨s¬Ps¿¯»…ó3`^¨úeŠ3£Hír€{íÜóB‰r|éäØÉi§”’õ3zŒ91Ó.½jždu‡Y/šk‘Í‚7â=„å×$H¹ÂôWh0k>($K\5ñ÷i“Ê1*|¯ƒ3Ž–ñ›cþÇNÒYÄÜ.›@›ÐB+3üRh¦´•¡v¤+bÉhòÊÛà½@ë¬ó¦ê[KÏAÓci,T4µ )AþO+TÈ›OâtïÒWׇ‚Oê:Ãoké8Ó6„ƒÁ +²ÞÛҚ졬h•®ÁÂÿ¶tEæOòôgéÕ§(­Å””b%QøvðC Ápr”qIÐãíjkðŽà)ÌbKŒ8Tèz_•w#êA\Hœï¤d›\G¬;@æt+4a¨åÏ-/q€é+%kB g ƒ&~„¸íh·¦ªÀ f@ϰpD‚ô³¦¼p¶ê `N².pMÕgT¸‹‚¬<ðÕD-ÑÅ^—æå€ƒ…“Ú>Rñµ=’hƒ¤5(rÂòIê:[/­¿GÈý6>e·]Ü’— »B„muÊ>F•Qb3ÞûÇÊßÿX˜YÀ±%I!Ö+á}Ç‚{nußÒÐäb"Œ|ñým'U¢„Tq @xØ„<¢’Des¨悚ï: ]l+t‰¿TrÜ”>$Ö×ÙsDÚIño¤²¸þ¿Ê™q|?­tþ…lúM0x¥¸vÑù›P1ó…³áäò«JTÃM[ÐuDÇf]´ ÊhÌ5Ó®-M[gõY‹žÀÑÐ8ñÛÑ8ñÿ¤qò×Ñ81§qDÃRqƒø,’kb ‚Në"¼0w!Î&¢Þ׹ᵉþ|x-JÚ=(ä10îˆî ›oVB’»ÀÎClž¯ ÑÐ\‰4)Öç±é8ù™ì ³*¨yÞõ¬Ðt :fMyKç@M4¨‹‡È{_>?mEð­w?•ÕqÇg+ò%ã#€x`Ãt½²ñi ÓQ’H·\H"©Éné\ãœ;¡ÓÜpØÞØ7†uz/†Ä@*„¹ïyiÅŒD 5›|\js!æ^Ñó¶ò¶S²ÖÅdšËØ*–Fçe «Zƒ&l½8$ ×*>íHÍ'Ø<Áæù¸W‡¤à²4[Œ­çôÓvíh‡Õ¤ö ž”9s5ÒÝ >§E¿öU}»öCH$)äû…íù?á^¤ÂH`û/oïdÇDî0šéa¹3¢µ£æõèƒx í`{Â,äy'0PzgJh©€2õ¯¹ªÊõÐú•͉yˆÌËíãnyd“ÞîhˆÚ÷E7Aýð»±÷õ˜I+6Ñ)o~00ºaWp 9¾aoç4Í@Û®‰¶ý€—cp­‹ÊÁM `NŽÃ…„cV¸MWí[¤GäiU¼Åí§Yçüc{Ë•NÈùGyiˆ7¥Iä@óŸbH#>2Äx<€³Óbˆ6¤3ž¼GÁûù5Òÿ§ÕÕö;ž\s¯Ö€ÄÙºþz˜1ŸÑ·kîé#<lVê7•¤¦×¾£2@)M›Ù[Ic(.|›žÂEË>¾`‘Þrmº/)¡O¨¾¦x}Éb´.µ‹O“Gº ÕõÏW¸HqŒÂÅ$2£oå‘Hë¶yd „~ -¥‚ å÷¥$úù ÛKÔÿ/JTP‰Îx~«9ø¦+.ÌÁE+€e¹×:Çd›ä–˜…â½×SL»'‰± ý~'é2ÉÛqÖî4Ÿ×;Í88¼—@Š2ÖgšS^R…ˆß¥bÁ4]r±@^ŽŒÉþNYèý sëAmïášWH!ï´$Ò$‡Èë¥j^hîȤ QVm–ߣe…Û±2îÆÓr$å’s¤–P“*+Ú¥¡ñûY. lyçØNûZq<ÉK›°„ñI [˜£­ƒL¤ëéMÏô~QÕ{µï/Ûï9ÛšñyëäçµñÿÀ ± ìmz+Ö~v†Œ#—ÿíK½ §·žÑ‡Ü?†U¦ùïp’!àL—mÓÃ!Œ€ ÷HF. OËRd(²4–!—Q1°œ.»$ÜÊ×'¸ø_I¤w—þp(Ï"¹ù½²ÀßÈ,²î°_-vv]¬4Ô HVÊž"Ÿo’¤š/m„÷@VW¯ÜÇÜÓ`E{Ÿ÷²íf¿ˆ …Kõ£-<°l¥¦ø£‹‹‘ ÏÿX`&jenS!)¿šƒœl’ÇÌ?×l>x¯çô³”úeS¥Ó™s›:ëÔúîþâ»Å륖\0¶븥ï59üÛûð#½ð«ÀݽÅÎÞ7ËË7WÏ;ß/ÅbçÏá»nÃ?{w–¿[ÜÝ[~òµb¡†Ó…⯼¶Xhæg‹¾õ«E!ƒ[ Û³6…_-Þ£O´ƒÅz'G(—¾SžRÚA¹tøiÛg¦]ZÉjÒoUõÅÂÞ&½{x޽¢|sçP`®L>ó94ç"[2ù€`-Ï?4ª‘!ÁêÜ1 WyŒyýÄþ4,iÿšÖõ­3CÄ¤Ä Íràïÿˆ»ˆyendstream endobj 65 0 obj 3272 endobj 69 0 obj <> stream xœÍ\Is·NY·÷+^ù4/•b_r³d9¦E–˜ä`çÀE%Rd¬Å²ü?òosHƒ¥1ƒá[Ì¡\®²ÀÓhô×ïç%%lIýñßÓ׋ƒ'vùâí"<]²å·¹u±øyÁâ4ö^Þ?‚Œ/qšk¹ 4mBÛ÷«5'BPi±¯økÞɘˆÖ”¥‡Ü\¡ñ_¢/ #‡‹žnŸÖ˜›—yˆ•-‘F7Û— Ç™IOpÜŽöëÞÞ8îAü4° °¸5ã¸Ï\Mjaw ÷)øò–ŒãÃbñ®6`ìcyÿÏ£@f0ðoú²J§§Qí€ðeÓ¥-Á߃ìüŽ^©:Ë=ÑqÙhþðô:w½Ú(÷3oOÄ=Ú‚í#ʹ©Lß“Ì æÝÉœ ´îÖ,î>s5Á,­¼ƒt¿šÈqºÿÑ89 Ûƒ|NÔ·™ÝDC‡“G€ƒD-„åÃC^x¸U3ó)¢ ±©ˆëæHFÕÌT&TíIfFÕîdN#AukævŸ¹š¨‘¼‹< g„ÝXo ‹£›ÍÒF(̼¸…²¶"b®åWnŸ]™›ò­Hnå±ßî´OË9³·VX±×\MÌ0cî"çBK5².½!áŽkd3š8A8:C†„Q"|]T ü6âhæG¡õî•™™Ê„™=ÉÌðØÌi‘¦üÖΰ÷š« ÊïâÜY9Ú(nØûÊËãÌsL$1ðO×yÖí«çfX/į½Ð53‘]{R™Áµ;•“€PÖ|ʹ&ëÀ¨¦*æF ,}©üꣻ˂ü Gƒ|¦&©5œh 쬲—Þ'³Ìiá=ôUVˆ}ø X `éÁ$¬6‘Ü Cž¯à3hüÐ×Ër8}è CÊ%/Àã™"šqò6êƒoj§ò\_ؙޟõMa´‡fzzUžök0媮 ÐÁ T`ª$Bjî™* 1ÊÙåZøÕWC([ë`Y ¸é[&'^™hgÑKÏ_aã|Ý.CMásóëÐ/0¶ÈIÓMÄ„”º{•f<ÎCNWüemYw‘žõD×8òå6–‚3÷ÝâèÏ?N¥j‘R,ÎCØIà[_ QÈ{À.; ^Çþ…o"Y•pØmî:&LÔ ¨w~˜Þ¢û­tx_KøCˆ‰âî+äøàÊ`.51–UŽQ~ïg"lboOŒí–ßPxÌ}E&síéßúé ‚Ç2)®òA–¯ß²L]¸jTš•ãEÌl€ë"!ì 5ÐZUÄ»"/‘oüÐoeTkSTŠêP9vÉ+†°¢.¹Oãfz²•Ä5çƒJ}Ø,FMUÄ;.ßêËhhX_Cy÷Ë Œ>sÆáZö:ç¹î9»ø;¯HƒQ6¸]Pð8–ªA5Çh„Í5°+u•:®TÂP0±›„¶“X&i"AÃK¥BÜ~³’ ú¸ýáÚXu ¸¯ŠÜ2œ¹?«4ÝgÙgmææÛ;\øŽ>Š®’œG%%ô@]öšqBu½é¡Í€ßß®„"R:ÛÌý#¢‡Þs¼¼‘!‡tDu¶t”¿¥’•TóCe¡…âö”#N‡“`KÙÔ¼l),ŒR™>{ê¶4ÌÇÒ<)Íg¥ù¦4_•æqi¢É.J“4;\—æUi>ÏÍ–`щp?«×Ðå›GV”+Þö¨0_¦Âæœõa©÷Mœ úN(áw)(¼ì0!`¡ÜÞ@ãÔŠ  îfÕI¯•™™¨ž< pf ]2¸Ùèô‡u¦\€9-MáÃW£ÎÂ=8vËbÞXÊ®4ó]KÂZÄY™ê/•Ê~UÇœã{|÷]^Ž.n†‰éÝå‘f;õž¶:ór?fÄûÒ|Û\ÆïÜ,ÐÅ-£íÓ|X1F½F Þ·U$z-w¾µð‰„ø(…þÓÃâãPg|\™¦F°€4Ûq~¢ä¹Ä í]øþ‹ä<Ö1ÌHÕů&u|+Í7¥ùª4Gz-<½(MRš¨Ãui^•æóæ°³¦ú)¦é²Ë–ªjé'ªÂfGj¤Rp5ÞªK,BþÄÂ)œ‡‰×.QIò+þä%–Ú|{ÇŒ%n.!þ‹!n'©/cFŽèÍ2Í ³RžëI¼²$jˆà{k>Å&#kT JľCß}ï~–.†Æ9ÃÃݼ÷¿5üBEaP€l›odÿâõšF¼™´ý"ýº(q-4õIçÚqmd»šöi"º–*ݸ+lKÒûhZ¥P)(þ[ûóCE;ŒBÇN¥zÞ$ÙšÚöùàvÞ°‰B¹4t¸¹mþÒAû· Î[À»ÄbÊ2F#;ô&¹C ¯6ßE5…Ѧ‘}²ÁÈž£A=V(úõ‚ ÞÊWÙ1CŒ@ìAüO™ ƒÅí:Lo'‚Å´ŽâƒLïϨh8m{ωŽÍò¦ ã&k‘ZÉ(r×ýÔµUJcyàסÍ/¹¬è!ù[ö79îR­\Ú)$”VÁ…fHyÔKéÙÕÒDƒÙPÍø<³í‹[\èŠß9ßö6QpÿÓªè˜:ñN[@$»!×"ÃO’¤s‹þ$ÅpY|‹øEPéidÂb S L÷^…,Š¿kgTŒ'ì•KM-Mðà ΩH%3yîÆ=–ÿÝ-Aendstream endobj 70 0 obj 3563 endobj 74 0 obj <> stream xœí\[wܶîóþŠ}${ºîúÙj*ߢ؛æ!éé‘-ÛQK±%§I~{2 `¸ ìŠ4!Ç­NÎ‰Ö 8œ ¾ù0 ñnI [R÷_ÿ÷ÅÛÅÁS³|}µh[—lù0üz³x·`ý?hß{y¸†_Zb5×r¹~µ`}® |ÙE¸ðvñ]µ®5'L Y½¯…%ÚhS½¬WŒh-¬¨Îk bmXõ¼^)bŒiüu- Ü´âÒ¡mõ*výoèÚ_—”UOë• Ü ¥ª£øó¸^IÂ5S¢zRK¢à§Åן:’°ÆVÏ‚Ô{¡ç. C¬ÑÕ‹¨õ¯QÁŒÖ‚(MuS=¨…$Rs^†Ž/jΉÖToÜÃ9QŠW?µ—-cª÷ 4²ê"¶¢(«©ªÎbëA¼ ©²jíW–o€k½Œ·½¨"RUßÔ+JJf½/Ú‡‡8ÕÃÖ/¢‘^w½3V0^]'5¸ˆÚþè:4T‚;^Öÿ\?XpÕn vÖg+WAÒ–/¡Ñõ‡À£8ðV’jBÍ4$²±M'ç¾3D[–ÖWN’bÚY*‰å »øÌS FØ ‡v¡ ];ÿ cý2 ¸Cx‘»Îah—¯BT GušHnƒ~‚¬êu û—.)Qà ¿Õ ²`Tv>í®ŸÆ}Ç窟Bî[7‚5ª…‘†¿áVPÜÏï!…BMìvb*p§M?õÇø€Ë¤€¨ŠÛ‚(§ oˆ­þƒ¢vø|?ïÏÐóÛ “šhsqL‰3Ž‘ÆÊ.€vÊü-¶"£6ÂʹJ4(¬Óä‡MûÆÛiã5TcŸ$xðx'9r&rñë-£™éZÏâ$vhš5]ÀíOâÓ¨îFÀ‰†0ÅÎŒ^]7«nà©Æ(¦ çÑõ8Ôèú_ƒ“œ.GëÅ׋wKÉ)#¼Mjð³dÌ*3.…¹œyx¼88~¼¼~ÿáåâàÛ%[üÝýïðäü9¾¿üÓâèx9»,b:ALQ,ÚG Ê$u›Êé ¤7ðGu)ýÛZ¼r%Ç{rÓIÐ$º±ÁÅŠÃÈK‡ú…ç@<z?A³ú4hîòÄ*•&š“Ó\@ÄY\sIaÎq¬úáüL¼ F¼¨™€Ö´`⨑%æ8N?ž×0b†Bã‡xÏEdF¯CkÎJX6ÑùiÁl›Ñ?™,o .+±(îLýø˜ÍY ÇzæL#HýÒbt«1ý3Û•…Ÿ©îìsµ°ýýdEæãŒøúaÍ4QÐq@W¿D¿ÿÌþ2-âÉv³nמôÇtVyP(ì" ,Ëž(ØâH~¡à[iâ ‹´»ÙÂEˆ¹<ÃîœßÓ….–w™_YƒÈû{uë,f` Â5&HQ´ÎyÜ!:r3¤âSHØERîÐÌÈ|9·$82)e#¶ç<éùÔ²Ç9Üb¤#Dë?כŠ˜&"÷"7Ò¬Žäñ—Þãm²ïEÀ:·ØºÃQ»Æ²<ƒšÛEAgî£8a/“&œ%ã<ÜçÝjÁ‘qB;Ê€Ó3 ¹ =ˆÏ÷0lg¡3ëû*."ÐÐ\&…–驜¤Ì0"Å!ÇafIxÄA"¨ú"‡ý;¶º `âÖo饇ïë¨{ŸRMqï¸Y® —sñŽI²¼‰¼eEowh`ôTßïà;yGg¿ç¥íïx6Þñ4UhüuM<#2£“ëÎ/žl”öKO6°c ‘Gqñ±''Ä1K Sgû4ð¢ÂÃeL‹{Ë ÃŒ4d(¡6ñ¿ÃPò@ÛE›Ú Ñ–GW´š h§ÈÊ­+Yñò@ËXØ)´r ж¿Zdþ @‹÷i©ÂìI({Ä] @kaOxhE®(­÷ÂvMçÙ˜mÿ´íW¼’5;¡µ]qlCëN@Ú–ð±ø»1´Ž¶,*«Ì\u¸I²ÒÐ ¢ÆÒá)Ъ L_~KÐjF@kiû;hÅæÏ­_ÔÊ%ŒÙØöˆz¸«06ÔÒö÷€ŠPP·\Ñ>â0Àì*Âèódµlv%Üa'ÂÎ •Ç;ݨ¹¶ö&Éò&JjA&5–áNÂNS¨(v²T×Ôwöì,lÈüYiéƒPVŒ\ô¤†¹À]­q±¼'Šö„GQäŠB(š^±Ç ìu,iŸ'ë[oÇ$ªÉ$9ìsÉt‘=8ÈËu܈÷k¼7MßßÇ…ʵh(_ľoúº>·h­p‡¥¨“nz"QgþæbKh§¹’ôs@7-B?-ò¸Ý¢Á'”•Éx·PšPn‹–&øÄPØþ> ógÈè¶89¿B]‡÷Nn€ý…=à±¹àsÇþÏ• ÿ±ÿ(–èóï Acf÷ñqŸdiû¤²ÒÅ ^½… > YRÝà“7÷aq¤´ý¸cóg÷5þ~ÀÏ>\Y}²U(0Ê¢—¶öRJûªOØY…Òzà çÄ ÛzT·_^¾ÛÖÛY?™OyHTÚÌÅÃ'ÉÊÀ+…[àÎRJ"Šrg3^ ÛßÃ+2xýèŠsi«=P"³ åþW¹Ò"†¯e¶ß‰h}W¿þƒáïø0Íc&7³½ƒ?IV¹Ë”'á/€K÷æ“Eëqø[Øþ‘ù3à/úf6RÖû»‹Õ\ØlÀÈîòL5é‹»÷%¦cfûvx£ý;Ñ­>qŸ$¾½‚^6Ž£/£×‡o€¹ã#3“ÚgÚ3œ$+]/†I8–>OÁ\abæß3L‰GÕ‹KÛßa.6¿T½xÔai³{ÌÅv߉ïŠÄSŠÄn3P â:ÌZ/ž0²€,`0?©¬4¡ʨ[ ÔR³š‹P³wÝO¨KÛ߃;2×r¿Jb÷aê{ô]ÇÉ®ïʇĹ´yÄ‘}…@|ï¡ÏRo RîŶÙfÓíÑ)"—]¢Ž;JÄëÈ#eb‡ûŽ÷@uäT ùT F{.Ð[bÝg›â)ƒdÅ|¿ÅÛÏ'`öÕsÕ$&Éò&ZÞ`ô6jÂÂ1†¹ø1ÿ(íìZØþB‘ù#^†@°ú0ͪãŽ[âC~×áQ@Þ¼/Þö…Ç[ä ´ÍƧmû¾ÞÝ{XÃ^íjÇGÚnÁm4x– "‘û’?¹u†¡ÑÝu-`¸9Ï08q$%vó4 $-KRi¸|ß±K¿ƒÏ›KŸ’ û ªnœ¤ÎiÉžçŸíMÿü¡gíA^¹`ñÇwI™Ý4€†ÈðqU;î÷{b¯<"µr‰?Y ]Ôýt¹ŠYÒl|%»çäÿuý›§É|‡èçö°·þXµ"Óð#NSðrÿÒŸIf²;AHŸx_âô|Zj”g9‹ÀŸ$€C&ó%o¯ÿíÞš`zc­X€6Ž¡@gê!ày‡¢?}^zZÇ™„0h•|Û=ÖpÇ ˜fð×në¬JÃ)’ù&u7~Òeò¶ô4EÎ@Âv³Ò.MV:>Mg™$ÿد3F‚ª@O抹}¾gÑ=b€Ô­É_/~í/“žendstream endobj 75 0 obj 2767 endobj 79 0 obj <> stream xœÍ\Ys·N%oû+öq&å ®<…–K¾dš)¥ÊN¹x›&µ”HÑ–ùÛóf4f{P\)å* šÅ4>¾nôèí¼mؼuÿ ¿ž=Ù7óóÛ™:gó¯âèrövƆ¿´ÃìùÞ¼ÀøÜ6¶ãœœÍØ0Ÿw¦|®j4üðzöcuPw¼aÕM-lÓ™ÎT§õ‚5]'¬¨.êȈV³ê¨^¨Æ£Ãï0ðÒ‚KÛˆÎVgiêãÔáwÙ²j¿^ˆ†[¡Tõ, Ÿ× ÙðŽ)Q}[ËFÁÐâß÷Ù0m«"ÕÏãÌøY˜Æš®:N\ÿ‘,p-Õµ®^ÔB6²ã¼:ŒkÎ)¬©.Ýâ¼QŠWoüÏ–15Ȳj™ž¢ =)Ûµª:IOŸ¤×+ ¿e[6àž^§×^­j¤ªþU/ÚF·­éØ ?a¯—g¢úÊËEhXp¿÷›ŒWïH–‰Û+7A·ÄqZÿçàÅŒ+Ýpºspºr)Md Ýüg³ïgoç’·¬á^é`wfΘUMkæZ3îþÞ{>{òü›ù»›»ÓÙ“Ws6{ò¥ûßÞËÏáçOçš={>tZé 1Õ"B­iäV„ Fg)›c LVQ¦1]os¯jÙ6WäÈ+X+½¡´ ïz“h–(æÔEºcÙ1ç-ÉC Ë(²eÇN=fFˆ¦C´Ô#üu…uHªí1(Jõ> ÛèžÛÉÃÑPn<•<•^ÑÆv,€ÁÈÐþÿõë¤Khø]- p™àI€9+EõsÜtQ©—Qq9ˆTWÈ"íŽe!!Îq™ ã¶E)%Ó}œêMð0E¢»ÈŽRøoʹv¢ÁÁ½vë „Æ!~:ÁJ;À¼’­píÖ/ĉø¿É‰H¥«ÆùU+•Òîl`¬x+œ <íZÞÇä§èÕ 2¾ßÍZ<á¡‚WÌC¨eÆ~‘}ZWäºèµß3ßgìÀïœ95ÓÄÙ:vüTe¸Q_Ïþú#À"ÂK÷¸ à‚wí Í)={Gñ|N 뎤…d|’'ŸÀ¬|),šp˜ös‰õ<2vQspÞZ²ê7µÒ[GÍ€ìdì‹õö.Û-—ªaÊbжqïì N«äÞŒwè·uOŠþ”Ô¸ ³ mìK‘à úH2Ú."q^:\ÎÛuØÑ+\“²SŒÃòbÎô³[r9t÷b¾ÅÐ݉ë‘ý_~æ°­@& ¹Sân"¶œQLujH£·PÀH’[Ý‹)ät'ŽÎeÚÔEÒ0´Ut&(‡{‰}xxMª š€X ¥íø<â2»£XÃÓÁÅH†ƒ‹EÅYŒ¬~%µŽV‡ÜsHÀ5·Xößí‰!×RõÈ|Xõ¨@¨íZ}õïºDAÃä~Nꌳ»ïÐ8•þž²ø”e(§ ‹P=Úµ,†êÞ×'/hÀë¢cz ù":Ðe-’l¨1ky_=RΟøÛ? ä*‰4ŠÉjÝ…U<>… u¶®òæóU]僄ç$ÙeÉ‹É3î÷’Ý]ï¿OvÑö÷©\7Sôphspv—rZ2Uþ"¾ŽÁµÒ ‰„”w×R^$’MÚˆ&¾€ë:»M@¡!í;ÒqdPb$$Ó#…ÜqÓ,KðxííMŠä¹qì¬8ö·!F[×NØ ï'Q`–6=}?‰ãŽš€†!­rgÓ c“¤j úA@á”MìÒµ;JQÀ© ýÐÆzŸ—ŠŠ.i’/å7¶¾D'ãÁô­Þ¨’ådù˜e«âN¸êÝz¹î´B'•Ö…þÄ-ÍÇÛl»'b¹mí[^pû+ªîÿ§ÿËå§|ÛC¸§7Ag•d+ÄTœk¯ùœ¸®EÙmu³Z¼RCÅ;ÍNýp´Ô•WáåÒE±ïÉ5®ƒè¸Ã…]‘ %§=ʺÖBˆ¼\áiYöЈ_ÈCÄÞ`5ŽBk YF ‡%JÙ!:ÂLué²nºTöˆ—•= éÛ€l1å­Ñ• >€Öv) UÅç.ÂÉøñÆ(ò+§O™–CfvRדDw«bŠ#p5r…RIß°âH%}qS©(%1­»ÄLrag©+ün ÏœÂÒ±ù*}Ó…¾;¿6‚zØfMë“&8÷R!òKü³w$)lŒ¾IKSº!¹[U7¨,†t«*9iÝq¤L®ðûþ{)÷ œßK%îB|B;ª §éÂñMV±áA62¬-yæeßþÍ|„¶-ª!¼ú[Œìî0žìCnìzéa¾3jªðhœæ䪕þ³Á0uJ}¼µJзTä¥Kü·(?#ŽŸáà :5 %Ö#au6»`MÛœÛÕÄ%tpŒ¤‘¸>áDšc³eïè$d)Ö5A€m‚¦<Ù…šž…¼Çq!ŒuE™Q»ÂIŠl( Þ„ï%)'.‡î–΂ž)&óöê¾KO¬€Ù?EÔ†b Ôp,뀘®nü3o¦ë‘žÕà.,×ÿNê}š/ä2d°›€M¶ ·îrÞ¾c%¡ˆEÐ! fèRÄè$DëRWlà+}6þGœ9­$øîƒ4êlŸVôÜÜ˔ϡ:ò¤®æCÊ…¾÷-YÜ(»²Þ‡<Ÿ[5VóôF½T¼ÄU™¬ú/½•ú ¹¡ù œÐ¢$Ÿ%µ:5t96”mx¡»YÙÆ¹<£vÖhœ:J¹m{1HØy4#ú_ô}[’î²ô»Wƒ²Ñ¹Nd~y·N¨ëÓÙçï½4’øÚcg£Êé‚×Kna’½&´=¶´¾Ô%°HàI²Ób24ÝÅ4ñ`è BD yZˆÀ&ŒpA·CBaÜõä`–cX=ò)«Põ a„0õÚÚÖ$ð}ågHîéß³JÉ‹Cú®ÁòÂÆŽ:ý# Òð4 oÒðW,#b—Ô]÷}ȨØ#Ôï‡:×:÷Þ§!OÃv³a ¨[Ñg1ƒ¯GÇL„4oˆ‚¯õ…5\‡‘¨8â-YBê1éLW¬(FÎÝd=\NÙ®’’–|_2´Ù¢i¯H7”,ÎY"Q\‘+•!ËЉ´¶fú-ÃèË•BϪê_ ˆÝéN^š¥Þ±uúõ±mSÁ‰t£äü“ÙæÙfCd›Ù?¸$ûÍc{℻͠Ž!™‰ß_¿Ÿýýxendstream endobj 80 0 obj 3499 endobj 84 0 obj <> stream xœÝYKs5¾ï¯˜£†b½9æA‘@Qà,\Rb¯í ö®“µ „ÿÁ¿å@·F#õìh“rÁ!P.—;R«§Õêþú“ò¾\vòß³íâÑIè.oi´“Ý7EºZ¼_Èü‘µ»'+X UytÊ™nu±Y_¹Àµê|°ÜÃÄvñš­z§¸tÚ°}¯#wÁvÞ/%wNGÍÞöÌhá%;í—–‡ü8ït€EKe"×.²‹ªúWQÍóFHvÒ/5WQ[ËžWñE¿4\9i5û®7Ü‚éü 0\úÈ^«O‹æ ¦uà18vV½þP<âµæÖ çÙË^nœRìMQ<ë•âFÇÀ®ðãŠ[«Ø»4¥´9&0(Ù®Ž…ÁTt²u}T—W–iÿ6Š0nGoê²-ø ,7–ýØ/÷B's,’“!BJjöMŠ‹öftç‡Íj©Ø]Óƒ]õö¼0ŽóþçÕË…²ž«¹³ZC®ÜK³X ê?:‰”<Â70ï–F8.Brã£ÌHXµW†‰"qúI)Rêûš”kôÀñ ²‡©jîªêìk)çÖ¥˜Èü¾–zŸ;ŽI5 Æ%@JÖïW/ À™9âÊe veð¦å ›‹¾ÄšôÁ8‰àyÓ]õðUµ¡¥0t¹ÒœEhΕvÕ;e8¡6ïZ›ÂdÑ^ÑPÎB‘*ýü!“Âp+ŽGc­GG—ÙÓeÉpt8#¶ñ¡äl4ì¾&Éô$ã`N¡3¦Eu°mé¢Ìßá‰h`ðEÜL,)c¡8r꛹Mb¿ÖåFWÀýiÂc™ø0YE2þ:J¢\mÕ4Å­(vÓÙ*ú3’g$ÑÛÞ¾mŽî²µ©Â¸³Iý\Õ‘¦q?ËÔ½®¶®4˜”à&ŽÙýS/Sõ¨ÅŠÀ&é”›ƒÓ@iÐN‘Žõ¸¬.hí±×I™zÄ­ŒqpòOXêôެ/; øIÔG Ò:à QV˜D=Fñ´ŠçUÜWñ—*¾I¢‰ÂScWU\VqSÅ·UÜUñ®»­"¯âuoªxYÄVC“Bñ²áÇ *!ÚpÏÚ-äÁSma¬áNʇæ3 [Äf{cI’n&<ì òõ.ÛhnòÄñ»ªÝE.j›¼Ÿà}V]¼õL•‚àÙ÷HAÔ&EÀº]lG[WêA:²¯gçuÈd-í þšD›¢6H+†Š÷¤¥MYO¢Õ.ƒ1l2wÄ‘{¦4±1Rþ<§MCÓ›º¨R›Ò®[J…µª'N›mdÓjHmÕ1Ž´è›cšS`jÏãhn°FÛ&6`³”žtÜÏŸöM»ïªH0g_Å»ªÂÿ¨@ ó|RnÌí–KL‘{ôfBJòÆî[Ÿ:þ8¤ ®ÏGëx¼_g‰è±ïx-ÃHX¨éi¥±»¦ÙŠ tP2À-ÔS_2÷Ö“KnyѨà4cŠÇ¯Ó€Û Mupʶg` -0¸ŒåFý™a¯âïUÜVñºˆ­òõ‚+Z¿H†ð¸~+)˜n"‚™¼}¥BpA…6ý8=è0í2ÀpÔ;4~H#ÍUmv‚'®5~Ž/ƒEÞÍ"œ Mrî„’uˆHÃ(>²FÈ€@}•Þaèky™Øf’! É@¢eºâ|qÖMp¯CÚ’ò'ìî]Sl{x—›c¿ö€=2úH5ë© „EJ€èÂr’pÛÄr Hf´r Mn»†ÞvŸSøh 0¿ôŠL¬j9½b[0Ž=cäÈúã\—Ã÷ÿ ÇÕñ#Ï3éY‹^ïë•·ymo#49Âf·ïÁQæØA„”Šûè›PfÀ†Tñ Ë<÷'pó±û¿?Bó:'ž4£ÕŽaARC ,Û4£JæFšŸ|šË°%âäXh¶Úös× ðJÑxƒ#ÉÝkú-ødÞ--T³ ãƒwYk'5ÿ|µø~þ³it˜endstream endobj 85 0 obj 1653 endobj 4 0 obj <> /Contents 6 0 R >> endobj 15 0 obj <> /Contents 16 0 R >> endobj 21 0 obj <> /Contents 22 0 R >> endobj 27 0 obj <> /Contents 28 0 R >> endobj 32 0 obj <> /Contents 33 0 R >> endobj 37 0 obj <> /Contents 38 0 R >> endobj 42 0 obj <> /Contents 43 0 R >> endobj 47 0 obj <> /Contents 48 0 R >> endobj 52 0 obj <> /Contents 53 0 R >> endobj 58 0 obj <> /Contents 59 0 R >> endobj 63 0 obj <> /Contents 64 0 R >> endobj 68 0 obj <> /Contents 69 0 R >> endobj 73 0 obj <> /Contents 74 0 R >> endobj 78 0 obj <> /Contents 79 0 R >> endobj 83 0 obj <> /Contents 84 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 15 0 R 21 0 R 27 0 R 32 0 R 37 0 R 42 0 R 47 0 R 52 0 R 58 0 R 63 0 R 68 0 R 73 0 R 78 0 R 83 0 R ] /Count 15 >> endobj 1 0 obj <> endobj 8 0 obj <>endobj 13 0 obj <> endobj 14 0 obj <> endobj 19 0 obj <> endobj 20 0 obj <> endobj 25 0 obj <> endobj 26 0 obj <> endobj 30 0 obj <> endobj 31 0 obj <> endobj 35 0 obj <> endobj 36 0 obj <> endobj 40 0 obj <> endobj 41 0 obj <> endobj 45 0 obj <> endobj 46 0 obj <> endobj 50 0 obj <> endobj 51 0 obj <> endobj 56 0 obj <> endobj 57 0 obj <> endobj 61 0 obj <> endobj 62 0 obj <> endobj 66 0 obj <> endobj 67 0 obj <> endobj 71 0 obj <> endobj 72 0 obj <> endobj 76 0 obj <> endobj 77 0 obj <> endobj 81 0 obj <> endobj 82 0 obj <> endobj 86 0 obj <> endobj 87 0 obj <> endobj 18 0 obj <> endobj 55 0 obj <> endobj 24 0 obj <> endobj 12 0 obj <> endobj 88 0 obj <> endobj 10 0 obj <> endobj 89 0 obj <> endobj 11 0 obj <> endobj 9 0 obj <> endobj 90 0 obj <> endobj 5 0 obj <> /Doc-Start<> /0:0<> /0:13<> /0.1.1<> /0:15<> /0:16<> /0:17<> /0:18<> /0:19<> /0:20<> /0:21<> /0:22<> /0:23<> /0:24<> /0:25<> /0:26<> /0:27<> /0:28<> /0.2.1<> /0:30<> /0:31<> /0:32<> /table.1<> /page.2<> /0:50<> /0:51<> /0:52<> /0:53<> /table.2<> /0:71<> /0:72<> /0:73<> /0.3.1<> /0:75<> /0:76<> /0:77<> /0:78<> /0:79<> /0:80<> /0:81<> /0:82<> /0.3.1.2<> /0:84<> /0:85<> /0:86<> /0:87<> /0:88<> /0:89<> /0:90<> /0:91<> /0:92<> /0:93<> /0:94<> /0:95<> /0:96<> /page.3<> /0:97<> /0:98<> /0:99<> /0:100<> /0:101<> /0:102<> /0:103<> /0:104<> /0:105<> /0.3.1.1.3<> /0:107<> /0:108<> /0:109<> /0:110<> /0:111<> /0:112<> /page.4<> /0:144<> /0.3.2.2<> /0:114<> /0:115<> /0:116<> /0:117<> /0:118<> /0:119<> /0:120<> /0:121<> /0:122<> /0:123<> /0:124<> /0:125<> /0:126<> /0:127<> /0:128<> /0.3.3.2<> /0:130<> /0:131<> /0:132<> /0:133<> /0:134<> /0:135<> /0:136<> /0:137<> /0.4.1<> /0:139<> /0:140<> /0:141<> /page.5<> /0:142<> /0:143<> /0:145<> /0:146<> /0:147<> /0:148<> /0:149<> /0:150<> /0.5.1<> /0:152<> /0:153<> /0:154<> /0:155<> /0:156<> /0:157<> /0:158<> /0:159<> /0:160<> /0:161<> /0:162<> /0:163<> /0:164<> /0:165<> /0:166<> /0:167<> /0:168<> /0:169<> /0:170<> /page.6<> /0.6.1<> /0:172<> /0.6.4.2<> /0:174<> /0:175<> /0:176<> /0:177<> /0:178<> /0:179<> /0.6.5.2<> /0:181<> /0:182<> /0:183<> /0:184<> /0:185<> /0:186<> /0.6.6.2<> /0:188<> /0:189<> /0:190<> /0:191<> /0:192<> /0:193<> /0:194<> /0:195<> /page.7<> /0:196<> /0:197<> /0.6.7.2<> /0:199<> /0:200<> /0:201<> /0:202<> /0:203<> /0.6.8.2<> /0:205<> /0:206<> /0:207<> /0:208<> /0.7.1<> /0:210<> /0:211<> /0:212<> /0:213<> /page.8<> /0:233<> /0.8.1<> /0:215<> /0.8.9.2<> /0:217<> /0:218<> /0:219<> /0:220<> /0:221<> /0.8.9.2.3<> /0:223<> /0:224<> /0:225<> /0:226<> /0.9.1<> /0:228<> /0.9.10.2<> /0:230<> /0:231<> /page.9<> /0:263<> /0:232<> /0.9.11.2<> /0:235<> /0:236<> /0.9.11.3.3<> /0:238<> /0:239<> /0:240<> /0:241<> /0:242<> /0.9.12.2<> /0:244<> /0:245<> /0:246<> /0.9.13.2<> /0:248<> /0:249<> /0.9.14.2<> /0:251<> /0:252<> /0:253<> /0:255<> /0:256<> /0:257<> /0:258<> /0:259<> /0:260<> /0:261<> /0:262<> /page.10<> /0.9.15.2<> /0:265<> /0:266<> /0:267<> /0:269<> /0:270<> /0:271<> /0:272<> /0:273<> /0:274<> /0:275<> /0:276<> /0:277<> /0:278<> /0:279<> /0:280<> /0.9.16.2<> /0:282<> /0:283<> /0:284<> /0:286<> /0:287<> /0:288<> /0:289<> /0:290<> /0:291<> /0:292<> /0:293<> /0.9.17.2<> /0:295<> /0:296<> /0:297<> /0:298<> /0:299<> /0:300<> /0:301<> /0:302<> /0:303<> /0:304<> /page.11<> /0:305<> /0:306<> /0:307<> /0.9.18.2<> /0:309<> /0:310<> /0:311<> /0:312<> /0:313<> /0:314<> /0:315<> /0:316<> /0:317<> /0.9.19.2<> /0:319<> /0:320<> /0:321<> /0:322<> /0:323<> /0:324<> /0:325<> /0:326<> /0:327<> /0:328<> /0.9.20.2<> /0:330<> /0:331<> /0:332<> /table.3<> /page.12<> /0:383<> /0.10.1<> /0:385<> /0.10.21.2<> /0:387<> /0:388<> /0:389<> /0:390<> /0:391<> /0:392<> /0:393<> /0:394<> /0:395<> /0:396<> /0.10.21.4.3<> /0:398<> /0:399<> /0:400<> /0:401<> /0:402<> /0:403<> /page.13<> /0:404<> /0:405<> /0:406<> /table.4<> /page.14<> /0:473<> /0:474<> /0:475<> /0:476<> /0:477<> /0:478<> /page.15<> /0.10.21.5.3<> /0:480<> /0:481<> /0:482<> /0:483<> /0:484<> /0:485<> /0:486<> /0:487<> /0:488<> /0:489<> /0:490<> /0:491<>>>endobj 91 0 obj <>stream LaTeX with hyperref package ()() endstream endobj 2 0 obj <>endobj xref 0 92 0000000000 65535 f 0000055703 00000 n 0000093716 00000 n 0000055545 00000 n 0000053069 00000 n 0000058217 00000 n 0000000015 00000 n 0000003593 00000 n 0000055828 00000 n 0000058004 00000 n 0000057719 00000 n 0000057941 00000 n 0000057557 00000 n 0000055869 00000 n 0000055899 00000 n 0000053237 00000 n 0000003613 00000 n 0000007325 00000 n 0000057352 00000 n 0000055962 00000 n 0000055992 00000 n 0000053407 00000 n 0000007346 00000 n 0000011085 00000 n 0000057489 00000 n 0000056066 00000 n 0000056096 00000 n 0000053569 00000 n 0000011106 00000 n 0000014376 00000 n 0000056159 00000 n 0000056189 00000 n 0000053731 00000 n 0000014397 00000 n 0000018455 00000 n 0000056252 00000 n 0000056282 00000 n 0000053893 00000 n 0000018476 00000 n 0000022745 00000 n 0000056367 00000 n 0000056397 00000 n 0000054055 00000 n 0000022766 00000 n 0000026998 00000 n 0000056471 00000 n 0000056501 00000 n 0000054217 00000 n 0000027019 00000 n 0000030612 00000 n 0000056575 00000 n 0000056605 00000 n 0000054379 00000 n 0000030633 00000 n 0000034147 00000 n 0000057418 00000 n 0000056657 00000 n 0000056687 00000 n 0000054541 00000 n 0000034168 00000 n 0000037829 00000 n 0000056783 00000 n 0000056813 00000 n 0000054703 00000 n 0000037850 00000 n 0000041194 00000 n 0000056898 00000 n 0000056928 00000 n 0000054873 00000 n 0000041215 00000 n 0000044850 00000 n 0000056991 00000 n 0000057021 00000 n 0000055043 00000 n 0000044871 00000 n 0000047710 00000 n 0000057084 00000 n 0000057114 00000 n 0000055213 00000 n 0000047731 00000 n 0000051302 00000 n 0000057166 00000 n 0000057196 00000 n 0000055383 00000 n 0000051323 00000 n 0000053048 00000 n 0000057259 00000 n 0000057289 00000 n 0000057641 00000 n 0000057802 00000 n 0000058089 00000 n 0000092278 00000 n trailer << /Size 92 /Root 1 0 R /Info 2 0 R /ID [<357C6A18161CBC470CAAA7A4D7F2C905><357C6A18161CBC470CAAA7A4D7F2C905>] >> startxref 93927 %%EOF pcsc-cyberjack-3.99.5final.sp05/doc/LIESMICH.ps000066400000000000000000003775161231776762100206510ustar00rootroot00000000000000%!PS-Adobe-2.0 %%Creator: dvips(k) 5.96.1 Copyright 2007 Radical Eye Software %%Title: LIESMICH.dvi %%CreationDate: Mon Jun 2 07:21:16 2008 %%Pages: 15 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentFonts: Helvetica-Bold Times-Roman Courier Times-Italic %%+ Times-Bold Courier-Bold Courier-Oblique %%DocumentPaperSizes: a4 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -R -q -t a4 LIESMICH.dvi -o LIESMICH.ps %DVIPSParameters: dpi=600 %DVIPSSource: TeX output 2008.06.02:0721 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc 0 0 % File 8r.enc TeX Base 1 Encoding Revision 2.0 2002-10-30 % % @@psencodingfile@{ % author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, % W. Schmidt, P. Lehman", % version = "2.0", % date = "27nov06", % filename = "8r.enc", % email = "tex-fonts@@tug.org", % docstring = "This is the encoding vector for Type1 and TrueType % fonts to be used with TeX. This file is part of the % PSNFSS bundle, version 9" % @} % % The idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard encoding, ISO Latin 1, Windows ANSI including the euro symbol, % MacRoman, and some extra characters from Lucida. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % These are /dotlessj /ff /ffi /ffl. % % (4) hyphen appears twice for compatibility with both ASCII and Windows. % % (5) /Euro was assigned to 128, as in Windows ANSI % % (6) Missing characters from MacRoman encoding incorporated as follows: % % PostScript MacRoman TeXBase1 % -------------- -------------- -------------- % /notequal 173 0x16 % /infinity 176 0x17 % /lessequal 178 0x18 % /greaterequal 179 0x19 % /partialdiff 182 0x1A % /summation 183 0x1B % /product 184 0x1C % /pi 185 0x1D % /integral 186 0x81 % /Omega 189 0x8D % /radical 195 0x8E % /approxequal 197 0x8F % /Delta 198 0x9D % /lozenge 215 0x9E % /TeXBase1Encoding [ % 0x00 /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef /Zcaron /zcaron % 0x10 /caron /dotlessi /dotlessj /ff /ffi /ffl /notequal /infinity /lessequal /greaterequal /partialdiff /summation /product /pi /grave /quotesingle % 0x20 /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % 0x80 /Euro /integral /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /Omega /radical /approxequal % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /Delta /lozenge /Ydieresis % 0xA0 /.notdef /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron % 0xB0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: texps.pro 0 0 %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def end %%EndProcSet %%BeginProcSet: special.pro 0 0 %! TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N /vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N /rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N /@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ /hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B /@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ /urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known {userdict/md get type/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale }if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState save N userdict maxlength dict begin/magscale true def normalscale currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts /psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def @MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin/SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N} N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N /setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B /rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginProcSet: color.pro 0 0 %! TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll }repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def /TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ /currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC /Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC /Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ 0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ 0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ 0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ 0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ 0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end %%EndProcSet TeXDict begin @defspecial /DvipsToPDF { 72.27 mul Resolution div } def /PDFToDvips { 72.27 div Resolution mul } def /HyperBorder { 1 PDFToDvips } def /H.V {pdf@hoff pdf@voff null} def /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def /H.S { currentpoint HyperBorder add /pdf@lly exch def dup DvipsToPDF /pdf@hoff exch def HyperBorder sub /pdf@llx exch def } def /H.L { 2 sub dup /HyperBasePt exch def PDFToDvips /HyperBaseDvips exch def currentpoint HyperBaseDvips sub /pdf@ury exch def /pdf@urx exch def } def /H.A { H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF HyperBasePt sub sub /pdf@voff exch def } def /H.R { currentpoint HyperBorder sub /pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint exch pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def } def systemdict /pdfmark known { userdict /?pdfmark systemdict /exec get put }{ userdict /?pdfmark systemdict /pop get put userdict /pdfmark systemdict /cleartomark get put } ifelse @fedspecial end TeXDict begin 39158280 55380996 1000 600 600 (LIESMICH.dvi) @start /Fa 137[45 45 45 1[45 1[45 45 45 45 45 1[45 45 45 2[45 45 45 45 45 1[45 95[{TeXBase1Encoding ReEncodeFont}18 74.7198 /Courier-Oblique rf /Fb 134[45 45 1[45 45 45 45 45 1[45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 1[45 8[45 45 1[45 1[45 45 45 1[45 1[45 45 4[45 45 45 45 3[45 45 45 4[45 3[45 45 45 45 45 45 45 45[{ TeXBase1Encoding ReEncodeFont}48 74.7198 /Courier-Bold rf /Fc 106[23 149[{TeXBase1Encoding ReEncodeFont}1 66.4176 /Times-Roman rf /Fd 27[66 4[73 100[60 66 66 1[66 73 40 66 47 1[73 73 73 106 33 66 33 33 73 73 40 66 73 66 73 66 1[66 4[73 4[86 73 80 86 1[80 2[100 73 86 66 33 86 93 73 80 86 86 86 86 7[66 66 66 66 66 66 66 66 66 66 33 33 40 45[{TeXBase1Encoding ReEncodeFont}59 119.552 /Helvetica-Bold rf /Fe 138[46 28 32 37 3[46 69 23 46 1[23 3[37 2[46 42 51[28 45[{TeXBase1Encoding ReEncodeFont}13 83.022 /Times-Bold rf /Ff 137[46 51 28 46 32 2[51 51 74 23 2[23 51 51 1[46 51 46 51 46 9[78 55 2[55 2[55 1[60 4[23 2[51 1[60 60 60 60 6[28 7[46 50[{TeXBase1Encoding ReEncodeFont}30 83.022 /Helvetica-Bold rf /Fg 3[42 28[42 101[37 3[42 23 32 32 1[42 42 42 60 23 37 23 23 42 1[23 37 42 37 42 42 11[60 46 42 51 3[55 2[55 37 28 3[51 1[55 51 8[42 42 42 42 42 42 42 42 42 42 23 1[28 45[{TeXBase1Encoding ReEncodeFont}45 83.022 /Times-Italic rf /Fh 134[45 45 1[45 45 45 45 45 1[45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 1[45 9[45 45 45 9[45 5[45 7[45 2[45 1[45 1[45 2[45 45 45 45 45 45 1[45 45 45 40[{TeXBase1Encoding ReEncodeFont}42 74.7198 /Courier rf /Fi 3[42 5[42 17[37 4[42 26[60 69[45 3[37 42 42 60 42 42 23 32 28 42 42 42 42 65 23 42 23 23 42 42 28 37 42 37 42 37 1[42 4[51 60 60 78 60 60 51 46 55 60 46 60 60 74 51 60 32 28 60 60 46 51 60 55 55 60 76 2[47 1[23 23 42 42 42 42 42 42 42 42 42 42 23 21 28 21 2[28 28 28 2[42 42 34 28 29[46 46 2[{ TeXBase1Encoding ReEncodeFont}86 83.022 /Times-Roman rf /Fj 86[73 47[55 55 2[61 33 55 39 1[61 61 61 89 28 55 1[28 61 61 33 55 61 55 61 55 12[61 66 72 3[72 83 61 72 1[28 72 78 1[66 1[72 72 8[55 55 1[55 1[55 55 55 55 55 28 28 33 41[61 3[{TeXBase1Encoding ReEncodeFont}47 99.6264 /Helvetica-Bold rf /Fk 3[88 23[80 7[104 97[72 2[112 1[88 48 80 56 1[88 88 88 128 40 80 1[40 88 88 48 80 88 80 88 80 6[88 3[96 104 88 96 2[96 2[120 3[40 104 112 88 1[104 1[104 104 7[80 80 80 80 80 80 80 80 80 80 1[40 48 42[88 2[{TeXBase1Encoding ReEncodeFont}51 143.462 /Helvetica-Bold rf /Fl 3[126 130[115 4[69 115 80 1[126 126 126 184 57 115 1[57 2[69 115 126 115 126 115 11[149 126 138 149 3[149 2[149 115 57 3[138 1[149 149 18[57 1[69 45[{TeXBase1Encoding ReEncodeFont}31 206.584 /Helvetica-Bold rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%BeginPaperSize: a4 /setpagedevice where { pop << /PageSize [595 842] >> setpagedevice } { /a4 where { pop a4 } if } ifelse %%EndPaperSize end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a -600 -600 a SDict begin [ /Producer (dvips + Distiller) /Title () /Subject () /Creator (LaTeX with hyperref package) /Author () /Keywords () /DOCINFO pdfmark end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark end -2 -102 a Black Black -2 -11 a SDict begin [ /Page 1 /View [ /Fit ] /PageMode /UseOutlines /DOCVIEW pdfmark end -2 -11 a -2 -11 a SDict begin [ {Catalog} << >> /PUT pdfmark end -2 -11 a -2 -11 a SDict begin H.S end -2 -11 a -2 -11 a SDict begin 12 H.A end -2 -11 a -2 -11 a SDict begin [ /View [/XYZ H.V] /Dest (Doc-Start) cvn H.B /DEST pdfmark end -2 -11 a -2 -11 a SDict begin H.S end -2 -11 a -2 -11 a SDict begin 12 H.A end -2 -11 a -2 -11 a SDict begin [ /View [/XYZ H.V] /Dest (0:0) cvn H.B /DEST pdfmark end -2 -11 a 446 140 a Fl(T)-17 b(reiber)59 b(f\374r)f(REINER)g(SCT)g(c)n (yberJac)l(k)622 409 y(pinpad/e-com)h(USB)e(Kar)t(tenleser)1664 685 y Fk(Mar)s(tin)38 b(Preuss)1251 882 y Fj(Cop)o(yright)27 b(\251)h(2008)h(REINER)f(SCT)g(GmbH)1890 990 y(2008/02/12)542 1347 y Fi(Dies)20 b(ist)i(das)e(Handb)n(uch)e(zum)i(Linux-T)m(reiber)d (f\374r)j(die)g(Reiner)g(SCT)h(c)o(yberJack)e(Kartenleser)-5 b(.)39 1657 y SDict begin H.S end 39 1657 a 39 1657 a SDict begin 13 H.A end 39 1657 a 39 1657 a SDict begin [ /View [/XYZ H.V] /Dest (0:13) cvn H.B /DEST pdfmark end 39 1657 a -2 2034 a Fk(1.)39 b(\334ber)n(sic)o(ht)818 2034 y SDict begin H.S end 818 2034 a 818 2034 a SDict begin 22.464 H.A end 818 2034 a 818 2034 a SDict begin [ /View [/XYZ H.V] /Dest (0.1.1) cvn H.B /DEST pdfmark end 818 2034 a -2 2202 a SDict begin H.S end -2 2202 a -2 2202 a SDict begin 13 H.A end -2 2202 a -2 2202 a SDict begin [ /View [/XYZ H.V] /Dest (0:15) cvn H.B /DEST pdfmark end -2 2202 a 396 2308 a Fi(Dieser)21 b(T)m(reiber)e(f\374r)g(die)i (Cyberjack)e(Pinpad/ecom-F)o(amilie)e(v)n(on)j(USB)h(Kartenlese)o (ger\344ten)d(implementiert)g(den)396 2416 y(CT)-8 b(API)21 b(Standard)e(in)h(der)g(V)-9 b(ersion)20 b(1.1)f(so)n(wie)h(das)h (PC/SC-Interf)o(ace)f(v)n(on)f(pcsc-lite.)-2 2600 y SDict begin H.S end -2 2600 a -2 2600 a SDict begin 13 H.A end -2 2600 a -2 2600 a SDict begin [ /View [/XYZ H.V] /Dest (0:16) cvn H.B /DEST pdfmark end -2 2600 a 396 2690 a Fi(Er)h(ist)i(v)n(ollst\344ndig)d(im)h(Userspace)g(implementiert.)e (Dadurch)h(entf)o(allen)g(Schwierigk)o(eiten)g(mit)h(unterschiedlichen) 396 2798 y(K)n(ernel-V)-9 b(ersionen,)17 b(dem)j(K)m(ompilieren)e(und)i (P)o(atchen)f(v)n(on)h(K)n(erneln)f(etc.)-2 2982 y SDict begin H.S end -2 2982 a -2 2982 a SDict begin 13 H.A end -2 2982 a -2 2982 a SDict begin [ /View [/XYZ H.V] /Dest (0:17) cvn H.B /DEST pdfmark end -2 2982 a 396 3072 a Fi(S\344mtliche)h(Zugrif)n(fe)e(werden)h(\374ber)h(das)1609 3072 y SDict begin H.S end 1609 3072 a 1609 3072 a SDict begin 13 H.A end 1609 3072 a 1609 3072 a SDict begin [ /View [/XYZ H.V] /Dest (0:18) cvn H.B /DEST pdfmark end 1609 3072 a Fh(usb)45 b(devfs)19 b Fi(in)2119 3072 y SDict begin H.S end 2119 3072 a 2119 3072 a SDict begin 13 H.A end 2119 3072 a 2119 3072 a SDict begin [ /View [/XYZ H.V] /Dest (0:19) cvn H.B /DEST pdfmark end 2119 3072 a Fh(/proc/bus/usb)f Fi(\(oder)2918 3072 y SDict begin H.S end 2918 3072 a 2918 3072 a SDict begin 13 H.A end 2918 3072 a 2918 3072 a SDict begin [ /View [/XYZ H.V] /Dest (0:20) cvn H.B /DEST pdfmark end 2918 3072 a Fh(/dev/bus/usb)h Fi(f\374r)396 3179 y(ude)n(v-basierte)f(systeme\))i (abge)n(wick)o(elt.)-2 3363 y SDict begin H.S end -2 3363 a -2 3363 a SDict begin 13 H.A end -2 3363 a -2 3363 a SDict begin [ /View [/XYZ H.V] /Dest (0:21) cvn H.B /DEST pdfmark end -2 3363 a 396 3453 a Fi(Behandlung)e(v)n(on)i (Dateirechten)f(geschieht)1741 3453 y SDict begin H.S end 1741 3453 a 1741 3453 a SDict begin 13 H.A end 1741 3453 a 1741 3453 a SDict begin [ /View [/XYZ H.V] /Dest (0:22) cvn H.B /DEST pdfmark end 1741 3453 a Fg(aussc)o(hlie\337lic)o(h)f Fi(\374ber)i(ude)n(v)-5 b(.)18 b(Das)j(Skript)2972 3453 y SDict begin H.S end 2972 3453 a 2972 3453 a SDict begin 13 H.A end 2972 3453 a 2972 3453 a SDict begin [ /View [/XYZ H.V] /Dest (0:23) cvn H.B /DEST pdfmark end 2972 3453 a Fh(cyberjack.rules)d Fi(-)i(f)o(alls)396 3561 y(es)h(nach)664 3561 y SDict begin H.S end 664 3561 a 664 3561 a SDict begin 13 H.A end 664 3561 a 664 3561 a SDict begin [ /View [/XYZ H.V] /Dest (0:24) cvn H.B /DEST pdfmark end 664 3561 a Fh(/etc/udev/rules.d)d Fi(installiert)i(wurde)f (-)i(wird)f(automatisch)f(v)n(on)g(ude)n(v)g(aufgerufen,)e(sobald)j (der)396 3669 y(Leser)g(angeschlossen)f(wird.)h(Es)h(setzt)g(die)f (Dateirechte)f(f\374r)h(das)g(entsprechende)e(Ger\344t,)i(so)g(da\337)g (anschliessend)f(die)396 3777 y(Benutzer)h(der)f(Gruppe)1113 3777 y SDict begin H.S end 1113 3777 a 1113 3777 a SDict begin 13 H.A end 1113 3777 a 1113 3777 a SDict begin [ /View [/XYZ H.V] /Dest (0:25) cvn H.B /DEST pdfmark end 1113 3777 a Fh(cyberjack)g Fi(darauf)g(zugreifen)g(k\366nnen.)-2 3961 y SDict begin H.S end -2 3961 a -2 3961 a SDict begin 13 H.A end -2 3961 a -2 3961 a SDict begin [ /View [/XYZ H.V] /Dest (0:26) cvn H.B /DEST pdfmark end -2 3961 a 396 4051 a Fi(F\374r)h(mehr)g(Informationen)c(\374ber)k(den)f (Kartenleser)h(selbst)h(besuchen)d(Sie)j(bitte)2767 4051 y SDict begin H.S end 2767 4051 a 2767 4051 a SDict begin 13 H.A end 2767 4051 a 2767 4051 a SDict begin [ /View [/XYZ H.V] /Dest (0:27) cvn H.B /DEST pdfmark end 2767 4051 a Fi(http://www)-5 b(.reiner)n(-sct.com/.)16 b(Dort)396 4159 y(\002nden)k(Sie)g(auch)g(einen)g(Onlineshop,)e(in)i(dem)g(Sie)h (diesen)f(Leser)g(bestellen)g(k\366nnen.)-2 4187 y SDict begin H.S end -2 4187 a -2 4187 a SDict begin 13 H.A end -2 4187 a -2 4187 a SDict begin [ /View [/XYZ H.V] /Dest (0:28) cvn H.B /DEST pdfmark end -2 4187 a 360 x Fk(2.)39 b(V)-13 b(on)39 b(diesem)f(T)-11 b(reiber)38 b(unter)n(st\374tzte)f(Ger\344te)2819 4547 y SDict begin H.S end 2819 4547 a 2819 4547 a SDict begin 22.464 H.A end 2819 4547 a 2819 4547 a SDict begin [ /View [/XYZ H.V] /Dest (0.2.1) cvn H.B /DEST pdfmark end 2819 4547 a -2 4714 a SDict begin H.S end -2 4714 a -2 4714 a SDict begin 13 H.A end -2 4714 a -2 4714 a SDict begin [ /View [/XYZ H.V] /Dest (0:30) cvn H.B /DEST pdfmark end -2 4714 a 396 4821 a Fi(Die)21 b(folgenden)d(Reiner)n(-SCT)i(Kartenleser)f (werden)g(unterst\374tzt:)2394 4821 y SDict begin H.S end 2394 4821 a 2394 4821 a SDict begin 13 H.A end 2394 4821 a 2394 4821 a SDict begin [ /View [/XYZ H.V] /Dest (0:31) cvn H.B /DEST pdfmark end 2394 4821 a -2 4950 a SDict begin H.S end -2 4950 a -2 4950 a SDict begin 13 H.A end -2 4950 a -2 4950 a SDict begin [ /View [/XYZ H.V] /Dest (0:32) cvn H.B /DEST pdfmark end -2 4950 a -2 4950 a SDict begin H.S end -2 4950 a -2 4950 a SDict begin 0 H.A end -2 4950 a -2 4950 a SDict begin [ /View [/XYZ H.V] /Dest (table.1) cvn H.B /DEST pdfmark end -2 4950 a 396 4954 3497 4 v 396 4954 V 396 5078 4 125 v 424 5053 a Ff(Pr)n(oduct)p 2143 5078 V 1435 w(Pr)n(oductID)p 3890 5078 V 396 5081 3497 4 v Black 3842 5569 a Fg(1)p Black eop end %%Page: 2 2 TeXDict begin 2 1 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.2) cvn H.B /DEST pdfmark end -2 -102 a Black 1636 -132 a Fg(T)-5 b(r)m(eiber)21 b(f\374r)g(REINER)f(SCT)g(cyberJ)m(ac)n(k)g (pinpad/e-com)d(USB)j(Kartenleser)p Black 396 -7 3497 4 v 396 -7 V 396 117 4 125 v 424 92 a Ff(Pr)n(oduct)p 2143 117 V 1435 w(Pr)n(oductID)p 3890 117 V 396 117 3497 4 v 396 242 4 125 v 424 217 a Fi(REINER)h(SCT)g(c)o(yberJack)d(pinpad)h (USB)p 2143 242 V 494 w(0x100)p 3890 242 V 396 245 3497 4 v 396 245 V 396 370 4 125 v 424 345 a(REINER)i(SCT)g(c)o(yberJack)d (e-com)i(USB)p 2143 370 V 512 w(0x100)p 3890 370 V 396 373 3497 4 v 396 373 V 396 498 4 125 v 424 473 a(REINER)h(SCT)g(c)o (yberJack)d(pinpad_a)h(USB)p 2143 498 V 415 w(0x300)p 3890 498 V 396 501 3497 4 v 396 501 V 396 625 4 125 v 424 600 a(REINER)i(SCT)g(c)o(yberJack)d(e-com_a)h(USB)p 2143 625 V 434 w(0x400)p 3890 625 V 396 629 3497 4 v 396 629 V 396 795 a(Mit)i(dem)f(K)m(ommando)1111 795 y SDict begin H.S end 1111 795 a 1111 795 a SDict begin 13 H.A end 1111 795 a 1111 795 a SDict begin [ /View [/XYZ H.V] /Dest (0:50) cvn H.B /DEST pdfmark end 1111 795 a Fe(lsusb)h Fi(k\366nnen)d(Sie)j(sich)g(alle)f(USB-Ger\344te)h (anzeigen)d(lassen.)j(Es)g(zeigt)f(die)g(Hersteller)n(-)396 903 y(und)g(Ger\344tek)o(ennung)d(aller)j(angeschlossenen)e(Ger\344te)i (an,)g(beispielsweise:)-2 1087 y SDict begin H.S end -2 1087 a -2 1087 a SDict begin 13 H.A end -2 1087 a -2 1087 a SDict begin [ /View [/XYZ H.V] /Dest (0:51) cvn H.B /DEST pdfmark end -2 1087 a -2 1087 a SDict begin H.S end -2 1087 a -2 1087 a SDict begin 13 H.A end -2 1087 a -2 1087 a SDict begin [ /View [/XYZ H.V] /Dest (0:52) cvn H.B /DEST pdfmark end -2 1087 a -2 1180 a SDict begin H.S end -2 1180 a -2 1180 a SDict begin 13 H.A end -2 1180 a -2 1180 a SDict begin [ /View [/XYZ H.V] /Dest (0:53) cvn H.B /DEST pdfmark end -2 1180 a -2 1180 a SDict begin H.S end -2 1180 a -2 1180 a SDict begin 0 H.A end -2 1180 a -2 1180 a SDict begin [ /View [/XYZ H.V] /Dest (table.2) cvn H.B /DEST pdfmark end -2 1180 a 396 1183 3504 4 v 396 1183 V 396 1308 4 125 v 424 1283 a Ff(Bus)j(Nr)p 1271 1308 V 604 w(De)o(vice)g(Nr)p 2146 1308 V 3021 1308 V 1369 w(V)l(eID:PrID)p 3896 1308 V 396 1311 3504 4 v 396 1311 V 396 1436 4 125 v 424 1411 a Fi(Bus)e(002)p 1271 1436 V 600 w(De)n(vice)e(002)p 2146 1436 V 496 w(ID)p 3021 1436 V 787 w(0451:1446)p 3896 1436 V 396 1439 3504 4 v 396 1439 V 396 1564 4 125 v 424 1539 a(Bus)i(002)p 1271 1564 V 600 w(De)n(vice)e(006)p 2146 1564 V 496 w(ID)p 3021 1564 V 787 w(0c4b:0400)p 3896 1564 V 396 1567 3504 4 v 396 1567 V -2 1899 a SDict begin H.S end -2 1899 a -2 1899 a SDict begin 13 H.A end -2 1899 a -2 1899 a SDict begin [ /View [/XYZ H.V] /Dest (0:71) cvn H.B /DEST pdfmark end -2 1899 a 396 2007 a Fi(Die)i(REINER)f(SCT)h(Herstellerk)o (ennung)d(ist)1763 2007 y SDict begin H.S end 1763 2007 a 1763 2007 a SDict begin 13 H.A end 1763 2007 a 1763 2007 a SDict begin [ /View [/XYZ H.V] /Dest (0:72) cvn H.B /DEST pdfmark end 1763 2007 a Fh(0c4b)p Fi(.)i(Die)g(Produktk)o (ennungen)c(\002nden)j(Sie)i(in)f(der)g(v)n(origen)f(T)-7 b(abelle.)-2 2035 y SDict begin H.S end -2 2035 a -2 2035 a SDict begin 13 H.A end -2 2035 a -2 2035 a SDict begin [ /View [/XYZ H.V] /Dest (0:73) cvn H.B /DEST pdfmark end -2 2035 a 360 x Fk(3.)39 b(Distrib)m(utions-spezi\002sc)o(he)34 b(Hinweise)2523 2395 y SDict begin H.S end 2523 2395 a 2523 2395 a SDict begin 22.464 H.A end 2523 2395 a 2523 2395 a SDict begin [ /View [/XYZ H.V] /Dest (0.3.1) cvn H.B /DEST pdfmark end 2523 2395 a -2 2590 a SDict begin H.S end -2 2590 a -2 2590 a SDict begin 13 H.A end -2 2590 a -2 2590 a SDict begin [ /View [/XYZ H.V] /Dest (0:75) cvn H.B /DEST pdfmark end -2 2590 a 396 2668 a Fi(Sie)21 b(\002nden)e(alle)i(P)o(ak)o(ete)f(unter)1323 2668 y SDict begin H.S end 1323 2668 a 1323 2668 a SDict begin 13 H.A end 1323 2668 a 1323 2668 a SDict begin [ /View [/XYZ H.V] /Dest (0:76) cvn H.B /DEST pdfmark end 1323 2668 a Fi(http://www)-5 b(.reiner)n(-sct.com/content/vie)n(w/32/4)o (3/#)o(linu)o(x.)-2 2852 y SDict begin H.S end -2 2852 a -2 2852 a SDict begin 13 H.A end -2 2852 a -2 2852 a SDict begin [ /View [/XYZ H.V] /Dest (0:77) cvn H.B /DEST pdfmark end -2 2852 a 396 2942 a Fi(Die)21 b(meisten)f(P)o(ak)o(ete)g (erzeugen)e(eine)i(Gruppe)1805 2942 y SDict begin H.S end 1805 2942 a 1805 2942 a SDict begin 13 H.A end 1805 2942 a 1805 2942 a SDict begin [ /View [/XYZ H.V] /Dest (0:78) cvn H.B /DEST pdfmark end 1805 2942 a Fg(cyberjac)n(k)q Fi(.)g(Dieser)h(Gruppe)d(m\374ssen)i(alle)h(Benutzer)e(zugeordnet)396 3050 y(werden,)g(die)h(Zugrif)n(f)f(auf)h(das)g(Ger\344t)g(haben)f (sollen.)h(Das)h(erreichen)d(Sie)j(am)f(einf)o(achsten)f(\374ber)h(das) 396 3158 y(KDE-Programm)966 3158 y SDict begin H.S end 966 3158 a 966 3158 a SDict begin 13 H.A end 966 3158 a 966 3158 a SDict begin [ /View [/XYZ H.V] /Dest (0:79) cvn H.B /DEST pdfmark end 966 3158 a Fg(kuser)i Fi(oder)e(das)g (Administrations-Programm)c(Ihres)k(Systems)g(\(bei)g(SuSE)g(z.B.)3396 3158 y SDict begin H.S end 3396 3158 a 3396 3158 a SDict begin 13 H.A end 3396 3158 a 3396 3158 a SDict begin [ /View [/XYZ H.V] /Dest (0:80) cvn H.B /DEST pdfmark end 3396 3158 a Fg(yast)q Fi(\).)g(Eine)396 3266 y(Ausnahme)f(stellt)i (hier)f(SuSE)g(10.1)g(dar)m(,)f(hier)h(m\374ssen)f(Sie)i(k)o(eine)f (Benutzer)n(-)f(Zuordnung)e(v)n(ornehmen)h(\(ab)i(SuSE)396 3374 y(10.2)f(hinge)o(gen)f(schon\).)-2 3558 y SDict begin H.S end -2 3558 a -2 3558 a SDict begin 13 H.A end -2 3558 a -2 3558 a SDict begin [ /View [/XYZ H.V] /Dest (0:81) cvn H.B /DEST pdfmark end -2 3558 a 396 3648 a Fi(Nach)i(der)g(Installation)f(des)i(P)o(ak)o(etes)f(und)f(der)h (Benutzerzuordnung)c(sollten)k(Sie)h(Ihren)e(Rechner)g(neu)h(starten,) 396 3756 y(damit)g(die)g(\304nderungen)d(g\374ltig)j(werden.)-2 3774 y SDict begin H.S end -2 3774 a -2 3774 a SDict begin 13 H.A end -2 3774 a -2 3774 a SDict begin [ /View [/XYZ H.V] /Dest (0:82) cvn H.B /DEST pdfmark end -2 3774 a 396 4084 a Fd(3.1.)35 b(RPM-basier)r(t)1328 4084 y SDict begin H.S end 1328 4084 a 1328 4084 a SDict begin 18.72 H.A end 1328 4084 a 1328 4084 a SDict begin [ /View [/XYZ H.V] /Dest (0.3.1.2) cvn H.B /DEST pdfmark end 1328 4084 a -2 4252 a SDict begin H.S end -2 4252 a -2 4252 a SDict begin 13 H.A end -2 4252 a -2 4252 a SDict begin [ /View [/XYZ H.V] /Dest (0:84) cvn H.B /DEST pdfmark end -2 4252 a 396 4358 a Fi(Reiner)n(-SCT)21 b(bietet)f(RPM-P)o(ak)o(ete) g(f\374r)f(die)i(folgenden)c(Distrib)n(utionen)i(an:)2699 4358 y SDict begin H.S end 2699 4358 a 2699 4358 a SDict begin 13 H.A end 2699 4358 a 2699 4358 a SDict begin [ /View [/XYZ H.V] /Dest (0:85) cvn H.B /DEST pdfmark end 2699 4358 a -2 4400 a SDict begin H.S end -2 4400 a -2 4400 a SDict begin 13 H.A end -2 4400 a -2 4400 a SDict begin [ /View [/XYZ H.V] /Dest (0:86) cvn H.B /DEST pdfmark end -2 4400 a Black 396 4555 a Fc(\225)p Black 479 4555 a SDict begin H.S end 479 4555 a 479 4555 a SDict begin 13 H.A end 479 4555 a 479 4555 a SDict begin [ /View [/XYZ H.V] /Dest (0:87) cvn H.B /DEST pdfmark end 479 4555 a Fi(SuSE)i(10.3)-2 4556 y SDict begin H.S end -2 4556 a -2 4556 a SDict begin 13 H.A end -2 4556 a -2 4556 a SDict begin [ /View [/XYZ H.V] /Dest (0:88) cvn H.B /DEST pdfmark end -2 4556 a Black 396 4705 a Fc(\225)p Black 479 4705 a SDict begin H.S end 479 4705 a 479 4705 a SDict begin 13 H.A end 479 4705 a 479 4705 a SDict begin [ /View [/XYZ H.V] /Dest (0:89) cvn H.B /DEST pdfmark end 479 4705 a Fi(SuSE)g(10.2)-2 4706 y SDict begin H.S end -2 4706 a -2 4706 a SDict begin 13 H.A end -2 4706 a -2 4706 a SDict begin [ /View [/XYZ H.V] /Dest (0:90) cvn H.B /DEST pdfmark end -2 4706 a Black 396 4854 a Fc(\225)p Black 479 4854 a SDict begin H.S end 479 4854 a 479 4854 a SDict begin 13 H.A end 479 4854 a 479 4854 a SDict begin [ /View [/XYZ H.V] /Dest (0:91) cvn H.B /DEST pdfmark end 479 4854 a Fi(SuSE)g(10.1)-2 4855 y SDict begin H.S end -2 4855 a -2 4855 a SDict begin 13 H.A end -2 4855 a -2 4855 a SDict begin [ /View [/XYZ H.V] /Dest (0:92) cvn H.B /DEST pdfmark end -2 4855 a Black 396 5004 a Fc(\225)p Black 479 5004 a SDict begin H.S end 479 5004 a 479 5004 a SDict begin 13 H.A end 479 5004 a 479 5004 a SDict begin [ /View [/XYZ H.V] /Dest (0:93) cvn H.B /DEST pdfmark end 479 5004 a Fi(SuSE)g(10.0)-2 5005 y SDict begin H.S end -2 5005 a -2 5005 a SDict begin 13 H.A end -2 5005 a -2 5005 a SDict begin [ /View [/XYZ H.V] /Dest (0:94) cvn H.B /DEST pdfmark end -2 5005 a Black 396 5153 a Fc(\225)p Black 479 5153 a SDict begin H.S end 479 5153 a 479 5153 a SDict begin 13 H.A end 479 5153 a 479 5153 a SDict begin [ /View [/XYZ H.V] /Dest (0:95) cvn H.B /DEST pdfmark end 479 5153 a Fi(Fedora)f(Core)g(7)-2 5154 y SDict begin H.S end -2 5154 a -2 5154 a SDict begin 13 H.A end -2 5154 a -2 5154 a SDict begin [ /View [/XYZ H.V] /Dest (0:96) cvn H.B /DEST pdfmark end -2 5154 a Black 3842 5569 a Fg(2)p Black eop end %%Page: 3 3 TeXDict begin 3 2 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.3) cvn H.B /DEST pdfmark end -2 -102 a Black 1636 -132 a Fg(T)-5 b(r)m(eiber)21 b(f\374r)g(REINER)f(SCT)g(cyberJ)m(ac)n(k)g (pinpad/e-com)d(USB)j(Kartenleser)p Black Black 396 72 a Fc(\225)p Black 479 72 a SDict begin H.S end 479 72 a 479 72 a SDict begin 13 H.A end 479 72 a 479 72 a SDict begin [ /View [/XYZ H.V] /Dest (0:97) cvn H.B /DEST pdfmark end 479 72 a Fi(Fedora)g(Core)g(6)-2 73 y SDict begin H.S end -2 73 a -2 73 a SDict begin 13 H.A end -2 73 a -2 73 a SDict begin [ /View [/XYZ H.V] /Dest (0:98) cvn H.B /DEST pdfmark end -2 73 a Black 396 222 a Fc(\225)p Black 479 222 a SDict begin H.S end 479 222 a 479 222 a SDict begin 13 H.A end 479 222 a 479 222 a SDict begin [ /View [/XYZ H.V] /Dest (0:99) cvn H.B /DEST pdfmark end 479 222 a Fi(Fedora)g(Core)g(5)-2 537 y SDict begin H.S end -2 537 a -2 537 a SDict begin 13 H.A end -2 537 a -2 537 a SDict begin [ /View [/XYZ H.V] /Dest (0:100) cvn H.B /DEST pdfmark end -2 537 a 396 645 a Fi(Installieren)g(Sie)g(das) h(entsprechende)c(P)o(ak)o(et)k(einf)o(ach)e(durch)g(das)h(folgende)e (K)m(ommando:)3097 645 y SDict begin H.S end 3097 645 a 3097 645 a SDict begin 13 H.A end 3097 645 a 3097 645 a SDict begin [ /View [/XYZ H.V] /Dest (0:101) cvn H.B /DEST pdfmark end 3097 645 a 45 w Fb(rpm)44 b(-i)396 753 y()-2 921 y SDict begin H.S end -2 921 a -2 921 a SDict begin 13 H.A end -2 921 a -2 921 a SDict begin [ /View [/XYZ H.V] /Dest (0:102) cvn H.B /DEST pdfmark end -2 921 a 396 1027 a Fi(Sollten)20 b(Sie)h(bereits)f(ein)g(\344lteres)h(T)m (reiberpak)o(et)d(installiert)i(haben,)f(v)o(erwenden)f(Sie)j (stattdessen)f(das)h(folgende)396 1135 y(K)m(ommando:)829 1135 y SDict begin H.S end 829 1135 a 829 1135 a SDict begin 13 H.A end 829 1135 a 829 1135 a SDict begin [ /View [/XYZ H.V] /Dest (0:103) cvn H.B /DEST pdfmark end 829 1135 a 45 w Fb(rpm)44 b(-U)h()-2 1311 y SDict begin H.S end -2 1311 a -2 1311 a SDict begin 13 H.A end -2 1311 a -2 1311 a SDict begin [ /View [/XYZ H.V] /Dest (0:104) cvn H.B /DEST pdfmark end -2 1311 a 396 1409 a Fi(Es)21 b(gibt)f(allerdings)f(eine)h(Besonderheit)f(bei)h(V)-9 b(erwendung)18 b(v)n(on)h(SuSE10.0)g(auf)h(einem)f(64-Bit-System)g(mit) i(der)396 1517 y(Anwendung)d("Mone)o(yple)o(x":)f(Da)k(diese)f (Anwendung)e(leider)h(eine)h(32-Bit-Anwendung)d(ist,)k(kann)e(sie)i (nur)e(mit)i(der)396 1625 y(32-Bit-V)-9 b(ersion)18 b(unseres)i(T)m (reibers)g(arbeiten.)f(Leider)g(w)o(ar)h(der)g(K)n(ernel)g(v)n(on)f (SuSE10.0)g(noch)g(nicht)h(in)g(der)g(Lage,)396 1733 y(alle)h(32-Bit-Aufrufe)c(des)k(T)m(reibers)e(nach)h(64-Bit)g(umzuw)o (andeln.)d(Hier)j(muss)h(daher)e(eine)h(Aenderung)e(an)i(der)396 1841 y(Datei)h(/etc/c)o(yberjack.conf)16 b(v)n(or)o(genommen)h(werden.) h(Fue)o(gen)h(Sie)i(bitte)g(die)f(folgende)e(Zeile)i(ein:)396 1949 y("\003ags=0x20000".)-2 1967 y SDict begin H.S end -2 1967 a -2 1967 a SDict begin 13 H.A end -2 1967 a -2 1967 a SDict begin [ /View [/XYZ H.V] /Dest (0:105) cvn H.B /DEST pdfmark end -2 1967 a 396 2236 a Fj(3.1.1.)28 b(Einric)o(htung)f(unter)h(SuSE)h(Lin)o(ux)2083 2236 y SDict begin H.S end 2083 2236 a 2083 2236 a SDict begin 15.6 H.A end 2083 2236 a 2083 2236 a SDict begin [ /View [/XYZ H.V] /Dest (0.3.1.1.3) cvn H.B /DEST pdfmark end 2083 2236 a -2 2424 a SDict begin H.S end -2 2424 a -2 2424 a SDict begin 13 H.A end -2 2424 a -2 2424 a SDict begin [ /View [/XYZ H.V] /Dest (0:107) cvn H.B /DEST pdfmark end -2 2424 a 396 2510 a Fi(Nach)20 b(der)g(Installation)f(des)i(T)m (reibers)e(muessen)h(Sie)h(die)f(Benutzer)m(,)f(die)h(auf)g(den)f (Leser)i(zugreifen)d(k)o(oennen)g(sollen,)396 2618 y(in)j(die)f(Gruppe) f("c)o(yberjack")f(einfue)o(gen.)-2 2802 y SDict begin H.S end -2 2802 a -2 2802 a SDict begin 13 H.A end -2 2802 a -2 2802 a SDict begin [ /View [/XYZ H.V] /Dest (0:108) cvn H.B /DEST pdfmark end -2 2802 a 396 2892 a Fi(Am)j(einf)o (achsten)e(geschieht)g(dies)h(mit)h(Y)-8 b(ast:)21 b(Starten)f(Sie)g(Y) -8 b(ast,)21 b(rufen)e(Sie)i(das)f(Menu)f("Sicherheit)h(und)f (Benutzer")396 3000 y(auf)h(und)f(dort)h("Gruppen)e(bearbeiten)g(und)i (anle)o(gen".)-2 3184 y SDict begin H.S end -2 3184 a -2 3184 a SDict begin 13 H.A end -2 3184 a -2 3184 a SDict begin [ /View [/XYZ H.V] /Dest (0:109) cvn H.B /DEST pdfmark end -2 3184 a 396 3274 a Fi(Es)h(erscheint)f(ein)g(Fenster)m(,)f (das)i(standardmaessig)d(die)i(Systemgruppen)e(nicht)i(anzeigt,)f (daher)g(muessen)h(Sie)h(den)396 3382 y(Filter)g(aendern.)d(Klick)o(en) i(Sie)h(dazu)e(unten)h(rechts)g(auf)f("Filter)i(festle)o(gen")e(und)g (w)o(aehlen)h(Sie)h(dort)396 3490 y("Systemgruppen".)c(Daraufhin)h (sollten)j(Sie)f(in)h(der)f(Liste)g(auch)g(die)g(Gruppe)f("c)o (yberjack")f(\002nden,)h(die)h(Sie)h(dann)396 3598 y(markieren)e (muessen.)g(Anschliessend)g(klick)o(en)h(Sie)h(unten)e(auf)h ("Bearbeiten".)-2 3764 y SDict begin H.S end -2 3764 a -2 3764 a SDict begin 13 H.A end -2 3764 a -2 3764 a SDict begin [ /View [/XYZ H.V] /Dest (0:110) cvn H.B /DEST pdfmark end -2 3764 a 396 3872 a Fi(In)g(dem)g(Fenster)m(,)f(welches)i (dann)e(erscheint,)g(setzen)h(Sie)h(bei)f(den)g(aufgefuehrten)d (Benutzern,)h(die)j(auf)e(den)h(Leser)396 3979 y(zugreifen)f(k)o (oennen)f(sollen,)i(die)g(Markierung.)-2 4164 y SDict begin H.S end -2 4164 a -2 4164 a SDict begin 13 H.A end -2 4164 a -2 4164 a SDict begin [ /View [/XYZ H.V] /Dest (0:111) cvn H.B /DEST pdfmark end -2 4164 a 396 4253 a Fi(Klick)o(en)g(Sie)h(nun)e(auf)h("Uebernehmen")d(und)i(starten)h(Sie)h (das)g(System)f(neu,)f(Der)i(Leser)f(sollte)g(nun)g(fuer)f(die)396 4361 y(markierten)g(Benutzer)g(v)o(erwendbar)e(sein.)-2 4456 y SDict begin H.S end -2 4456 a -2 4456 a SDict begin 13 H.A end -2 4456 a -2 4456 a SDict begin [ /View [/XYZ H.V] /Dest (0:112) cvn H.B /DEST pdfmark end -2 4456 a Black 3842 5569 a Fg(3)p Black eop end %%Page: 4 4 TeXDict begin 4 3 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.4) cvn H.B /DEST pdfmark end -2 -102 a Black -2 -201 a SDict begin H.S end -2 -201 a -2 -201 a SDict begin 13 H.A end -2 -201 a -2 -201 a SDict begin [ /View [/XYZ H.V] /Dest (0:144) cvn H.B /DEST pdfmark end -2 -201 a 1636 -132 a Fg(T)-5 b(r)m(eiber)21 b(f\374r)g(REINER)f(SCT)g(cyberJ)m(ac)n (k)g(pinpad/e-com)d(USB)j(Kartenleser)p Black 396 77 a Fd(3.2.)35 b(DEB-basier)r(t)1314 77 y SDict begin H.S end 1314 77 a 1314 77 a SDict begin 18.72 H.A end 1314 77 a 1314 77 a SDict begin [ /View [/XYZ H.V] /Dest (0.3.2.2) cvn H.B /DEST pdfmark end 1314 77 a -2 244 a SDict begin H.S end -2 244 a -2 244 a SDict begin 13 H.A end -2 244 a -2 244 a SDict begin [ /View [/XYZ H.V] /Dest (0:114) cvn H.B /DEST pdfmark end -2 244 a 396 351 a Fi(Reiner)n(-SCT)21 b(bietet)f(DEB-P)o(ak)o(ete)g(f\374r)f(die)h(folgenden)e(Distrib)n (utionen:)2591 351 y SDict begin H.S end 2591 351 a 2591 351 a SDict begin 13 H.A end 2591 351 a 2591 351 a SDict begin [ /View [/XYZ H.V] /Dest (0:115) cvn H.B /DEST pdfmark end 2591 351 a -2 393 a SDict begin H.S end -2 393 a -2 393 a SDict begin 13 H.A end -2 393 a -2 393 a SDict begin [ /View [/XYZ H.V] /Dest (0:116) cvn H.B /DEST pdfmark end -2 393 a Black 396 548 a Fc(\225)p Black 479 548 a SDict begin H.S end 479 548 a 479 548 a SDict begin 13 H.A end 479 548 a 479 548 a SDict begin [ /View [/XYZ H.V] /Dest (0:117) cvn H.B /DEST pdfmark end 479 548 a Fi(Debian)i(stable)-2 549 y SDict begin H.S end -2 549 a -2 549 a SDict begin 13 H.A end -2 549 a -2 549 a SDict begin [ /View [/XYZ H.V] /Dest (0:118) cvn H.B /DEST pdfmark end -2 549 a Black 396 697 a Fc(\225)p Black 479 697 a SDict begin H.S end 479 697 a 479 697 a SDict begin 13 H.A end 479 697 a 479 697 a SDict begin [ /View [/XYZ H.V] /Dest (0:119) cvn H.B /DEST pdfmark end 479 697 a Fi(Debian)g(unstable)-2 698 y SDict begin H.S end -2 698 a -2 698 a SDict begin 13 H.A end -2 698 a -2 698 a SDict begin [ /View [/XYZ H.V] /Dest (0:120) cvn H.B /DEST pdfmark end -2 698 a Black 396 847 a Fc(\225)p Black 479 847 a SDict begin H.S end 479 847 a 479 847 a SDict begin 13 H.A end 479 847 a 479 847 a SDict begin [ /View [/XYZ H.V] /Dest (0:121) cvn H.B /DEST pdfmark end 479 847 a Fi(Ub)n(untu)f(6.10)-2 848 y SDict begin H.S end -2 848 a -2 848 a SDict begin 13 H.A end -2 848 a -2 848 a SDict begin [ /View [/XYZ H.V] /Dest (0:122) cvn H.B /DEST pdfmark end -2 848 a Black 396 996 a Fc(\225)p Black 479 996 a SDict begin H.S end 479 996 a 479 996 a SDict begin 13 H.A end 479 996 a 479 996 a SDict begin [ /View [/XYZ H.V] /Dest (0:123) cvn H.B /DEST pdfmark end 479 996 a Fi(Ub)n(untu)g(7.04)-2 997 y SDict begin H.S end -2 997 a -2 997 a SDict begin 13 H.A end -2 997 a -2 997 a SDict begin [ /View [/XYZ H.V] /Dest (0:124) cvn H.B /DEST pdfmark end -2 997 a Black 396 1146 a Fc(\225)p Black 479 1146 a SDict begin H.S end 479 1146 a 479 1146 a SDict begin 13 H.A end 479 1146 a 479 1146 a SDict begin [ /View [/XYZ H.V] /Dest (0:125) cvn H.B /DEST pdfmark end 479 1146 a Fi(Ub)n(untu)g(7.10)-2 1461 y SDict begin H.S end -2 1461 a -2 1461 a SDict begin 13 H.A end -2 1461 a -2 1461 a SDict begin [ /View [/XYZ H.V] /Dest (0:126) cvn H.B /DEST pdfmark end -2 1461 a 396 1569 a Fi(Installieren)h(Sie)g(das)h(entsprechende)c(P)o(ak)o(et)k(mit:)1902 1569 y SDict begin H.S end 1902 1569 a 1902 1569 a SDict begin 13 H.A end 1902 1569 a 1902 1569 a SDict begin [ /View [/XYZ H.V] /Dest (0:127) cvn H.B /DEST pdfmark end 1902 1569 a 45 w Fb(dpkg)44 b(-i)h()-2 1597 y SDict begin H.S end -2 1597 a -2 1597 a SDict begin 13 H.A end -2 1597 a -2 1597 a SDict begin [ /View [/XYZ H.V] /Dest (0:128) cvn H.B /DEST pdfmark end -2 1597 a 396 1908 a Fd(3.3.)35 b(Alle)f(anderen)h(Distrib)n(utionen)2187 1908 y SDict begin H.S end 2187 1908 a 2187 1908 a SDict begin 18.72 H.A end 2187 1908 a 2187 1908 a SDict begin [ /View [/XYZ H.V] /Dest (0.3.3.2) cvn H.B /DEST pdfmark end 2187 1908 a -2 2075 a SDict begin H.S end -2 2075 a -2 2075 a SDict begin 13 H.A end -2 2075 a -2 2075 a SDict begin [ /View [/XYZ H.V] /Dest (0:130) cvn H.B /DEST pdfmark end -2 2075 a 396 2182 a Fi(Es)21 b(gibt)f(momentan)e(wenig)i (Erf)o(ahrungen)d(mit)j(anderen)f(Linux-Distrib)n(utionen.)d(Haben)k (Sie)h(ein)f(RPM-basiertes)396 2289 y(System,)g(so)h(k\366nnen)d(Sie)j (probieren)d(eigene)h(RPM-P)o(ak)o(et)h(zu)g(erstellen:)2576 2289 y SDict begin H.S end 2576 2289 a 2576 2289 a SDict begin 13 H.A end 2576 2289 a 2576 2289 a SDict begin [ /View [/XYZ H.V] /Dest (0:131) cvn H.B /DEST pdfmark end 2576 2289 a 44 w Fb(rpm)45 b(--rebuild)396 2397 y() 63 b Fi(oder)1392 2397 y SDict begin H.S end 1392 2397 a 1392 2397 a SDict begin 13 H.A end 1392 2397 a 1392 2397 a SDict begin [ /View [/XYZ H.V] /Dest (0:132) cvn H.B /DEST pdfmark end 1392 2397 a 45 w Fb(rpmbuild)44 b(--rebuild)f ()-2 2574 y SDict begin H.S end -2 2574 a -2 2574 a SDict begin 13 H.A end -2 2574 a -2 2574 a SDict begin [ /View [/XYZ H.V] /Dest (0:133) cvn H.B /DEST pdfmark end -2 2574 a 396 2671 a Fi(F)o(alls)21 b(Sie)g(den)f(T)m (reiber)f(selber)h(k)o(ompilieren)e(w)o(ollen,)i(wechseln)f(Sie)i(in)g (das)f(Hauptv)o(erzeichnis)e(des)i(entpackten)396 2779 y(T)m(reiber)n(-P)o(ak)o(etes)f(und)g(geben)g(Sie)i(die)f(folgenden)e (Befehle)i(ein:)2326 2779 y SDict begin H.S end 2326 2779 a 2326 2779 a SDict begin 13 H.A end 2326 2779 a 2326 2779 a SDict begin [ /View [/XYZ H.V] /Dest (0:134) cvn H.B /DEST pdfmark end 2326 2779 a 45 w Fb(./configure)43 b(make)-2 2963 y SDict begin H.S end -2 2963 a -2 2963 a SDict begin 13 H.A end -2 2963 a -2 2963 a SDict begin [ /View [/XYZ H.V] /Dest (0:135) cvn H.B /DEST pdfmark end -2 2963 a 396 3053 a Fi(Anschlie\337end)19 b(k\366nnen)f(Sie)j(den)e (T)m(reiber)g(auf)h(Ihr)g(System)g(installieren.)f(Dazu)h(ben\366tigen) f(Sie)h(sehr)396 3161 y(w)o(ahrscheinlich)f(Administrator)n(-Rechte.) 1683 3161 y SDict begin H.S end 1683 3161 a 1683 3161 a SDict begin 13 H.A end 1683 3161 a 1683 3161 a SDict begin [ /View [/XYZ H.V] /Dest (0:136) cvn H.B /DEST pdfmark end 1683 3161 a 45 w Fb(make)44 b(install)-2 3256 y SDict begin H.S end -2 3256 a -2 3256 a SDict begin 13 H.A end -2 3256 a -2 3256 a SDict begin [ /View [/XYZ H.V] /Dest (0:137) cvn H.B /DEST pdfmark end -2 3256 a 376 x Fk(4.)39 b(Firmware-Update)1333 3632 y SDict begin H.S end 1333 3632 a 1333 3632 a SDict begin 22.464 H.A end 1333 3632 a 1333 3632 a SDict begin [ /View [/XYZ H.V] /Dest (0.4.1) cvn H.B /DEST pdfmark end 1333 3632 a -2 3827 a SDict begin H.S end -2 3827 a -2 3827 a SDict begin 13 H.A end -2 3827 a -2 3827 a SDict begin [ /View [/XYZ H.V] /Dest (0:139) cvn H.B /DEST pdfmark end -2 3827 a 396 3906 a Fi(Die)21 b(aktuelle)f(V)-9 b(ersion)19 b(dieses)i(T)m(reibers)e (enthaelt)h(das)g(T)-7 b(ool)20 b("cj\003ash")g(welches)g(das)h (Aktualisieren)e(der)h(Firmw)o(are)396 4014 y(des)h(Lesers)f(erlaubt.) -2 4180 y SDict begin H.S end -2 4180 a -2 4180 a SDict begin 13 H.A end -2 4180 a -2 4180 a SDict begin [ /View [/XYZ H.V] /Dest (0:140) cvn H.B /DEST pdfmark end -2 4180 a 396 4288 a Fi(Derzeit)g(k)o(oennen)f(damit)g(allerdings)h(nur)f (die)h(neuesten)f(Cyberjack-Leser)g(aktualisiert)g(werden)g(\(mit)h (der)396 4396 y(Produkt-K)n(ennung)c(0x400\))-2 4580 y SDict begin H.S end -2 4580 a -2 4580 a SDict begin 13 H.A end -2 4580 a -2 4580 a SDict begin [ /View [/XYZ H.V] /Dest (0:141) cvn H.B /DEST pdfmark end -2 4580 a 396 4669 a Fi(Der)k(Linux-T)m(reiber)e(funktioniert)f(mit)k(diesen)f (Geraeten)f(nur)h(mit)g(einer)g(Firmw)o(are)g(in)g(der)g(V)-9 b(ersion)19 b(groesser)g(oder)396 4777 y(gleich)h(3.0.6.)e(Sollte)j (Ihr)f(Leser)g(eine)g(aeltere)g(V)-9 b(ersion)19 b(enthalten,)g(ist)i (ein)f(Update)g(zwingend)f(noetig.)g(Auch)g(nach)396 4885 y(diesem)h(Update)g(funktioniert)e(der)h(Leser)h(weiterhin)g(auch) f(unter)h(W)m(indo)n(ws.)p Black 3842 5569 a Fg(4)p Black eop end %%Page: 5 5 TeXDict begin 5 4 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.5) cvn H.B /DEST pdfmark end -2 -102 a Black 1636 -132 a Fg(T)-5 b(r)m(eiber)21 b(f\374r)g(REINER)f(SCT)g(cyberJ)m(ac)n(k)g (pinpad/e-com)d(USB)j(Kartenleser)p Black -2 -11 a SDict begin H.S end -2 -11 a -2 -11 a SDict begin 13 H.A end -2 -11 a -2 -11 a SDict begin [ /View [/XYZ H.V] /Dest (0:142) cvn H.B /DEST pdfmark end -2 -11 a 396 72 a Fi(Um)h(die)f(Firmw) o(are)f(zu)i(aktualiseren)e(geben)g(Sie)h(bitte)h(das)f(folgenden)e(K)m (ommando)g(in)i(einer)g(K)m(onsole)f(ein:)396 180 y SDict begin H.S end 396 180 a 396 180 a SDict begin 13 H.A end 396 180 a 396 180 a SDict begin [ /View [/XYZ H.V] /Dest (0:143) cvn H.B /DEST pdfmark end 396 180 a 45 w Fb(cjflash)44 b(1)g(Kernel_V30_07.bin)e(Kernel_V30_07.bin.ecoma.sgn)f(ecoma2.bky)396 454 y Fi(Das)21 b(erste)g(Ar)o(gument)d(ist)j(die)f(Nummer)f(des)h (Lesers)h(\(be)o(ginnend)c(mit)j("1",)g(der)g(2.)g(Leser)g(hat)g(die)g (Nummer)f("2")396 562 y(etc\).)h(Das)h(naechste)f(Ar)o(gument)e(ist)j (der)f(Name)g(der)f(Datei)i(mit)f(der)g(neuen)f(Firmw)o(are)h(gefolgt)f (v)n(om)h(Namen)f(der)396 670 y(Datei)i(mit)f(der)g(Signatur)f(der)h (neuen)f(Firmw)o(are.)-2 854 y SDict begin H.S end -2 854 a -2 854 a SDict begin 13 H.A end -2 854 a -2 854 a SDict begin [ /View [/XYZ H.V] /Dest (0:145) cvn H.B /DEST pdfmark end -2 854 a 396 944 a Fi(Nachdem)g(Sie)i(das)f(K)m(ommando)e (einge)o(geben)g(haben)h(fragt)g(der)h(Leser)g(nach)g(einer)g (Bestaetigung.)f(Drueck)o(en)f(Sie)396 1052 y(die)i("OK"-T)-7 b(aste)21 b(auf)e(der)h(T)-7 b(astatur)20 b(des)h(Lesers)f(zur)g (Bestaetigung)f(oder)h(brechen)e(Sie)j(den)f(V)-11 b(or)o(gang)17 b(mit)396 1160 y("CANCEL")k(ab)m(.)-2 1327 y SDict begin H.S end -2 1327 a -2 1327 a SDict begin 13 H.A end -2 1327 a -2 1327 a SDict begin [ /View [/XYZ H.V] /Dest (0:146) cvn H.B /DEST pdfmark end -2 1327 a 396 1434 a Fi(Sollte)g(der)f(Leser)g("haengen")e(nachdem)g(Sie)j("OK")g(oder)e ("CANCEL")h(gedrueckt)f(haben,)f(muessen)i(Sie)h(den)396 1542 y(Leser)f(abziehen)f(und)h(neu)f(anschliessen.)h(Anschliessend)f (muessen)h(Sie)h(eine)f(leicht)g(modi\002zierte)f(V)-9 b(ersion)19 b(des)396 1650 y(obrigen)g(K)m(ommandos)f(v)o(erwenden:) 1520 1650 y SDict begin H.S end 1520 1650 a 1520 1650 a SDict begin 13 H.A end 1520 1650 a 1520 1650 a SDict begin [ /View [/XYZ H.V] /Dest (0:147) cvn H.B /DEST pdfmark end 1520 1650 a 44 w Fb(CJ_USB_MODE=1)43 b(cjflash)h(1)g (Kernel_V30_07.bin)396 1758 y(Kernel_V30_07.bin.ecoma.sgn)-2 1934 y SDict begin H.S end -2 1934 a -2 1934 a SDict begin 13 H.A end -2 1934 a -2 1934 a SDict begin [ /View [/XYZ H.V] /Dest (0:148) cvn H.B /DEST pdfmark end -2 1934 a 396 2032 a Fi(Hiermit)20 b(wird)g(die)g(Umgeb)n(ungsv)n(ariable)d ("CJ_USB_MODE")j(gesetzt)g(be)n(v)n(or)g(das)g(Update)g(durchgefuehrt)c (wird.)396 2140 y(Dadurch)j(weiss)i(der)f(T)m(reiber)m(,)e(dass)j(es)g (sich)g(um)e(einen)h(Leser)g(mit)h(einer)e(fuer)h(Linux)f (problematischen)e(Firmw)o(are)396 2248 y(handelt)i(und)h(spricht)f (ihn)h(etw)o(as)h(anders)f(an.)-2 2432 y SDict begin H.S end -2 2432 a -2 2432 a SDict begin 13 H.A end -2 2432 a -2 2432 a SDict begin [ /View [/XYZ H.V] /Dest (0:149) cvn H.B /DEST pdfmark end -2 2432 a 396 2522 a Fi(Bitte)h(setzen)g (Sie)g(die)f(Umgeb)n(ungsv)n(ariable)c(nur)m(,)j(wenn)h("cj\003ash")g (sonst)h(nicht)e(funktioniert!)-2 2550 y SDict begin H.S end -2 2550 a -2 2550 a SDict begin 13 H.A end -2 2550 a -2 2550 a SDict begin [ /View [/XYZ H.V] /Dest (0:150) cvn H.B /DEST pdfmark end -2 2550 a 359 x Fk(5.)39 b(Suppor)s(t)712 2909 y SDict begin H.S end 712 2909 a 712 2909 a SDict begin 22.464 H.A end 712 2909 a 712 2909 a SDict begin [ /View [/XYZ H.V] /Dest (0.5.1) cvn H.B /DEST pdfmark end 712 2909 a -2 3105 a SDict begin H.S end -2 3105 a -2 3105 a SDict begin 13 H.A end -2 3105 a -2 3105 a SDict begin [ /View [/XYZ H.V] /Dest (0:152) cvn H.B /DEST pdfmark end -2 3105 a 396 3183 a Fi(Support)19 b(f\374r)h(diesen)f(T)m(reiber)h (bietet)g(REINER)g(SCT)-6 b(.)21 b(E-mail:)f(support@reiner)n(-sct.com) d(Postadresse:)396 3291 y(Schw)o(abacher)i(Str)-5 b(.)21 b(34,)e(90762)f(F\374rth,)i(Deutschland)-2 3469 y SDict begin H.S end -2 3469 a -2 3469 a SDict begin 13 H.A end -2 3469 a -2 3469 a SDict begin [ /View [/XYZ H.V] /Dest (0:153) cvn H.B /DEST pdfmark end -2 3469 a 396 3565 a Fi(Bitte)h(f\374gen)e(Sie)i(ihrer)f(Problembeschreib)n(ung)c(die)k (folgenden)e(Informationen)e(bei:)-2 3583 y SDict begin H.S end -2 3583 a -2 3583 a SDict begin 13 H.A end -2 3583 a -2 3583 a SDict begin [ /View [/XYZ H.V] /Dest (0:154) cvn H.B /DEST pdfmark end -2 3583 a -2 3593 a SDict begin H.S end -2 3593 a -2 3593 a SDict begin 13 H.A end -2 3593 a -2 3593 a SDict begin [ /View [/XYZ H.V] /Dest (0:155) cvn H.B /DEST pdfmark end -2 3593 a Black 396 3735 a Fc(\225)p Black 479 3735 a SDict begin H.S end 479 3735 a 479 3735 a SDict begin 13 H.A end 479 3735 a 479 3735 a SDict begin [ /View [/XYZ H.V] /Dest (0:156) cvn H.B /DEST pdfmark end 479 3735 a Fi(Name)k(und)g(V)-9 b(ersion)19 b(des)h(v)o(erwendeten)e(Programmes,)g(mit)j(dem)e(der)h (Fehler)g(auftrat)-2 3753 y SDict begin H.S end -2 3753 a -2 3753 a SDict begin 13 H.A end -2 3753 a -2 3753 a SDict begin [ /View [/XYZ H.V] /Dest (0:157) cvn H.B /DEST pdfmark end -2 3753 a Black 396 3885 a Fc(\225)p Black 479 3885 a SDict begin H.S end 479 3885 a 479 3885 a SDict begin 13 H.A end 479 3885 a 479 3885 a SDict begin [ /View [/XYZ H.V] /Dest (0:158) cvn H.B /DEST pdfmark end 479 3885 a Fi(die)g(v)n(ollst\344ndige)f(Fehlermeldung)-2 3903 y SDict begin H.S end -2 3903 a -2 3903 a SDict begin 13 H.A end -2 3903 a -2 3903 a SDict begin [ /View [/XYZ H.V] /Dest (0:159) cvn H.B /DEST pdfmark end -2 3903 a Black 396 4034 a Fc(\225)p Black 479 4034 a SDict begin H.S end 479 4034 a 479 4034 a SDict begin 13 H.A end 479 4034 a 479 4034 a SDict begin [ /View [/XYZ H.V] /Dest (0:160) cvn H.B /DEST pdfmark end 479 4034 a Fi(den)h(Namen)f(und)h (die)g(V)-9 b(ersion)19 b(der)h(v)n(on)g(Ihnen)f(v)o(erwendeten)e (Linux-Distrib)n(ution)h(\(z.B.)i(SuSE)g(10.1,)f(Debian)479 4142 y(3.0r1)g(testing\))-2 4160 y SDict begin H.S end -2 4160 a -2 4160 a SDict begin 13 H.A end -2 4160 a -2 4160 a SDict begin [ /View [/XYZ H.V] /Dest (0:161) cvn H.B /DEST pdfmark end -2 4160 a Black 396 4291 a Fc(\225)p Black 479 4291 a SDict begin H.S end 479 4291 a 479 4291 a SDict begin 13 H.A end 479 4291 a 479 4291 a SDict begin [ /View [/XYZ H.V] /Dest (0:162) cvn H.B /DEST pdfmark end 479 4291 a Fi(CPU-T)-7 b(yp)20 b(\(z.B.)g(der)g(Inhalt)g(der)f (Datei)1667 4291 y SDict begin H.S end 1667 4291 a 1667 4291 a SDict begin 13 H.A end 1667 4291 a 1667 4291 a SDict begin [ /View [/XYZ H.V] /Dest (0:163) cvn H.B /DEST pdfmark end 1667 4291 a Fh(/proc/cpuinfo)p Fi(\))-2 4309 y SDict begin H.S end -2 4309 a -2 4309 a SDict begin 13 H.A end -2 4309 a -2 4309 a SDict begin [ /View [/XYZ H.V] /Dest (0:164) cvn H.B /DEST pdfmark end -2 4309 a Black 396 4441 a Fc(\225)p Black 479 4441 a SDict begin H.S end 479 4441 a 479 4441 a SDict begin 13 H.A end 479 4441 a 479 4441 a SDict begin [ /View [/XYZ H.V] /Dest (0:165) cvn H.B /DEST pdfmark end 479 4441 a Fi(K)n(ernelv)o(ersion)f (\(z.B.)i(die)g(Ausgabe)f(des)i(Befehls)1988 4441 y SDict begin H.S end 1988 4441 a 1988 4441 a SDict begin 13 H.A end 1988 4441 a 1988 4441 a SDict begin [ /View [/XYZ H.V] /Dest (0:166) cvn H.B /DEST pdfmark end 1988 4441 a Fe(uname)g(-r)p Fi(\))-2 4459 y SDict begin H.S end -2 4459 a -2 4459 a SDict begin 13 H.A end -2 4459 a -2 4459 a SDict begin [ /View [/XYZ H.V] /Dest (0:167) cvn H.B /DEST pdfmark end -2 4459 a Black 396 4590 a Fc(\225)p Black 479 4590 a SDict begin H.S end 479 4590 a 479 4590 a SDict begin 13 H.A end 479 4590 a 479 4590 a SDict begin [ /View [/XYZ H.V] /Dest (0:168) cvn H.B /DEST pdfmark end 479 4590 a Fi(Liste)g(der)f(angeschlossenen)e(USB-Ger\344te)i (\(z.B.)g(die)g(Ausgabe)f(des)i(Befehls)2819 4590 y SDict begin H.S end 2819 4590 a 2819 4590 a SDict begin 13 H.A end 2819 4590 a 2819 4590 a SDict begin [ /View [/XYZ H.V] /Dest (0:169) cvn H.B /DEST pdfmark end 2819 4590 a Fe(lsusb)p Fi(\))-2 4650 y SDict begin H.S end -2 4650 a -2 4650 a SDict begin 13 H.A end -2 4650 a -2 4650 a SDict begin [ /View [/XYZ H.V] /Dest (0:170) cvn H.B /DEST pdfmark end -2 4650 a Black 3842 5569 a Fg(5)p Black eop end %%Page: 6 6 TeXDict begin 6 5 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.6) cvn H.B /DEST pdfmark end -2 -102 a Black 1636 -132 a Fg(T)-5 b(r)m(eiber)21 b(f\374r)g(REINER)f(SCT)g(cyberJ)m(ac)n(k)g (pinpad/e-com)d(USB)j(Kartenleser)p Black -2 94 a Fk(6.)39 b(T)-11 b(r)m(oub)o(leshooting)1278 94 y SDict begin H.S end 1278 94 a 1278 94 a SDict begin 22.464 H.A end 1278 94 a 1278 94 a SDict begin [ /View [/XYZ H.V] /Dest (0.6.1) cvn H.B /DEST pdfmark end 1278 94 a -2 126 a SDict begin H.S end -2 126 a -2 126 a SDict begin 13 H.A end -2 126 a -2 126 a SDict begin [ /View [/XYZ H.V] /Dest (0:172) cvn H.B /DEST pdfmark end -2 126 a 396 422 a Fd(6.1.)35 b(Er)n(ste)e(Sc)o(hritte)1403 422 y SDict begin H.S end 1403 422 a 1403 422 a SDict begin 18.72 H.A end 1403 422 a 1403 422 a SDict begin [ /View [/XYZ H.V] /Dest (0.6.4.2) cvn H.B /DEST pdfmark end 1403 422 a -2 590 a SDict begin H.S end -2 590 a -2 590 a SDict begin 13 H.A end -2 590 a -2 590 a SDict begin [ /View [/XYZ H.V] /Dest (0:174) cvn H.B /DEST pdfmark end -2 590 a 396 696 a Fi(Mit)20 b(dem)e(T)m(reiber)g(wird)h(das)g(T)-7 b(ool)19 b("c)o(yberjack")e (installiert.)i(Es)g(erzeugt)f(Dateien)h(mit)g(Daten,)g(die)g(fuer)f (den)g(Support)396 804 y(v)n(on)h(Reiner)h(SCT)h(wichtig)e(sind.)h (Fuehren)e(Sie)i(daher)f(in)h(einer)f(K)m(onsole)g(den)h(folgenden)d (Befehl)j(aus;)3480 804 y SDict begin H.S end 3480 804 a 3480 804 a SDict begin 13 H.A end 3480 804 a 3480 804 a SDict begin [ /View [/XYZ H.V] /Dest (0:175) cvn H.B /DEST pdfmark end 3480 804 a Fb(cyberjack)-2 988 y SDict begin H.S end -2 988 a -2 988 a SDict begin 13 H.A end -2 988 a -2 988 a SDict begin [ /View [/XYZ H.V] /Dest (0:176) cvn H.B /DEST pdfmark end -2 988 a 396 1078 a Fi(Dabei)g(entstehen)g(im)g(aktuellen)f(V)-9 b(erzeichnis)19 b(3)h(Dateien.)g(Schauen)f(Sie)i(sich)g(zuerst)f(die)g(Datei)396 1186 y SDict begin H.S end 396 1186 a 396 1186 a SDict begin 13 H.A end 396 1186 a 396 1186 a SDict begin [ /View [/XYZ H.V] /Dest (0:177) cvn H.B /DEST pdfmark end 396 1186 a Fh(cyberjack-hints.log)e Fi(an.)i(Sie)h(enthaelt)e(e)n(v)o (entuell)g(bereits)h(Hinweise,)g(w)o(as)h(Sie)g(auf)f(Ihrem)f(System)h (tun)396 1294 y(k)o(oennen,)e(um)i(das)h(Problem)e(selbst)h(zu)h (beheben)d(\(oft)i(sind)g(es)h(nur)e(Kleinigk)o(eiten\).)-2 1478 y SDict begin H.S end -2 1478 a -2 1478 a SDict begin 13 H.A end -2 1478 a -2 1478 a SDict begin [ /View [/XYZ H.V] /Dest (0:178) cvn H.B /DEST pdfmark end -2 1478 a 396 1568 a Fi(Sollte)h(das)g(nicht)f(zum)g(Erfolg)f(fuehren,)f (senden)i(Sie)h(bitte)g(die)f(ebenf)o(alls)g(entstandene)f(Datei)i("c)o (yberjack.xml")c(mit)396 1676 y(Ihrer)j(Support-Anfrage)e(mit,)j(damit) g(wir)g(alle)h(noetigen)e(Informationen)d(haben,)j(um)h(Ihnen)f(helfen) g(zu)h(k)o(oennen.)-2 1704 y SDict begin H.S end -2 1704 a -2 1704 a SDict begin 13 H.A end -2 1704 a -2 1704 a SDict begin [ /View [/XYZ H.V] /Dest (0:179) cvn H.B /DEST pdfmark end -2 1704 a 396 2014 a Fd(6.2.)35 b(Aeltere)f(c)o(yberJac)n (ks)1712 2014 y SDict begin H.S end 1712 2014 a 1712 2014 a SDict begin 18.72 H.A end 1712 2014 a 1712 2014 a SDict begin [ /View [/XYZ H.V] /Dest (0.6.5.2) cvn H.B /DEST pdfmark end 1712 2014 a -2 2205 a SDict begin H.S end -2 2205 a -2 2205 a SDict begin 13 H.A end -2 2205 a -2 2205 a SDict begin [ /View [/XYZ H.V] /Dest (0:181) cvn H.B /DEST pdfmark end -2 2205 a 396 2288 a Fi(c)o(yberJacks)19 b(mit)h(der)g(USB-K)n(ennung)e(0x100)h(\(alte)h(Ecom/Pinpad\))e(machen) h(mitunter)g(Probleme)g(mit)h(aktuellen)396 2396 y(T)m(reibern.)-2 2563 y SDict begin H.S end -2 2563 a -2 2563 a SDict begin 13 H.A end -2 2563 a -2 2563 a SDict begin [ /View [/XYZ H.V] /Dest (0:182) cvn H.B /DEST pdfmark end -2 2563 a 396 2670 a Fi(F)o(alls)h(das)g(bei)f(Ihnen)f(der)g(F)o(all)i(sein)g (sollte,)f(gibt)g(es)h(die)f(Moe)o(glichk)o(eit,)e(das)j(V)-9 b(erhalten)19 b(des)h(T)m(reibers)g(zu)396 2778 y(beein\003ussen:)-2 2945 y SDict begin H.S end -2 2945 a -2 2945 a SDict begin 13 H.A end -2 2945 a -2 2945 a SDict begin [ /View [/XYZ H.V] /Dest (0:183) cvn H.B /DEST pdfmark end -2 2945 a -2 2945 a SDict begin H.S end -2 2945 a -2 2945 a SDict begin 13 H.A end -2 2945 a -2 2945 a SDict begin [ /View [/XYZ H.V] /Dest (0:184) cvn H.B /DEST pdfmark end -2 2945 a 396 3052 a Fb(cyberjack)44 b(addflags)f(0x100000)-2 3228 y SDict begin H.S end -2 3228 a -2 3228 a SDict begin 13 H.A end -2 3228 a -2 3228 a SDict begin [ /View [/XYZ H.V] /Dest (0:185) cvn H.B /DEST pdfmark end -2 3228 a 396 3326 a Fi(Dieses)21 b(K)m(ommando)d(muessen)i(Sie)h(als)g(root)e (ausfuehren.)f(Es)j(setzt)g(ein)f(Flag)g(welches)g(den)g(T)m(reiber)f (bei)h(jedem)396 3434 y(Initialisieren)g(des)g(Lesers)h(ein)f(Reset-K)m (ommando)e(schick)o(en)h(laesst.)-2 3445 y SDict begin H.S end -2 3445 a -2 3445 a SDict begin 13 H.A end -2 3445 a -2 3445 a SDict begin [ /View [/XYZ H.V] /Dest (0:186) cvn H.B /DEST pdfmark end -2 3445 a 396 3772 a Fd(6.3.)35 b(Gr)n(o\337e)e(Anzahl)h(v)l(on)g(Lesern)2070 3772 y SDict begin H.S end 2070 3772 a 2070 3772 a SDict begin 18.72 H.A end 2070 3772 a 2070 3772 a SDict begin [ /View [/XYZ H.V] /Dest (0.6.6.2) cvn H.B /DEST pdfmark end 2070 3772 a -2 3940 a SDict begin H.S end -2 3940 a -2 3940 a SDict begin 13 H.A end -2 3940 a -2 3940 a SDict begin [ /View [/XYZ H.V] /Dest (0:188) cvn H.B /DEST pdfmark end -2 3940 a 396 4046 a Fi(Der)20 b(c)o(yberJack)f(wurde)g(mit)i(bis)f (zu)g(52)g(gleichzeitig)f(angeschlossenen)f(Ger\344ten)i(\(\374ber)f (7-Port)g(Hubs\))h(getestet.)396 4154 y(Dabei)g(gibt)g(es)h(allerdings) e(etw)o(as)i(zu)f(beachten:)-2 4172 y SDict begin H.S end -2 4172 a -2 4172 a SDict begin 13 H.A end -2 4172 a -2 4172 a SDict begin [ /View [/XYZ H.V] /Dest (0:189) cvn H.B /DEST pdfmark end -2 4172 a -2 4182 a SDict begin H.S end -2 4182 a -2 4182 a SDict begin 13 H.A end -2 4182 a -2 4182 a SDict begin [ /View [/XYZ H.V] /Dest (0:190) cvn H.B /DEST pdfmark end -2 4182 a Black 396 4325 a Fc(\225)p Black 479 4325 a SDict begin H.S end 479 4325 a 479 4325 a SDict begin 13 H.A end 479 4325 a 479 4325 a SDict begin [ /View [/XYZ H.V] /Dest (0:191) cvn H.B /DEST pdfmark end 479 4325 a Fi(Linux)f(bis)i(V)-9 b(ersion)19 b(2.4.19)g(h\344ngt)g(sich)h(v)n(ollst\344ndig)g(auf,)f(wenn)h(zu)g (viele)g(Ger\344te)g(angeschlossen)f(sind.)479 4433 y(V)-9 b(ersionen)19 b(ab)h(2.4.20)e(weisen)j(dieses)f(Problem)g(nicht)f(mehr) h(auf.)-2 4434 y SDict begin H.S end -2 4434 a -2 4434 a SDict begin 13 H.A end -2 4434 a -2 4434 a SDict begin [ /View [/XYZ H.V] /Dest (0:192) cvn H.B /DEST pdfmark end -2 4434 a Black 396 4582 a Fc(\225)p Black 479 4582 a SDict begin H.S end 479 4582 a 479 4582 a SDict begin 13 H.A end 479 4582 a 479 4582 a SDict begin [ /View [/XYZ H.V] /Dest (0:193) cvn H.B /DEST pdfmark end 479 4582 a Fi(Es)h(treten)f(manchmal)e(timeout-Fehler)h(auf.)g(Das)i(Problem)e (scheint)h(hier)g(im)g(Linux-K)n(ernel)e(selbst)j(zu)f(lie)o(gen)479 4690 y(\(usb-uhci\).)e(Mit)j(schnelleren)e(Rechnern)f(tritt)j(dieses)g (Problem)e(nicht)h(mehr)f(auf)h(\(ab)g(2GHz\).)-2 4705 y SDict begin H.S end -2 4705 a -2 4705 a SDict begin 13 H.A end -2 4705 a -2 4705 a SDict begin [ /View [/XYZ H.V] /Dest (0:194) cvn H.B /DEST pdfmark end -2 4705 a Black 396 4839 a Fc(\225)p Black 479 4839 a SDict begin H.S end 479 4839 a 479 4839 a SDict begin 13 H.A end 479 4839 a 479 4839 a SDict begin [ /View [/XYZ H.V] /Dest (0:195) cvn H.B /DEST pdfmark end 479 4839 a Fi(Sollte)h(es)g(immer)e(noch)g (nicht)h(wie)h(ge)n(w\374nscht)e(funktionieren,)d(sollten)21 b(Sie)f(die)h(beteiligten)479 4947 y(USB-Controller)n(-Karten)d (und/oder)g(Hubs)i(austauschen.)f(Es)i(gibt)f(hier)f(of)n(fensichtlich) g(eine)h(besonders)f(gro\337e)479 5055 y(Streubreite)g(in)i(der)e (Qualit\344t)i(dieser)f(Ger\344te.)p Black 3840 5569 a Fg(6)p Black eop end %%Page: 7 7 TeXDict begin 7 6 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.7) cvn H.B /DEST pdfmark end -2 -102 a Black 1636 -132 a Fg(T)-5 b(r)m(eiber)21 b(f\374r)g(REINER)f(SCT)g(cyberJ)m(ac)n(k)g (pinpad/e-com)d(USB)j(Kartenleser)p Black -2 -11 a SDict begin H.S end -2 -11 a -2 -11 a SDict begin 13 H.A end -2 -11 a -2 -11 a SDict begin [ /View [/XYZ H.V] /Dest (0:196) cvn H.B /DEST pdfmark end -2 -11 a 396 72 a Fi(Der)g (Daten-Durchsatz)f(nimmt)g(nicht)h(ab,)g(wenn)g(Sie)g(statt)i(einem)d (50)h(Kartenleser)f(anschlie\337en)g(und)g(k)o(onstant)396 180 y(auslesen)h(\(getestet)g(mit)h(den)e(K)m(ommandos)g(SELECT)h(und)f (READ_BIN)m(AR)-5 b(Y\).)-2 209 y SDict begin H.S end -2 209 a -2 209 a SDict begin 13 H.A end -2 209 a -2 209 a SDict begin [ /View [/XYZ H.V] /Dest (0:197) cvn H.B /DEST pdfmark end -2 209 a 396 519 a Fd(6.4.)35 b(Hotplug)o(ging)1331 519 y SDict begin H.S end 1331 519 a 1331 519 a SDict begin 18.72 H.A end 1331 519 a 1331 519 a SDict begin [ /View [/XYZ H.V] /Dest (0.6.7.2) cvn H.B /DEST pdfmark end 1331 519 a -2 712 a SDict begin H.S end -2 712 a -2 712 a SDict begin 13 H.A end -2 712 a -2 712 a SDict begin [ /View [/XYZ H.V] /Dest (0:199) cvn H.B /DEST pdfmark end -2 712 a 396 793 a Fi(Linux)19 b(unterst\374tzt)h(hotplugging)d(\(das)j (Einsteck)o(en)f(und)g(Entfernen)f(v)n(on)i(USB-Ger\344ten)g(bei)g (laufendem)e(Betrieb\).)396 901 y(Dies)j(wird)f(durch)f(das)h(ude)n (v-System)f(implementiert.)-2 1085 y SDict begin H.S end -2 1085 a -2 1085 a SDict begin 13 H.A end -2 1085 a -2 1085 a SDict begin [ /View [/XYZ H.V] /Dest (0:200) cvn H.B /DEST pdfmark end -2 1085 a 396 1175 a Fi(Sie)i(\002nden)e(ude)n (v-Skriptdateien)e(f\374r)i(die)i(REINER)f(SCT)h(Kartenleser)f(im)g(V) -9 b(erzeichnis)3055 1175 y SDict begin H.S end 3055 1175 a 3055 1175 a SDict begin 13 H.A end 3055 1175 a 3055 1175 a SDict begin [ /View [/XYZ H.V] /Dest (0:201) cvn H.B /DEST pdfmark end 3055 1175 a Fh(etc/udev)20 b Fi(des)396 1283 y(Quellpak)o(etes.)-2 1467 y SDict begin H.S end -2 1467 a -2 1467 a SDict begin 13 H.A end -2 1467 a -2 1467 a SDict begin [ /View [/XYZ H.V] /Dest (0:202) cvn H.B /DEST pdfmark end -2 1467 a 396 1557 a Fi(Da)h(ude)n(v-Skripte)c (Distrib)n(utions-spezi\002sch)i(sind)h(\(nicht)g(alle)g(v)o(erwenden)e (ude)n(v)-5 b(,)19 b(und)g(SuSE)h(v)o(erwendet)396 1665 y(ausserdem)f(resmgr)m(,)g(zudem)g(sind)h(auch)g(die)g(Namen)g(der)f (Skripte)h(nicht)g(einheitlich\),)f(k\366nnen)f(wir)i(nicht)g(f\374r)f (alle)396 1773 y(am)h(Markt)g(e)o(xistierenden)e(Distrib)n(utionen)h (die)h(passenden)f(Skripte)h(bereitstellen.)f(Die)i(v)n(on)e(uns)i (gelieferten)396 1880 y(RPM-)g(und)e(DEB-P)o(ak)o(ete)h(installieren)g (die)g(f\374r)f(das)i(je)n(weilige)f(System)g(passenden)f(Dateien)h(an) g(die)g(v)n(or)o(gesehene)396 1988 y(Stelle,)h(so)f(da\337)g(mit)h (diesen)e(P)o(ak)o(eten)h(hotplugging)d(problemlos)h(m\366glich)h(ist.) -2 2017 y SDict begin H.S end -2 2017 a -2 2017 a SDict begin 13 H.A end -2 2017 a -2 2017 a SDict begin [ /View [/XYZ H.V] /Dest (0:203) cvn H.B /DEST pdfmark end -2 2017 a 396 2327 a Fd(6.5.)35 b(Log)o(ging)1099 2327 y SDict begin H.S end 1099 2327 a 1099 2327 a SDict begin 18.72 H.A end 1099 2327 a 1099 2327 a SDict begin [ /View [/XYZ H.V] /Dest (0.6.8.2) cvn H.B /DEST pdfmark end 1099 2327 a -2 2520 a SDict begin H.S end -2 2520 a -2 2520 a SDict begin 13 H.A end -2 2520 a -2 2520 a SDict begin [ /View [/XYZ H.V] /Dest (0:205) cvn H.B /DEST pdfmark end -2 2520 a 396 2601 a Fi(Dieser)21 b(T)m(reiber)e(erlaubt)g(die)h (Aufzeichnung)d(der)j(K)m(ommunikation)d(mit)k(dem)f(Kartenleser)-5 b(.)19 b(Sie)i(schalten)f(es)h(ein,)396 2709 y(indem)f(Sie)g(als)h (root)f(das)g(K)m(ommando)1560 2709 y SDict begin H.S end 1560 2709 a 1560 2709 a SDict begin 13 H.A end 1560 2709 a 1560 2709 a SDict begin [ /View [/XYZ H.V] /Dest (0:206) cvn H.B /DEST pdfmark end 1560 2709 a Fb(cyberjack)44 b(addflags)f(0xffff)20 b Fi(ausfuehren.)d(Dann)j(schreibt)g(der)396 2817 y(T)m(reiber)f(die)i(Logmeldungen)16 b(in)k(die)h(Datei)1712 2817 y SDict begin H.S end 1712 2817 a 1712 2817 a SDict begin 13 H.A end 1712 2817 a 1712 2817 a SDict begin [ /View [/XYZ H.V] /Dest (0:207) cvn H.B /DEST pdfmark end 1712 2817 a Fh(/tmp/cj.log)p Fi(.)-2 2928 y SDict begin H.S end -2 2928 a -2 2928 a SDict begin 13 H.A end -2 2928 a -2 2928 a SDict begin [ /View [/XYZ H.V] /Dest (0:208) cvn H.B /DEST pdfmark end -2 2928 a 359 x Fk(7.)39 b(Bekannte)f(Pr)m(ob)o(leme)1495 3287 y SDict begin H.S end 1495 3287 a 1495 3287 a SDict begin 22.464 H.A end 1495 3287 a 1495 3287 a SDict begin [ /View [/XYZ H.V] /Dest (0.7.1) cvn H.B /DEST pdfmark end 1495 3287 a -2 3455 a SDict begin H.S end -2 3455 a -2 3455 a SDict begin 13 H.A end -2 3455 a -2 3455 a SDict begin [ /View [/XYZ H.V] /Dest (0:210) cvn H.B /DEST pdfmark end -2 3455 a 396 3561 a Fi(Leider)20 b(enthalten)f(alle)h(K)n(ernel)g(bi)g (einschliesslich)g(V)-9 b(ersion)20 b(2.6.12-rc5)d(einen)i(schweren)h (Fehler)f(in)i(der)396 3669 y(Behandlung)d(v)n(on)i(asynchronen)d(URB') -5 b(s)22 b(\(USB)f(Request)f(Block\))g(im)g(Userspace.)g(Dieser)g (Fehler)g(hat)h(nichts)f(mit)396 3777 y(dem)g(Reiner)g(SCT)h(T)m (reiber)e(zu)h(tun,)g(dennoch)e(betrif)n(ft)h(er)i(auch)e(unseren)g(T)m (reiber)g(f\374r)h(PC/SC.)h(Der)g(Fehler)e(tritt)i(auf,)396 3885 y(wenn)f(der)g(PC/SC)i(Dienst)e(beendet)f(wird)h(und)f(kann)g(im)i (schlimmsten)e(F)o(all)i(zum)f(v)n(ollst\344ndigen)e(Absturz)i(des)396 3993 y(K)n(ernels)g(f\374hren.)-2 4160 y SDict begin H.S end -2 4160 a -2 4160 a SDict begin 13 H.A end -2 4160 a -2 4160 a SDict begin [ /View [/XYZ H.V] /Dest (0:211) cvn H.B /DEST pdfmark end -2 4160 a 396 4267 a Fi(Es)h(wurde)e(eine)h (L\366sung)f(erarbeitet,)g(die)h(aber)g(bisher)g(nicht)f(of)n (\002zieller)h(Bestandteil)g(des)h(Linux-K)n(ernels)d(ist.)j(W)m(ir)396 4375 y(bieten)f(unsere)f(L\366sung)g(aber)h(als)h(patch)e(an)i(\(in)f (F)o(orm)f(der)h(Datei)g(patches/usb-async_urb-de)n(vio-)o(oo)o (ps-\002x)o(.pa)o(tch\).)-2 4559 y SDict begin H.S end -2 4559 a -2 4559 a SDict begin 13 H.A end -2 4559 a -2 4559 a SDict begin [ /View [/XYZ H.V] /Dest (0:212) cvn H.B /DEST pdfmark end -2 4559 a 396 4649 a Fi(F)o(alls)h(Sie)g(PC/SC)h (in)e(V)-9 b(erbindung)17 b(mit)k(einem)f(betrof)n(fenen)d(K)n(ernel)j (v)o(erwenden)d(w)o(ollen,)j(raten)g(wir)g(daher)396 4757 y(dringend)e(dazu)i(den)f(mitgelieferten)g(P)o(atch)h(anzuwenden.) -2 4785 y SDict begin H.S end -2 4785 a -2 4785 a SDict begin 13 H.A end -2 4785 a -2 4785 a SDict begin [ /View [/XYZ H.V] /Dest (0:213) cvn H.B /DEST pdfmark end -2 4785 a Black 3839 5569 a Fg(7)p Black eop end %%Page: 8 8 TeXDict begin 8 7 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.8) cvn H.B /DEST pdfmark end -2 -102 a Black -2 -201 a SDict begin H.S end -2 -201 a -2 -201 a SDict begin 13 H.A end -2 -201 a -2 -201 a SDict begin [ /View [/XYZ H.V] /Dest (0:233) cvn H.B /DEST pdfmark end -2 -201 a 1636 -132 a Fg(T)-5 b(r)m(eiber)21 b(f\374r)g(REINER)f(SCT)g(cyberJ)m(ac)n (k)g(pinpad/e-com)d(USB)j(Kartenleser)p Black -2 91 a Fk(8.)39 b(Anwendung)q(en)1150 91 y SDict begin H.S end 1150 91 a 1150 91 a SDict begin 22.464 H.A end 1150 91 a 1150 91 a SDict begin [ /View [/XYZ H.V] /Dest (0.8.1) cvn H.B /DEST pdfmark end 1150 91 a -2 123 a SDict begin H.S end -2 123 a -2 123 a SDict begin 13 H.A end -2 123 a -2 123 a SDict begin [ /View [/XYZ H.V] /Dest (0:215) cvn H.B /DEST pdfmark end -2 123 a 396 419 a Fd(8.1.)c(Mone)n(yple)n(x) 1241 419 y SDict begin H.S end 1241 419 a 1241 419 a SDict begin 18.72 H.A end 1241 419 a 1241 419 a SDict begin [ /View [/XYZ H.V] /Dest (0.8.9.2) cvn H.B /DEST pdfmark end 1241 419 a -2 610 a SDict begin H.S end -2 610 a -2 610 a SDict begin 13 H.A end -2 610 a -2 610 a SDict begin [ /View [/XYZ H.V] /Dest (0:217) cvn H.B /DEST pdfmark end -2 610 a 396 693 a Fi(Mone)o(yple)o(x)18 b(bringt)h(seine)h(eigenen)f (T)m(reiber)g(fuer)h(die)g(bekanntesten)e(Geraete)i(mit.)g(Leider)g (sind)g(die)g(T)m(reiber)f(fuer)396 801 y(den)h(Cyberjack,)f(die)h (sich)g(auf)g(der)g(Mone)o(yple)o(x-CD)d(be\002nden,)i(meist)h(v)o (eraltet)g(und)f(funktionieren)e(auf)j(aktuellen)396 909 y(Systemen)g(nicht.)-2 1093 y SDict begin H.S end -2 1093 a -2 1093 a SDict begin 13 H.A end -2 1093 a -2 1093 a SDict begin [ /View [/XYZ H.V] /Dest (0:218) cvn H.B /DEST pdfmark end -2 1093 a 396 1183 a Fi(Sie)h(sollten)f(daher)f (unbedingt)f(den)i(je)n(weils)h(aktuellsten)e(T)m(reiber)g(v)n(on)h (unserer)f(Homepage)g(herunterladen)e(und)396 1291 y(installieren.)-2 1458 y SDict begin H.S end -2 1458 a -2 1458 a SDict begin 13 H.A end -2 1458 a -2 1458 a SDict begin [ /View [/XYZ H.V] /Dest (0:219) cvn H.B /DEST pdfmark end -2 1458 a 396 1565 a Fi(Anschliessend)j(muessen)f(Sie)i(dann)e(im)i (entsprechenden)c(K)m(on\002gurationsmenue)f(v)n(on)k(Mone)o(yple)o(x)d (direkt)396 1673 y(unseren)i(T)m(reiber)g(angeben)g(\(je)h(nach)g (System)g(entweder)f(in)h(/usr/lib)g(oder)g(in)g(/usr/lib/readers,)e (Dateiname)i(ist)396 1781 y("libctapi-c)o(yberjack.so".)-2 1965 y SDict begin H.S end -2 1965 a -2 1965 a SDict begin 13 H.A end -2 1965 a -2 1965 a SDict begin [ /View [/XYZ H.V] /Dest (0:220) cvn H.B /DEST pdfmark end -2 1965 a 396 2055 a Fi(Damit)h(sollte)f(Mone)o(yple)o(x)e(auch)h(mit)i(dem)e (Cyberjack)g(zusammenarbeiten)f(k)o(oennen.)-2 2073 y SDict begin H.S end -2 2073 a -2 2073 a SDict begin 13 H.A end -2 2073 a -2 2073 a SDict begin [ /View [/XYZ H.V] /Dest (0:221) cvn H.B /DEST pdfmark end -2 2073 a 396 2342 a Fj(8.1.1.)28 b(Mone)o(yple)o(x)g(auf)g(64-Bit-Systemen)2168 2342 y SDict begin H.S end 2168 2342 a 2168 2342 a SDict begin 15.6 H.A end 2168 2342 a 2168 2342 a SDict begin [ /View [/XYZ H.V] /Dest (0.8.9.2.3) cvn H.B /DEST pdfmark end 2168 2342 a -2 2529 a SDict begin H.S end -2 2529 a -2 2529 a SDict begin 13 H.A end -2 2529 a -2 2529 a SDict begin [ /View [/XYZ H.V] /Dest (0:223) cvn H.B /DEST pdfmark end -2 2529 a 396 2616 a Fi(Mone)o(yple)o(x)18 b(ist)j(eine)f(32-Bit-Anwendung.)c(Als)21 b(solche)f(kann)f(sie)i(zw)o (ar)f(auch)g(auf)g(64-Bit-Systemen)e(ausgefuehrt)396 2724 y(werden,)h(\002ndet)h(aber)g(auf)f(solchen)h(Systemen)f(k)o(eine) h(Kartenleser)n(-T)m(reiber)e(\(weil)i(es)h(nach)f(32-Bit-T)m(reibern)d (sucht,)396 2832 y(die)j(aber)g(auf)g(einem)g(solchen)f(System)h (normalerweise)f(nicht)g(v)n(orhanden)f(sind\).)-2 3016 y SDict begin H.S end -2 3016 a -2 3016 a SDict begin 13 H.A end -2 3016 a -2 3016 a SDict begin [ /View [/XYZ H.V] /Dest (0:224) cvn H.B /DEST pdfmark end -2 3016 a 396 3106 a Fi(Es)j(wurde)e(allerdings)g(auch)h(fuer)f(diesen)h(F)o(all)h (eine)f(Loesung)f(mit)h(Matrica)g(erarbeitet.)f(Mone)o(yple)o(x)f (liefert)i(-)396 3214 y(spaetestens)h(nach)e(einem)h(Update)f(-)i (einen)e(Proxy-T)m(reiber)e(mit)k(\(libproxy-c)o(yberjack.so\))o(,)15 b(welcher)k(einer)396 3322 y(32-Bit-Anwendung)e(erlaubt,)i(auf)h(die)g (installierten)f(64-Bit-T)m(reiber)g(zuzugreifen.)-2 3506 y SDict begin H.S end -2 3506 a -2 3506 a SDict begin 13 H.A end -2 3506 a -2 3506 a SDict begin [ /View [/XYZ H.V] /Dest (0:225) cvn H.B /DEST pdfmark end -2 3506 a 396 3596 a Fi(Diesen)i(T)m(reiber)e(\002nden)g(Sie)i(normalerweise)d (im)j(Mone)o(yple)o(x-V)-9 b(erzeichnis)15 b(\($HOME/mone)o(yple)o (x\),)g(und)20 b(dort)396 3703 y(ueblicherweise)f(im)h(Unterv)o (erzeichnis)e("ctapi".)i(W)-7 b(aehlen)20 b(Sie)h(diesen)f(T)m(reiber)f (in)h(Mone)o(yple)o(x)e(aus.)-2 3898 y SDict begin H.S end -2 3898 a -2 3898 a SDict begin 13 H.A end -2 3898 a -2 3898 a SDict begin [ /View [/XYZ H.V] /Dest (0:226) cvn H.B /DEST pdfmark end -2 3898 a 359 x Fk(9.)39 b(Zus\344tzlic)o(he)e (Inf)m(ormation)1766 4257 y SDict begin H.S end 1766 4257 a 1766 4257 a SDict begin 22.464 H.A end 1766 4257 a 1766 4257 a SDict begin [ /View [/XYZ H.V] /Dest (0.9.1) cvn H.B /DEST pdfmark end 1766 4257 a -2 4259 a SDict begin H.S end -2 4259 a -2 4259 a SDict begin 13 H.A end -2 4259 a -2 4259 a SDict begin [ /View [/XYZ H.V] /Dest (0:228) cvn H.B /DEST pdfmark end -2 4259 a 396 4585 a Fd(9.1.)e(CT)-14 b(-API)1013 4585 y SDict begin H.S end 1013 4585 a 1013 4585 a SDict begin 18.72 H.A end 1013 4585 a 1013 4585 a SDict begin [ /View [/XYZ H.V] /Dest (0.9.10.2) cvn H.B /DEST pdfmark end 1013 4585 a -2 4753 a SDict begin H.S end -2 4753 a -2 4753 a SDict begin 13 H.A end -2 4753 a -2 4753 a SDict begin [ /View [/XYZ H.V] /Dest (0:230) cvn H.B /DEST pdfmark end -2 4753 a 396 4859 a Fi(Die)21 b(CT)-8 b(-API)21 b(Spezi\002kation)d(erhalten)i(Sie)g(auf)g(der)g (Seite)396 4967 y SDict begin H.S end 396 4967 a 396 4967 a SDict begin 13 H.A end 396 4967 a 396 4967 a SDict begin [ /View [/XYZ H.V] /Dest (0:231) cvn H.B /DEST pdfmark end 396 4967 a Fi(http://www)-5 b(.darmstadt.gmd.de/~eckstein/CT/mk) o(t.htm)o(l)p Black 3842 5569 a Fg(8)p Black eop end %%Page: 9 9 TeXDict begin 9 8 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.9) cvn H.B /DEST pdfmark end -2 -102 a Black -2 -201 a SDict begin H.S end -2 -201 a -2 -201 a SDict begin 13 H.A end -2 -201 a -2 -201 a SDict begin [ /View [/XYZ H.V] /Dest (0:263) cvn H.B /DEST pdfmark end -2 -201 a 1636 -132 a Fg(T)-5 b(r)m(eiber)21 b(f\374r)g(REINER)f(SCT)g(cyberJ)m(ac)n (k)g(pinpad/e-com)d(USB)j(Kartenleser)p Black -2 -11 a SDict begin H.S end -2 -11 a -2 -11 a SDict begin 13 H.A end -2 -11 a -2 -11 a SDict begin [ /View [/XYZ H.V] /Dest (0:232) cvn H.B /DEST pdfmark end -2 -11 a 396 72 a Fi(Bitte)h(beachten)e(Sie,)i(da\337)f(die)g(Port-Nummern)d(bei)j(1)h (be)o(ginnen)d(\(wie)i(in)g(den)g(Spezi\002kationen)e(v)n(or)o (gesehen\).)-2 101 y SDict begin H.S end -2 101 a -2 101 a SDict begin 13 H.A end -2 101 a -2 101 a SDict begin [ /View [/XYZ H.V] /Dest (0:233) cvn H.B /DEST pdfmark end -2 101 a 396 411 a Fd(9.2.)35 b(PC/SC)994 411 y SDict begin H.S end 994 411 a 994 411 a SDict begin 18.72 H.A end 994 411 a 994 411 a SDict begin [ /View [/XYZ H.V] /Dest (0.9.11.2) cvn H.B /DEST pdfmark end 994 411 a -2 578 a SDict begin H.S end -2 578 a -2 578 a SDict begin 13 H.A end -2 578 a -2 578 a SDict begin [ /View [/XYZ H.V] /Dest (0:235) cvn H.B /DEST pdfmark end -2 578 a 396 685 a Fi(Dieser)21 b(T)m(reiber)e(bietet)h(inzwischen)f(auch)h(einen)f (PC/SC-T)m(reiber)h(f\374r)g(pcsc-lite)g(an.)g(Er)g(wurde)f(mit)i (pcsc-lite-1.2.0)396 793 y(getestet.)-2 811 y SDict begin H.S end -2 811 a -2 811 a SDict begin 13 H.A end -2 811 a -2 811 a SDict begin [ /View [/XYZ H.V] /Dest (0:236) cvn H.B /DEST pdfmark end -2 811 a 396 1080 a Fj(9.2.1.)28 b(Installation)1199 1080 y SDict begin H.S end 1199 1080 a 1199 1080 a SDict begin 15.6 H.A end 1199 1080 a 1199 1080 a SDict begin [ /View [/XYZ H.V] /Dest (0.9.11.3.3) cvn H.B /DEST pdfmark end 1199 1080 a -2 1247 a SDict begin H.S end -2 1247 a -2 1247 a SDict begin 13 H.A end -2 1247 a -2 1247 a SDict begin [ /View [/XYZ H.V] /Dest (0:238) cvn H.B /DEST pdfmark end -2 1247 a 396 1354 a Fi(F\374r)20 b(RPM-basierte)g(Systeme)g(ist)i(der)d(sogenannte)g(IFD-T)m(reiber)f (im)j(P)o(ak)o(et)f(ctapi-c)o(yberjack-ifd)c(enthalten.)-2 1538 y SDict begin H.S end -2 1538 a -2 1538 a SDict begin 13 H.A end -2 1538 a -2 1538 a SDict begin [ /View [/XYZ H.V] /Dest (0:239) cvn H.B /DEST pdfmark end -2 1538 a 396 1628 a Fi(F)o(alls)21 b(Sie)g(den)f(T)m(reiber)f(aus)h(dem)g (Quellpak)o(et)f(selber)h(k)o(ompilieren,)e(wird)i(durch)2830 1628 y SDict begin H.S end 2830 1628 a 2830 1628 a SDict begin 13 H.A end 2830 1628 a 2830 1628 a SDict begin [ /View [/XYZ H.V] /Dest (0:240) cvn H.B /DEST pdfmark end 2830 1628 a Fe(mak)o(e)h(install)f Fi(der)g(IFD-T)m(reiber)396 1736 y(an)g(die)h(passende)e(Stelle)i(in)f(Ihrem)f(System)i (\(normalerweise)2255 1736 y SDict begin H.S end 2255 1736 a 2255 1736 a SDict begin 13 H.A end 2255 1736 a 2255 1736 a SDict begin [ /View [/XYZ H.V] /Dest (0:241) cvn H.B /DEST pdfmark end 2255 1736 a Fh(/usr/lib/pcsc/drivers/)p Fi(\))16 b(installiert.)-2 1847 y SDict begin H.S end -2 1847 a -2 1847 a SDict begin 13 H.A end -2 1847 a -2 1847 a SDict begin [ /View [/XYZ H.V] /Dest (0:242) cvn H.B /DEST pdfmark end -2 1847 a 396 2157 a Fd(9.3.)35 b(Multithreading) 1452 2157 y SDict begin H.S end 1452 2157 a 1452 2157 a SDict begin 18.72 H.A end 1452 2157 a 1452 2157 a SDict begin [ /View [/XYZ H.V] /Dest (0.9.12.2) cvn H.B /DEST pdfmark end 1452 2157 a -2 2350 a SDict begin H.S end -2 2350 a -2 2350 a SDict begin 13 H.A end -2 2350 a -2 2350 a SDict begin [ /View [/XYZ H.V] /Dest (0:244) cvn H.B /DEST pdfmark end -2 2350 a 396 2431 a Fi(Dieser)21 b(T)m(reiber)e(ist)i (nicht)f(thread-safe,)e(d.h.)h(es)i(k\366nnen)e(nicht)g(mehrere)g (Threads)g(des)i(gleichen)e(Programmes)f(auf)396 2539 y(den)i(gleichen)f(Leser)h(zugreifen)e(\(dies)i(w\374rde)g(aber)f (ohnehin)g(meist)h(zu)g(Problemen)f(auf)h(der)f(Karte)i(f\374hren\).)-2 2723 y SDict begin H.S end -2 2723 a -2 2723 a SDict begin 13 H.A end -2 2723 a -2 2723 a SDict begin [ /View [/XYZ H.V] /Dest (0:245) cvn H.B /DEST pdfmark end -2 2723 a 396 2813 a Fi(Allerdings)f(k\366nnen)e(unterschiedliche)g(Threads)h (des)h(gleichen)f(Programmes)g(auf)g(unterschiedliche)f(Ger\344te)396 2921 y(zugreifen.)g(So)j(k\366nnen)d(also)i(beispielsweise)h(3)f (Threads)f(gleichzeitig)g(auf)h(3)g(Karten)g(in)g(3)h (unterschiedlichen)396 3029 y(Ger\344ten)f(zugreifen.)-2 3058 y SDict begin H.S end -2 3058 a -2 3058 a SDict begin 13 H.A end -2 3058 a -2 3058 a SDict begin [ /View [/XYZ H.V] /Dest (0:246) cvn H.B /DEST pdfmark end -2 3058 a 396 3368 a Fd(9.4.)35 b(K)l(ommandola\344ng)q(e)1659 3368 y SDict begin H.S end 1659 3368 a 1659 3368 a SDict begin 18.72 H.A end 1659 3368 a 1659 3368 a SDict begin [ /View [/XYZ H.V] /Dest (0.9.13.2) cvn H.B /DEST pdfmark end 1659 3368 a -2 3560 a SDict begin H.S end -2 3560 a -2 3560 a SDict begin 13 H.A end -2 3560 a -2 3560 a SDict begin [ /View [/XYZ H.V] /Dest (0:248) cvn H.B /DEST pdfmark end -2 3560 a 396 3642 a Fi(Die)21 b(K)m(ommandol\344nge)c(ist)k (derzeit)e(auf)h(ISO7816)f(short)h(commands)e(reduziert.)h(Dies)i (bedeutet)e(allerdings)g(im)396 3750 y(normalen)g(Betrieb)h(k)o(eine)g (Einschr\344nkung.)-2 3778 y SDict begin H.S end -2 3778 a -2 3778 a SDict begin 13 H.A end -2 3778 a -2 3778 a SDict begin [ /View [/XYZ H.V] /Dest (0:249) cvn H.B /DEST pdfmark end -2 3778 a 396 4088 a Fd(9.5.)35 b(T)-10 b(astendruc)n(k)35 b(Callbac)n(k)1848 4088 y SDict begin H.S end 1848 4088 a 1848 4088 a SDict begin 18.72 H.A end 1848 4088 a 1848 4088 a SDict begin [ /View [/XYZ H.V] /Dest (0.9.14.2) cvn H.B /DEST pdfmark end 1848 4088 a -2 4256 a SDict begin H.S end -2 4256 a -2 4256 a SDict begin 13 H.A end -2 4256 a -2 4256 a SDict begin [ /View [/XYZ H.V] /Dest (0:251) cvn H.B /DEST pdfmark end -2 4256 a -2 4280 a SDict begin H.S end -2 4280 a -2 4280 a SDict begin 11.7 H.A end -2 4280 a -2 4280 a SDict begin [ /View [/XYZ H.V] /Dest (0:252) cvn H.B /DEST pdfmark end -2 4280 a -2 4363 a SDict begin H.S end -2 4363 a -2 4363 a SDict begin 11.7 H.A end -2 4363 a -2 4363 a SDict begin [ /View [/XYZ H.V] /Dest (0:253) cvn H.B /DEST pdfmark end -2 4363 a 396 4482 a Fh(IS8)576 4482 y SDict begin H.S end 576 4482 a 576 4482 a SDict begin 11.7 H.A end 576 4482 a 576 4482 a SDict begin [ /View [/XYZ H.V] /Dest (0:255) cvn H.B /DEST pdfmark end 576 4482 a Fb(rsct_setkeycb)1161 4482 y SDict begin H.S end 1161 4482 a 1161 4482 a SDict begin 11.7 H.A end 1161 4482 a 1161 4482 a SDict begin [ /View [/XYZ H.V] /Dest (0:256) cvn H.B /DEST pdfmark end 1161 4482 a Fh(\(IU16)1386 4482 y SDict begin H.S end 1386 4482 a 1386 4482 a SDict begin 11.7 H.A end 1386 4482 a 1386 4482 a SDict begin [ /View [/XYZ H.V] /Dest (0:257) cvn H.B /DEST pdfmark end 1386 4482 a Fa(ctn)p Fh(,)1607 4482 y SDict begin H.S end 1607 4482 a 1607 4482 a SDict begin 11.7 H.A end 1607 4482 a 1607 4482 a SDict begin [ /View [/XYZ H.V] /Dest (0:258) cvn H.B /DEST pdfmark end 1607 4482 a Fh(void)44 b(\()1876 4495 y(*)1921 4482 y SDict begin H.S end 1921 4482 a 1921 4482 a SDict begin 11.7 H.A end 1921 4482 a 1921 4482 a SDict begin [ /View [/XYZ H.V] /Dest (0:259) cvn H.B /DEST pdfmark end 1921 4482 a Fa(cb)r Fh(\))2102 4482 y SDict begin H.S end 2102 4482 a 2102 4482 a SDict begin 11.7 H.A end 2102 4482 a 2102 4482 a SDict begin [ /View [/XYZ H.V] /Dest (0:260) cvn H.B /DEST pdfmark end 2102 4482 a Fh(\(void)2371 4495 y(*)2416 4482 y(user_data\)\);)-2 4839 y SDict begin H.S end -2 4839 a -2 4839 a SDict begin 13 H.A end -2 4839 a -2 4839 a SDict begin [ /View [/XYZ H.V] /Dest (0:261) cvn H.B /DEST pdfmark end -2 4839 a 396 4947 a Fi(Die)21 b(Funktion)858 4947 y SDict begin H.S end 858 4947 a 858 4947 a SDict begin 13 H.A end 858 4947 a 858 4947 a SDict begin [ /View [/XYZ H.V] /Dest (0:262) cvn H.B /DEST pdfmark end 858 4947 a Fh(rsct_setkeycb)d Fi(wurde)h(hinzugef\374gt,)e(um)j(laufenden)e (Programmen)g(eine)i(R\374ckmeldung)e(\374ber)396 5055 y(gedr\374ckte)g(T)-7 b(asten)21 b(des)f(Lesers)h(zu)f(geben.)f(Die)h (Funktion,)f(die)h(als)h(2.)f(Ar)o(gument)e(dieses)i(Aufrufes)f (geliefert)h(wird,)p Black 3842 5569 a Fg(9)p Black eop end %%Page: 10 10 TeXDict begin 10 9 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.10) cvn H.B /DEST pdfmark end -2 -102 a Black 1636 -132 a Fg(T)-5 b(r)m(eiber)21 b(f\374r)g(REINER)f(SCT)g(cyberJ)m(ac)n(k)g (pinpad/e-com)d(USB)j(Kartenleser)p Black 396 72 a Fi(wird)g(je)n (weils)h(aufgerufen,)c(wenn)j(ein)g(C4-)g(oder)g(F4)g(S-Block)g(v)n(om) g(Leser)g(empf)o(angen)d(wurde.)i(Die)i(Anwendung)396 180 y(kann)e(dann)h(beispielsweise)g(einen)g(Piepton)f(erzeugen,)f (oder)h(die)i(Anzahl)e(der)h(gedr\374ckten)e(T)-7 b(asten)20 b(anzeigen.)-2 209 y SDict begin H.S end -2 209 a -2 209 a SDict begin 13 H.A end -2 209 a -2 209 a SDict begin [ /View [/XYZ H.V] /Dest (0:263) cvn H.B /DEST pdfmark end -2 209 a 396 519 a Fd(9.6.)35 b(Inf)n(ormationen)f(zur)e(T)-10 b(reiber)q(ver)n(sion)2487 519 y SDict begin H.S end 2487 519 a 2487 519 a SDict begin 18.72 H.A end 2487 519 a 2487 519 a SDict begin [ /View [/XYZ H.V] /Dest (0.9.15.2) cvn H.B /DEST pdfmark end 2487 519 a -2 686 a SDict begin H.S end -2 686 a -2 686 a SDict begin 13 H.A end -2 686 a -2 686 a SDict begin [ /View [/XYZ H.V] /Dest (0:265) cvn H.B /DEST pdfmark end -2 686 a -2 710 a SDict begin H.S end -2 710 a -2 710 a SDict begin 11.7 H.A end -2 710 a -2 710 a SDict begin [ /View [/XYZ H.V] /Dest (0:266) cvn H.B /DEST pdfmark end -2 710 a -2 793 a SDict begin H.S end -2 793 a -2 793 a SDict begin 11.7 H.A end -2 793 a -2 793 a SDict begin [ /View [/XYZ H.V] /Dest (0:267) cvn H.B /DEST pdfmark end -2 793 a 396 913 a Fh(void)620 913 y SDict begin H.S end 620 913 a 620 913 a SDict begin 11.7 H.A end 620 913 a 620 913 a SDict begin [ /View [/XYZ H.V] /Dest (0:269) cvn H.B /DEST pdfmark end 620 913 a Fb(rsct_version)1160 913 y SDict begin H.S end 1160 913 a 1160 913 a SDict begin 11.7 H.A end 1160 913 a 1160 913 a SDict begin [ /View [/XYZ H.V] /Dest (0:270) cvn H.B /DEST pdfmark end 1160 913 a Fh(\(IU8)1340 926 y(*)1385 913 y SDict begin H.S end 1385 913 a 1385 913 a SDict begin 11.7 H.A end 1385 913 a 1385 913 a SDict begin [ /View [/XYZ H.V] /Dest (0:271) cvn H.B /DEST pdfmark end 1385 913 a Fa(vmajor)s Fh(,)1744 913 y SDict begin H.S end 1744 913 a 1744 913 a SDict begin 11.7 H.A end 1744 913 a 1744 913 a SDict begin [ /View [/XYZ H.V] /Dest (0:272) cvn H.B /DEST pdfmark end 1744 913 a Fh(IU8)1879 926 y(*)1924 913 y SDict begin H.S end 1924 913 a 1924 913 a SDict begin 11.7 H.A end 1924 913 a 1924 913 a SDict begin [ /View [/XYZ H.V] /Dest (0:273) cvn H.B /DEST pdfmark end 1924 913 a Fa(vminor)s Fh(,)2285 913 y SDict begin H.S end 2285 913 a 2285 913 a SDict begin 11.7 H.A end 2285 913 a 2285 913 a SDict begin [ /View [/XYZ H.V] /Dest (0:274) cvn H.B /DEST pdfmark end 2285 913 a Fh(IU8)2420 926 y(*)2465 913 y SDict begin H.S end 2465 913 a 2465 913 a SDict begin 11.7 H.A end 2465 913 a 2465 913 a SDict begin [ /View [/XYZ H.V] /Dest (0:275) cvn H.B /DEST pdfmark end 2465 913 a Fa(vpatchlevel)p Fh(,)3047 913 y SDict begin H.S end 3047 913 a 3047 913 a SDict begin 11.7 H.A end 3047 913 a 3047 913 a SDict begin [ /View [/XYZ H.V] /Dest (0:276) cvn H.B /DEST pdfmark end 3047 913 a Fh(IU16)3227 926 y(*)3272 913 y SDict begin H.S end 3272 913 a 3272 913 a SDict begin 11.7 H.A end 3272 913 a 3272 913 a SDict begin [ /View [/XYZ H.V] /Dest (0:277) cvn H.B /DEST pdfmark end 3272 913 a Fa(vbuild)s Fh(\);)-2 1270 y SDict begin H.S end -2 1270 a -2 1270 a SDict begin 13 H.A end -2 1270 a -2 1270 a SDict begin [ /View [/XYZ H.V] /Dest (0:278) cvn H.B /DEST pdfmark end -2 1270 a 396 1378 a Fi(Die)21 b(Funktion)858 1378 y SDict begin H.S end 858 1378 a 858 1378 a SDict begin 13 H.A end 858 1378 a 858 1378 a SDict begin [ /View [/XYZ H.V] /Dest (0:279) cvn H.B /DEST pdfmark end 858 1378 a Fh(rsct_version)d Fi(gibt)i(die)g(v)n (ollstaendige)f(V)-9 b(ersion)20 b(des)g(T)m(reibers)g(in)g(den)g (ueber)o(gebenen)c(V)-9 b(ariablen)396 1486 y(zurueck.)-2 1497 y SDict begin H.S end -2 1497 a -2 1497 a SDict begin 13 H.A end -2 1497 a -2 1497 a SDict begin [ /View [/XYZ H.V] /Dest (0:280) cvn H.B /DEST pdfmark end -2 1497 a 396 1824 a Fd(9.7.)35 b(Zusaetzlic)o(he)g(CT_init)g(Er)n (satz-Funktion)2718 1824 y SDict begin H.S end 2718 1824 a 2718 1824 a SDict begin 18.72 H.A end 2718 1824 a 2718 1824 a SDict begin [ /View [/XYZ H.V] /Dest (0.9.16.2) cvn H.B /DEST pdfmark end 2718 1824 a -2 2005 a SDict begin H.S end -2 2005 a -2 2005 a SDict begin 13 H.A end -2 2005 a -2 2005 a SDict begin [ /View [/XYZ H.V] /Dest (0:282) cvn H.B /DEST pdfmark end -2 2005 a -2 2029 a SDict begin H.S end -2 2029 a -2 2029 a SDict begin 11.7 H.A end -2 2029 a -2 2029 a SDict begin [ /View [/XYZ H.V] /Dest (0:283) cvn H.B /DEST pdfmark end -2 2029 a -2 2112 a SDict begin H.S end -2 2112 a -2 2112 a SDict begin 11.7 H.A end -2 2112 a -2 2112 a SDict begin [ /View [/XYZ H.V] /Dest (0:284) cvn H.B /DEST pdfmark end -2 2112 a 396 2218 a Fh(IS8)576 2218 y SDict begin H.S end 576 2218 a 576 2218 a SDict begin 11.7 H.A end 576 2218 a 576 2218 a SDict begin [ /View [/XYZ H.V] /Dest (0:286) cvn H.B /DEST pdfmark end 576 2218 a Fb(rsct_init_name)1206 2218 y SDict begin H.S end 1206 2218 a 1206 2218 a SDict begin 11.7 H.A end 1206 2218 a 1206 2218 a SDict begin [ /View [/XYZ H.V] /Dest (0:287) cvn H.B /DEST pdfmark end 1206 2218 a Fh(\(IU16)1431 2218 y SDict begin H.S end 1431 2218 a 1431 2218 a SDict begin 11.7 H.A end 1431 2218 a 1431 2218 a SDict begin [ /View [/XYZ H.V] /Dest (0:288) cvn H.B /DEST pdfmark end 1431 2218 a Fa(ctn)p Fh(,)1652 2218 y SDict begin H.S end 1652 2218 a 1652 2218 a SDict begin 11.7 H.A end 1652 2218 a 1652 2218 a SDict begin [ /View [/XYZ H.V] /Dest (0:289) cvn H.B /DEST pdfmark end 1652 2218 a Fh(const)44 b(char)2101 2231 y(*)2146 2218 y SDict begin H.S end 2146 2218 a 2146 2218 a SDict begin 11.7 H.A end 2146 2218 a 2146 2218 a SDict begin [ /View [/XYZ H.V] /Dest (0:290) cvn H.B /DEST pdfmark end 2146 2218 a Fa(device_name)p Fh(\);)-2 2575 y SDict begin H.S end -2 2575 a -2 2575 a SDict begin 13 H.A end -2 2575 a -2 2575 a SDict begin [ /View [/XYZ H.V] /Dest (0:291) cvn H.B /DEST pdfmark end -2 2575 a 396 2683 a Fi(Die)21 b(Funktion)858 2683 y SDict begin H.S end 858 2683 a 858 2683 a SDict begin 13 H.A end 858 2683 a 858 2683 a SDict begin [ /View [/XYZ H.V] /Dest (0:292) cvn H.B /DEST pdfmark end 858 2683 a Fh(rsct_init_name)d Fi(erlaubt)h(die)h(direkte) g(Angabe)e(des)j(Geraetes)f(wie)h(bei)f(PC/SC.)h(Damit)g(kann)396 2791 y(eindeutig)e(festgele)o(gt)g(werden,)g(welches)h(Geraet)g(v)o (erwendet)f(werden)g(soll.)h(Der)g(Geraetename)f(ist)i(wie)g(folgt)396 2899 y(aufgebaut:)d("usb:VENDOR_ID/PR)m(ODUCT_ID:lib)n(usb:B)o (US_ID:DEVICE_ID".)e(Fuer)k(einen)g(neuen)396 3007 y(Cyberjack)f(an)h (/proc/b)n(us/usb/003/002)c(lautet)k(der)g(Name)g(demnach:)f ("usb:0c4b/0300:lib)n(usb:003)o(:002)o(".)-2 3035 y SDict begin H.S end -2 3035 a -2 3035 a SDict begin 13 H.A end -2 3035 a -2 3035 a SDict begin [ /View [/XYZ H.V] /Dest (0:293) cvn H.B /DEST pdfmark end -2 3035 a 396 3345 a Fd(9.8.)35 b(Feste)f(Zur)n(odn)o(ung)f(der)g(P)-5 b(or)r(tn)o(ummer) 34 b(zu)f(Lesern)3152 3345 y SDict begin H.S end 3152 3345 a 3152 3345 a SDict begin 18.72 H.A end 3152 3345 a 3152 3345 a SDict begin [ /View [/XYZ H.V] /Dest (0.9.17.2) cvn H.B /DEST pdfmark end 3152 3345 a -2 3538 a SDict begin H.S end -2 3538 a -2 3538 a SDict begin 13 H.A end -2 3538 a -2 3538 a SDict begin [ /View [/XYZ H.V] /Dest (0:295) cvn H.B /DEST pdfmark end -2 3538 a 396 3619 a Fi(Die)21 b(Funktion)858 3619 y SDict begin H.S end 858 3619 a 858 3619 a SDict begin 13 H.A end 858 3619 a 858 3619 a SDict begin [ /View [/XYZ H.V] /Dest (0:296) cvn H.B /DEST pdfmark end 858 3619 a Fh(CT_init)e Fi(erlaubt)g(eine)h (feste)h(Zurdnung)c(v)n(on)j(Portnummern)d(zu)j(bestimmten)g(Lesern.)f (Das)396 3727 y(bedeutet)g(beispielsweise,)h(dass)h(immer)f(der)f (gleiche)h(Leser)g(unter)f(der)h(gleichen)f(Portnummer)f(angesprochen) 396 3835 y(wird,)i(e)o(gal)f(an)h(welchem)g(USB-Port)g(das)h(Geraet)f (angeschlossen)e(ist.)-2 4019 y SDict begin H.S end -2 4019 a -2 4019 a SDict begin 13 H.A end -2 4019 a -2 4019 a SDict begin [ /View [/XYZ H.V] /Dest (0:297) cvn H.B /DEST pdfmark end -2 4019 a 396 4109 a Fi(Dies)j(erreichen)e(Sie,)h (indem)g(Sie)h(als)g(Portnummer)c(die)k(folgenden)c(Nummern)i(v)o (erwenden:)-2 4293 y SDict begin H.S end -2 4293 a -2 4293 a SDict begin 13 H.A end -2 4293 a -2 4293 a SDict begin [ /View [/XYZ H.V] /Dest (0:298) cvn H.B /DEST pdfmark end -2 4293 a -2 4293 a SDict begin H.S end -2 4293 a -2 4293 a SDict begin 13 H.A end -2 4293 a -2 4293 a SDict begin [ /View [/XYZ H.V] /Dest (0:299) cvn H.B /DEST pdfmark end -2 4293 a -2 4303 a SDict begin H.S end -2 4303 a -2 4303 a SDict begin 13 H.A end -2 4303 a -2 4303 a SDict begin [ /View [/XYZ H.V] /Dest (0:300) cvn H.B /DEST pdfmark end -2 4303 a Black 396 4445 a Fc(\225)p Black 479 4445 a SDict begin H.S end 479 4445 a 479 4445 a SDict begin 13 H.A end 479 4445 a 479 4445 a SDict begin [ /View [/XYZ H.V] /Dest (0:301) cvn H.B /DEST pdfmark end 479 4445 a Fi(0x9000)f(\(dezimal)h(36864\))f(fuer)i(das)g(erste) h(Geraet)-2 4460 y SDict begin H.S end -2 4460 a -2 4460 a SDict begin 13 H.A end -2 4460 a -2 4460 a SDict begin [ /View [/XYZ H.V] /Dest (0:302) cvn H.B /DEST pdfmark end -2 4460 a Black 396 4595 a Fc(\225)p Black 479 4595 a SDict begin H.S end 479 4595 a 479 4595 a SDict begin 13 H.A end 479 4595 a 479 4595 a SDict begin [ /View [/XYZ H.V] /Dest (0:303) cvn H.B /DEST pdfmark end 479 4595 a Fi(0x9001)d(\(dezimal)h(36865\))f(fuer)i(das)g(zweite)h(Geraet)396 4744 y(und)f(so)g(weiter)-5 b(.)-2 4911 y SDict begin H.S end -2 4911 a -2 4911 a SDict begin 13 H.A end -2 4911 a -2 4911 a SDict begin [ /View [/XYZ H.V] /Dest (0:304) cvn H.B /DEST pdfmark end -2 4911 a 396 5018 a Fi(Die)21 b(Zuordnung)c(geschieht)i(ueber)g(eine)h(T)-6 b(e)o(xt-Datei,)19 b(in)i(der)e(pro)h(Zeile)g(eine)g(Seriennummer)e(gespeichert)h(ist)396 5126 y(\(normalerweise)f(ist)k(dies)e($HOME/c)o(yberjack_serials\).)p Black 3800 5569 a Fg(10)p Black eop end %%Page: 11 11 TeXDict begin 11 10 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.11) cvn H.B /DEST pdfmark end -2 -102 a Black 1636 -132 a Fg(T)-5 b(r)m(eiber)21 b(f\374r)g(REINER)f(SCT)g(cyberJ)m(ac)n(k)g (pinpad/e-com)d(USB)j(Kartenleser)p Black -2 -11 a SDict begin H.S end -2 -11 a -2 -11 a SDict begin 13 H.A end -2 -11 a -2 -11 a SDict begin [ /View [/XYZ H.V] /Dest (0:305) cvn H.B /DEST pdfmark end -2 -11 a 396 72 a Fi(Der)g(T)m(reiber) g(aktualisiert)f(diese)i(Datei)f(selbststaendig,)g(es)h(ist)g(hierzu)e (k)o(ein)h(Benutzereingrif)n(f)d(noetig.)i(F)o(alls)i(die)396 180 y(Datei)g(beim)f(Aufruf)e(v)n(on)i(CT_init\(\))f(noch)g(nicht)h(e)o (xistiert,)g(wird)g(sie)h(erzeugt.)e(W)-7 b(enn)20 b(sie)h(bereits)f(e) o(xistiert,)g(und)f(der)396 288 y(angeschlossene)g(Leser)h(bereits)g (in)g(dieser)g(Datei)h(aufgefuehrt)c(wird,)j(bleibt)g(die)g(Datei)h(un) m(v)o(eraendert.)16 b(Der)k(T)m(reiber)396 396 y(fue)o(gt)f(lediglich)h (neue)f(Leser)h(an)g(das)h(Ende)e(der)h(Datei)h(an.)-2 580 y SDict begin H.S end -2 580 a -2 580 a SDict begin 13 H.A end -2 580 a -2 580 a SDict begin [ /View [/XYZ H.V] /Dest (0:306) cvn H.B /DEST pdfmark end -2 580 a 396 670 a Fi(Die)g(erste)f(Seriennummer)e(dieser)i(Datei)h(wird)f(ueber)f (den)g(Portwert)h(0x9000)e(angesprochen,)f(die)j(zweite)g(ueber)396 778 y(0x9001)e(etc.)-2 790 y SDict begin H.S end -2 790 a -2 790 a SDict begin 13 H.A end -2 790 a -2 790 a SDict begin [ /View [/XYZ H.V] /Dest (0:307) cvn H.B /DEST pdfmark end -2 790 a 396 1117 a Fd(9.9.)35 b(Serielle)f(Leser)1405 1117 y SDict begin H.S end 1405 1117 a 1405 1117 a SDict begin 18.72 H.A end 1405 1117 a 1405 1117 a SDict begin [ /View [/XYZ H.V] /Dest (0.9.18.2) cvn H.B /DEST pdfmark end 1405 1117 a -2 1284 a SDict begin H.S end -2 1284 a -2 1284 a SDict begin 13 H.A end -2 1284 a -2 1284 a SDict begin [ /View [/XYZ H.V] /Dest (0:309) cvn H.B /DEST pdfmark end -2 1284 a 396 1391 a Fi(Der)20 b(aktuelle)g(T)m(reiber)f (unterstuetzt)g(den)h(Lesertyp)f(Ecom)h(A)g(via)h(seriellem)f (Anschluss.)-2 1575 y SDict begin H.S end -2 1575 a -2 1575 a SDict begin 13 H.A end -2 1575 a -2 1575 a SDict begin [ /View [/XYZ H.V] /Dest (0:310) cvn H.B /DEST pdfmark end -2 1575 a 396 1665 a Fi(Dazu)g(muessen)g(Sie)h(die)f(folgenden)e (Portnummern)f(v)o(erwenden:)-2 1849 y SDict begin H.S end -2 1849 a -2 1849 a SDict begin 13 H.A end -2 1849 a -2 1849 a SDict begin [ /View [/XYZ H.V] /Dest (0:311) cvn H.B /DEST pdfmark end -2 1849 a -2 1849 a SDict begin H.S end -2 1849 a -2 1849 a SDict begin 13 H.A end -2 1849 a -2 1849 a SDict begin [ /View [/XYZ H.V] /Dest (0:312) cvn H.B /DEST pdfmark end -2 1849 a -2 1859 a SDict begin H.S end -2 1859 a -2 1859 a SDict begin 13 H.A end -2 1859 a -2 1859 a SDict begin [ /View [/XYZ H.V] /Dest (0:313) cvn H.B /DEST pdfmark end -2 1859 a Black 396 2001 a Fc(\225)p Black 479 2001 a SDict begin H.S end 479 2001 a 479 2001 a SDict begin 13 H.A end 479 2001 a 479 2001 a SDict begin [ /View [/XYZ H.V] /Dest (0:314) cvn H.B /DEST pdfmark end 479 2001 a Fi(0xa000)h(\(dezimal)i(40960\))e(fuer)h (Anschlu\337)g(an)h(COM1)h(\(/de)n(v/ttyS0\))-2 2019 y SDict begin H.S end -2 2019 a -2 2019 a SDict begin 13 H.A end -2 2019 a -2 2019 a SDict begin [ /View [/XYZ H.V] /Dest (0:315) cvn H.B /DEST pdfmark end -2 2019 a Black 396 2150 a Fc(\225)p Black 479 2150 a SDict begin H.S end 479 2150 a 479 2150 a SDict begin 13 H.A end 479 2150 a 479 2150 a SDict begin [ /View [/XYZ H.V] /Dest (0:316) cvn H.B /DEST pdfmark end 479 2150 a Fi(0xa001)d(\(dezimal)i (40961\))e(fuer)h(Anschlu\337)g(an)h(COM2)h(\(/de)n(v/ttyS1\))396 2300 y(und)f(so)g(weiter)-5 b(.)-2 2311 y SDict begin H.S end -2 2311 a -2 2311 a SDict begin 13 H.A end -2 2311 a -2 2311 a SDict begin [ /View [/XYZ H.V] /Dest (0:317) cvn H.B /DEST pdfmark end -2 2311 a 396 2638 a Fd(9.10.)35 b(Zur)n(odn)o(ung)e(alter)h(Cyberjac)n(k)h(zu)e(ttyUSB-De)n(vices)3295 2638 y SDict begin H.S end 3295 2638 a 3295 2638 a SDict begin 18.72 H.A end 3295 2638 a 3295 2638 a SDict begin [ /View [/XYZ H.V] /Dest (0.9.19.2) cvn H.B /DEST pdfmark end 3295 2638 a -2 2831 a SDict begin H.S end -2 2831 a -2 2831 a SDict begin 13 H.A end -2 2831 a -2 2831 a SDict begin [ /View [/XYZ H.V] /Dest (0:319) cvn H.B /DEST pdfmark end -2 2831 a 396 2912 a Fi(Die)21 b(Funktion)858 2912 y SDict begin H.S end 858 2912 a 858 2912 a SDict begin 13 H.A end 858 2912 a 858 2912 a SDict begin [ /View [/XYZ H.V] /Dest (0:320) cvn H.B /DEST pdfmark end 858 2912 a Fh(CT_init)e Fi(erlaubt)g(fuer)h(aeltere)g(Cyberjack)f(Ecoms)h (und)f(PinP)o(ads)h(\(mit)g(der)g(USB-Id)g(0x100\))e(eine)396 3020 y(direkte)i(Zurodnung)c(v)n(on)k(Port-W)-7 b(erten)19 b(zu)i(/de)n(v/ttyUSBx-Geraeten.)-2 3204 y SDict begin H.S end -2 3204 a -2 3204 a SDict begin 13 H.A end -2 3204 a -2 3204 a SDict begin [ /View [/XYZ H.V] /Dest (0:321) cvn H.B /DEST pdfmark end -2 3204 a 396 3294 a Fi(Dies)g(erreichen) e(Sie,)h(indem)g(Sie)h(als)g(Portnummer)c(die)k(folgenden)c(Nummern)i (v)o(erwenden:)-2 3478 y SDict begin H.S end -2 3478 a -2 3478 a SDict begin 13 H.A end -2 3478 a -2 3478 a SDict begin [ /View [/XYZ H.V] /Dest (0:322) cvn H.B /DEST pdfmark end -2 3478 a -2 3478 a SDict begin H.S end -2 3478 a -2 3478 a SDict begin 13 H.A end -2 3478 a -2 3478 a SDict begin [ /View [/XYZ H.V] /Dest (0:323) cvn H.B /DEST pdfmark end -2 3478 a -2 3488 a SDict begin H.S end -2 3488 a -2 3488 a SDict begin 13 H.A end -2 3488 a -2 3488 a SDict begin [ /View [/XYZ H.V] /Dest (0:324) cvn H.B /DEST pdfmark end -2 3488 a Black 396 3630 a Fc(\225)p Black 479 3630 a SDict begin H.S end 479 3630 a 479 3630 a SDict begin 13 H.A end 479 3630 a 479 3630 a SDict begin [ /View [/XYZ H.V] /Dest (0:325) cvn H.B /DEST pdfmark end 479 3630 a Fi(0x8000)f(\(dezimal)h(32768\))f(fuer)i(/de)n (v/ttyUSB0)-2 3648 y SDict begin H.S end -2 3648 a -2 3648 a SDict begin 13 H.A end -2 3648 a -2 3648 a SDict begin [ /View [/XYZ H.V] /Dest (0:326) cvn H.B /DEST pdfmark end -2 3648 a Black 396 3780 a Fc(\225)p Black 479 3780 a SDict begin H.S end 479 3780 a 479 3780 a SDict begin 13 H.A end 479 3780 a 479 3780 a SDict begin [ /View [/XYZ H.V] /Dest (0:327) cvn H.B /DEST pdfmark end 479 3780 a Fi(0x8001)e(\(dezimal)h(32769\))f(fuer)i(/de)n(v/ttyUSB1)396 3929 y(und)g(so)g(weiter)-5 b(.)-2 3940 y SDict begin H.S end -2 3940 a -2 3940 a SDict begin 13 H.A end -2 3940 a -2 3940 a SDict begin [ /View [/XYZ H.V] /Dest (0:328) cvn H.B /DEST pdfmark end -2 3940 a 396 4268 a Fd(9.11.)35 b(Pin-Ueberpruefung)f(mit)g(der)f(PC/SC)h(Funktion)396 4423 y(SCar)n(dContr)n(ol)1169 4423 y SDict begin H.S end 1169 4423 a 1169 4423 a SDict begin 18.72 H.A end 1169 4423 a 1169 4423 a SDict begin [ /View [/XYZ H.V] /Dest (0.9.20.2) cvn H.B /DEST pdfmark end 1169 4423 a -2 4591 a SDict begin H.S end -2 4591 a -2 4591 a SDict begin 13 H.A end -2 4591 a -2 4591 a SDict begin [ /View [/XYZ H.V] /Dest (0:330) cvn H.B /DEST pdfmark end -2 4591 a 396 4697 a Fi(Die)21 b(folgende)d(T)-7 b(abelle)20 b(zeigt)g(W)-7 b(erte)21 b(fuer)f(die)g(einzelnden)e(Felder)i(der)g(Struktur)f (PSCS_VERIFY_STR)m(UCTURE)396 4805 y(die)h(mit)h(ASCII)f(und)g(FPIN2-k) o(odierten)d(Pins)k(getestet)g(wurden.)-2 4823 y SDict begin H.S end -2 4823 a -2 4823 a SDict begin 13 H.A end -2 4823 a -2 4823 a SDict begin [ /View [/XYZ H.V] /Dest (0:331) cvn H.B /DEST pdfmark end -2 4823 a -2 4916 a SDict begin H.S end -2 4916 a -2 4916 a SDict begin 13 H.A end -2 4916 a -2 4916 a SDict begin [ /View [/XYZ H.V] /Dest (0:332) cvn H.B /DEST pdfmark end -2 4916 a -2 4916 a SDict begin H.S end -2 4916 a -2 4916 a SDict begin 0 H.A end -2 4916 a -2 4916 a SDict begin [ /View [/XYZ H.V] /Dest (table.3) cvn H.B /DEST pdfmark end -2 4916 a 396 4920 3501 4 v 396 4920 V 396 5044 4 125 v 424 5019 a Ff(Feld)p 1562 5044 V 995 w(ASCII)p 2728 5044 V 945 w(FPIN2)p 3893 5044 V 396 5048 3501 4 v Black 3800 5569 a Fg(11)p Black eop end %%Page: 12 12 TeXDict begin 12 11 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.12) cvn H.B /DEST pdfmark end -2 -102 a Black 1636 -132 a Fg(T)-5 b(r)m(eiber)21 b(f\374r)g(REINER)f(SCT)g(cyberJ)m(ac)n(k)g (pinpad/e-com)d(USB)j(Kartenleser)p Black 396 -7 3501 4 v 396 -7 V 396 117 4 125 v 424 92 a Ff(Feld)p 1562 117 V 995 w(ASCII)p 2728 117 V 945 w(FPIN2)p 3893 117 V 396 117 3501 4 v 396 242 4 125 v 424 217 a Fi(bT)m(imerOut)p 1562 242 V 798 w(00)p 2728 242 V 1082 w(00)p 3893 242 V 396 245 3501 4 v 396 245 V 396 370 4 125 v 424 345 a(bT)m(imerOut2)p 1562 370 V 756 w(00)p 2728 370 V 1082 w(00)p 3893 370 V 396 373 3501 4 v 396 373 V 396 498 4 125 v 424 473 a(bmF)o(ormatString)p 1562 498 V 615 w(82)p 2728 498 V 1082 w(81)p 3893 498 V 396 501 3501 4 v 396 501 V 396 625 4 125 v 424 600 a(bmPINBlockString)p 1562 625 V 522 w(04)p 2728 625 V 1082 w(48)p 3893 625 V 396 629 3501 4 v 396 629 V 396 753 4 125 v 424 728 a(bmPINLengthF)o(ormat)p 1562 753 V 448 w(00)p 2728 753 V 1082 w(04)p 3893 753 V 396 757 3501 4 v 396 757 V 396 881 4 125 v 424 856 a(wPINMaxExtraDigit)p 1562 881 V 467 w(0408)p 2728 881 V 998 w(0408)p 3893 881 V 396 884 3501 4 v 396 884 V 396 1009 4 125 v 424 984 a(bEntryV)-9 b(alidationCondition)p 1562 1009 V 261 w(02)p 2728 1009 V 1082 w(02)p 3893 1009 V 396 1012 3501 4 v 396 1012 V 396 1137 4 125 v 424 1112 a(bNumberMessage)p 1562 1137 V 559 w(01)p 2728 1137 V 1082 w(01)p 3893 1137 V 396 1140 3501 4 v 396 1140 V 396 1265 4 125 v 424 1240 a(wLangId)p 1562 1265 V 864 w(0904)p 2728 1265 V 998 w(0904)p 3893 1265 V 396 1268 3501 4 v 396 1268 V 396 1393 4 125 v 424 1368 a(bMsgInde)o(x)p 1562 1393 V 786 w(00)p 2728 1393 V 1082 w(00)p 3893 1393 V 396 1396 3501 4 v 396 1396 V 396 1520 4 125 v 424 1495 a(bT)j(eoPrologue)18 b(0-2)p 1562 1520 V 568 w(00)p 2728 1520 V 1082 w(00)p 3893 1520 V 396 1524 3501 4 v 396 1524 V -2 1690 a SDict begin H.S end -2 1690 a -2 1690 a SDict begin 13 H.A end -2 1690 a -2 1690 a SDict begin [ /View [/XYZ H.V] /Dest (0:383) cvn H.B /DEST pdfmark end -2 1690 a 352 x Fk(10.)39 b(Mitg)q(elief)o(er)s(te)e(Anwendung)q(en)2118 2042 y SDict begin H.S end 2118 2042 a 2118 2042 a SDict begin 22.464 H.A end 2118 2042 a 2118 2042 a SDict begin [ /View [/XYZ H.V] /Dest (0.10.1) cvn H.B /DEST pdfmark end 2118 2042 a -2 2074 a SDict begin H.S end -2 2074 a -2 2074 a SDict begin 13 H.A end -2 2074 a -2 2074 a SDict begin [ /View [/XYZ H.V] /Dest (0:385) cvn H.B /DEST pdfmark end -2 2074 a 396 2370 a Fd(10.1.)e(c)o(yberjac)n(k)1241 2370 y SDict begin H.S end 1241 2370 a 1241 2370 a SDict begin 18.72 H.A end 1241 2370 a 1241 2370 a SDict begin [ /View [/XYZ H.V] /Dest (0.10.21.2) cvn H.B /DEST pdfmark end 1241 2370 a -2 2561 a SDict begin H.S end -2 2561 a -2 2561 a SDict begin 13 H.A end -2 2561 a -2 2561 a SDict begin [ /View [/XYZ H.V] /Dest (0:387) cvn H.B /DEST pdfmark end -2 2561 a 396 2644 a Fi(Diese)21 b(Anwendung)d(dient)h(zum)h (einen)g(dem)f(T)-6 b(esten)21 b(des)f(T)m(reibers)g(und)f(Lesers)h (zum)g(anderen)f(der)g(Aenderung)f(v)n(on)396 2752 y(Einstellungen)h (des)h(T)m(reibers.)-2 2936 y SDict begin H.S end -2 2936 a -2 2936 a SDict begin 13 H.A end -2 2936 a -2 2936 a SDict begin [ /View [/XYZ H.V] /Dest (0:388) cvn H.B /DEST pdfmark end -2 2936 a 396 3026 a Fi(Die)h(Einstellungen)d(des)j(T) m(reibers)e(\002nden)g(sich)i(in)f(der)g(K)m(on\002gurationsdatei)2712 3026 y SDict begin H.S end 2712 3026 a 2712 3026 a SDict begin 13 H.A end 2712 3026 a 2712 3026 a SDict begin [ /View [/XYZ H.V] /Dest (0:389) cvn H.B /DEST pdfmark end 2712 3026 a Fh(cyberjack.conf)p Fi(.)f(Es)h(wird)g(je)396 3134 y(nach)g(Distrib)n(ution)f(in)i(dem)e(V)-9 b(erzeichnis)1651 3134 y SDict begin H.S end 1651 3134 a 1651 3134 a SDict begin 13 H.A end 1651 3134 a 1651 3134 a SDict begin [ /View [/XYZ H.V] /Dest (0:390) cvn H.B /DEST pdfmark end 1651 3134 a Fh(/etc)p Fi(,)1872 3134 y SDict begin H.S end 1872 3134 a 1872 3134 a SDict begin 13 H.A end 1872 3134 a 1872 3134 a SDict begin [ /View [/XYZ H.V] /Dest (0:391) cvn H.B /DEST pdfmark end 1872 3134 a Fh(/etc/cyberjack)19 b Fi(oder)2689 3134 y SDict begin H.S end 2689 3134 a 2689 3134 a SDict begin 13 H.A end 2689 3134 a 2689 3134 a SDict begin [ /View [/XYZ H.V] /Dest (0:392) cvn H.B /DEST pdfmark end 2689 3134 a Fh(/usr/etc)g Fi(erw)o(artet.)-2 3312 y SDict begin H.S end -2 3312 a -2 3312 a SDict begin 13 H.A end -2 3312 a -2 3312 a SDict begin [ /View [/XYZ H.V] /Dest (0:393) cvn H.B /DEST pdfmark end -2 3312 a 396 3408 a Fi(Standardmaessig)g(wird)h(v)n(on)f(den)h(binaeren)e(P)o (ak)o(eten)i(eine)g(Beispieldatei)g(mit)h(dem)f(Namen)396 3516 y SDict begin H.S end 396 3516 a 396 3516 a SDict begin 13 H.A end 396 3516 a 396 3516 a SDict begin [ /View [/XYZ H.V] /Dest (0:394) cvn H.B /DEST pdfmark end 396 3516 a Fh(cyberjack.conf.default)d Fi(angele)o(gt)i(die)h(als)h (Ausgangsdatei)d(fuer)i(eigene)f(K)m(on\002gurationen)e(v)o(erwendet) 396 3624 y(werden)i(kann.)-2 3791 y SDict begin H.S end -2 3791 a -2 3791 a SDict begin 13 H.A end -2 3791 a -2 3791 a SDict begin [ /View [/XYZ H.V] /Dest (0:395) cvn H.B /DEST pdfmark end -2 3791 a 396 3898 a Fi(Gespeicherte)g (Einstellungen)g(beinhalten)f(derzeit)i(eine)g(Reihe)h(v)n(on)e(Flags)i (so)n(wie)f(einige)g(Dateinamen)f(\(wie)h(z.B.)396 4006 y(der)g(Name)g(der)g(Logdatei)f(etc\).)-2 4024 y SDict begin H.S end -2 4024 a -2 4024 a SDict begin 13 H.A end -2 4024 a -2 4024 a SDict begin [ /View [/XYZ H.V] /Dest (0:396) cvn H.B /DEST pdfmark end -2 4024 a 396 4293 a Fj(10.1.1.)29 b(K)m(ommandos)d(ad)o(d\003a)o(gs/del\003a)o(gs)2166 4293 y SDict begin H.S end 2166 4293 a 2166 4293 a SDict begin 15.6 H.A end 2166 4293 a 2166 4293 a SDict begin [ /View [/XYZ H.V] /Dest (0.10.21.4.3) cvn H.B /DEST pdfmark end 2166 4293 a -2 4481 a SDict begin H.S end -2 4481 a -2 4481 a SDict begin 13 H.A end -2 4481 a -2 4481 a SDict begin [ /View [/XYZ H.V] /Dest (0:398) cvn H.B /DEST pdfmark end -2 4481 a 396 4567 a Fi(Da)21 b(die)f(K)m(on\002guration)e (je)i(nach)g(Distrib)n(ution)f(an)h(unterschiedlichen)e(Stellen)i(im)h (System)f(abgele)o(gt)f(wird)h(wurde)396 4675 y(das)h(T)-7 b(ool)20 b("c)o(yberjack")e(um)h(zwei)i(neue)e(K)m(ommandos)g (erweitert:)2392 4675 y SDict begin H.S end 2392 4675 a 2392 4675 a SDict begin 13 H.A end 2392 4675 a 2392 4675 a SDict begin [ /View [/XYZ H.V] /Dest (0:399) cvn H.B /DEST pdfmark end 2392 4675 a -2 4713 a SDict begin H.S end -2 4713 a -2 4713 a SDict begin 13 H.A end -2 4713 a -2 4713 a SDict begin [ /View [/XYZ H.V] /Dest (0:400) cvn H.B /DEST pdfmark end -2 4713 a Black 396 4864 a Fc(\225)p Black 479 4864 a SDict begin H.S end 479 4864 a 479 4864 a SDict begin 13 H.A end 479 4864 a 479 4864 a SDict begin [ /View [/XYZ H.V] /Dest (0:401) cvn H.B /DEST pdfmark end 479 4864 a Fi(c)o(yberjack)g(add\003ags)g(0xf)n(f)n (f)n(f)-2 4882 y SDict begin H.S end -2 4882 a -2 4882 a SDict begin 13 H.A end -2 4882 a -2 4882 a SDict begin [ /View [/XYZ H.V] /Dest (0:402) cvn H.B /DEST pdfmark end -2 4882 a Black 396 5013 a Fc(\225)p Black 479 5013 a SDict begin H.S end 479 5013 a 479 5013 a SDict begin 13 H.A end 479 5013 a 479 5013 a SDict begin [ /View [/XYZ H.V] /Dest (0:403) cvn H.B /DEST pdfmark end 479 5013 a Fi(c)o(yberjack)g(del\003ags)h(0xf)n(f)n(f)n(f)p Black 3800 5569 a Fg(12)p Black eop end %%Page: 13 13 TeXDict begin 13 12 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.13) cvn H.B /DEST pdfmark end -2 -102 a Black 1636 -132 a Fg(T)-5 b(r)m(eiber)21 b(f\374r)g(REINER)f(SCT)g(cyberJ)m(ac)n(k)g (pinpad/e-com)d(USB)j(Kartenleser)p Black -2 -11 a SDict begin H.S end -2 -11 a -2 -11 a SDict begin 13 H.A end -2 -11 a -2 -11 a SDict begin [ /View [/XYZ H.V] /Dest (0:404) cvn H.B /DEST pdfmark end -2 -11 a 396 72 a Fi(Damit)h(k)o (oennen)d(bestimmte)h(Flags)i(gesetzt)f(oder)g(geloescht)f(werden.)g (Derzeit)h(stehen)g(die)g(folgenden)e(Flags)i(zur)396 180 y(V)-9 b(erfue)o(gung:)847 180 y SDict begin H.S end 847 180 a 847 180 a SDict begin 13 H.A end 847 180 a 847 180 a SDict begin [ /View [/XYZ H.V] /Dest (0:405) cvn H.B /DEST pdfmark end 847 180 a -2 292 a SDict begin H.S end -2 292 a -2 292 a SDict begin 13 H.A end -2 292 a -2 292 a SDict begin [ /View [/XYZ H.V] /Dest (0:406) cvn H.B /DEST pdfmark end -2 292 a -2 292 a SDict begin H.S end -2 292 a -2 292 a SDict begin 0 H.A end -2 292 a -2 292 a SDict begin [ /View [/XYZ H.V] /Dest (table.4) cvn H.B /DEST pdfmark end -2 292 a 396 295 3501 4 v 396 295 V 396 420 4 125 v 424 395 a Ff(W)m(er)r(t)p 1562 420 V 983 w(Name)p 2728 420 V 940 w(Besc)o(hreib)n(ung)p 3893 420 V 396 423 3501 4 v 396 423 V 396 979 4 557 v 424 523 a Fi(0x00000001)p 1562 979 V 746 w(DEB)o(UG_GENERIC)p 2728 979 V 500 w(Schaltet)20 b(generelle)2756 631 y(Deb)n(ug-Meldungen) c(ein.)k(Diese)2756 738 y(Meldungen)e(werden)h(in)h(die)2756 846 y(Logdatei)f(geschrieben)2756 954 y(\(normalerweise)f (/tmp/cj.log\).)p 3893 979 V 396 983 3501 4 v 396 983 V 396 1215 4 233 v 424 1082 a(0x00000002)p 1562 1215 V 746 w(DEB)o(UG_READER)p 2728 1215 V 528 w(Schaltet)i(Leser)n (-bezogene)2756 1190 y(Deb)n(ug-Meldungen)c(ein.)p 3893 1215 V 396 1218 3501 4 v 396 1218 V 396 1451 4 233 v 424 1318 a(0x00000004)p 1562 1451 V 746 w(DEB)o(UG_CT)-8 b(API)p 2728 1451 V 628 w(Schaltet)20 b(CT)-8 b(API-bezogene)2756 1426 y(Deb)n(ug-Meldungen)16 b(ein.)p 3893 1451 V 396 1454 3501 4 v 396 1454 V 396 1687 4 233 v 424 1554 a(0x00000008)p 1562 1687 V 746 w(DEB)o(UG_A)-5 b(USB)p 2728 1687 V 644 w(Schaltet)20 b(USB-bezogene)2756 1662 y(Deb)n(ug-Meldungen)c(ein.)p 3893 1687 V 396 1690 3501 4 v 396 1690 V 396 2030 4 341 v 424 1789 a(0x00000010)p 1562 2030 V 746 w(DEB)o(UG_CJPP)-8 b(A)p 2728 2030 V 629 w(Schaltet)20 b(bestimmte)2756 1897 y(Deb)n(ug-Meldungen)c(des)2756 2005 y(Cyberjack)j(PinP)o(ad)h(A)g (ein.)p 3893 2030 V 396 2034 3501 4 v 396 2034 V 396 2374 4 341 v 424 2133 a(0x00000020)p 1562 2374 V 746 w(DEB)o(UG_ECOM)p 2728 2374 V 620 w(Schaltet)g(bestimmte)2756 2241 y(Deb)n(ug-Meldungen)c(des)2756 2349 y(Cyberjack)j(Ecom)g(ein.)p 3893 2374 V 396 2377 3501 4 v 396 2377 V 396 2610 4 233 v 424 2477 a(0x00000040)p 1562 2610 V 746 w(DEB)o(UG_TRANSFER)p 2728 2610 V 436 w(Schaltet)h(IO-bezogene)2756 2585 y(Deb)n (ug-Meldungen)c(ein.)p 3893 2610 V 396 2613 3501 4 v 396 2613 V 396 2846 4 233 v 424 2713 a(0x00000080)p 1562 2846 V 746 w(DEB)o(UG_USB)p 2728 2846 V 699 w(Schaltet)k(weitere)g (USB-bezogene)2756 2821 y(Deb)n(ug-Meldungen)c(ein.)p 3893 2846 V 396 2849 3501 4 v 396 2849 V 396 3081 4 233 v 424 2948 a(0x00000100)p 1562 3081 V 746 w(DEB)o(UG_IFD)p 2728 3081 V 726 w(Schaltet)k(IFD-bezogene)2756 3056 y(Deb)n (ug-Meldungen)c(ein)k(\(PC/SC\))p 3893 3081 V 396 3085 3501 4 v 396 3085 V 396 3425 4 341 v 424 3184 a(0x00000200)p 1562 3425 V 746 w(DEB)o(UG_ECA)p 2728 3425 V 694 w(Schaltet)g (bestimmte)2756 3292 y(Deb)n(ug-Meldungen)c(des)2756 3400 y(Cyberjack)j(Ecom)g(A)i(ein.)p 3893 3425 V 396 3428 3501 4 v 396 3428 V 396 3661 4 233 v 424 3528 a(0x00001000)p 1562 3661 V 746 w(NO_BEEP)p 2728 3661 V 822 w(Schaltet)f(die)g (Signaltoene)f(bei)2756 3636 y(T)-7 b(astendrueck)o(en)18 b(aus.)p 3893 3661 V 396 3664 3501 4 v 396 3664 V 396 4436 4 773 v 424 3764 a(0x00002000)p 1562 4436 V 746 w(ECOM_KERNEL)p 2728 4436 V 577 w(V)-9 b(erwendet)18 b(den)i(K)n(ernel-T)m(reiber)2756 3872 y(fuer)f(den)h(Cyberjack)f (Ecom/Pinpad)2756 3980 y(mit)h(der)g(USB)h(ID)g(0x100.)d(Dies)2756 4088 y(kann)h(v)o(erwendet)f(werden,)h(wenn)2756 4195 y(der)h(normale)e(Userspace-T)m(reiber)2756 4303 y(auf)i(Ihrem)f (System)h(nicht)2756 4411 y(funktioniert.)p 3893 4436 V 396 4440 3501 4 v Black 3800 5569 a Fg(13)p Black eop end %%Page: 14 14 TeXDict begin 14 13 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.14) cvn H.B /DEST pdfmark end -2 -102 a Black 1636 -132 a Fg(T)-5 b(r)m(eiber)21 b(f\374r)g(REINER)f(SCT)g(cyberJ)m(ac)n(k)g (pinpad/e-com)d(USB)j(Kartenleser)p Black 396 -7 3501 4 v 396 -7 V 396 117 4 125 v 424 92 a Ff(W)m(er)r(t)p 1562 117 V 983 w(Name)p 2728 117 V 940 w(Besc)o(hreib)n(ung)p 3893 117 V 396 117 3501 4 v 396 1645 4 1528 v 424 217 a Fi(0x00004000)p 1562 1645 V 746 w(ALLO)m(W_INPUT)p 2728 1645 V 603 w(Erlaubt)f(das)h(K)m(ommando)e(INPUT)-6 b(.)2756 325 y(Dies)21 b(ist)g(normalerweise)d(aus)2756 433 y(Sicherheitsgruenden)e(deakti)n(viert.)2756 541 y(Nur)k(ganz)f(spezielle)2756 649 y(Anwendungen)e(benoetigen)h(dieses) 2756 757 y(K)m(ommando,)f(insbesondere)2756 865 y(Banking-Programme)f (benoetigen)2756 972 y(es)21 b(jedoch)e(nicht.)g(Sie)i(sollten)f(sich) 2756 1080 y(daher)f(gut)h(ueberle)o(gen,)d(ob)j(Sie)h(das)2756 1188 y(K)m(ommando)d(akti)n(vieren)g(w)o(ollen,)2756 1296 y(denn)h(es)i(kann)e(dazu)g(v)o(erwendet)2756 1404 y(werden,)g(Ihnen)f(eine)i(unsichere)2756 1512 y(Pin-Eingabe)e(als)j (sicher)2756 1620 y(v)n(orzutaeuschen.)p 3893 1645 V 396 1648 3501 4 v 396 1648 V 396 2852 4 1204 v 424 1748 a(0x00008000)p 1562 2852 V 746 w(BEEP_NO_X11)p 2728 2852 V 636 w(Normalerweise)d(v)o(ersucht)h(der)2756 1856 y(T)m(reiber)g (fuer)g(die)i(Signaltoene)d(auf)2756 1964 y(einen)h(laufenden)f (X11-Serv)o(er)2756 2072 y(zuzugreifen)f(\(Ihre)i(gra\002sche)2756 2180 y(Ober\003aeche\).)f(W)-7 b(enn)20 b(dies)h(nicht)2756 2288 y(gelingt,)e(wird)h(v)o(ersucht)f(die)2756 2395 y(Signaltoene)g(ueber)g(andere)2756 2503 y(Methoden)f(zu)i(erzeugen.)e (Mit)2756 2611 y(diesem)i(Flag)g(k)o(oennen)e(Sie)2756 2719 y(v)o(erhindern,)f(dass)j(der)g(X11-Serv)o(er)2756 2827 y(k)o(ontaktiert)e(wird.)p 3893 2852 V 396 2855 3501 4 v 396 2855 V 396 3843 4 988 v 424 2955 a(0x00010000)p 1562 3843 V 746 w(RESET_BEFORE)p 2728 3843 V 573 w(Dieses)j(Flag)f (betrif)n(ft)f(nur)h(aeltere)2756 3063 y(c)o(yberJacks)e(\(pinpad)g (und)g(ecom)h(mit)2756 3171 y(der)h(USB-K)n(ennung)e(0x100\).)f(W)-7 b(enn)2756 3279 y(dieses)20 b(Flag)h(gesetzt)f(ist,)h(fuehrt)e(der)2756 3387 y(T)m(reiber)g(ein)h(Reset)h(durch.)e(Dies)2756 3495 y(sollte)h(normalerweise)f(nicht)h(noetig)2756 3603 y(sein,)g(kann)f(aber)h(mit)g(manchen)2756 3711 y(Lesern)f(den)h (Betrieb)g(ueberhaupt)2756 3818 y(erst)g(ermoe)o(glichen.)p 3893 3843 V 396 3847 3501 4 v 396 3847 V -2 4179 a SDict begin H.S end -2 4179 a -2 4179 a SDict begin 13 H.A end -2 4179 a -2 4179 a SDict begin [ /View [/XYZ H.V] /Dest (0:473) cvn H.B /DEST pdfmark end -2 4179 a 396 4287 a Fi(W)-7 b(enn)21 b(Sie)f(also)h(ein)f(ausfuehrliches)e(Logging)h (einschalten)g(w)o(ollen,)h(fuehren)e(Sie)j(das)f(folgende)e(K)m (ommando)g(aus:)396 4395 y SDict begin H.S end 396 4395 a 396 4395 a SDict begin 13 H.A end 396 4395 a 396 4395 a SDict begin [ /View [/XYZ H.V] /Dest (0:474) cvn H.B /DEST pdfmark end 396 4395 a 45 w Fb(cyberjack)43 b(addflags)h(0xffff) 64 b Fi(Sie)21 b(sehen)f(hier)m(,)f(dass)i(der)f(ange)o(gebene)d(W)-7 b(ert)21 b(0xf)n(f)n(f)n(f)d(alle)j(Flags)g(enthaelt,)396 4503 y(deren)e(Name)h(mit)h(DEB)o(UG_)f(anf)o(aengt.)-2 4687 y SDict begin H.S end -2 4687 a -2 4687 a SDict begin 13 H.A end -2 4687 a -2 4687 a SDict begin [ /View [/XYZ H.V] /Dest (0:475) cvn H.B /DEST pdfmark end -2 4687 a 396 4777 a Fi(W)-7 b(enn)21 b(Sie)f(nun)g(zusaetzlich)f(den)h (Cyberjack)f(Ecom/Pinpad)f(ueber)h(den)h(K)n(ernel-T)m(reiber)e(v)o (erwenden)f(w)o(ollen,)396 4884 y(k)o(oennen)h(Sie)j(dazu)f(entweder)f (anschliessend)g(ein)h(zusaetzliches)g(K)m(ommando)e(eingeben;)3139 4884 y SDict begin H.S end 3139 4884 a 3139 4884 a SDict begin 13 H.A end 3139 4884 a 3139 4884 a SDict begin [ /View [/XYZ H.V] /Dest (0:476) cvn H.B /DEST pdfmark end 3139 4884 a 44 w Fb(cyberjack)396 4992 y(addflags)44 b(0x20000)64 b Fi(oder)19 b(Sie)i(fue)o(gen)e(das)h(Flag)h(dem)e (ersten)h(Aufruf)f(gleich)h(hinzu,)f(wie)h(in)3325 4992 y SDict begin H.S end 3325 4992 a 3325 4992 a SDict begin 13 H.A end 3325 4992 a 3325 4992 a SDict begin [ /View [/XYZ H.V] /Dest (0:477) cvn H.B /DEST pdfmark end 3325 4992 a 44 w Fb(cyberjack)396 5100 y(addflags)44 b(0x2ffff)-2 5121 y SDict begin H.S end -2 5121 a -2 5121 a SDict begin 13 H.A end -2 5121 a -2 5121 a SDict begin [ /View [/XYZ H.V] /Dest (0:478) cvn H.B /DEST pdfmark end -2 5121 a Black 3800 5569 a Fg(14)p Black eop end %%Page: 15 15 TeXDict begin 15 14 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.15) cvn H.B /DEST pdfmark end -2 -102 a Black 1636 -132 a Fg(T)-5 b(r)m(eiber)21 b(f\374r)g(REINER)f(SCT)g(cyberJ)m(ac)n(k)g (pinpad/e-com)d(USB)j(Kartenleser)p Black 396 72 a Fj(10.1.2.)29 b(K)m(ommando)d(c)o(hec)n(k)1579 72 y SDict begin H.S end 1579 72 a 1579 72 a SDict begin 15.6 H.A end 1579 72 a 1579 72 a SDict begin [ /View [/XYZ H.V] /Dest (0.10.21.5.3) cvn H.B /DEST pdfmark end 1579 72 a -2 240 a SDict begin H.S end -2 240 a -2 240 a SDict begin 13 H.A end -2 240 a -2 240 a SDict begin [ /View [/XYZ H.V] /Dest (0:480) cvn H.B /DEST pdfmark end -2 240 a 396 346 a Fi(Dieses)21 b(K)m(ommando)d(wird)i(standardmaessig)f(angenommen,)e(wenn)i(Sie)i(k)o (eines)f(angeben.)-2 530 y SDict begin H.S end -2 530 a -2 530 a SDict begin 13 H.A end -2 530 a -2 530 a SDict begin [ /View [/XYZ H.V] /Dest (0:481) cvn H.B /DEST pdfmark end -2 530 a 396 620 a Fi(Es)h(ueberprueft)c(Ihr)j(System)g(und)g (erzeugt)f(3)h(Dateien)g(im)g(aktuellen)f(V)-9 b(erzeichnis:)2923 620 y SDict begin H.S end 2923 620 a 2923 620 a SDict begin 13 H.A end 2923 620 a 2923 620 a SDict begin [ /View [/XYZ H.V] /Dest (0:482) cvn H.B /DEST pdfmark end 2923 620 a -2 649 a SDict begin H.S end -2 649 a -2 649 a SDict begin 13 H.A end -2 649 a -2 649 a SDict begin [ /View [/XYZ H.V] /Dest (0:483) cvn H.B /DEST pdfmark end -2 649 a Black 396 791 a Fc(\225)p Black 479 791 a SDict begin H.S end 479 791 a 479 791 a SDict begin 13 H.A end 479 791 a 479 791 a SDict begin [ /View [/XYZ H.V] /Dest (0:484) cvn H.B /DEST pdfmark end 479 791 a 479 791 a SDict begin H.S end 479 791 a 479 791 a SDict begin 13 H.A end 479 791 a 479 791 a SDict begin [ /View [/XYZ H.V] /Dest (0:485) cvn H.B /DEST pdfmark end 479 791 a Fh(cyberjack-hints.log)p Fi(:)18 b(Diese)j(Datei)f(enthaelt)g(bei)g(gefundenen)d(Problemen)i (Hinweise,)h(wie)g(Sie)h(diese)479 899 y(beheben)e(k)o(oennen.)-2 900 y SDict begin H.S end -2 900 a -2 900 a SDict begin 13 H.A end -2 900 a -2 900 a SDict begin [ /View [/XYZ H.V] /Dest (0:486) cvn H.B /DEST pdfmark end -2 900 a Black 396 1048 a Fc(\225)p Black 479 1048 a SDict begin H.S end 479 1048 a 479 1048 a SDict begin 13 H.A end 479 1048 a 479 1048 a SDict begin [ /View [/XYZ H.V] /Dest (0:487) cvn H.B /DEST pdfmark end 479 1048 a 479 1048 a SDict begin H.S end 479 1048 a 479 1048 a SDict begin 13 H.A end 479 1048 a 479 1048 a SDict begin [ /View [/XYZ H.V] /Dest (0:488) cvn H.B /DEST pdfmark end 479 1048 a Fh (cyberjack-report.log)p Fi(:)f(Diese)j(Datei)f(enthaelt)g(einen)f (Bericht)h(ueber)g(die)g(Er)o(gebnisse)e(des)j(Systemtests.)-2 1066 y SDict begin H.S end -2 1066 a -2 1066 a SDict begin 13 H.A end -2 1066 a -2 1066 a SDict begin [ /View [/XYZ H.V] /Dest (0:489) cvn H.B /DEST pdfmark end -2 1066 a Black 396 1197 a Fc(\225)p Black 479 1197 a SDict begin H.S end 479 1197 a 479 1197 a SDict begin 13 H.A end 479 1197 a 479 1197 a SDict begin [ /View [/XYZ H.V] /Dest (0:490) cvn H.B /DEST pdfmark end 479 1197 a 479 1197 a SDict begin H.S end 479 1197 a 479 1197 a SDict begin 13 H.A end 479 1197 a 479 1197 a SDict begin [ /View [/XYZ H.V] /Dest (0:491) cvn H.B /DEST pdfmark end 479 1197 a Fh(cyberjack.xml)p Fi(:)e(Diese)i(Datei)f(enthaelt)g(die)g(Er)o (gebnisse)f(der)g(T)-6 b(ests)22 b(in)e(einer)g(F)o(orm,)f(die)h(dem)g (Support)e(v)n(on)479 1305 y(Reiner)i(SCT)h(hilft)g(Sie)f(bei)h (Problemen)d(zu)i(unterstuetzen.)e(Sie)j(sollten)f(diese)h(Datei)f (daher)g(immer)f(mitsenden.)p Black 3800 5569 a Fg(15)p Black eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF pcsc-cyberjack-3.99.5final.sp05/doc/LIESMICH.txt000066400000000000000000000641451231776762100210350ustar00rootroot00000000000000Treiber für REINER SCT cyberJack pinpad/e-com USB Kartenleser Martin Preuss Copyright © 2008 REINER SCT GmbH 2008/02/12 Dies ist das Handbuch zum Linux-Treiber für die Reiner SCT cyberJack Kartenleser. __________________________________________________________ Table of Contents 1. Übersicht 2. Von diesem Treiber unterstützte Geräte 3. Distributions-spezifische Hinweise 3.1. RPM-basiert 3.1.1. Einrichtung unter SuSE Linux 3.2. DEB-basiert 3.3. Alle anderen Distributionen 4. Firmware-Update 5. Support 6. Troubleshooting 6.1. Erste Schritte 6.2. Aeltere cyberJacks 6.3. Große Anzahl von Lesern 6.4. Hotplugging 6.5. Logging 7. Bekannte Probleme 8. Anwendungen 8.1. Moneyplex 8.1.1. Moneyplex auf 64-Bit-Systemen 9. Zusätzliche Information 9.1. CT-API 9.2. PC/SC 9.2.1. Installation 9.3. Multithreading 9.4. Kommandolaänge 9.5. Tastendruck Callback 9.6. Informationen zur Treiberversion 9.7. Zusaetzliche CT_init Ersatz-Funktion 9.8. Feste Zurodnung der Portnummer zu Lesern 9.9. Serielle Leser 9.10. Zurodnung alter Cyberjack zu ttyUSB-Devices 9.11. Pin-Ueberpruefung mit der PC/SC Funktion SCardControl 10. Mitgelieferte Anwendungen 10.1. cyberjack 10.1.1. Kommandos addflags/delflags 10.1.2. Kommando check 1. Übersicht Dieser Treiber für die Cyberjack Pinpad/ecom-Familie von USB Kartenlesegeräten implementiert den CTAPI Standard in der Version 1.1 sowie das PC/SC-Interface von pcsc-lite. Er ist vollständig im Userspace implementiert. Dadurch entfallen Schwierigkeiten mit unterschiedlichen Kernel-Versionen, dem Kompilieren und Patchen von Kerneln etc. Sämtliche Zugriffe werden über das usb devfs in /proc/bus/usb (oder /dev/bus/usb für udev-basierte systeme) abgewickelt. Behandlung von Dateirechten geschieht ausschließlich über udev. Das Skript cyberjack.rules - falls es nach /etc/udev/rules.d installiert wurde - wird automatisch von udev aufgerufen, sobald der Leser angeschlossen wird. Es setzt die Dateirechte für das entsprechende Gerät, so daß anschliessend die Benutzer der Gruppe cyberjack darauf zugreifen können. Für mehr Informationen über den Kartenleser selbst besuchen Sie bitte http://www.reiner-sct.com/. Dort finden Sie auch einen Onlineshop, in dem Sie diesen Leser bestellen können. __________________________________________________________ 2. Von diesem Treiber unterstützte Geräte Die folgenden Reiner-SCT Kartenleser werden unterstützt: Product ProductID REINER SCT cyberJack pinpad USB 0x100 REINER SCT cyberJack e-com USB 0x100 REINER SCT cyberJack pinpad_a USB 0x300 REINER SCT cyberJack e-com_a USB 0x400 Mit dem Kommando lsusb können Sie sich alle USB-Geräte anzeigen lassen. Es zeigt die Hersteller- und Gerätekennung aller angeschlossenen Geräte an, beispielsweise: Bus Nr Device Nr VeID:PrID Bus 002 Device 002 ID 0451:1446 Bus 002 Device 006 ID 0c4b:0400 Die REINER SCT Herstellerkennung ist 0c4b. Die Produktkennungen finden Sie in der vorigen Tabelle. __________________________________________________________ 3. Distributions-spezifische Hinweise Sie finden alle Pakete unter http://www.reiner-sct.com/content/view/32/43/#linux. Die meisten Pakete erzeugen eine Gruppe cyberjack. Dieser Gruppe müssen alle Benutzer zugeordnet werden, die Zugriff auf das Gerät haben sollen. Das erreichen Sie am einfachsten über das KDE-Programm kuser oder das Administrations-Programm Ihres Systems (bei SuSE z.B. yast). Eine Ausnahme stellt hier SuSE 10.1 dar, hier müssen Sie keine Benutzer- Zuordnung vornehmen (ab SuSE 10.2 hingegen schon). Nach der Installation des Paketes und der Benutzerzuordnung sollten Sie Ihren Rechner neu starten, damit die Änderungen gültig werden. __________________________________________________________ 3.1. RPM-basiert Reiner-SCT bietet RPM-Pakete für die folgenden Distributionen an: * SuSE 10.3 * SuSE 10.2 * SuSE 10.1 * SuSE 10.0 * Fedora Core 7 * Fedora Core 6 * Fedora Core 5 Installieren Sie das entsprechende Paket einfach durch das folgende Kommando: rpm -i Sollten Sie bereits ein älteres Treiberpaket installiert haben, verwenden Sie stattdessen das folgende Kommando: rpm -U Es gibt allerdings eine Besonderheit bei Verwendung von SuSE10.0 auf einem 64-Bit-System mit der Anwendung "Moneyplex": Da diese Anwendung leider eine 32-Bit-Anwendung ist, kann sie nur mit der 32-Bit-Version unseres Treibers arbeiten. Leider war der Kernel von SuSE10.0 noch nicht in der Lage, alle 32-Bit-Aufrufe des Treibers nach 64-Bit umzuwandeln. Hier muss daher eine Aenderung an der Datei /etc/cyberjack.conf vorgenommen werden. Fuegen Sie bitte die folgende Zeile ein: "flags=0x20000". __________________________________________________________ 3.1.1. Einrichtung unter SuSE Linux Nach der Installation des Treibers muessen Sie die Benutzer, die auf den Leser zugreifen koennen sollen, in die Gruppe "cyberjack" einfuegen. Am einfachsten geschieht dies mit Yast: Starten Sie Yast, rufen Sie das Menu "Sicherheit und Benutzer" auf und dort "Gruppen bearbeiten und anlegen". Es erscheint ein Fenster, das standardmaessig die Systemgruppen nicht anzeigt, daher muessen Sie den Filter aendern. Klicken Sie dazu unten rechts auf "Filter festlegen" und waehlen Sie dort "Systemgruppen". Daraufhin sollten Sie in der Liste auch die Gruppe "cyberjack" finden, die Sie dann markieren muessen. Anschliessend klicken Sie unten auf "Bearbeiten". In dem Fenster, welches dann erscheint, setzen Sie bei den aufgefuehrten Benutzern, die auf den Leser zugreifen koennen sollen, die Markierung. Klicken Sie nun auf "Uebernehmen" und starten Sie das System neu, Der Leser sollte nun fuer die markierten Benutzer verwendbar sein. __________________________________________________________ 3.2. DEB-basiert Reiner-SCT bietet DEB-Pakete für die folgenden Distributionen: * Debian stable * Debian unstable * Ubuntu 6.10 * Ubuntu 7.04 * Ubuntu 7.10 Installieren Sie das entsprechende Paket mit: dpkg -i __________________________________________________________ 3.3. Alle anderen Distributionen Es gibt momentan wenig Erfahrungen mit anderen Linux-Distributionen. Haben Sie ein RPM-basiertes System, so können Sie probieren eigene RPM-Paket zu erstellen: rpm --rebuild oder rpmbuild --rebuild Falls Sie den Treiber selber kompilieren wollen, wechseln Sie in das Hauptverzeichnis des entpackten Treiber-Paketes und geben Sie die folgenden Befehle ein: ./configure make Anschließend können Sie den Treiber auf Ihr System installieren. Dazu benötigen Sie sehr wahrscheinlich Administrator-Rechte. make install __________________________________________________________ 4. Firmware-Update Die aktuelle Version dieses Treibers enthaelt das Tool "cjflash" welches das Aktualisieren der Firmware des Lesers erlaubt. Derzeit koennen damit allerdings nur die neuesten Cyberjack-Leser aktualisiert werden (mit der Produkt-Kennung 0x400) Der Linux-Treiber funktioniert mit diesen Geraeten nur mit einer Firmware in der Version groesser oder gleich 3.0.6. Sollte Ihr Leser eine aeltere Version enthalten, ist ein Update zwingend noetig. Auch nach diesem Update funktioniert der Leser weiterhin auch unter Windows. Um die Firmware zu aktualiseren geben Sie bitte das folgenden Kommando in einer Konsole ein: cjflash 1 Kernel_V30_07.bin Kernel_V30_07.bin.ecoma.sgn ecoma2.bky Das erste Argument ist die Nummer des Lesers (beginnend mit "1", der 2. Leser hat die Nummer "2" etc). Das naechste Argument ist der Name der Datei mit der neuen Firmware gefolgt vom Namen der Datei mit der Signatur der neuen Firmware. Nachdem Sie das Kommando eingegeben haben fragt der Leser nach einer Bestaetigung. Druecken Sie die "OK"-Taste auf der Tastatur des Lesers zur Bestaetigung oder brechen Sie den Vorgang mit "CANCEL" ab. Sollte der Leser "haengen" nachdem Sie "OK" oder "CANCEL" gedrueckt haben, muessen Sie den Leser abziehen und neu anschliessen. Anschliessend muessen Sie eine leicht modifizierte Version des obrigen Kommandos verwenden: CJ_USB_MODE=1 cjflash 1 Kernel_V30_07.bin Kernel_V30_07.bin.ecoma.sgn Hiermit wird die Umgebungsvariable "CJ_USB_MODE" gesetzt bevor das Update durchgefuehrt wird. Dadurch weiss der Treiber, dass es sich um einen Leser mit einer fuer Linux problematischen Firmware handelt und spricht ihn etwas anders an. Bitte setzen Sie die Umgebungsvariable nur, wenn "cjflash" sonst nicht funktioniert! __________________________________________________________ 5. Support Support für diesen Treiber bietet REINER SCT. E-mail: support@reiner-sct.com Postadresse: Schwabacher Str. 34, 90762 Fürth, Deutschland Bitte fügen Sie ihrer Problembeschreibung die folgenden Informationen bei: * Name und Version des verwendeten Programmes, mit dem der Fehler auftrat * die vollständige Fehlermeldung * den Namen und die Version der von Ihnen verwendeten Linux-Distribution (z.B. SuSE 10.1, Debian 3.0r1 testing) * CPU-Typ (z.B. der Inhalt der Datei /proc/cpuinfo) * Kernelversion (z.B. die Ausgabe des Befehls uname -r) * Liste der angeschlossenen USB-Geräte (z.B. die Ausgabe des Befehls lsusb) __________________________________________________________ 6. Troubleshooting 6.1. Erste Schritte Mit dem Treiber wird das Tool "cyberjack" installiert. Es erzeugt Dateien mit Daten, die fuer den Support von Reiner SCT wichtig sind. Fuehren Sie daher in einer Konsole den folgenden Befehl aus; cyberjack Dabei entstehen im aktuellen Verzeichnis 3 Dateien. Schauen Sie sich zuerst die Datei cyberjack-hints.log an. Sie enthaelt eventuell bereits Hinweise, was Sie auf Ihrem System tun koennen, um das Problem selbst zu beheben (oft sind es nur Kleinigkeiten). Sollte das nicht zum Erfolg fuehren, senden Sie bitte die ebenfalls entstandene Datei "cyberjack.xml" mit Ihrer Support-Anfrage mit, damit wir alle noetigen Informationen haben, um Ihnen helfen zu koennen. __________________________________________________________ 6.2. Aeltere cyberJacks cyberJacks mit der USB-Kennung 0x100 (alte Ecom/Pinpad) machen mitunter Probleme mit aktuellen Treibern. Falls das bei Ihnen der Fall sein sollte, gibt es die Moeglichkeit, das Verhalten des Treibers zu beeinflussen: cyberjack addflags 0x100000 Dieses Kommando muessen Sie als root ausfuehren. Es setzt ein Flag welches den Treiber bei jedem Initialisieren des Lesers ein Reset-Kommando schicken laesst. __________________________________________________________ 6.3. Große Anzahl von Lesern Der cyberJack wurde mit bis zu 52 gleichzeitig angeschlossenen Geräten (über 7-Port Hubs) getestet. Dabei gibt es allerdings etwas zu beachten: * Linux bis Version 2.4.19 hängt sich vollständig auf, wenn zu viele Geräte angeschlossen sind. Versionen ab 2.4.20 weisen dieses Problem nicht mehr auf. * Es treten manchmal timeout-Fehler auf. Das Problem scheint hier im Linux-Kernel selbst zu liegen (usb-uhci). Mit schnelleren Rechnern tritt dieses Problem nicht mehr auf (ab 2GHz). * Sollte es immer noch nicht wie gewünscht funktionieren, sollten Sie die beteiligten USB-Controller-Karten und/oder Hubs austauschen. Es gibt hier offensichtlich eine besonders große Streubreite in der Qualität dieser Geräte. Der Daten-Durchsatz nimmt nicht ab, wenn Sie statt einem 50 Kartenleser anschließen und konstant auslesen (getestet mit den Kommandos SELECT und READ_BINARY). __________________________________________________________ 6.4. Hotplugging Linux unterstützt hotplugging (das Einstecken und Entfernen von USB-Geräten bei laufendem Betrieb). Dies wird durch das udev-System implementiert. Sie finden udev-Skriptdateien für die REINER SCT Kartenleser im Verzeichnis etc/udev des Quellpaketes. Da udev-Skripte Distributions-spezifisch sind (nicht alle verwenden udev, und SuSE verwendet ausserdem resmgr, zudem sind auch die Namen der Skripte nicht einheitlich), können wir nicht für alle am Markt existierenden Distributionen die passenden Skripte bereitstellen. Die von uns gelieferten RPM- und DEB-Pakete installieren die für das jeweilige System passenden Dateien an die vorgesehene Stelle, so daß mit diesen Paketen hotplugging problemlos möglich ist. __________________________________________________________ 6.5. Logging Dieser Treiber erlaubt die Aufzeichnung der Kommunikation mit dem Kartenleser. Sie schalten es ein, indem Sie als root das Kommando cyberjack addflags 0xffff ausfuehren. Dann schreibt der Treiber die Logmeldungen in die Datei /tmp/cj.log. __________________________________________________________ 7. Bekannte Probleme Leider enthalten alle Kernel bi einschliesslich Version 2.6.12-rc5 einen schweren Fehler in der Behandlung von asynchronen URB's (USB Request Block) im Userspace. Dieser Fehler hat nichts mit dem Reiner SCT Treiber zu tun, dennoch betrifft er auch unseren Treiber für PC/SC. Der Fehler tritt auf, wenn der PC/SC Dienst beendet wird und kann im schlimmsten Fall zum vollständigen Absturz des Kernels führen. Es wurde eine Lösung erarbeitet, die aber bisher nicht offizieller Bestandteil des Linux-Kernels ist. Wir bieten unsere Lösung aber als patch an (in Form der Datei patches/usb-async_urb-devio-oops-fix.patch). Falls Sie PC/SC in Verbindung mit einem betroffenen Kernel verwenden wollen, raten wir daher dringend dazu den mitgelieferten Patch anzuwenden. __________________________________________________________ 8. Anwendungen 8.1. Moneyplex Moneyplex bringt seine eigenen Treiber fuer die bekanntesten Geraete mit. Leider sind die Treiber fuer den Cyberjack, die sich auf der Moneyplex-CD befinden, meist veraltet und funktionieren auf aktuellen Systemen nicht. Sie sollten daher unbedingt den jeweils aktuellsten Treiber von unserer Homepage herunterladen und installieren. Anschliessend muessen Sie dann im entsprechenden Konfigurationsmenue von Moneyplex direkt unseren Treiber angeben (je nach System entweder in /usr/lib oder in /usr/lib/readers, Dateiname ist "libctapi-cyberjack.so". Damit sollte Moneyplex auch mit dem Cyberjack zusammenarbeiten koennen. __________________________________________________________ 8.1.1. Moneyplex auf 64-Bit-Systemen Moneyplex ist eine 32-Bit-Anwendung. Als solche kann sie zwar auch auf 64-Bit-Systemen ausgefuehrt werden, findet aber auf solchen Systemen keine Kartenleser-Treiber (weil es nach 32-Bit-Treibern sucht, die aber auf einem solchen System normalerweise nicht vorhanden sind). Es wurde allerdings auch fuer diesen Fall eine Loesung mit Matrica erarbeitet. Moneyplex liefert - spaetestens nach einem Update - einen Proxy-Treiber mit (libproxy-cyberjack.so), welcher einer 32-Bit-Anwendung erlaubt, auf die installierten 64-Bit-Treiber zuzugreifen. Diesen Treiber finden Sie normalerweise im Moneyplex-Verzeichnis ($HOME/moneyplex), und dort ueblicherweise im Unterverzeichnis "ctapi". Waehlen Sie diesen Treiber in Moneyplex aus. __________________________________________________________ 9. Zusätzliche Information 9.1. CT-API Die CT-API Spezifikation erhalten Sie auf der Seite http://www.darmstadt.gmd.de/~eckstein/CT/mkt.html Bitte beachten Sie, daß die Port-Nummern bei 1 beginnen (wie in den Spezifikationen vorgesehen). __________________________________________________________ 9.2. PC/SC Dieser Treiber bietet inzwischen auch einen PC/SC-Treiber für pcsc-lite an. Er wurde mit pcsc-lite-1.2.0 getestet. __________________________________________________________ 9.2.1. Installation Für RPM-basierte Systeme ist der sogenannte IFD-Treiber im Paket ctapi-cyberjack-ifd enthalten. Falls Sie den Treiber aus dem Quellpaket selber kompilieren, wird durch make install der IFD-Treiber an die passende Stelle in Ihrem System (normalerweise /usr/lib/pcsc/drivers/) installiert. __________________________________________________________ 9.3. Multithreading Dieser Treiber ist nicht thread-safe, d.h. es können nicht mehrere Threads des gleichen Programmes auf den gleichen Leser zugreifen (dies würde aber ohnehin meist zu Problemen auf der Karte führen). Allerdings können unterschiedliche Threads des gleichen Programmes auf unterschiedliche Geräte zugreifen. So können also beispielsweise 3 Threads gleichzeitig auf 3 Karten in 3 unterschiedlichen Geräten zugreifen. __________________________________________________________ 9.4. Kommandolaänge Die Kommandolänge ist derzeit auf ISO7816 short commands reduziert. Dies bedeutet allerdings im normalen Betrieb keine Einschränkung. __________________________________________________________ 9.5. Tastendruck Callback IS8 rsct_setkeycb(IU16ctn, void (*cb) (void *user_data)); Die Funktion rsct_setkeycb wurde hinzugefügt, um laufenden Programmen eine Rückmeldung über gedrückte Tasten des Lesers zu geben. Die Funktion, die als 2. Argument dieses Aufrufes geliefert wird, wird jeweils aufgerufen, wenn ein C4- oder F4 S-Block vom Leser empfangen wurde. Die Anwendung kann dann beispielsweise einen Piepton erzeugen, oder die Anzahl der gedrückten Tasten anzeigen. __________________________________________________________ 9.6. Informationen zur Treiberversion void rsct_version(IU8*vmajor, IU8*vminor, IU8*vpatchlevel, IU16*vbuild); Die Funktion rsct_version gibt die vollstaendige Version des Treibers in den uebergebenen Variablen zurueck. __________________________________________________________ 9.7. Zusaetzliche CT_init Ersatz-Funktion IS8 rsct_init_name(IU16ctn, const char*device_name); Die Funktion rsct_init_name erlaubt die direkte Angabe des Geraetes wie bei PC/SC. Damit kann eindeutig festgelegt werden, welches Geraet verwendet werden soll. Der Geraetename ist wie folgt aufgebaut: "usb:VENDOR_ID/PRODUCT_ID:libusb:BUS_ID:DEVICE_ID". Fuer einen neuen Cyberjack an /proc/bus/usb/003/002 lautet der Name demnach: "usb:0c4b/0300:libusb:003:002". __________________________________________________________ 9.8. Feste Zurodnung der Portnummer zu Lesern Die Funktion CT_init erlaubt eine feste Zurdnung von Portnummern zu bestimmten Lesern. Das bedeutet beispielsweise, dass immer der gleiche Leser unter der gleichen Portnummer angesprochen wird, egal an welchem USB-Port das Geraet angeschlossen ist. Dies erreichen Sie, indem Sie als Portnummer die folgenden Nummern verwenden: * 0x9000 (dezimal 36864) fuer das erste Geraet * 0x9001 (dezimal 36865) fuer das zweite Geraet und so weiter. Die Zuordnung geschieht ueber eine Text-Datei, in der pro Zeile eine Seriennummer gespeichert ist (normalerweise ist dies $HOME/cyberjack_serials). Der Treiber aktualisiert diese Datei selbststaendig, es ist hierzu kein Benutzereingriff noetig. Falls die Datei beim Aufruf von CT_init() noch nicht existiert, wird sie erzeugt. Wenn sie bereits existiert, und der angeschlossene Leser bereits in dieser Datei aufgefuehrt wird, bleibt die Datei unveraendert. Der Treiber fuegt lediglich neue Leser an das Ende der Datei an. Die erste Seriennummer dieser Datei wird ueber den Portwert 0x9000 angesprochen, die zweite ueber 0x9001 etc. __________________________________________________________ 9.9. Serielle Leser Der aktuelle Treiber unterstuetzt den Lesertyp Ecom A via seriellem Anschluss. Dazu muessen Sie die folgenden Portnummern verwenden: * 0xa000 (dezimal 40960) fuer Anschluß an COM1 (/dev/ttyS0) * 0xa001 (dezimal 40961) fuer Anschluß an COM2 (/dev/ttyS1) und so weiter. __________________________________________________________ 9.10. Zurodnung alter Cyberjack zu ttyUSB-Devices Die Funktion CT_init erlaubt fuer aeltere Cyberjack Ecoms und PinPads (mit der USB-Id 0x100) eine direkte Zurodnung von Port-Werten zu /dev/ttyUSBx-Geraeten. Dies erreichen Sie, indem Sie als Portnummer die folgenden Nummern verwenden: * 0x8000 (dezimal 32768) fuer /dev/ttyUSB0 * 0x8001 (dezimal 32769) fuer /dev/ttyUSB1 und so weiter. __________________________________________________________ 9.11. Pin-Ueberpruefung mit der PC/SC Funktion SCardControl Die folgende Tabelle zeigt Werte fuer die einzelnden Felder der Struktur PSCS_VERIFY_STRUCTURE die mit ASCII und FPIN2-kodierten Pins getestet wurden. Feld ASCII FPIN2 bTimerOut 00 00 bTimerOut2 00 00 bmFormatString 82 81 bmPINBlockString 04 48 bmPINLengthFormat 00 04 wPINMaxExtraDigit 0408 0408 bEntryValidationCondition 02 02 bNumberMessage 01 01 wLangId 0904 0904 bMsgIndex 00 00 bTeoPrologue 0-2 00 00 __________________________________________________________ 10. Mitgelieferte Anwendungen 10.1. cyberjack Diese Anwendung dient zum einen dem Testen des Treibers und Lesers zum anderen der Aenderung von Einstellungen des Treibers. Die Einstellungen des Treibers finden sich in der Konfigurationsdatei cyberjack.conf. Es wird je nach Distribution in dem Verzeichnis /etc, /etc/cyberjack oder /usr/etc erwartet. Standardmaessig wird von den binaeren Paketen eine Beispieldatei mit dem Namen cyberjack.conf.default angelegt die als Ausgangsdatei fuer eigene Konfigurationen verwendet werden kann. Gespeicherte Einstellungen beinhalten derzeit eine Reihe von Flags sowie einige Dateinamen (wie z.B. der Name der Logdatei etc). __________________________________________________________ 10.1.1. Kommandos addflags/delflags Da die Konfiguration je nach Distribution an unterschiedlichen Stellen im System abgelegt wird wurde das Tool "cyberjack" um zwei neue Kommandos erweitert: * cyberjack addflags 0xffff * cyberjack delflags 0xffff Damit koennen bestimmte Flags gesetzt oder geloescht werden. Derzeit stehen die folgenden Flags zur Verfuegung: Wert Name Beschreibung 0x00000001 DEBUG_GENERIC Schaltet generelle Debug-Meldungen ein. Diese Meldungen werden in die Logdatei geschrieben (normalerweise /tmp/cj.log). 0x00000002 DEBUG_READER Schaltet Leser-bezogene Debug-Meldungen ein. 0x00000004 DEBUG_CTAPI Schaltet CTAPI-bezogene Debug-Meldungen ein. 0x00000008 DEBUG_AUSB Schaltet USB-bezogene Debug-Meldungen ein. 0x00000010 DEBUG_CJPPA Schaltet bestimmte Debug-Meldungen des Cyberjack PinPad A ein. 0x00000020 DEBUG_ECOM Schaltet bestimmte Debug-Meldungen des Cyberjack Ecom ein. 0x00000040 DEBUG_TRANSFER Schaltet IO-bezogene Debug-Meldungen ein. 0x00000080 DEBUG_USB Schaltet weitere USB-bezogene Debug-Meldungen ein. 0x00000100 DEBUG_IFD Schaltet IFD-bezogene Debug-Meldungen ein (PC/SC) 0x00000200 DEBUG_ECA Schaltet bestimmte Debug-Meldungen des Cyberjack Ecom A ein. 0x00001000 NO_BEEP Schaltet die Signaltoene bei Tastendruecken aus. 0x00002000 ECOM_KERNEL Verwendet den Kernel-Treiber fuer den Cyberjack Ecom/Pinpad mit der USB ID 0x100. Dies kann verwendet werden, wenn der normale Userspace-Treiber auf Ihrem System nicht funktioniert. 0x00004000 ALLOW_INPUT Erlaubt das Kommando INPUT. Dies ist normalerweise aus Sicherheitsgruenden deaktiviert. Nur ganz spezielle Anwendungen benoetigen dieses Kommando, insbesondere Banking-Programme benoetigen es jedoch nicht. Sie sollten sich daher gut ueberlegen, ob Sie das Kommando aktivieren wollen, denn es kann dazu verwendet werden, Ihnen eine unsichere Pin-Eingabe als sicher vorzutaeuschen. 0x00008000 BEEP_NO_X11 Normalerweise versucht der Treiber fuer die Signaltoene auf einen laufenden X11-Server zuzugreifen (Ihre grafische Oberflaeche). Wenn dies nicht gelingt, wird versucht die Signaltoene ueber andere Methoden zu erzeugen. Mit diesem Flag koennen Sie verhindern, dass der X11-Server kontaktiert wird. 0x00010000 RESET_BEFORE Dieses Flag betrifft nur aeltere cyberJacks (pinpad und ecom mit der USB-Kennung 0x100). Wenn dieses Flag gesetzt ist, fuehrt der Treiber ein Reset durch. Dies sollte normalerweise nicht noetig sein, kann aber mit manchen Lesern den Betrieb ueberhaupt erst ermoeglichen. Wenn Sie also ein ausfuehrliches Logging einschalten wollen, fuehren Sie das folgende Kommando aus: cyberjack addflags 0xffff Sie sehen hier, dass der angegebene Wert 0xffff alle Flags enthaelt, deren Name mit DEBUG_ anfaengt. Wenn Sie nun zusaetzlich den Cyberjack Ecom/Pinpad ueber den Kernel-Treiber verwenden wollen, koennen Sie dazu entweder anschliessend ein zusaetzliches Kommando eingeben; cyberjack addflags 0x20000 oder Sie fuegen das Flag dem ersten Aufruf gleich hinzu, wie in cyberjack addflags 0x2ffff __________________________________________________________ 10.1.2. Kommando check Dieses Kommando wird standardmaessig angenommen, wenn Sie keines angeben. Es ueberprueft Ihr System und erzeugt 3 Dateien im aktuellen Verzeichnis: * cyberjack-hints.log: Diese Datei enthaelt bei gefundenen Problemen Hinweise, wie Sie diese beheben koennen. * cyberjack-report.log: Diese Datei enthaelt einen Bericht ueber die Ergebnisse des Systemtests. * cyberjack.xml: Diese Datei enthaelt die Ergebnisse der Tests in einer Form, die dem Support von Reiner SCT hilft Sie bei Problemen zu unterstuetzen. Sie sollten diese Datei daher immer mitsenden. pcsc-cyberjack-3.99.5final.sp05/doc/LIESMICH.xml000066400000000000000000001131561231776762100210130ustar00rootroot00000000000000

Treiber für REINER SCT cyberJack pinpad/e-com USB Kartenleser Martin Preuss 2008/02/12 2008 REINER SCT GmbH Dies ist das Handbuch zum Linux-Treiber für die Reiner SCT cyberJack Kartenleser.
Übersicht Dieser Treiber für die Cyberjack Pinpad/ecom-Familie von USB Kartenlesegeräten implementiert den CTAPI Standard in der Version 1.1 sowie das PC/SC-Interface von pcsc-lite. Er ist vollständig im Userspace implementiert. Dadurch entfallen Schwierigkeiten mit unterschiedlichen Kernel-Versionen, dem Kompilieren und Patchen von Kerneln etc. Sämtliche Zugriffe werden über das usb devfs in /proc/bus/usb (oder /dev/bus/usb für udev-basierte systeme) abgewickelt. Behandlung von Dateirechten geschieht ausschließlich über udev. Das Skript cyberjack.rules - falls es nach /etc/udev/rules.d installiert wurde - wird automatisch von udev aufgerufen, sobald der Leser angeschlossen wird. Es setzt die Dateirechte für das entsprechende Gerät, so daß anschliessend die Benutzer der Gruppe cyberjack darauf zugreifen können. Für mehr Informationen über den Kartenleser selbst besuchen Sie bitte . Dort finden Sie auch einen Onlineshop, in dem Sie diesen Leser bestellen können.
Von diesem Treiber unterstützte Geräte Die folgenden Reiner-SCT Kartenleser werden unterstützt: Product ProductID REINER SCT cyberJack pinpad USB 0x100 REINER SCT cyberJack e-com USB 0x100 REINER SCT cyberJack pinpad_a USB 0x300 REINER SCT cyberJack e-com_a USB 0x400 Mit dem Kommando lsusb können Sie sich alle USB-Geräte anzeigen lassen. Es zeigt die Hersteller- und Gerätekennung aller angeschlossenen Geräte an, beispielsweise: Bus Nr Device Nr VeID:PrID Bus 002 Device 002 ID 0451:1446 Bus 002 Device 006 ID 0c4b:0400 Die REINER SCT Herstellerkennung ist 0c4b. Die Produktkennungen finden Sie in der vorigen Tabelle.
Distributions-spezifische Hinweise Sie finden alle Pakete unter . Die meisten Pakete erzeugen eine Gruppe cyberjack. Dieser Gruppe müssen alle Benutzer zugeordnet werden, die Zugriff auf das Gerät haben sollen. Das erreichen Sie am einfachsten über das KDE-Programm kuser oder das Administrations-Programm Ihres Systems (bei SuSE z.B. yast). Eine Ausnahme stellt hier SuSE 10.1 dar, hier müssen Sie keine Benutzer- Zuordnung vornehmen (ab SuSE 10.2 hingegen schon). Nach der Installation des Paketes und der Benutzerzuordnung sollten Sie Ihren Rechner neu starten, damit die Änderungen gültig werden.
RPM-basiert Reiner-SCT bietet RPM-Pakete für die folgenden Distributionen an: SuSE 10.3 SuSE 10.2 SuSE 10.1 SuSE 10.0 Fedora Core 7 Fedora Core 6 Fedora Core 5 Installieren Sie das entsprechende Paket einfach durch das folgende Kommando: rpm -i <Paketdatei> Sollten Sie bereits ein älteres Treiberpaket installiert haben, verwenden Sie stattdessen das folgende Kommando: rpm -U <Paketdatei> Es gibt allerdings eine Besonderheit bei Verwendung von SuSE10.0 auf einem 64-Bit-System mit der Anwendung "Moneyplex": Da diese Anwendung leider eine 32-Bit-Anwendung ist, kann sie nur mit der 32-Bit-Version unseres Treibers arbeiten. Leider war der Kernel von SuSE10.0 noch nicht in der Lage, alle 32-Bit-Aufrufe des Treibers nach 64-Bit umzuwandeln. Hier muss daher eine Aenderung an der Datei /etc/cyberjack.conf vorgenommen werden. Fuegen Sie bitte die folgende Zeile ein: "flags=0x20000".
Einrichtung unter SuSE Linux Nach der Installation des Treibers muessen Sie die Benutzer, die auf den Leser zugreifen koennen sollen, in die Gruppe "cyberjack" einfuegen. Am einfachsten geschieht dies mit Yast: Starten Sie Yast, rufen Sie das Menu "Sicherheit und Benutzer" auf und dort "Gruppen bearbeiten und anlegen". Es erscheint ein Fenster, das standardmaessig die Systemgruppen nicht anzeigt, daher muessen Sie den Filter aendern. Klicken Sie dazu unten rechts auf "Filter festlegen" und waehlen Sie dort "Systemgruppen". Daraufhin sollten Sie in der Liste auch die Gruppe "cyberjack" finden, die Sie dann markieren muessen. Anschliessend klicken Sie unten auf "Bearbeiten". In dem Fenster, welches dann erscheint, setzen Sie bei den aufgefuehrten Benutzern, die auf den Leser zugreifen koennen sollen, die Markierung. Klicken Sie nun auf "Uebernehmen" und starten Sie das System neu, Der Leser sollte nun fuer die markierten Benutzer verwendbar sein.
DEB-basiert Reiner-SCT bietet DEB-Pakete für die folgenden Distributionen: Debian stable Debian unstable Ubuntu 6.10 Ubuntu 7.04 Ubuntu 7.10 Installieren Sie das entsprechende Paket mit: dpkg -i <Paketdatei>
Alle anderen Distributionen Es gibt momentan wenig Erfahrungen mit anderen Linux-Distributionen. Haben Sie ein RPM-basiertes System, so können Sie probieren eigene RPM-Paket zu erstellen: rpm --rebuild <Quellpaketdatei> oder rpmbuild --rebuild <Quellpaketdatei> Falls Sie den Treiber selber kompilieren wollen, wechseln Sie in das Hauptverzeichnis des entpackten Treiber-Paketes und geben Sie die folgenden Befehle ein: ./configure make Anschließend können Sie den Treiber auf Ihr System installieren. Dazu benötigen Sie sehr wahrscheinlich Administrator-Rechte. make install
Firmware-Update Die aktuelle Version dieses Treibers enthaelt das Tool "cjflash" welches das Aktualisieren der Firmware des Lesers erlaubt. Derzeit koennen damit allerdings nur die neuesten Cyberjack-Leser aktualisiert werden (mit der Produkt-Kennung 0x400) Der Linux-Treiber funktioniert mit diesen Geraeten nur mit einer Firmware in der Version groesser oder gleich 3.0.6. Sollte Ihr Leser eine aeltere Version enthalten, ist ein Update zwingend noetig. Auch nach diesem Update funktioniert der Leser weiterhin auch unter Windows. Um die Firmware zu aktualiseren geben Sie bitte das folgenden Kommando in einer Konsole ein: cjflash 1 Kernel_V30_07.bin Kernel_V30_07.bin.ecoma.sgn ecoma2.bky Das erste Argument ist die Nummer des Lesers (beginnend mit "1", der 2. Leser hat die Nummer "2" etc). Das naechste Argument ist der Name der Datei mit der neuen Firmware gefolgt vom Namen der Datei mit der Signatur der neuen Firmware. Nachdem Sie das Kommando eingegeben haben fragt der Leser nach einer Bestaetigung. Druecken Sie die "OK"-Taste auf der Tastatur des Lesers zur Bestaetigung oder brechen Sie den Vorgang mit "CANCEL" ab. Sollte der Leser "haengen" nachdem Sie "OK" oder "CANCEL" gedrueckt haben, muessen Sie den Leser abziehen und neu anschliessen. Anschliessend muessen Sie eine leicht modifizierte Version des obrigen Kommandos verwenden: CJ_USB_MODE=1 cjflash 1 Kernel_V30_07.bin Kernel_V30_07.bin.ecoma.sgn Hiermit wird die Umgebungsvariable "CJ_USB_MODE" gesetzt bevor das Update durchgefuehrt wird. Dadurch weiss der Treiber, dass es sich um einen Leser mit einer fuer Linux problematischen Firmware handelt und spricht ihn etwas anders an. Bitte setzen Sie die Umgebungsvariable nur, wenn "cjflash" sonst nicht funktioniert!
Support Support für diesen Treiber bietet REINER SCT. E-mail: support@reiner-sct.com Postadresse: Schwabacher Str. 34, 90762 Fürth, Deutschland Bitte fügen Sie ihrer Problembeschreibung die folgenden Informationen bei: Name und Version des verwendeten Programmes, mit dem der Fehler auftrat die vollständige Fehlermeldung den Namen und die Version der von Ihnen verwendeten Linux-Distribution (z.B. SuSE 10.1, Debian 3.0r1 testing) CPU-Typ (z.B. der Inhalt der Datei /proc/cpuinfo) Kernelversion (z.B. die Ausgabe des Befehls uname -r) Liste der angeschlossenen USB-Geräte (z.B. die Ausgabe des Befehls lsusb)
Troubleshooting
Erste Schritte Mit dem Treiber wird das Tool "cyberjack" installiert. Es erzeugt Dateien mit Daten, die fuer den Support von Reiner SCT wichtig sind. Fuehren Sie daher in einer Konsole den folgenden Befehl aus; cyberjack Dabei entstehen im aktuellen Verzeichnis 3 Dateien. Schauen Sie sich zuerst die Datei cyberjack-hints.log an. Sie enthaelt eventuell bereits Hinweise, was Sie auf Ihrem System tun koennen, um das Problem selbst zu beheben (oft sind es nur Kleinigkeiten). Sollte das nicht zum Erfolg fuehren, senden Sie bitte die ebenfalls entstandene Datei "cyberjack.xml" mit Ihrer Support-Anfrage mit, damit wir alle noetigen Informationen haben, um Ihnen helfen zu koennen.
Aeltere cyberJacks cyberJacks mit der USB-Kennung 0x100 (alte Ecom/Pinpad) machen mitunter Probleme mit aktuellen Treibern. Falls das bei Ihnen der Fall sein sollte, gibt es die Moeglichkeit, das Verhalten des Treibers zu beeinflussen: cyberjack addflags 0x100000 Dieses Kommando muessen Sie als root ausfuehren. Es setzt ein Flag welches den Treiber bei jedem Initialisieren des Lesers ein Reset-Kommando schicken laesst.
Große Anzahl von Lesern Der cyberJack wurde mit bis zu 52 gleichzeitig angeschlossenen Geräten (über 7-Port Hubs) getestet. Dabei gibt es allerdings etwas zu beachten: Linux bis Version 2.4.19 hängt sich vollständig auf, wenn zu viele Geräte angeschlossen sind. Versionen ab 2.4.20 weisen dieses Problem nicht mehr auf. Es treten manchmal timeout-Fehler auf. Das Problem scheint hier im Linux-Kernel selbst zu liegen (usb-uhci). Mit schnelleren Rechnern tritt dieses Problem nicht mehr auf (ab 2GHz). Sollte es immer noch nicht wie gewünscht funktionieren, sollten Sie die beteiligten USB-Controller-Karten und/oder Hubs austauschen. Es gibt hier offensichtlich eine besonders große Streubreite in der Qualität dieser Geräte. Der Daten-Durchsatz nimmt nicht ab, wenn Sie statt einem 50 Kartenleser anschließen und konstant auslesen (getestet mit den Kommandos SELECT und READ_BINARY).
Hotplugging Linux unterstützt hotplugging (das Einstecken und Entfernen von USB-Geräten bei laufendem Betrieb). Dies wird durch das udev-System implementiert. Sie finden udev-Skriptdateien für die REINER SCT Kartenleser im Verzeichnis etc/udev des Quellpaketes. Da udev-Skripte Distributions-spezifisch sind (nicht alle verwenden udev, und SuSE verwendet ausserdem resmgr, zudem sind auch die Namen der Skripte nicht einheitlich), können wir nicht für alle am Markt existierenden Distributionen die passenden Skripte bereitstellen. Die von uns gelieferten RPM- und DEB-Pakete installieren die für das jeweilige System passenden Dateien an die vorgesehene Stelle, so daß mit diesen Paketen hotplugging problemlos möglich ist.
Logging Dieser Treiber erlaubt die Aufzeichnung der Kommunikation mit dem Kartenleser. Sie schalten es ein, indem Sie als root das Kommando cyberjack addflags 0xffff ausfuehren. Dann schreibt der Treiber die Logmeldungen in die Datei /tmp/cj.log.
Bekannte Probleme Leider enthalten alle Kernel bi einschliesslich Version 2.6.12-rc5 einen schweren Fehler in der Behandlung von asynchronen URB's (USB Request Block) im Userspace. Dieser Fehler hat nichts mit dem Reiner SCT Treiber zu tun, dennoch betrifft er auch unseren Treiber für PC/SC. Der Fehler tritt auf, wenn der PC/SC Dienst beendet wird und kann im schlimmsten Fall zum vollständigen Absturz des Kernels führen. Es wurde eine Lösung erarbeitet, die aber bisher nicht offizieller Bestandteil des Linux-Kernels ist. Wir bieten unsere Lösung aber als patch an (in Form der Datei patches/usb-async_urb-devio-oops-fix.patch). Falls Sie PC/SC in Verbindung mit einem betroffenen Kernel verwenden wollen, raten wir daher dringend dazu den mitgelieferten Patch anzuwenden.
Anwendungen
Moneyplex Moneyplex bringt seine eigenen Treiber fuer die bekanntesten Geraete mit. Leider sind die Treiber fuer den Cyberjack, die sich auf der Moneyplex-CD befinden, meist veraltet und funktionieren auf aktuellen Systemen nicht. Sie sollten daher unbedingt den jeweils aktuellsten Treiber von unserer Homepage herunterladen und installieren. Anschliessend muessen Sie dann im entsprechenden Konfigurationsmenue von Moneyplex direkt unseren Treiber angeben (je nach System entweder in /usr/lib oder in /usr/lib/readers, Dateiname ist "libctapi-cyberjack.so". Damit sollte Moneyplex auch mit dem Cyberjack zusammenarbeiten koennen.
Moneyplex auf 64-Bit-Systemen Moneyplex ist eine 32-Bit-Anwendung. Als solche kann sie zwar auch auf 64-Bit-Systemen ausgefuehrt werden, findet aber auf solchen Systemen keine Kartenleser-Treiber (weil es nach 32-Bit-Treibern sucht, die aber auf einem solchen System normalerweise nicht vorhanden sind). Es wurde allerdings auch fuer diesen Fall eine Loesung mit Matrica erarbeitet. Moneyplex liefert - spaetestens nach einem Update - einen Proxy-Treiber mit (libproxy-cyberjack.so), welcher einer 32-Bit-Anwendung erlaubt, auf die installierten 64-Bit-Treiber zuzugreifen. Diesen Treiber finden Sie normalerweise im Moneyplex-Verzeichnis ($HOME/moneyplex), und dort ueblicherweise im Unterverzeichnis "ctapi". Waehlen Sie diesen Treiber in Moneyplex aus.
Zusätzliche Information
CT-API Die CT-API Spezifikation erhalten Sie auf der Seite Bitte beachten Sie, daß die Port-Nummern bei 1 beginnen (wie in den Spezifikationen vorgesehen).
PC/SC Dieser Treiber bietet inzwischen auch einen PC/SC-Treiber für pcsc-lite an. Er wurde mit pcsc-lite-1.2.0 getestet.
Installation Für RPM-basierte Systeme ist der sogenannte IFD-Treiber im Paket ctapi-cyberjack-ifd enthalten. Falls Sie den Treiber aus dem Quellpaket selber kompilieren, wird durch make install der IFD-Treiber an die passende Stelle in Ihrem System (normalerweise /usr/lib/pcsc/drivers/) installiert.
Multithreading Dieser Treiber ist nicht thread-safe, d.h. es können nicht mehrere Threads des gleichen Programmes auf den gleichen Leser zugreifen (dies würde aber ohnehin meist zu Problemen auf der Karte führen). Allerdings können unterschiedliche Threads des gleichen Programmes auf unterschiedliche Geräte zugreifen. So können also beispielsweise 3 Threads gleichzeitig auf 3 Karten in 3 unterschiedlichen Geräten zugreifen.
Kommandolaänge Die Kommandolänge ist derzeit auf ISO7816 short commands reduziert. Dies bedeutet allerdings im normalen Betrieb keine Einschränkung.
Tastendruck Callback IS8 rsct_setkeycb IU16ctn void (*cb) void *user_data Die Funktion rsct_setkeycb wurde hinzugefügt, um laufenden Programmen eine Rückmeldung über gedrückte Tasten des Lesers zu geben. Die Funktion, die als 2. Argument dieses Aufrufes geliefert wird, wird jeweils aufgerufen, wenn ein C4- oder F4 S-Block vom Leser empfangen wurde. Die Anwendung kann dann beispielsweise einen Piepton erzeugen, oder die Anzahl der gedrückten Tasten anzeigen.
Informationen zur Treiberversion void rsct_version IU8*vmajor IU8*vminor IU8*vpatchlevel IU16*vbuild Die Funktion rsct_version gibt die vollstaendige Version des Treibers in den uebergebenen Variablen zurueck.
Zusaetzliche CT_init Ersatz-Funktion IS8 rsct_init_name IU16ctn const char*device_name Die Funktion rsct_init_name erlaubt die direkte Angabe des Geraetes wie bei PC/SC. Damit kann eindeutig festgelegt werden, welches Geraet verwendet werden soll. Der Geraetename ist wie folgt aufgebaut: "usb:VENDOR_ID/PRODUCT_ID:libusb:BUS_ID:DEVICE_ID". Fuer einen neuen Cyberjack an /proc/bus/usb/003/002 lautet der Name demnach: "usb:0c4b/0300:libusb:003:002".
Feste Zurodnung der Portnummer zu Lesern Die Funktion CT_init erlaubt eine feste Zurdnung von Portnummern zu bestimmten Lesern. Das bedeutet beispielsweise, dass immer der gleiche Leser unter der gleichen Portnummer angesprochen wird, egal an welchem USB-Port das Geraet angeschlossen ist. Dies erreichen Sie, indem Sie als Portnummer die folgenden Nummern verwenden: 0x9000 (dezimal 36864) fuer das erste Geraet 0x9001 (dezimal 36865) fuer das zweite Geraet und so weiter. Die Zuordnung geschieht ueber eine Text-Datei, in der pro Zeile eine Seriennummer gespeichert ist (normalerweise ist dies $HOME/cyberjack_serials). Der Treiber aktualisiert diese Datei selbststaendig, es ist hierzu kein Benutzereingriff noetig. Falls die Datei beim Aufruf von CT_init() noch nicht existiert, wird sie erzeugt. Wenn sie bereits existiert, und der angeschlossene Leser bereits in dieser Datei aufgefuehrt wird, bleibt die Datei unveraendert. Der Treiber fuegt lediglich neue Leser an das Ende der Datei an. Die erste Seriennummer dieser Datei wird ueber den Portwert 0x9000 angesprochen, die zweite ueber 0x9001 etc.
Serielle Leser Der aktuelle Treiber unterstuetzt den Lesertyp Ecom A via seriellem Anschluss. Dazu muessen Sie die folgenden Portnummern verwenden: 0xa000 (dezimal 40960) fuer Anschluß an COM1 (/dev/ttyS0) 0xa001 (dezimal 40961) fuer Anschluß an COM2 (/dev/ttyS1) und so weiter.
Zurodnung alter Cyberjack zu ttyUSB-Devices Die Funktion CT_init erlaubt fuer aeltere Cyberjack Ecoms und PinPads (mit der USB-Id 0x100) eine direkte Zurodnung von Port-Werten zu /dev/ttyUSBx-Geraeten. Dies erreichen Sie, indem Sie als Portnummer die folgenden Nummern verwenden: 0x8000 (dezimal 32768) fuer /dev/ttyUSB0 0x8001 (dezimal 32769) fuer /dev/ttyUSB1 und so weiter.
Pin-Ueberpruefung mit der PC/SC Funktion SCardControl Die folgende Tabelle zeigt Werte fuer die einzelnden Felder der Struktur PSCS_VERIFY_STRUCTURE die mit ASCII und FPIN2-kodierten Pins getestet wurden. Feld ASCII FPIN2 bTimerOut 00 00 bTimerOut2 00 00 bmFormatString 82 81 bmPINBlockString 04 48 bmPINLengthFormat 00 04 wPINMaxExtraDigit 0408 0408 bEntryValidationCondition 02 02 bNumberMessage 01 01 wLangId 0904 0904 bMsgIndex 00 00 bTeoPrologue 0-2 00 00
Mitgelieferte Anwendungen
cyberjack Diese Anwendung dient zum einen dem Testen des Treibers und Lesers zum anderen der Aenderung von Einstellungen des Treibers. Die Einstellungen des Treibers finden sich in der Konfigurationsdatei cyberjack.conf. Es wird je nach Distribution in dem Verzeichnis /etc, /etc/cyberjack oder /usr/etc erwartet. Standardmaessig wird von den binaeren Paketen eine Beispieldatei mit dem Namen cyberjack.conf.default angelegt die als Ausgangsdatei fuer eigene Konfigurationen verwendet werden kann. Gespeicherte Einstellungen beinhalten derzeit eine Reihe von Flags sowie einige Dateinamen (wie z.B. der Name der Logdatei etc).
Kommandos addflags/delflags Da die Konfiguration je nach Distribution an unterschiedlichen Stellen im System abgelegt wird wurde das Tool "cyberjack" um zwei neue Kommandos erweitert: cyberjack addflags 0xffff cyberjack delflags 0xffff Damit koennen bestimmte Flags gesetzt oder geloescht werden. Derzeit stehen die folgenden Flags zur Verfuegung: Wert Name Beschreibung 0x00000001 DEBUG_GENERIC Schaltet generelle Debug-Meldungen ein. Diese Meldungen werden in die Logdatei geschrieben (normalerweise /tmp/cj.log). 0x00000002 DEBUG_READER Schaltet Leser-bezogene Debug-Meldungen ein. 0x00000004 DEBUG_CTAPI Schaltet CTAPI-bezogene Debug-Meldungen ein. 0x00000008 DEBUG_AUSB Schaltet USB-bezogene Debug-Meldungen ein. 0x00000010 DEBUG_CJPPA Schaltet bestimmte Debug-Meldungen des Cyberjack PinPad A ein. 0x00000020 DEBUG_ECOM Schaltet bestimmte Debug-Meldungen des Cyberjack Ecom ein. 0x00000040 DEBUG_TRANSFER Schaltet IO-bezogene Debug-Meldungen ein. 0x00000080 DEBUG_USB Schaltet weitere USB-bezogene Debug-Meldungen ein. 0x00000100 DEBUG_IFD Schaltet IFD-bezogene Debug-Meldungen ein (PC/SC) 0x00000200 DEBUG_ECA Schaltet bestimmte Debug-Meldungen des Cyberjack Ecom A ein. 0x000010000 NO_BEEP Schaltet die Signaltoene bei Tastendruecken aus. 0x00020000 ECOM_KERNEL Verwendet den Kernel-Treiber fuer den Cyberjack Ecom/Pinpad mit der USB ID 0x100. Dies kann verwendet werden, wenn der normale Userspace-Treiber auf Ihrem System nicht funktioniert. 0x00040000 ALLOW_INPUT Erlaubt das Kommando INPUT. Dies ist normalerweise aus Sicherheitsgruenden deaktiviert. Nur ganz spezielle Anwendungen benoetigen dieses Kommando, insbesondere Banking-Programme benoetigen es jedoch nicht. Sie sollten sich daher gut ueberlegen, ob Sie das Kommando aktivieren wollen, denn es kann dazu verwendet werden, Ihnen eine unsichere Pin-Eingabe als sicher vorzutaeuschen. 0x00080000 BEEP_NO_X11 Normalerweise versucht der Treiber fuer die Signaltoene auf einen laufenden X11-Server zuzugreifen (Ihre grafische Oberflaeche). Wenn dies nicht gelingt, wird versucht die Signaltoene ueber andere Methoden zu erzeugen. Mit diesem Flag koennen Sie verhindern, dass der X11-Server kontaktiert wird. 0x00100000 RESET_BEFORE Dieses Flag betrifft nur aeltere cyberJacks (pinpad und ecom mit der USB-Kennung 0x100). Wenn dieses Flag gesetzt ist, fuehrt der Treiber ein Reset durch. Dies sollte normalerweise nicht noetig sein, kann aber mit manchen Lesern den Betrieb ueberhaupt erst ermoeglichen. Wenn Sie also ein ausfuehrliches Logging einschalten wollen, fuehren Sie das folgende Kommando aus: cyberjack addflags 0xffff Sie sehen hier, dass der angegebene Wert 0xffff alle Flags enthaelt, deren Name mit DEBUG_ anfaengt. Wenn Sie nun zusaetzlich den Cyberjack Ecom/Pinpad ueber den Kernel-Treiber verwenden wollen, koennen Sie dazu entweder anschliessend ein zusaetzliches Kommando eingeben; cyberjack addflags 0x20000 oder Sie fuegen das Flag dem ersten Aufruf gleich hinzu, wie in cyberjack addflags 0x2ffff
Kommando check Dieses Kommando wird standardmaessig angenommen, wenn Sie keines angeben. Es ueberprueft Ihr System und erzeugt 3 Dateien im aktuellen Verzeichnis: cyberjack-hints.log: Diese Datei enthaelt bei gefundenen Problemen Hinweise, wie Sie diese beheben koennen. cyberjack-report.log: Diese Datei enthaelt einen Bericht ueber die Ergebnisse des Systemtests. cyberjack.xml: Diese Datei enthaelt die Ergebnisse der Tests in einer Form, die dem Support von Reiner SCT hilft Sie bei Problemen zu unterstuetzen. Sie sollten diese Datei daher immer mitsenden.
pcsc-cyberjack-3.99.5final.sp05/doc/Makefile.am000066400000000000000000000010251231776762100211170ustar00rootroot00000000000000 DOCFILES=\ README.ps README.html README.pdf README.txt \ LIESMICH.ps LIESMICH.html LIESMICH.pdf LIESMICH.txt #docfiledir=$(datarootdir)/doc/$(PACKAGE) #docfile_DATA=$(DOCFILES) manpagedir=$(mandir) manpage_DATA= \ cyberjack.8 EXTRA_DIST=\ README.xml LIESMICH.xml \ verifypin_ascii.c verifypin_fpin2.c \ $(DOCFILES) $(manpage_DATA) %.ps: %.xml jw -b ps $< %.pdf: %.ps ps2pdf $< %.html: %.xml jw -b html --nochunks $< tidy -i -m -q $@ || /bin/true %.txt: %.xml jw -b txt $< clean: #CLEANFILES=$(DOCFILES) pcsc-cyberjack-3.99.5final.sp05/doc/README.html000066400000000000000000000640141231776762100207150ustar00rootroot00000000000000 REINER SCT cyberJack pinpad/e-com USB chipcard reader driver

REINER SCT cyberJack pinpad/e-com USB chipcard reader driver

$Date$

This is the user manual to the linux driver for REINER SCT cyberjack chipcard readers.


1. Overview

This driver for the REINER SCT cyberJack pinpad/e-com USB family of chipcard readers implements the CT-API 1.1 interface, as well as the PC/SC interface of pcsc-lite.

It is implemented 100% in userspace. This means no trouble with different kernel versions, compiling/patching the kernel etc.

All accesses are done via the usb devfs in /proc/bus/usb (or /dev/bus/usb for udev-based systems).

Permission handling is done only via udev. The cyberjack.rules if installed to /etc/udev/rules.d is automatically called by udev when a reader is plugged in. This scripts dynamically updates the permissions of the respective device, so users in the group cyberjack are able to access it.

For more information about the smart card reader itself please visit http://www.reiner-sct.com/. There is also a shop where the the readers can be ordered online.


2. Readers supported by this driver

The following Reiner-SCT readers are supported:

Product ProductID
REINER SCT cyberJack pinpad USB 0x100
REINER SCT cyberJack e-com USB 0x100
REINER SCT cyberJack pinpad_a USB 0x300
You can use the lsusb command to list all devices connected to the USB bus of your machine. It will print out the vendor and device ID of all your devices, like :

Bus Nr Device Nr VeID:PrID Bus 002 Device 002: ID 0451:1446 Texas Instruments, Inc. TUSB2040/2070 Hub Bus 002 Device 006: ID 0c4b:0300

The REINER SCT VendorID is 0c4b. ProductID's can be looked up in the table above.


3. distribution-specific notes

You find all packages at http://www.reiner-sct.com/content/view/32/43/#linux.

Most packages need you to add the user which is to access the card reader to be added to the group cyberjack. This can be done by using the tool kuser or the system's administration tool (e.g. yast on SuSE).

You should reboot your machine after installing the driver package and adding the user to the group cyberjack in order for the changes to take effect.


3.1. RPM-based

Reiner-SCT provides RPM packages for the following distributions:

  • SuSE 10.2

  • SuSE 10.1

  • SuSE 10.0

  • SuSE 9.3

  • Fedora Core 5

  • Fedora Core 4

Just install the package corresponding to your system like this: rpm -i <package file>

If you already have one of Reiner-SCT's previous RPM packages installed you must update that existing package instead, like in: rpm -U <package file>


3.2. DEB-based

Reiner-SCT provides RPM packages for the following distributions:

  • Debian unstable

  • Ubuntu 6.06

  • Ubuntu 6.10

Just install the package corresponding to your system like this: dpkg -i <package file>


3.3. All other Distributions

There is currently no experience with other Linux distributions. It should work in most cases as described above. If you get any problems with the RPM package, you can try to rebuild it on your system with rpm --rebuild <source package file> or rpmbuild --rebuild <source package file>

If you want to compile the source yourself just go into the main directory of the extracted archive and type ./configure make

The include file ctapi.h and the resulting library libctapi-cyberjack.so from the directory ctapi/ can then be copied to convenient places. For ctapi.h this would normally be /usr/include and for the library /usr/lib. The command make install can do that for you.

The name scheme libctapi-cyberjack.* has been choosen to make it possible to install more than one CT-API library on your system.


4. Updating the Firmware

The latest driver contains the tool "cjflash" which can be used to update the firmware of the reader.

The current version of this tool only supports flashing newer Cyberjack devices (USB product id 0x400).

To update the firmware just use the following command: cjflash 1 Kernel_V30_07.bin Kernel_V30_07.bin.ecoma.sgn

The first argument is the number of the device (starting with "1", the second reader would be "2"). The next argument is the name of the file containing the new firmware, followed by the name of the file containing the signature of the new firmware.

After this command has been issued the reader asks you to confirm the operation (press "OK" on the reader's keypad to confirm or "CANCEL" to abort).

If the reader hangs after you pressed "OK" then it has an old firmware. In that case you'll have to use a slightly modified version of the command above: CJ_USB_MODE=1 cjflash 1 Kernel_V30_07.bin Kernel_V30_07.bin.ecoma.sgn

This sets the environment variable "CJ_USB_MODE" to the value "1" prior to executing the command. This tells the driver (which is used by cjflash) that another approach to the reader is needed.

Please only set that variable if the tool doesn't work otherwise!


5. Support

Support of this driver is provided by REINER SCT. E-mail: support@reiner-sct.com Postal address: Schwabacher Str. 34, 90762 Fürth, GERMANY

In your problem description, please include as far as possible:

  • Any error messages you get.

  • Which Linux distribution you use including version, e.g. SuSE 10.1, Debian 3.0r1 testing, ...

  • CPU type, e.g. on Linux the content of the file /proc/cpuinfo.

  • Kernel version, e.g. on Linux the output from the command uname -r.

  • List of attached USB devices, e.g. on Linux the output of the lsusb command.


6. Troubleshooting

6.1. How to check the kernel version

You can determine the version of the currently running kernel by executing uname -r

The version of the installed kernel sources, which are normally located below /usr/src, can be determined by looking at the source directory name or by looking into the main Makefile, where it is in the first three lines.


6.2. Large number of readers

The cyberJack has been tested with up to 52 devices attached simultaneously to a single PC via 7-port hubs. Some notes regarding this configuration:

  • Linux at least up to 2.4.19 does result in a kernel panic, when too many devices are attached. Known to work is 2.4.20.

  • Sometimes timeouts occur resulting in a shift of the T=1 blocks resulting in bad performance and sooner or later a failure of communcation. The problem seems to lie somewhere in the usb-uhci part and vanishes with a faster PC. (Try >2GHz)

  • If there are still some problems try other hubs and other USB host controller cards. There seems to be a great difference in quality in these parts.

The performance does not degrade, when going from 1 up to 50 readers, even when doing constant I/O with cards. (Select and Read Binary)


6.3. Hotplugging

Linux supports hotplugging with USB devices. This is implemented via the udev-system.

You can find some udev scripts for the REINER SCT cyberjack reader family in the etc/udev directory of this archive.

Since udev-related scripts are highly distribution specific, REINER SCT can only provide limited support in this area. The provided RPM and Debian packages install those scripts to their respective places.


6.4. Logging

The cyberjack CT-API library supports logging of the communication with the reader. This is done, if at the moment CT_init is called the environment variable CJDEBUG exists. The default output file is /tmp/cj.log. The logging is done on T=1 level and each entry begins with a time stamp.


7. Known Issues

Unfortunately, all Linux kernel versions, at least up to (including) 2.6.12-rc5 have a severe bug in the handling of asynchronous URB's (USB Request Blocks) in userspace. This bug is totally unrelated to the REINER-SCT cyberjack driver, but it will show as soon as the PC/SC daemon terminates (and you're using a pinpad_a (0x300) reader. The bug can crash your kernel :(.

A bugfix has been developed (but not yet included into the mainline kernel). It is available as kernel patch in 'patches/usb-async_urb-devio-oops-fix.patch'.

It is strongly recommended to apply this kernel patch if you intend to use the PC/SC driver.


8. Additional Information

8.1. Beeping at Keypress

Starting with Version 2.0.5 of ctapi-cyberjack, the host PC will emit a beep sound at every key press. The driver tries to detect the best mechanism for beeping by itself, i.e. xBell when you run under X11, or sending a BEL ASCII character to STDOUT when running as a console application.

If you want to disable the beep, you can set the CJCTAPI_NO_KEYBEEP environment variable before starting your application.

Depending on your shell, this can be achieved with a command like export CJCTAPI_NO_KEYPRESS.


8.2. Mandatory locking

Normal locking is only advisory, i.e. the programs must be cooperative to do the locking properly. A non-cooperative program can ignore a lock and access the reader. Mandatory locking, which stops even a malicious program from access the reader when it is locked, requires setting special permissions of the device node.

From linux/Documentation/mandatory.txt: " A file is marked as a candidate for mandatory locking by setting the group-id bit in its file mode but removing the group-execute bit. This is an otherwise meaningless combination, and was chosen by the System V implementors so as not to break existing user programs. "


8.3. Permissions

If a normal user should be able to access and use the cyberJack chipcard reader, the permissions should be '2666'. The '2' enables the mandatory locking described in the section before. The '666' enables read/write for all users.


8.4. CT-API

The CT-API specification can be downloaded at http://www.darmstadt.gmd.de/~eckstein/CT/mkt.html

Please note, that the port numbers start with one. This behaviour is specified in the CT-API documentation.


8.5. PC/SC

This driver package now contains a working PC/SC driver for pcsc-lite. The driver was tested with pcsc-lite-1.2.0 up to 1.3.1.


8.5.1. Installation

If you're installing the driver via a pre-built RPM package, make sure you install the "ctapi-cyberjack-ifd-handler" package.

If you're building the driver from source code, make sure you install the pcsc/ifd-cyberjack.bundle directory to the "usb plugdir" directory of your pcsc-lite installation. The default make install procedure puts it into /usr/lib/pcsc/drivers/.


8.6. Multithreading

The library is NOT save against multiple threads accessing at the same time the same reader. This gives you also most probably problems with your card anyway.

The library is save against multiple threads accessing multiple readers. So you could start 3 threads, each accessing their own card in their own reader.


8.7. command size

The command size is currently limited to ISO7816 short commands.


8.8. Keypressed callback

IS8 rsct_setkeycb(IU16ctn, void (*cb) (void *user_data));

The function rsct_setkeycb has been added to specify a callback to signal keypresses. The function specified in the second parameter is called whenever a C4 or F4 S-block is received from the reader. This information can be used to help the user, when entering a PIN on the cyberJack pinpad reader, which does not show how many keys have been pressed.


8.9. Obtaining Version Info

void rsct_version(IU8*vmajor, IU8*vminor, IU8*vpatchlevel, IU16*vbuild);

The function rsct_version returns the complete version of the driver.


8.10. Additional CT_init Replacement Function

IS8 rsct_init_name(IU16ctn, const char*device_name);

The function rsct_init_name can be used to directly specify the device to be used. The device name is specified like for PC/SC drivers: "usb:VENDOR_ID/PRODUCT_ID:libusb:BUS_ID:DEVICE_ID", so for a new cyberjack at /proc/bus/usb/003/002 the correct name would be: "usb:0c4b/0300:libusb:003:002"


8.11. Verifying Pins Using PC/SC Function SCardControl

The following table shows values for the PSCS_VERIFY_STRUCTURE object which have been tested with ASCII and FPIN2 formatted pins.

Field ASCII FPIN2
bTimerOut 00 00
bTimerOut2 00 00
bmFormatString 82 81
bmPINBlockString 04 48
bmPINLengthFormat 00 04
wPINMaxExtraDigit 0408 0408
bEntryValidationCondition 02 02
bNumberMessage 01 01
wLangId 0904 0904
bMsgIndex 00 00
bTeoPrologue 0-2 00 00
pcsc-cyberjack-3.99.5final.sp05/doc/README.pdf000066400000000000000000001671671231776762100205370ustar00rootroot00000000000000%PDF-1.4 %Çì¢ 6 0 obj <> stream xœµZËvIÝë+zçTsÜ¥|?Ø1Æ€ c7‡Å Y/k$KIö OâY‘™•Y•­ãã…ÓÙùˆŒˆ{ãQþa%F¹ø§ü}òáàðMX]ܤٕ\ý¹Ž®~8墬^}³… q¥Ì裫íù,Ëeˆct+o5œ½ýpðíðf-Fo´5ax±ÞÈQˆ`üp´V£*ªáUúÝX­§ß£±°k£‚…ÞÒäsZº…ß}÷ÃÉ:ë€'‡wkXÃMÞÁ¤7^Äáež”ÎÚá8µSN‘atÑÈáŠfÿµ}y°q~4F¨ÕF«d‚g³>ækB.ëSnêýZî0R†á´Šv˜ö´2nòCáy L½­{> JÔh´þA:}K:ý¦èLf¼¯;/§Û²X ÌtCz:WÃÝZÉQJPÔiÑpPE{Q¸IÜŶÓzðÓo݇z”^ŽÁ$-JCÖ"i$¯ "´ŸI SÂB<½PúQIkÐ ñp«„†[Àÿpnùëz£GcCð(´Ž: 8´Á? •³ µ èXhï@¸4Èè"ßv l­ÑIácÔR£T°@¯Ìðß|‚Ò×vn»¦sÏꂤ"›…F镞tô'º…‰Á.d³ìh´¸®„üs­ýÀPì>¾”ÉÖ ´±èñ"d}ÊŸÒ'H¤!N[~ SâM‘(¸á5¾I:5“î™á¾Ñ=“._ŽÑZ•ŒoÀ*ªôè±IØçÉub0ˆ%Ø®B°ˆ„0z ¨êР]¼þ.ÝéT(µ… Qy“³}cÚÿ€o‰£/ÿŶ©z–èŒ âÓƒ÷{¤·I¨k>«ÓŽèÒW½ß'‚óÃoÓ¤*HÏóH*‘"0„Vzøãzcƨ¬ÓÈfÔ€܈@jôªrª2øÕF‚—U`þªJý{å¸N> ÒÈÓ\Ý’mÑCr™Ò#ªW£€&ÛlñÅ*P·v !‚G\»Eà%ØÀwµuóY0¶ö«:ËN8Ã@ðäO4{ZÍähèHÉèpçbVTÖÙ1-¸ID)ítVuûôû5º=À ø? £…O®¦lRøìûz“ðš~goì^ûoT]°ûi¼C±•“5§ì(œDîtð&-Ýü­‰ÍpN›nùIIº7ÉÁð¤ÙF¼îˆ6½*nœä+ÐEµËpQ‰¬% ¸èt:¨u 5oŨƒO±»ÜÿŽÞ|¶F/R.qX$oaýžULá€NhxU4g³ïé¦ê4›×z©?7_l£‰Uå\T|öŒÖ²m§ü9õܲÍ@”ΔÆÄñF8ßjxaµIÑB¨,\(tÚ ð‚X<ü ‚42ƒÏyAp•Õq×`pf .yH"kªáÇzVÑÆÅz¨iÑOB4b7šÉ…cöL4­¨.¬åÒ…- SœbÈyÝsÛ4¹ð^jÈ>n¢ûr7a„ŒîÿöqŽÌéÖ—è<“Ì̳Á}q[<ó’ä¦N2¯fmÒ&&Ȇ9¡Ù[: ³P‰·…,”ôCšÀ¤` x¾ZBb†’Ñ ÜSÑÌØ–ÉÏÈð±@QÔy±¯ý ¸.|ñKàL©SlÄaf’]Óv[ËfYLxàˆB‡ÑR¥Œ­(¹æ{¡ð¼Ba»Ž˜„ÄÉ^¿Ë@ÄÌîuµóú9°—¤3 ‘Am‚³Ê@^—a--}X¼¼¼\‹îãƒ!ŠŸyí3´d$ÑðµÕWüÈ\•í»æŽG½·õØÆ_w¸€aŒSEˆ }à>tÉ"+ ŠIBAž¹D'—`%©&\ÞWþaGnýt¥/tñ$ûf¾¨GÕà˜S[Ð’3;’½§À”\j &t©%˜(¯{ÂK¨÷ðfæàb1=þ:;nfÒ€Y G1¿o\R?™i™âèØØý«ç-ª>+²ÜWÌñœp²Ø™ÒøÜíðÈÍÏè“…O³ˆ£ëÆg”£•ªêeöO /šÜ³¥²”cÖ˜þÏ×2BÙë5ÏvûZ_øE!Ù ä`#€ÿ*å"Ì»gáãfÒ‚©4º$3»¨$ÎMÅôÇ. zÖd›¬'dþP³Äòg–%ÃC%ÄÀÃ.Ζ1*ºwƒ’/h×á<Þ¦Ùcº–Œ ÓO&/P÷Üeôšô¥,ÕzlAm$íï*6uISà°ÇÜÏOº:,ŸÀÍg)øž2Vù+I?`÷û'ϨBâÝö8aû&ãÑÅ }mDÂæ]/©_¸àŽz©‚¾œ}ý,á'”bÇs…M-öܬT=,#oY<­m?îÔO­¡Ó(£ajÒ7PœòˆÉÏ•Zv4Ó°ý:·QÊb3kcþa-õ}‹•úq™Ã²ýîÅ—ûyó®¯]KØï·³$s!Ù|mbÚïzÞCi<áÍ¥s@hZ 8 x(6àµç Ýýµ¦@ó¦ó¯*s ³ÀZ?D©~àm„IáRCÕ–]öI[rcÍ »š•îBz˜?dMK“¬k—†^Õ¶^Û1þ‡'ixCŸïb_Á.é4›ž'6eUSûäÏne Ú’“s¶Û°Òšê¬`\?ØöøÈ¹Eü¤olÙ”mÊÜÏA)ðN4¥ OéwB t³£Q>a•6cnûýìÌ”Lc¥÷E¤Ÿ0Ë÷Ð>´Y¢ünA#Rv›ZMÌßaÉEÉç÷öº¹ïìS }Òš÷  )[àÿM6¥å‹íÁßáÏÿÈú'½endstream endobj 7 0 obj 2831 endobj 16 0 obj <> stream xœå[YoÇü¸¿bôHK)dž,Ñ;x“¡DJ¼bþüßTõLwUÏöhuÑ0K=}×Wwﻹèä\àÃ߃7³­—a~r=K­s9ÿ®Pç³w39üC ½çÛ»0@ªyì¢SÎÌwgr诼èL˜û`;ÞÌ~Y¼\®t§¢¶vñŒÈåÊtÊI«?,MgŒü;ŒRÆtÒÇÅ«åÊv!¿ø¦ôÜ…ÏVvBéÅÁr%;çtÔ‹ûžt:,öË #j¼ZêÎ:áüâùR›Î8¥{¥ãÁR©Îè縸ꬉ‹·åóÙRÀyµðrqQûÏQJË&:,Ô9¢m®èì´¹Kšê ¬/lgìâ§åJt^ˆàäp©Ãv;Jâ Rt:À•Ò÷~¯Ö*ÉwÈë7°x)±s1JÜ·‚+ðB 6{´6§:¤ñÕý®”öÖùRßþÖµT|[wËì>Ÿ) ³{HégòRƒ½¶^ƹôpZ›°¶2ÖÃÞæ+å;)cì«4XG¡lÃ+˜I'uQ — }tx$ƒKû¦ ]’Z¯–؃\\ÃwçuHæï·ý(¥ Þoƒ¼$/Eu tƒØ`D%€!¤8`¡ÌÊÐYUI²‘:¥IÏAFÓ½©‹å0Þáª²ÓÆ«ªï-Ëv@}ûÛIg¢m|çá*æ+­ÔBö×½Û‹ªñaÀ]ˆ=X’à8»8îAì¸¤ï¯ Œ¼Äs+áýâ߸UÀ¢Ó†/h†„˜é<@ìeÒø9@ÐJ71Š °6vAÅÈÅðÕRJ¤0#ƒ(&æžl¦="Ú«¥Ê0d’²pa–«çUÖt.á,k©[šömKå\–Æ~&EÀ´tÛá“rEÈîg»³gïæðÑ™¤Åa¦0Á²M.…BFb{g¶µóýüæêöh¶õ·¹œm}‹ÿÛ~ñ üÙy:ÿÃìÙÎü‹ÏãÓDÒ šHĤ>b¢ +[FL*DúÜÁ">ôFìEÁÚÕÔŽ3Ñãíg8ìI'$ò,·TÝdaà7ÎO¦U”Ép>ìÉ4ȰU“!à×N†vøÈ["ÓÉTèÕSÞï)™­©[<Þò'œx`.š€s>Ú\-°ÂD ø_‚¥µ^£5€l©ìre´>#4î…üӲϹÉå C=Ö‡8Ur¹ðÚeŸ|³{Ò±ûê6¯ú¼¨5¦™Kr>xçr1ý–삊#Ÿ)d;ã|“>4¿² 2~‰r¸ßèp²4 j,=7‰Õ'œbZ||ܹšbå]_DS¾_¬8™áA¬Þ€`ë(ü­?[š˜MYš›Bš>þÓàÌãÎÕ”&€ þ}hi‚˜=ü_©áû?«ïJ‹Î‰>WÖ˜‰YÖ›²¦?OÖ>þÓòaÂcÎõq"q)Þ® Å/ø;@š mrŽ÷ï…•<»÷¤tô œc¦F=Xr¬íþù—$aJazµ? XN€O€>RnƒZð$¬ð”Zˆ¼#òŒÈƒªož¡5¯]üœZMìÓ×™Ü!ò)‘Oˆ|AäÕÔ°¼Ä6µÞyMµ2RQ‡§ÍMÞyFäAÕwãìl¹o} dЉ‘3DZ"eó¢ds#,ì1ŸÜܲsÄ‘p;2Ê¿Ñ÷½ê²WUÃÔU U?t‡xQA.“78ð|3fÁx²›æ¼_çÓé‰=0vuÄv?ùŠÈí&Ûá4Cuºƒæ•î7±ÎÖÕÍV"[îâ*/ŠRà `Qê¡cΟ‹Ã~4e;×­ÔO¡WQz€„å6©XŸ–ñ:ÈRMM49ÓôÈaûy*t“Œ‡&€6ÏÀŠWd²[Æ·íŸ2‡‹• ZZ‹ùÅõ {dŠY S•û·}e•/GT2Ï:87á*ÓÞ xÖÑþ¤ÿœ]ô>ÐRÜWcا¾Ì£dÃÚ}/qãVD9xxÌÛÏNm Äw­â9xéf®`ç¶(}Ý,žådåGåæ\JÓZS¹9¡µôí Ú2(^0g£XWV0¿X–’üŠú²uYU±ˆdó~µ,%ñƒÞ„C—%¼ã ·ëó×…üðêø¦Àý«"Eµ;ÞçÁ|i Þnàëˤä¼Ùᤙýjצs ¡= ÎI¹0rn‡§/iãì §jÚF@Šãè(»7ómÕ#”Tà7vÅëïÙko+#¶êÚ“œŸ…Ÿì`Í®LÝßTBMj+ůZ²§/7Í‹k†%µð dwLé7U@öÙ”ÏÔ‘}þcà·«º´,ùWkŸÕpÌZ<¾Ç>Z Ãï2E,÷ò0@w·!V6퀚-³íi§TÚ¯C›Ãš9—ÛÑÍ`VªÎY÷Áq¬ppÚ‚ »¯S²o•[±9Çl> ý¦§5´ëæÓV¾;-KF9IEOÆOy˜SÞ©õy%&¢ù¸Qrc[ü Ç­qÍÒFf)ãÇšñ)Ö³7c—á¤é!®'Êèuîa°QÕãÌU¾ËéÙœ•bÙã{"×NbãU‘ÍUŽL–¡þé$-Êc;®¬¥€ú"ÊwQ8^FÞ”cn—§ÖŠ“åc¦ŒØøc²vmÊ"ê]{Ú¦N¥ÖG0šê„Œå&mpÈo(àl ž˜Àg‡kUŠ|¬B¤à»w—Cû^Ó9'®°C¬Ýªö›K“îÛûkK'·~MM£fªÞÀ wÍ…¨.þwr!úûtÂHLxóTëüÞ·—³¡?lÆYhá^š/Öó÷¦¼ö±8¬=„ú†XtBæé=EÚ=z&>Y䎸ÒÀpñtÜt–7ÅÃ%‡~qªÿÆÀ„X5Í’H4~t8£·ñÙµ­T˜´]¼\*0"øCŒT€;‡1¡î jÌ!é£zbé ´X…Ï3]' ਴¦Ž°wÝ Z—ÏúµpjUБ,›ŠAä:€J»Ø{Y¸t×ônÛàDHHb;l—¢ ,†Ñà()X æ“Ucã9Âq+ÅËŒÌ&Íßß62£ß€T%÷†éIo°È°´2ä|w•á)kî÷–ÜhW9gÃÏ*y¬ò4r¿£˜ñQ*§ËTeó•³L]¨* K)œý½SrÚendstream endobj 17 0 obj 3159 endobj 22 0 obj <> stream xœí[Ks·®Ê‘¿boÙueGx?\)WÙ±SeÅI%6urå@rIQ&ŵ%Ò2Hþoݘéá’²œèàÒA ÏF÷×_7°?­Ä W"ý+ÿŸ½>zömX½|{”kWrõ·Vº:úéH–?Di½úâ:HµŠCtÊ™ÕñÅ‘,핃 +ìàáÃë£ï×ßn¶zPQ[»þ ‹_o¶fPNZ½þÇÆ Š‘~‡^ʘAú¸þn³µCÁ¯ÿÒZÃg+¡ôúl³•ƒs:êõýXt:¬O[§s¬|³ÑƒuÂùõó6ƒqJ­OZóRƒÑ1¬¯Òäj°&®lŸ_mìW /×7­rü¥´d ]+=Ã>ç¸Ì-îý ·Ç¡^ÃüÂÆ®_l¶bðB'‹rƒ/Fé(™FbÐDv‰ßǵZ«$]!™l\ltÂ&¡ÄÁÅ(ÓºˆÀ U*,ö|Ö) µÃþ|·JûAë*ƒÜv”º–Š.ëçÍ¿Ÿ) 4çxš2Žä¥ Ø'µeTÙ¶FÀ_jµµ0—aìýíÕ >Äd~ÝðyлV™µCR+r,÷Ø’žg6É* 4–¡Fn@Nójã0„ͽ”5( Œ•Mƒ9™ªh—ÜFqúO[å¨}ʬ’š‚†'í QBÈ:VÚÕ L jÖê LŒÉÚkí+˜7ÊA*»þ3Ûí‹gX¼b¼Äâ9Ž{ÑÍV‹×]ÛZü¬Y+S`^PÜj²‚ çíÜ:ÏÇ‘”íuxÅ»ªKvô¦uŽßISÔÇû¤:\Š¥fv’Û$0ƒ´pÍZlÈJˆŽWÓ´ÔêVœ¿S] Ñ<Ö:Ü“qj<ìjßm"´¦w[ÕÁýqcí `ÈÛ4{ŒÄ@;SNÛÄ}2z‹Û¸£¶¶ SÙ@vô϶¢¿'û°0~ Sžà†føT=\­¥ø4¹D³¯4»‚á£åEÇZ:˜7Q"ð]Q-ï(€ô¨3êžK¦hÀ[€7éTRr :ùúùÇ)*fWG$tÛ­+ë4˜¹*·±Û8™6Э:î_XÇMWØ*g¾+÷zÙŠé,¶å0¶RA[¡Æ3ùuލzµì‰ìS\èÜ´Ód;ìõ§tTzšžõ"ª·ÊªÕø zOTô)°ýâã†í¸’fÐ@f3j—mG*ý¸[ 'u9$ bg׊ÔmU`üúËÌ÷Ñ%.®sÀ6kå6 P g`'íi'u©#½m¥óVÚµ†œ—iÎ団ãO¾/`e¢£zÃkÁç‚¿ ÛæR2üªÔ4jp°jè†öÍüŒŸÉì;vö†µñ·ÇÚÖ‹@ìº ôoŠKóŽbì%ªÚÛŸ‡àýF`?ޯߑÀd‘-¦`‚g•¬ >ýtt0î¸P­I%éÎúĉÓÉ4øÓ6xÓH?D/¤yÏ8€h}…Ïÿ@o/À 8%NE![óe’ DTN[ªÆ§A;L¼©>KÓfНDhÓå›ÎÝ&4`w[×¾•áé;}Avz:ê†XZ=Yó]¡sníð{B! D†X‹ ¬Þ¡ÁÝG°‰µ¢Û.Ù‚5÷ü{ôú{ôúˆ^w,Ÿ¹êèÊÿ8õ~ð’Õ06¢Ær„Hs„èóÆ}®sÃò"BŠÈ’ú$nã¥MvרÑ%ÖŽ4(L$ý ÂeKHÖ«692'2P¶©uö±µ%€”Ƀ™Ý!#rK@?[V—¿ßäb‚ÌÄcâ`%H5>LP¡šw·g¨p“È%´Ú7rcójÆÅ¦ÐhoÑQ»¯Ô‚`5äèk`åc ¬&yÚŽ7r„ƒ°,\ A¯´ið"ÆÔãjZWŽ Ö#£yÔDÞοÁŒ kP¿Z÷ë)W¥y”hH‘Z£af\É ´)šøo‘7͸™Íl=Ø¡lßm¤ÀP–|ËUŽŽ:*¤Y‚ýÔk– yÍè&it$äu³–ž-ÁÌšÖäö¶ˆ4Gë-™=4’a ”Î8kìNë¿«*¢hc€`“”Zm™ŽQ<ËG¦[*&çî É$É*`oA÷dæðr-÷§=ŸC-9eµ„LE™$Èždć‚©¥ÐÀ\ú&ÛT3”?ð×{¹HaªüÉL'ÈÕ<-Ù31žz*Ò{4Ò–H;£ˆŒ€ÃÄ|‰ŽN,¹`iÐð¡KíÝTæm–s5aWI[C˜dÊSÒ–6oÌ Óì7_C¡Â´Äš “ÄÚ;@t‹g¸5ËÈl²iÕ'¦¬0ºð©\,‰)[HX®#EÒé‹§X¼ÃâŒNÙtɺkÌ‹º·XÜcñ‹$‹FhÉk},”°g92º¡ |Ï€ ›?@ŠxY¹˜@¬ÅSVbüÊQú„doY9Ÿ¿ÿ sÆþþL¤›ï|£›x0¢¼'X<ÃâÛàe§Éã’]9z¢¾¹xÍjýg­¸Dpßï«P o©ïì’#ZI%©Ë&„p&±6’ÕËxsÐ !QXŠe'*¯-÷‡cáÚg"¼š¸6ÿ€µ8Ô<Åá)OØW°_È2ò¡ü¢xJTMxq³¯J¢1€¯V^^Ècò9 "Ô[Ž"“^ÝD*ꦗqîGúkLÅß#ñŽ|N:æWYôŠ­¸Ù“.2©ƒ‘º—'àÏ„5¶0È’/eí„v̯ØF< áIÐOÈ*‰©£Aù/xY0ï1 ^Šäˆ-ïâ'‰Š‘ßè…»ö-&±ÉjÔ*.ð~Ø› €“ô˜ Æ¡$a’7èXÐô%±î“EHýÙËŽ¤ßéU Î_7R-²îP¥× éCzÙ¡í“íù)hK]+‹§]²äÄæY»‡S}…óàmfÎî’”»°.•\è×igØ¥‹§¦ ØŸ±%‚pÏXIß°ÈyÍŽK.l0 ,JO£2>tÙ¡í^Ç4_ŸIü†ÅYòOxN»¡Êød)X‰ÔŽ“¼7ãi'y»'ùCÕqŒ¢%³%}ÏÇsg‡h(Š ¤ì¦ Ðe9“n}2¿f¢Qõ©và*£GP‘SKU6×…b•òœp8†§ÌÉ æ„oL:"ÉlÁòBG$ÔÒùùû• ã˜G¤ ˽=l½ä3ÜüáëAŠM쉨6Æ÷-d ä¶žøÒÙMéžÔcöŽcj¦gxSÿ±3¼i 4t)…ÊL'i¨tã>?yÐd}iÚu™éR½¥É?[PüÏFz2Poˆ^³wV³k¤I’¤å±å[á¡áª]ŒÌžC¶¤yJ£8E/=§‹ÉSâ|Ø1É=Í߸¦ÅÚ^Þ-9ìÖ%§\ž¥¸…»¸žLׄÂÁ·7€neHÞ{B™gOÅ;Û¶õ‡GéYâñ&jˆe#yiø9¹ÀKŸ¯7ãuÈù8ÅÊkû•VýùퟮÔó(H 2)&×ý Ì€«É‰X— õ¥•ÿWÇGÿ‚ÿŽ€(endstream endobj 23 0 obj 3002 endobj 28 0 obj <> stream xœÕ\[o\·Ò7ýŠ­_²[dïd€ÍÅ)b»IëÈ-ЦtYËŽeI‘%Çþ!ý·}èð:C­VvÐ~È„{ÈCg¾¹ý´¶ý¿ôߣW{÷ŸØÅÉë½0º`‹G…z¹÷ÓKÿ3¦§ŸïÃÆnpšk¹Ø¶ÇÒóÜŒƒ´ cÕ`à‡W{ÿZ>Y­ÅÀPjùɯWk9pÍ”X~³’ƒÒÑßa—r`Æ-¿[­Õ`­5Ë/Ê“ûð³bÃÈÅòhµfƒÖ‰å»Hja—‡eÒ/WbPzÔfùp%ä 5ç˃òàÑŠóA g—/ýËù ¤[^”Ÿ_¬F8¯ [ž•Áø³cL‘…Ž uçlp›k<ûnî—zïÕ Õòéj=f­f‰áÏ#w8ó+°qXö{UŠ3ºCò²¸Y§Gå™âíóûæÀ3ò4ha³›É$¿Ô1ίø»æÂ Bd„g#×ãt[oVÿ޸Ǖ…œýc”¸’aÜâÿÔý'nÁ œVY[Ke`o‹57cÎÅÉ2Ln˶a8¬$<ÿøàĨ#àzAbd8h"â4 2qåIe…аQ`»eN;×ùÙ 5ìÃpúìs|`ã_,@ìò«8*LµØ¥Ÿ&¤áÒß1È:ç°ßŸý³Ú)—wã"/ó£›2¹šHTOšÁ(ì„nd‘ûQ•¤±I.¬‹—[«å)ÞE|«VLùÊèG_ûÛPNJn¯wXpŒË^F†£¼Xq5ŒpqpÁz`@hºP10T[?zŽ+¡f]Möç%¬«„¯½ÜªÄæ ~N k3ùý¼üŽÔ©ß°ä÷^¸`¿}‚/?âôß­€ ‚Y‚Âï‘OPß~ÏsÌcó÷\”ùyWÈ«¼TD]Nx¹”z0–ÕXŽjäòš°'ïj•NÂ.xVºã¸Žuï›–k²ÐE«ÿ~l©.ÆA>Q‚Py§Š/?ò¬8”IŽ”dÆ«‡„QÀ`MàZÑw¥GÝhéRCŸùQ50å¶ï ^ŒÀ]&«iRJÁÂ,Îà¤RÆówÒ8sK…$ qÝS-¤ˆBQ}%0@‹YÕKÓQ› ×:EhFæ¦æ}#BìµQºÁ#ß-Ô ¶ìÈÐ2šÔ»$ëÎÅÍ~^ôD%×{Uï3¢ÆD—ý•㋺§DÆŸàæÎˆ"f_‚*=ñ.“*z0̪ˆîÍ»²Ða+yivñ ~ìâ$ÁŒ—é:¹«Å8lÐxié¹ ÄWØP¦$Ï—ß/‘«µ—’™œ;H{r-ä2Î[< ä5ºG[Ö`ÿ[mò8³ž-G\à-’×"òûn'i1\yÒâp7­Yµàu‚×QRQm½@r‚Só:‹4€Ùú¨ð”\|BHPãÖÑWuV"¬1AÔ¯ÐöíG°e€[-í3Ü(Uø2é”B³©teV×¼‡Jå»ö›³Ñ $1и¸OËV¢{ÅåÂ{¥ uÞ½ þJqQ¼Œ¼XYÈgHž"y€äk$=·ŒwÙ–lµÖ#xð÷ ’—Hžu /ûÉ¿#)»Ï’Qƒä€ä!’/zÛ‰ªy´f ?zä‘UñLj”"m9—Hžu8Err¦0*ÛgÛQƒä€ä!’Ý3Ñón“»?GòU÷ÂÉ äîOæ8Øúôsïíÿá¾C jµö^»­¤Ðh«ý¶òšË_¦þ†ÿ½ ² \¬ÿvg•ñº«Â“>Y¾ mÌìà—“Ál¢ßlñÅ3T*&«7áo™vÐ5Òáoò!¼>ƒµÈßK^„D(FCÃ|² æÌŠí·‚§ÚtÝ ·ÄY;NN†pww¦Shh’=ºz‘‘Ó‰ºÒxJ1 Ò‰ÜÁ(Gg€Œ¶€`«‹¬rVê&fH§H.B`|À=‚þŸQ õ¹-MòIŠÞ+ÿÚxƒ“ÒHcÖævÔ<ð×F7 as&½M´JÖU§YK~ðí‘©ò㹄·‚¤Ý䎑€ý1âðûÔ•¬^áçO¢è€÷v6•®ÅXNRýx‡Z³56&J>/Á ±»†ß˜G3£Œ¾f‚†¨j‘qµ‹±{É?Jôƒ(Pt"47(P7®>éí«„#rugµûEe™n/¦øÉŽÂߘ÷[>óB©lOe©ŲŸc¼Ì#f8݇µ¾ ZNã€8sÒ›i¿*ߥ]¿¦@p†ÂRåC²Aíæ.Èü~*® ¦ý8¨Öêç ‚‘¼Ÿ¶|YåT}¤¯4IFÔæ8§›´au[áü£„‡zmÆÃZýNÝî± Z\´‡ÎžEÎ*àèBÍ$ –·nÞ@sýTF•#ÉåŽÌCi¨Ãñ-AêG„¾O$ˉÊ.¶Auå’D†Ö.I7uHÔá¸ì:aøqÈsˆúó‰¸QÁ$c¨@™’¶j2!µTzeÓŽÓÓ”d³ÙŠèsp•e¥JúeˆD?3lŸÎCè/zÅÈÇHæ[|FîÉi‰Åm“‘mT¼Ð0\g“=Ž~]®âÙ6”œbÄηžâùä ëŒ31m)—*ÆêÑòÛ:h¾"sÆ ”$ÃÛG>„°nürŒ÷ƒÂ°Uça˜"~ÊýV±Z ·Áéš5))‹Z禂ÝwûJˆUkADQZ ŠÞÝzûf‘Ú|9àüTåŸØÔ•æ i"Q3›nž(I›þ8DF%Žo*êÍ`RÛ£SŽ0‚ÿ¤ºc©-Fè&NíA °×µ#Š®Ùcß $ZuEÏ3-vЋ$`ˆj_ ¹£ÁÕ¦Rð,1·) ¥yQš*U™\Œ¼“ú!²µÑI3³ø çÙêÔý“Ÿ– vS¼£$aJŽî!’$ùÉïü¼ûì_üÉ/‘|€ä‘ô)-@|˜„³cã!ã\¥mùkWá7˜µ¬’¿¦$ºxvH¢ÿ*Î& ÙM çN|ÂŒ}Z®¦Ú[ºªÜ 6Wp¯oº;@ðš:Š$ôvƒ8u½äß{µobe3V’`â}#]¬Mßë|XpöÄ®§1J¶2O¹Uð$Ïù¡¼' ‰£´•ïò%¡ÜÆSMÛP»Ë–ÓäpÀãÂe̼®¦§T9ž¿ÊHç=µ]£ú‘Xñek“k²)=po©Ýo²×ž$~E?$é®\ld|{ k¶oÖÂ… ´Î g²m'IÌ®zíg\N»îGZ_]ß³,Sb ÜέQb®íd¦tÝI³ ““[6|Í5‰øPîFLjh©·Oüž&nÜŠÂØAÔQa!†É*JÒÝXê¼·="ÕÏ“2ÌD½“Ý ÁhÛ¯u—ªP/ÿ')¯&I¹°Â4Ö¼­Õ¶È¶ºíã¯Mí"øÜÓÄ[Ý+IBñ¾‰ê9ýfΞFAasyèƒúÙÔ£ùËX62«ä#¶×nÛ vÜüØæ0Q§Ñ˜ûÑŽ#“¥ ΨI±‘ø—‰å D·Ó²¦íðç¤e†tpuÓ¾dúïËô^_3·Ò7 .Ö°-UbK¦·Í!ô`ZÇ*an@N=ÎbT´ÝùI¯OÁ‹f¤…ykWqibÄæ®~Ó!g2^ñvœ¡*Q"É2ÿw5>œ ci#kMÇ 6楺“ƾßBœ®·é´JPU®<%üf«“4«Ä/7]ÏëôLE@Üp©=`®‘<µ}½¯Ïçn’0t Ý6Ù¹“æE3zÕ:‰ÂDä.WÓ@î¨ÏœãrU$õ¥ÿÅ«“$aF¬ñWX¨©mìË~Øa—U½Ét2ËíÛȈ)`«R’™¦—ê>ˆI÷kç¶(C’î¿Ìh¢õ)J`.͵»+mt£%˜L ÷}±G+¿=E¿ÏaÚÍg1ÛáU=í] E!®ˆŠiÒé#,Ò|ÐÕÔŠ·˜½[E®ÛlY—»Ëï)ãDUv¨Î5ƒ¦7¥Ûb´JǬlÉgÝÇÊÆ’¤ØC*&¤Žr¿;JV¸F²_ªy6yØËžt™q(ymR«M46%ÐÞEn­¸ðáL÷ÎYWBspÂ?Àׂ5mú/áÙÖ¨¤ðx7¡†pû7IçÍô°¢Ö$d½n%=]}6ý¯Ø²­oØKʆ}À˜’ˆX*"þTLK]m;£Yl|+Ü„“¿ƒ¬«ÃÖzY—Ým¥ÜºØšvlî»FÓïÒm?¯Ôo¸í·O#ÞºCŠ”žyúÝã(ïúµÉ4ðÉvÞÉ]\ߎjídDjalä^ú? 1 ¢hÞ*_ú£‡y¬'Š\Æ?3ŸÎkîhÞ§Ô7ù«*ÁX¬­òK‹ò‡.ˆâ?Øßûüû Ħ8endstream endobj 29 0 obj 3791 endobj 33 0 obj <> stream xœµ[É’$· 𱿢ŽUWNr'aFVX«-Ú‡äC/ÓÝòô2š^¤öø 2Id"«ºFRôa8YL. ðð0\ƒXñ/ÿ{vsôê_]Þ¥§+±ú²¶Þýx$òÆÜ{õú^r†`¥Õ«ã‹#‘ûK7Ú¯œ7ƒƒn޾[¿ÙlÕ ƒ2fý)6?ßlõ ­0jý· 4ýÞ’ZÂ…õ·›­¼÷nýIíy ?1ŒR­Ï6[1X«‚Z?OM«üú´¾ô~بÁØÑºõ¥m¥\ŸÔŽg)­‚_¿‹“ËÁè°~_þa3Â~ÕèÄú¶>œ~B2Ðym½ÂwÞâ2·¸÷3\ÜuófÐfýÏÍvÜ8z+²R‡×“t¤ˆ#ˆqPDv…¿Ok5F ºB2Ù´Ø`G…‚ˆë– 7ÊüÐÃbßÎ^ŠCãû|·R¹A©"ƒÔw’º’.ëióïã/ޤñð4çø4eÉ éñØëÕ›°vk’®mµq°¶ÕVºAˆ¦—mzY…Q­X†“0’=q &/,Œ(Â`â‘‚ áœAuôú›§Q·Œ·z}eîE°!¯HyИ{l^á[wló!ö5^) [®ƒÝN”³ëËÚ·îO ô1îO»Á™ûƒ#P±‘÷§† èÁ° 4ÌZg[`¢Q¬?ÛÀÖµ VRVüüì£ |Y›´&­Ø™¸©¨ErP#´®6Q@gãÑ—áÁ4ÆÁ7™†7–ŽÔ¼4u°ú–÷q¤Q÷…2*ZQ|ÉI‡Êï×ñu´ "Üë°Î¨u÷õÑUw8àm]Ð$`/‚VJ‚yŽbuüÕÑñï¿[ÿ LdÆ4Ù  ÷Q5´\pÅn hÑ 6os/ŠÁ4—Øáµÿ4þ›Ø ôœZÆ-E.©ÆÁ€9‘±®šÉ N=mì À`ìÂ\÷úŽÝÕ©âf¥/âð†•yþôÒU³¾<=áGjùq~FO—Bx‹}ɯq²ç IôýGºê¦ÕcyzY°ÍZî=€RZŠ †$q1ÏEW"b$8·õ37 `Üîââ3ÚNÚ,õ*â&Œµ0N¶.0ašÔaœN57O°yƒMX™ vg¢S*O?Ô&g<[5Š¿ÕŠâ¬Ç“ëÖÎs 1SP“@9I}Ìúi‚ÖTÄ«‚Ò‡UA÷ÛÇÜÀb´ r'x\D¯gÖñ<Ÿ¼Ó©U}µ —BˆêȇgP¡1¥I€Íâ˜"ù‚Ÿ}@»%@ƺB%>a7@¤‰{¹c­ ÛI¶!X‡hD;ýšƒ(²Ôàdé±6³Dðšê˜ð@-Àßae½ÔÌ€ÙZÞ8oáÚ ±¸{Ίh_¾ÃÙN‹ü©Ö7žRKçJ³º%›·žÎ÷'Ø*d˜Ó¼iˆØ‘ÆþíÜXë<[10ÛSœì¹Úö5kû¤ù®Sb-ƒía>M ©?d+SnÙ‘D@Þm†ÉQ†pbe¼ó;£ dž¼U$¤¨Ï#‡NŽ ¬E„v¨âÉY¯Å¶Þe £E÷ºY6^j7:)jØÍ.Œlá¤nº]ÁÃvýu4%´ôMñDg7š%~™#X/€{´5°=oí¬Š‚_Y¸³t‰SÄ FMŸF8±*§y&kÍ‚OÆZã½/íN‰Qó4°¬Ç/Œ„®™Ø/žˆŒ÷­ä5tî1N ¡ øŒ‘É´œ‹x$ñ|•Ⱦƒð޼‰ ,%꤃}*kKpb"hx@ˆ¢Áºkðr±“26Dìd‚“hFØ–²9ÖH/Eâ "]‰nTY\dMçü i¡2`Ló‚˜e/ß:«Dô?jŽú‹zP$Ð!áÏ;Ä!2ë =éœÌ\ÑNZòŸ“ ô”¦ggä÷èM€üzÕøn <­jGˆð£%pþ!G&S»JìzN0ª¤Œžö°+""£Öð\´¥jqdyÞWÀÆì YÁS”Å5+¶–YÌ™: ÷Ý׌A‰âÃŒ¦ãY';É^Ø“vD±ÙBwÞo*´úA>±Aâ ú‡¶ˆç$ƒÆ³]ÜN…k{ ×Ä\göè]‘Éë¨õ· b|½ôxI_ž»UlQ>â…“Y¶Ô°;ÿvΊ‘'¬g'šX—Ò¤ˆ˜QéП‘Óg™oU³¸²ÿµk…_pn„(àW&J üþŽËV³|=6GQ ï+„jÞS…ø¹IƒªÅW;É0•.-5÷ðÁÒ*ä¹3”U"ÙYG*¥û‡Æ¸µ@1†|ä`pˆŽDÌŒö»À‹q¬™WièŽcЮ@b?>(—+’þgÇú£é…ü-kBjHñØh œìzN‡'w [Jb1ZÔV³¯rjÏfNº8+i@}͚·å¼3!³Í¼Ybìdå×_qÀacø9‹N2nCÞÎ"›1].D¬bŠ¥•„qTÞŠo!á-6Ô=%}G®FÛ‚0[áHîPzkad»|ßbÜZôÚ †­pã¸ÒÌ3BDæùg©Ô€îúp¨ÙŸ™mU¡bQR%[Ù…d2¾RwK¬Á âHÇc!õOQ“„ˆ¬P D"ñXȵM¨G…I;̽PXJëÿzbí·“X=MmP©é¥@I¥_`ó9ÌûI95U=@¶}*®ôÅziÆ¢I²-GD8O~aµ£‹­‹ŽwP•óâ×3ðåSze$ãRQ™híÅ fE’C!úÃ’±’j^•yÚG„Ï+·|ï‹P›Ê’šMë”ÊÞs;Äm²ÚNô/–^¤ˆ™pb#|tL¶£9#.p„bÖ×ì¶KzSx>½Ù`r$ Q¥Ny¥JåÌ^3©œå˜Éw`£ÇÓj5%Ó¢bJ|zÕ[cN NüÍ©î~³ò>v›„Ü’„¶è[ŒŒÔžÿGµÐµa ­˜§ÊªM'`¾+Ó&¹œá¼3‹mËC|Ť@€Ï7•à}›h$Æ ±VñýUÿxÓR:x.Y §úçÉùh`ÒOâ¯Dµ>#íÿâr¿ßÔñ~#ôy¥sŒŒš«)ƒ¶˜-y²çwÄuž5Õ°-,w…ã½Aü'ãq¿,!Ö€'4žB 1˜gÔ9œa‰0Ú…¿“§yB-šÐ†:Òbu‡M}$ho{¡ª(úkL]e°ƒt•úÜõèÔdÐÅÞÜ9÷,ï˜D9ûÏ1úþ×î š} ¢ ²›óÚ¾Ùe ¸<óX‰uZc¡ZÛé“ Ë¥É"ù–x#ù)¶FÁÔý$-m6Œ[„ÁÇø‚‰žÀzWŒÐ÷5вá9µço̰¾ÇsüÏg=vAëXäØåsª®(>æ…Ò‰U,>ìBÈû=‹GÂáKIþtJÙj´ƒVTîfówÙ)ö’ÃL¥’cêÔª’™\NGžÏÔ¾ä‹@q/ÉUü»äÖ·;žü%Q&E7X: »uî£j&#vm"‚„°6–* Àî•[Ã$‰¶‰¸Êtm0¦üH©¨ˆ-]1àRr=ü‘+d1/rs5cæB¹¾8aé®ZKÕ¸Ìf?Ç{…¯ý½½·²Í’m9ìËÈdŒ®µZ¸ðˆ¶‡ªß–-ÒYÈÊÇ\ÁW#éYò9l2i­•ë9¡®, ëó›ÊQÉ ]N n :¼®]Ù» ü­§çúûŒ“öÅkë‚ÛU¼Vû®ëÖ26¹ZûŸ^בñáe¬c;½Ä’tº L˜^„Í¿Çêó êËY´@}hKˆ ü¢bu¿‰^±/‘®8þ¤YéRÐcc˜ùwl±P WÂVPÞK*qŘºÞÈâ”XHVt éìʺŠ[JS7O‰7í¥ÙWÝojmÙëöæþŽ+½Ýݼ\dE@¨Þ!YƒY¥#RRRé ]ßgŽ)§Yݨ¥\`·™ÿÀyÔz/ˆ¢¥?¿øN9–;™œCØj2òÔç2réJ õìŒeƒä”PKZÝÊYú .-a ³‹lµÄÌo¸‚š†ÐäúφÀæ5Äî³! »aîÇ´2O=þ³«–¥¦û‰Q¹m ©ñ|Ö:b=‹Œ'­JÎ3:]ÐÎçêý¾>˾7)Gâ±þ¬€6ÒOvÊÖ‡ suášìù†^A/ͧÍÎ[°f°ŒÄÈÖÚ°•©4¶±(“óG<˜®Éz‘,˜”W%=àþ9_d)ÁzQ<àhôÂíù¶H½6êüìz,É•—(_™Dމ@”‡Ûº^66>¤ÚS‰àæ Á²³^4‡ÂÎòÍõ;ÃßBAZ@ì ³¤hÕ~á~/{QÌOôàtJ;G"ªY±‚ù8ÀÊZûÌ \Ý÷%dÒßM óGtHÏúÁ€ÿ%°+uúðo vóǜ˗Ösè4—–£‘AË–¿èÐÁmБ/ÜgíAv¢ËÄ&oa(ï1ü;øJÙttmHÇUF—¾ch¡‹‰k&•Vˆ§¶evpØ»Š`Oì²(Eæ¸"j&Ö'¾žªÒîÊç8ñ/Ds‰Áœ²*Â}O!ødYëü™ÌÞ%·1r­†Dú0©ÞhHÕœ¥ßµÃ÷¹À_ýÉ5ŸôÝÇ7:_>QE½àÖÑÄfH˜ø:ïö'ê´hÓDÓ]Î}YG&È\¸–64˜}%oUúrNÈô•|:ÓPŽOþÿìùnEendstream endobj 34 0 obj 3645 endobj 38 0 obj <> stream xœ­\[o\·ú¨_±oÙ-¼Ç‡·C²@¬Ä(l§‰ë(Eƒ¤0dI¶Ë’bËNôï;¼ÎgήT~0Íåu8óÍõø·Õ8ˆÕþä¿O><~åVï>ÄÞ•X½¨­÷¿ˆü1^Á!W~ð“œôêèíÈã¥íVÖ™ÁÂ~^¿ÚlÕ ½2fý›Ï6[=ÈIµþn£MO‡YRëAX¿þa³5ƒsή¿®#àg#†QªõÉf+†iR^­ïRsRný¦N:ÃÎ5˜iœìúùFéAOR®ëÀ“”ƒVޭ߇Íå`´_ßÔŸ/6#ÜWV¬¯jgúÙ aÈB§µõçœá1·x÷<Ü5.õöÍ ÍúÇÍvì8ºId:ć‰:R„Ä8($;ÇßÓY‘‚žl–ë§Ñ¢øaò^„sK eîtpس٤°Ô)Îo軕ÊJı‰êJHz¬/›ÿ=?ÆApÎÑ)pJZÉ épNõø•_ =(x¯Àk[=çÉpÀ0ZoÓä fxåNÃFÀ¢Î›µ&}[éÇÁbýí&ÐË £äµùnã€cG% U;/âJÀWt`h›ªt4 "JÂÃbuôíÁÑ_lZ[—_ÇùDÒÈ^“)¯\~‡¿¿i†®ù˜¸fTë_#µôSx’ò{~]#¦È¿ð“—Yd4 =Úx5ŒÀÒۺГÀ]ðô“2ë—á®ÒDS;Hx¥Kä_òvoèÛ†µŒ]9JæƒÒ{XBVúõ§*}ŸqN”®k'YéÏò)ÜÏ À'ä€8é]×êEâ {ßåãiMæ¿ ïc1Iºé9E”|ZùÕ@L``Úü\¸ÊÌSua~/dQBÔ[¼Àwk¸•fšôúwäÚdópƒ ÄaêzË Â&Ù‰jh¤à@”ôN D5ÚHAnÍ鎊¿RŒ Τayá9ŽŠâ)YžlJ ‰Ñ^Z©ÄZy^‘ï"šÄÚ9܈i0Ô Uøÿ€µ&òغè‰?8R ´ÞR±)z7ˆ Vƒ›$°*¤i.Ì‘jo7%aûã]á1+«8¿¤p”æRšŠ*KŽz3d9¬ íàÁùKÔN“Ði;jàŠ R¸ê‚¹6'M[¥âɃd;0õÒ÷›°yƒM2ö›¿V¹ŠÄν—Ø¼Ææ»ÚädÐø¡ê„ n¿Aè~Ýh·‡(ÂhûÙÉG£v¼T‚]¯’‚v^>Bfÿ{¸¿Á$œoe(âb ‚9V`ÒX¸,Œe©4’»´q ¼"(vŽöÉ {.%ˆp—·•D= ¤“Ò„ð¬×í— šÒÕǨ•o«ý<¢Åì8«E¿ò4 dB2‹ˆdäh¯±ÕóŒá$QQvZm ˜ð>ÄÆ5•H ³-£V­_Ä…Ô8‰¤ž4øo„ õ÷Ð9y­#NË v‰æ(îìð@·°ª›,m~Æ¥Îf¼r¬¦<3 þÛj°‡SÿHìa¢ ßVƒ™¨u4Ç )?ãïøÚÇh˜“¡gØK„÷nï«õ£õ2Â)åDh4m4S¼sàÒTxà¥MÏ?2¿ƒªyÏ áñF¸QÕGLvNñÂIæ£RZ²WËñpä£b,j*Û·ùªV/Ødl\Ë8)ë,`,¼ÿ k‰\#ý²îõ~&f”7 òV¤í„BR] ·:Ý ’Ùª ðfײþž¥Î‡M}'ˆbÀÎ2'mÑX'v;qüMõˆþ?N‘[Þ”2)²Q`䌟ø€d¥7ÁÐìˆÏ­ê‰':îMÕƒáÜ»*ïgíÃv‚„™› ЧŒG†ãVWsÉ÷åì>JeÀ ÊÇ9ËñŒæ¬2½g¶`¶ê’ç%á¾_ªUHäü‚5äÈ’Š»lHŒøIÇVÅ\\ÿe—mßÕ«™HßÚi7¬´íÖß²†àr”šdõ‹–ÎJ %&u…qVy,½@I1t´6nprZ $|´ËiЗ5ó”<‹€Ú1õù9yF´Å/T³‹§#f1anüžx»ô`"Y€]`&­‹YîØ€û ¸Ÿ†Ó[é¢ÿYâå[¿ §ÔD{¯qlŽØ«±¸-1Ì~™(mÁR$zÝ»oU‰ôþq$Œ<<+u10¥¬Éײ/§Ñ1µë4vb*„0ºïƒ†r…Dó !ÁUn€z@â =ággK+ ¼ÙWëÈ!F뜀xÖÁ+}éaE´$&d¤]_Ž}FlSø ÇYöæ«þ½!…!ÌÅ}Yÿ±÷ ÞlT|ì;ƒ<›Y˜¶-è9aµÈäTMÉ^r–ša<àþÊZo³PgXëtzÝnÙFεç¶ÒZ€è@à—$ñ6º3nïÊK‘ Îâ5Ø”C½Äïg 2Ió},L2ð±‹.ä‘£1ªÊù¢’¦Hön›÷nS«©y\ª+‹"Vž²2Å  Î)1¹££ ¾¤jƒ/ÄûD1ÊzE1Žh–·èËKÅ[S(ýMä>¾_ìC"œu®d€ÛR£Bج½ )m ,çdq©Raà}+[ÌAsàEYÌM^6¶XaÑG%.Õˆ9AOrèÇbÉÑaŸšej¢–b ËåÄš–Õ%›@ä¬Í]™ä3;Ê”áá@>ÿCNIª¤YhVªNî³°Ú’|¬æj7" lîqYéF®h§‡\äÛM*–wME/—ç@'ŒTù¶y›^,žPÀåä¾Òy)„'$aRZ"÷=iÓ eI×€‡5ç³N “ÀC{Ðbܶu¿")>áAН ¦5@Qhm®ZÀƒàÒEsb°¸ ÍÇÈå¤:Ž\¡-ü/ù[v,_V›1p7ñ{>v¨Eæ*Wª”*ML»ÏŠþ=”ÿ(e ì4å±Ie>§¸ H(}óŠÍ.ß_½ýÅ©@ú‚H‚ExoŒ•^ËÍå-KÇΫr…àš0ÇòÅçØ$½GØ|‚Í—Ø|†Íרü›ß³^`óijäú {gº&žs„|ˆð²ýÂ$“7kpi¾°bO4Î\$º"ÿY}q-_ ÆÎóÁÝ&4ð°àn-§áôê[öä;Ò|À £[Ô^óƒÖ‹›}—°è=.cAgQ)I·"±ß>DFvì\’:«tеžd [~C4êÙìPm™\ú^ê=è’ÞáÍ~öH…O5·³ºT¡ZÁ§IñðñúUof°iõ‚ÑÀî•ÃÞÖòY5î[pZ÷TÎ.)f>è;óJÈ1ûœ—9eA;sU¸Ñ‘´£s4vÍç“:ÔΪ¦TÍ`g5_¬¥V¬‰BhlR+‡±ÿ†åkÂÍÏ‘¯h÷ÑÆ90wÁ n?#E7…ßH*žÖß|ÄÈ ì|ZÍџȾl>þ$_I—­ÅÊ·jä 9Òúù.J># ·:|«±+B(¹á?ÃYuâò3‰žbó¸FsH3Ôö¦ïÝ8¦÷!uÊU¸@e¾e{2ô$Å ]`«²éEx…w¢@¾[Ó<—T}\?é˜}pЗ6¾ï¤;âsëóFSÚ­»P(N¦ƒEÆl»C(àK3ؼY_’Ô%åRýu¨¨$uVñ•÷Y7Ü®ý§‹;>­$S¾‚ô†ÿÊp^|)yxn1Þ3÷HøÚþ”Æ Ñ)­;@/u;Œcè›ÊuñŃ%WÃCT)(Ýó=èR”ïšâqGüÝc«…]Ïëúuâ Xׯ¾&˜Kˆ­ûb+ÂùsyÀÌñ¨˜Lf7‰5XPà—Ì¥ðxÁ³mµ±×ƒµÌØìì»þw†›CÝ»» æéELõ²E0LíyúV¨á=êŽKìmù £|,Þ¶á †|²I¥Çýˆ±T–Õ`±Õ}ªÒb¹rÔ_|îQ»å ¶ÓNªyj“úŸ"ŠÅ“*XläRX‘v”ä4`8ûå/Ì¥æRíÍ\áúH¦¬sÛÿc Ep«­­[Ã%SÝ2Lyztð/øó?Ÿê:±endstream endobj 39 0 obj 4142 endobj 43 0 obj <> stream xœ½[Is\·®Ê‘¿bÊͤ<ë|“¤JÎRŠÍäâÊA\$Ú\ÍE1/ùÉN7€nàõp(ÇNé K£Ñýõ†ùq5j5â¿üÿÉÕÁá7aõáþ õ®ÔêµuqðãÊŒyôêË#˜ ô*ÑkoWGïT¯§q°a57Lðáêà»õ7›­t4έOÍ7›­´Wάÿ²±ƒƒfäßa–¶vPS\»Ùº!„0­¿ª#à³SèÍúd³Uƒ÷&šõÓÜô&¬ë¤3ê¼Û˜ÁùÑOë¯7ÆÖk½~Wžl´¬‰a}›ëÁÙ¸¾­Ÿ¿ßŒp^3Nj}];çÏQ)Ç:­­CšsFdnéì'DÜ -uûn°ný·Ív¦q ^e>¤_ÎÜÑ WPã`°ìœ¾Ï´:§§m6ýè)qð1*¤[ ¦QçÎÄž-&áR§4¿áïV›i0¦ð ¹n”æd}Üüãèëít€ä‚¤Ì+MJšƒ£@ØF.l[;Â_z<ì§yör5j˜…„"INùõ%mÉv?¡¬w¾áÔõ ïó™HðûÝ|…£á“>ÔIwtÃïèÞñZµ&Øê}߯TÀ˜aò–Ïg÷Ç„žñÿ¾Ê7Rmã`Gµ~ <çJQ$œÑÊd”mË®’ ¸›ITF¯ÿÉ„ô\Ò»kÜÍSP\‹fŽpHÖ›)7S¹»Ô{ô´’p±ñ°ðžÓŨýITCQž’¸YPªVÚÒœëê¢É,BJµP°‰ñìÔ´Àƒ(…×´Ù‡Ì!8õ}U—ÛžñI5˜°µÞQï%Ä-W(j ÇqøÂ”†-F$ÜKºË•¡(Šó|À{<˜”‹œ ç]xCÛùжJÃÐQÏ7uJ*v–0Ú"~Ô>Y¯‹„O¦À5ŽeÚzÚK*Î`Ö­5©1Œjuô§ƒ£ß~·þäըÑr É$^fÐR+D78‚`•R1éÃK‚;-Ò_›×Ô|¤æOÔ<¤æïRÓÆqBJÂ5Ïæ&Öy7ëKº˜{GMÖû}¿[j^SóšWâblìé¾ÝØwÔ|¢æ NûIê•,ˆšÂ ËU|×?E€åiýo„$;À°õklšõå7õÞ/{žäËM=zy5Xe{dÈp ä$øÝêá m°ŽÏ* |bX"1töœm1ͧ"š±Þw"ZáÑÌžVÌv*AÅ ·è ûÇ8 §d4tž‚¼[»nÙí©öΰ0êÁè\ E‡$ÓÍ0à¢sÞ¬Žž9oºàNàgÓü§ ÅqšÑÏpˆx!¬`†u»D¿ŒgÕ‹ÞÃd™È'ežd{ÁE†Ž;TËÂéΩEw,hߎeVaÂhwkH&ð‹K õ#’„'¼Q ‹ãÈ}®B ™v˜Þfý¢EÙYgkTÕòöÚ3{öùFŸz'©9_г —Bç|rMH& ˜‡ÍGR“DÔ4ZNpl´°‚Í7Ùë2»„D81œêh£‚õ;b‚ 'QꬬÊÙ>'¦¶šißN10ùy ê½¢uņ³gºÈ ’iÝN],ÍËëÊb­÷ žnÝÍÖ?/ÔˆFÂÆ(dÂÆ†’4Ñ$t\X$«—', :#—&*Wke˜½``Â@»ÎÜYØh«‚[t¾§¼©&¦ÈÆóÛŠO9ÎÁk+ªHŒ~hЃÇIà"ý¬0ãc?Ó»å­â´¥àtj¯)Bf*P(c˜;|3s¼C®,•ï–ïpÃ7˾y·íŒ¼k9£àL4ô2fÍœyÜjæ @œ½ŸDý ]û[öH½ YbCtúý/3—ë#±²~®þ§ý¼¸R€—Öktó,ÀKÊÌþ{€¢‰±ãÎÝÚ°¾­ŽcºÑ·uŒp¦ò5Q§ŒL½ÚhŒr"ÚɲÌ}H-úz³ÁKÙEÍÂfÇ2gŠJòP»ÐãMå] ¨ ¹‚~GˆC—Q BôƒÍ§\)}?_ìZb³±tlSs3¾7iŽã]*]Æ>4èYœ–ŸŸ(Á¨U»g 6ç.eÐ,NÏ>gâ¤êâSýÌÎ*Ûȯ+¥òù.2¾¦+)+cþ³IÁ.çÃ(`7·’©¢’ÌSp\O†Í«ÝÙ€Ýü¿sÉà³I k™œ³GQ8éÜŠçëh±˜Å̱yUuTÓw¿h‚¬°NšT „.»}v R„á¼Õ«¬Ø“ç¾Ó—hfŸŸq­3bɈ´wûP„8LXÑG-Â^=”4£ËÉe'k‘+jAäD”Oæ°,ª%ÔÇõe‹ ŠE,3òĽÌó'"ÛvêBA¹%$áb; ,e² EªLú,“iOäæ«œrûär›ÎH˜ó¬¨Òíå ö°56˜’` û¹Œ9°ÙzR~G5´€³F^h x:ñŽŠÆeΠ‡ðû]t¤õ£†h›v8OÌ‘œ'+9O_{äíœ8‚ÐdlT+8¥z]?¿ÅÝ•· oÒ’1¼ÀÚ‹rs‘Цý£F°¼ÛÊÛ×ìrÞÖ å òq´ÖŒy·Íêéí*G)b®sJé®=ú—±F^a¡ ÿD¢x“*°&/ËPl)Ââ„ P…•AÕq fB •ØQY“RV_Pç!±‚J9ÙmÛÅø˜Ø¶¹ÌiÖœúlnŒ Ìycš(r€€íI! ³aŒ<L.“²sÿ {G@# 7 òf'¥¸&"¢ÉVŒm6kæw,R¶‰'妭R‹ S>ع˜®ºÚL€ÎjâžMõj[U/çm—CL๬@ÖÌLÍ=ò,Yƒk}žscÖïHP±Íjòñ9Û[¦u’Qd‰LÒ@æBŠy¤]¨=g!¬‘ó'²ó^j¬àCp]’¼ç%§áY©>B)ÉFSM¼ÙùÅWç †Ò mËó°A”Á“f ß±¼>. 2¹œLl[†]TÕC{Ó³"f4öÖ•<Îîè&ÕŒt£‹ÉJ=Û’à¼f—ÕØ©< ;-cÍÅ֢ȩ¨̨0OANª^wø—sყ^ùñ-°ÏÁp)8Úí`89;Sýò5³¯dº¯ê% Ù­²ãÑrsŸàd·«ë!S‹p‚ÄÜŠ°³ˆLúZÂò‰qŒ×Üîk ³Fµ#{Ý_pb"›Bd–v¢ä³õõ·nIVˆ!§7^Ì'ø–}Þ»k¹f[æk€é‹kà¯VbÞK’æšðšjfÅw‰•ÑÓ`æg-|ÿ>áÂmT‚“½Só°ŠÅšéØ`>J…¦zl½¬tykÙ·Øç{œR:|igú¨‡FÙßÁØí»Ú ë$ï~ñØ+Ô’âv–àŠgHèMÈzÌ5‡Ñ[ªwYýÔ»Ü À®FÚU-¼H °r/›*¶Ð9P(>òUNêT¼S €4¡Y)߯‘A:`fý¾}훼2˜¥Å>̶^¦9nŒ.7í WímÐFÔÏ7óêÁŲ‘wöçf¿ŸDCG9ÚWpP¢Šm??lœå.t^†‹Øûõ’”Þy¦(ZpôçBY²(SSùæ€^–'y¬re½(*ól}p¹Ž×ßTô&Dÿ3–ö;9'Çì\ q>ŸáÙx0ñžåœbóL°ðäQTZS¶žÙÐG Øå¸KDÌæ•Þ2#D'â¹ùÐmvù³”b1£”øë=8®ŒxBĹR1EË•¬M_w±LúAÜjù'’”µy1Ê€J#ÏEÙ o‚Æ&ã—Ž2.ïÈ«^bˆ¿¤D¶ˆý+áÖB)»K\%ž‘²:¿:>1W‹©X÷Þ+þ–ée«lËíÛÊ^âÏèvx¼bþ¾<V»Š¿pÌ‘-À¥Ørûù ÿ’#q òw šyû0u;Ó²p¿„¥÷b/{“Êž²¾ßtÏ=SïV\ቚÇÔ<£æ5 &{;zBÍ j²W¢ÇÔ|¤¦ü&õ’šgµ)>#5x6åIÈØ…ÊVV.Íì¬h1%í«ÞûŠÎÙ,€ŒKÕëc*12É¢9$eZœ3iÀg˜© ƒyväÿÈ4½&îxhNoG— ’ò’áiÇÏcˆCÏwsÎóùÂNzb™^د}Œøé~‚4@~¸#×¹)ƒ› ãñEGçHì-°4Ïñ«u¿™ ÖÑî0Y~ Bg¥ \©lhÊ_¢ÕåçG( &2èÈ%½±q¥ÃQ”?/ZŠúeOT£é®}½/zÑ‹*3ÞÎâ—)ˤ%·£¬òl}6TxŠº·ºÒjÄlO¥U²a ŠC>ì¡÷ÔdOôEý^Äa6öVDòûE/–íE̾wûØ#¹³Nó±÷9"Ô¢UƒÝÇæÝo!G|$ Ze°‚:Ϙš”Çïþ ÿþ Ìhýendstream endobj 44 0 obj 3410 endobj 48 0 obj <> stream xœí[[o·ú¨_±3A—ÞIô© ÀI§®Ò—$0¤]ݪÕJÑņòë{Hyg¸+©VÑ (ü`šÃ˹}çÆõ¯‹ñÅþŒ¯®Þ¼w‹³»ƒ8»à‹ïÊèòà×>þcW/¾<„ \,<óFµ8<=àãza¦ÜÂ:Í,|¸:ø©{ß/%^jÝ}÷ýR1a¸–Ý÷½b†ž~‡]B)Æ­ïþÞ/5sÎÙò>kÎ!»U¿äÌée÷˜†Fºî¸l:ÁÉÛ^2mc»o{©˜2BtGe᪂)é]w.L+ßÝ”ÏýüÊÁòn[&ÓgϹ&­Ëè î9A2—Èû ‰»Æ£®àþA3¥»ûåÀì08ÃG9Ä_&éNà“DvŽß­Z N)$—%b½tŠgÆ{è ;ˆqÒ±'³Má¨5î¯ä»Ò2)³ âÚ$uÉ%ëcÿËá·B;˜Ë9\ƒ¥¤“,÷„UoÞûWL‚¾‚­-Õ–'`l°Þ¦ÍvxéAN¬çp¨óº3dn)üÀÜÀ»¿#Spx÷ÐÉY®U·‰{@õ÷í„ BœÏã–Û E.•2@x¸Ç‚Êë¸Ò C>(´“`²;+ß‹/‚')À€¾8üËÁá?sÀPÖZv>©&š)еAÉ!ãÚÛdspñQÒ—æ†L>Í)f…§ûïžI¸öû`ˆ`%Fêî]/ƒqòˆÂR°ô» 0í•‚ó3Œ>ö†qP¢‰”jÅ€»|}ÀÁYž<ÛÄÙ]Aî}0R ÛD€‰CHªÌ+7¸ý‡3@L–fQºj×yYz‹%@&T{RÓ¾b‹€x,dGMYœZ ³ÞÃùEŠ3)2Šî“kôVµY9Aç†!Dª£Ú@­;d9Y[I0. >)/Ðb¼7x„Ý÷FÃæ£àµÜÄåẺý‡Ö,_Iæ¤É rض«¼ÝPxF?ƒöLœ9ªmôTËQK.àÐA$<" ¯qø0ªÑq É %'Cê:kÜR)‘³jxÈà³×à'{0B’ë[àxLqÁà¡5"®Ëä1Š0rÒT2É'å.¦øÍv$à“¥ ·‘ˆù@éR‚cgGUʵ¦H*k·AÍà¥éUŸzŠÕœ®{ì2D…`dÌ+­m0‚߇Þ:dÅ÷úãpúÿýñçúã§%ý5Dw㲿~(^Â5Y@¶!+Áf%ª$–.$Š£A˜Å£jœ%§ev¤®˜Fì  É^ÖZbNðýÞmxæH—Éñ^kvD——ĉ týq‚ó;v­0¤àeÉÓ'%Oï 8$]0­fCb_aŠ#b [tgèþgÌg¿’O%'O¨4”PÄøO$Ûf¡ªç¹Ê ÁÚC‡ …‡Ôxg®Ñp#» cÀv¼L¾ è•ɇø¯Ç}ó¤”P ’f·jÛª!Veò ‚«^@ˆ0œç‘7¤ ©¥‡.©>}Ç"á7`c`‰ø±°€Ï¯Q#‹$iÀè²”¢Î‹Ø1±Ã\VÆK î7Ü• ߈½=4AÜÖû×$LR•Ñr6ÍhC˜lg'•ËÈ±îœŒÏ M ô¡ïˆ!Û‚WFy0H-:æó©ãÄ»p]Õú¨»™ÅJ¥©à6$ô` ›zÇ"vBg9Õx°·» w-}×ó` <¨W $2eáÍž2ÛYC`sWJï‚•ÀŒ@J "7…2cµŽ W‘2 ™äå‡|ú`#щX&ß© =¨`eèÊ0!=B€³RnqÓW8¼Çá‡æÚ“8T~°tíåtA>ή-·ãt‰Ã¼S¦öç/{‹ÃqÈqhÊ0«‡J6ºš2‡ÛÉîš(n(ëZ`µ…œ·ì¿Æáƒå{θД—p¸M³3p“þb/š©Eµœðq¼Ÿx+Ì"Ô¾IÔ³˜©ˆEè>f4?àiw8$&u‹Ã­›CðhhÌöZã?MeT…»ÇÔ4ËFgódÄ;-åÒ~'øÏäà•ðU u=ÛæšúÓ2£A¼ „§ò&2¼l.xÄáÜà•0-¤„`ÌØŽh”µñínz—s5ÚNÍÖ­rN©ÅŽøŠ¡è¦™å‘„(ícåcÕcÉ%o;ÙÝ4ŠY—dR0^"çOñ@H$•6IiŽ°ØØŒméáì:åV?)ÎnšéÓ´ŽÕ–^­þU©!-­Ze©Å¾Ä{Ò©O3£´ã¥M®ˆ’Hš5Ùd[¬±ÀôÀNºi˜zÞT ŸŤúCõÀ‘ KK‚''•W*jö”[U5Cj°YZFHFCÎûnZöE¹³AZ;®éé‚‘4·$à/Ã@CbÞW۬⠇mÉd|ªnAQb!’2Jñ±OaZeıˆ4¢û¦äÞª$¹Je[ÅÌœ¼»5ûœxxàZ5Kµu«™ŸL^*ô’µÒí^òX` àtZ ÅáäøwêévûkôÐc«È?§‡^µÃ“&"€KÐnr`¬&˜Á~g»8ÝçP2èrÉJüB]Þæqiú¨]ѱaD@ýCcõ€ønb¢'ËðÀ‹Uês4>†[OZ÷Ç;Œ;’¯xü-À(ËyˆÃ줧ÁvfÅÓhL¢yö÷$üÛXŒªÓ ª…Ò9Èu®Ú)e„‹iû2‰¸­ëæC±ŠòBVõ…ÈÚüüÄih<§K¹cÜÇv_Ôù죽|Ã~öB“#é% -s+BžC“ÝöSõhMÏÉzGè7ßÅ*ÁÕIq"¨ô°ýsÛ•¾Õly1ÀœäØéˆ­ò»†£ÒZ)¿zØâÂÉÜøû…¥pŠ ƒèþÑ+Çn%éÁÜö`YRÆf‹óÛ-Ûñ\Bý;‰øý´çåU,yó建0ñÇ I6±¬ºÆá×û2&õV?¯ #DÌ èéa3‚C#fÏÃ(æžßˆqÕY±åôYÝ Ò¸jÖùÿl¶+n÷²$EUI“Nγ˜2Ls(Sþ|‘.Ëöuø²œ·y._6äO¯Å×ÍSÝÒH8Çá¦ÙøØœÝì‡öLQY€%K¨U^ØA¡Æ¶Ùk‰›t´ vÑÀú%ê~A—KÚÐÛÿ_nsµí…´ïš²'P›yÅJ„Ƥ”©ld’I>´b÷¶ÊBÎ#ô3ÒÏ'Þcv=ð·‹y!‡àÎvÍóGý‹V1›|C'O±|~Š«uK>©’5»©‹µ£œþ6fúˆÄd°"="•4´•×ð27L3 ÆüçÊfFëÞA-3Èü Ì:iý¼ó šwÐ÷¢rÍWåšCÜô¡NpÀ§W?ôĬ'ÀÁXœëÞ—ƒ0eºÁ=›rÐQyß§,Ü‚Í8G®† exZp²ûghòUfW墙Œ¬36y˜#BjùˆÿâI¡¶S²gÛ‡G˜y¡?˜ðÉÔÝÔ¯a ÿ½¿†‘£šî”ºÞ{|ƒjg$s¨sæéÑI{k_“q9yMj'$.¬šk?4Ù#$_µ¶=•ªìãõˆ¿‹)XÏÊÓ8-À¿><øüù_ooendstream endobj 49 0 obj 2817 endobj 54 0 obj <> stream xœÅ[[o9^íãùGûÔgµÇñýÂÛ‚6se Ãj5Z¡@` $†¿ånÛU}Ú͹L:qÜ®r¹\_ݺóqΙ˜óø/ý<9Ÿí=õó³ëY;;óÊèÝìãL¤_xZ=ß?!ç+­ž½ž‰´^:δŸ;o˜ƒç³ß›§‹¥b2(cš.–šI+Œj~^hf`ès ’Z3áBól±4Ì{eå<6‚q©š“ÅR0kUPÍ×nh•o^¢W8yµPÌXn]óýBi¦­”ÍqYx²’i|ó.n.™Ñ¡ùP¿]p8¯âN4e²{„0„Ñií!Í+s‰g?Aá.‘Õ9ìÏ Ó¦ùm±äÌqî­HzhìwÚ‘"rœ)*{ƒÏ;Y‘‚JH6ë„ –›¨”Àl"Ê-AŽË4éAØW¢Èêé{ú]Jå˜RYíÚNëJH*ÖçÅÿ޾ŸIãa,çè,¥ãä„ôHW±qjlKÍá790í‚ë¨:ãÑÎ'MøÐ‰/«ñÍëNí\5Ÿðù‰!Ý´‚j,•ùr@æ]’OÌãA@Q>²‹ò±¢V˜4\«æ‡'8¼Áá ¾m‡:pwËC2{ƒÃÕµÇ8<ï†Vµ÷•fkºuŽ9Ëe–èäï9îøqZ÷qÖj.ÿS™¼Ž÷h<àŒØÿi"—!)ºÈe´iËœ@tWˆÂkpiíÚ÷xi_“Q‹$L Š!¯xBrë¯q߯xn²Ù› ÀÔOÉdv+ŸkÇ"(ÌzÉV×nj²²³Ø­‹r6i»½.P#X"Pd@%spG .^[ê82[k)Y:‚SéÉÇ´ÖÀµb.Qƒ‘“ðàc3X²“Ì Î£^ƒq¤š*þšú€¥r–ùùRHx öÙn×YW€ëøÐCüÊ…уñßö ~`“­õ)j<„êÝÂB4â¦õäÒhˆ!.…ø†Ö *&š'q#%¸NKƒ;ÙCŽÏZ9¼ ðx L˜ÖžØ ±÷· iqïs”tb©ìd%šøƒh÷Ž…æq¡‰$5X"~ M>QÇ‚mˆ’-§1="ã_Èøi‰Ð/ ã.Ô›À}ŒÄFTÐÃÎ&¸WJF#b/șËÎ.-üî³]’lƒòzPõœ/`Â’—±²—[VŽkPéþBXЮ+Ñ;Þ¶:i¦e5¢ÂŒN dŸ“i¤Sˆrš¦Rë÷K&¢áÿ‚a0ѰÈ915i¡˜tÛÇâ(ÀAðRǘS]P°FÏvö%>ƒÎù ä}_qÙË*¼¯Ê–`¼>®Âÿ†œc1`‚Ÿêejj¼$ib¡ß·”>Êê†ÁŠ($,y™äH£6^)ãMzîqšÿmvp8¿u^ÌwŒ„á”(`+F#màPë ÝþÜB&/|×~Œžÿ-5Þ|ÿý /-¥ê¥Ç€¤TÇ dâcH Çèâ»^A—ÑÃ^1VÎqX¬hì €ïsâsh.Á«Ô®#:×'¥f<IJ³ÂT¹Žè v<Ƹ©s×ÚнñªÂ†[þõ{êgI+¸‰ÖíewQ$19ZÄlª×"ëSÙëb]ü ñߤd@¯¸aŸ¸ƒ=p­–]‹Ÿ‰¥LÚUÌ‚íŵiDˆto¼jøFzËø´>\`ÚÞ >rý ³ë 2õáTÈÙwÊÔRf¨ì(f†ÊbŽ›·ƒDø–ÂÒN¼ªPqpwJ,H¤X@.®Xm1KÛ¶ ì:ˆà«2‰ôo±…™ôÙæ˜šXK S¨$_„”›Cjb!3¤jRŠÍµ½”ã(°â~yUe¹¿‹à£¡4컬µ)Ðì—ò¹×ͪ5—ßõ»)m¥ô œUÚ^›mbå% ÝaTЛ#mb)3Òˆ˜ØÞ÷›Cm{1Çá¡ÍýòªBM½eAµÔ”bæ¯ íGl:¼ª6¥Îª9iMwáÑ»ix숲v+2Áõ¸SÊ8±u5)×û†ºí¥ŠâöÖâÛ.¼ª SqƒéA_i¤O7i¯xÖ~ŠMQ¥¸ö4Sü³Ü$ùäÏ*êU„þQ½[Mp[ía¯ÅÝĺL¸#ª¬™4™\\ '=£q3ÙÛo_¶ˆŒÛ ?,aä­EÆ]xUA*´»Nî·A/ÉBãÆ»‹5#×<_BGWÿî©êåàš¯eÉ«£Ácò]ñÊ;˜ÿü½hZz±Öþ î'¾ž„{r;ˆ- ʉ¥ÌßQÌæíÅ ÁßVôÞ‰W ÌÀHßAF{Çô°Ýÿó°7éÍ8‡Åõ››$"“žø!Ž–ÏV?I0Ý?ßBÕÔzêPEՄ溾’Q5µ” U»Š™Qµƒ˜ãHðÚÜV¸Ý‰WU^ó;èÓh'·Ã<–Ô„õHn‰™n‰Kk±0ñéÈáÐÈB-³Ü¼»2µè ›ÉÞf–›—;?nê6ÜÚ{ìxUacý]¼{ÖÆ27ˆE](‘AZ5ª@éñSBIü¦Û*MJ¿µ@šø¼ HxÜ]Z#S ™!³›”ÛK9nÏFÝ/¯*6Œº‹÷ÎZ‹ú{gëYˆeGÒ0RÞ`çäjÍ×­—ƒ(ä{Ÿzç¿©òåò€N \7Y=µÆºˆÂv‚×ÄRfxí(fÁ×öbŽcBùûäµÕ{ÇŽ-×°Œ>e¼a¨´_gÿ³ ÊÑendstream endobj 55 0 obj 2765 endobj 4 0 obj <> /Contents 6 0 R >> endobj 15 0 obj <> /Contents 16 0 R >> endobj 21 0 obj <> /Contents 22 0 R >> endobj 27 0 obj <> /Contents 28 0 R >> endobj 32 0 obj <> /Contents 33 0 R >> endobj 37 0 obj <> /Contents 38 0 R >> endobj 42 0 obj <> /Contents 43 0 R >> endobj 47 0 obj <> /Contents 48 0 R >> endobj 53 0 obj <> /Contents 54 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 15 0 R 21 0 R 27 0 R 32 0 R 37 0 R 42 0 R 47 0 R 53 0 R ] /Count 9 >> endobj 1 0 obj <> endobj 8 0 obj <>endobj 13 0 obj <> endobj 14 0 obj <> endobj 19 0 obj <> endobj 20 0 obj <> endobj 25 0 obj <> endobj 26 0 obj <> endobj 30 0 obj <> endobj 31 0 obj <> endobj 35 0 obj <> endobj 36 0 obj <> endobj 40 0 obj <> endobj 41 0 obj <> endobj 45 0 obj <> endobj 46 0 obj <> endobj 51 0 obj <> endobj 52 0 obj <> endobj 56 0 obj <> endobj 57 0 obj <> endobj 18 0 obj <> endobj 50 0 obj <> endobj 24 0 obj <> endobj 12 0 obj <> endobj 10 0 obj <> endobj 58 0 obj <> endobj 11 0 obj <> endobj 9 0 obj <> endobj 59 0 obj <> endobj 5 0 obj <> /Doc-Start<> /0:0<> /0:19<> /0.1.1<> /0:21<> /0:22<> /0:23<> /0:24<> /0:25<> /0:26<> /0:27<> /0:28<> /0:29<> /0:30<> /0:31<> /0:32<> /0:33<> /0:34<> /page.2<> /0:84<> /0.2.1<> /0:36<> /0:37<> /0:38<> /table.1<> /0:53<> /0:54<> /0:55<> /0:56<> /0:57<> /0:58<> /0.3.1<> /0:60<> /0:61<> /0:62<> /0:63<> /0:64<> /0:65<> /0:66<> /0:67<> /0:68<> /0.3.1.2<> /0:70<> /0:71<> /0:72<> /0:73<> /0:74<> /0:75<> /0:76<> /0:77<> /0:78<> /0:79<> /0:80<> /0:81<> /0:82<> /0:83<> /page.3<> /0:120<> /0:86<> /0:87<> /0:88<> /0.3.2.2<> /0:90<> /0:91<> /0:92<> /0:93<> /0:94<> /0:95<> /0:96<> /0:97<> /0:98<> /0:99<> /0:100<> /0.3.3.2<> /0:102<> /0:103<> /0:104<> /0:105<> /0:106<> /0:107<> /0:108<> /0:109<> /0:110<> /0:111<> /0:112<> /0:113<> /0:114<> /0:115<> /0:116<> /0:117<> /page.4<> /0:153<> /0.4.1<> /0:119<> /0:121<> /0:122<> /0:123<> /0:124<> /0:125<> /0:126<> /0:127<> /0:128<> /0:129<> /0.5.1<> /0:131<> /0:132<> /0:133<> /0:134<> /0:135<> /0:136<> /0:137<> /0:138<> /0:139<> /0:140<> /0:141<> /0:142<> /0:143<> /0:144<> /0:145<> /0:146<> /0:147<> /page.5<> /0.6.1<> /0:149<> /0.6.4.2<> /0:151<> /0:152<> /0:155<> /0.6.5.2<> /0:157<> /0:158<> /0:159<> /0:160<> /0:161<> /0:162<> /0:163<> /0:164<> /0:165<> /0:166<> /0.6.6.2<> /0:168<> /0:169<> /0:170<> /0:171<> /0:172<> /page.6<> /0:195<> /0.6.7.2<> /0:174<> /0:175<> /0:176<> /0:177<> /0:178<> /0.7.1<> /0:180<> /0:181<> /0:182<> /0:183<> /0.8.1<> /0:185<> /0.8.8.2<> /0:187<> /0:188<> /0:189<> /0:190<> /0:191<> /0:192<> /0.8.9.2<> /0:194<> /page.7<> /0:197<> /0:198<> /0.8.10.2<> /0:200<> /0:201<> /0.8.11.2<> /0:203<> /0:204<> /0:205<> /0:206<> /0.8.12.2<> /0:208<> /0:209<> /0.8.12.1.3<> /0:211<> /0:212<> /0:213<> /0:214<> /0:215<> /0:216<> /page.8<> /0.8.13.2<> /0:218<> /0:219<> /0:220<> /0.8.14.2<> /0:222<> /0:223<> /0.8.15.2<> /0:225<> /0:226<> /0:227<> /0:229<> /0:230<> /0:231<> /0:232<> /0:233<> /0:234<> /0:235<> /0:236<> /0:237<> /0.8.16.2<> /0:239<> /0:240<> /0:241<> /0:243<> /0:244<> /0:245<> /0:246<> /0:247<> /0:248<> /0:249<> /0:250<> /0:251<> /0:252<> /0:253<> /0:254<> /0.8.17.2<> /0:256<> /0:257<> /0:258<> /0:260<> /0:261<> /0:262<> /0:263<> /0:264<> /page.9<> /0:265<> /0:266<> /0:267<> /0.8.18.2<> /0:269<> /0:270<> /0:271<> /table.2<>>>endobj 60 0 obj <>stream LaTeX with hyperref package ()() endstream endobj 2 0 obj <>endobj xref 0 61 0000000000 65535 f 0000031998 00000 n 0000059462 00000 n 0000031883 00000 n 0000030411 00000 n 0000033806 00000 n 0000000015 00000 n 0000002916 00000 n 0000032123 00000 n 0000033639 00000 n 0000033384 00000 n 0000033576 00000 n 0000033316 00000 n 0000032164 00000 n 0000032194 00000 n 0000030571 00000 n 0000002936 00000 n 0000006167 00000 n 0000033111 00000 n 0000032257 00000 n 0000032287 00000 n 0000030741 00000 n 0000006188 00000 n 0000009262 00000 n 0000033248 00000 n 0000032361 00000 n 0000032391 00000 n 0000030903 00000 n 0000009283 00000 n 0000013146 00000 n 0000032476 00000 n 0000032506 00000 n 0000031065 00000 n 0000013167 00000 n 0000016884 00000 n 0000032591 00000 n 0000032621 00000 n 0000031227 00000 n 0000016905 00000 n 0000021119 00000 n 0000032695 00000 n 0000032725 00000 n 0000031389 00000 n 0000021140 00000 n 0000024622 00000 n 0000032799 00000 n 0000032829 00000 n 0000031551 00000 n 0000024643 00000 n 0000027532 00000 n 0000033177 00000 n 0000032903 00000 n 0000032933 00000 n 0000031713 00000 n 0000027553 00000 n 0000030390 00000 n 0000033018 00000 n 0000033048 00000 n 0000033467 00000 n 0000033724 00000 n 0000058024 00000 n trailer << /Size 61 /Root 1 0 R /Info 2 0 R /ID [<4AA556E6B55D9E3E47E4F232690F7504><4AA556E6B55D9E3E47E4F232690F7504>] >> startxref 59673 %%EOF pcsc-cyberjack-3.99.5final.sp05/doc/README.ps000066400000000000000000002632451231776762100204020ustar00rootroot00000000000000%!PS-Adobe-2.0 %%Creator: dvips(k) 5.96.1 Copyright 2007 Radical Eye Software %%Title: README.dvi %%CreationDate: Mon Jun 2 07:21:07 2008 %%Pages: 9 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentFonts: Helvetica-Bold Times-Roman Courier Times-Italic %%+ Times-Bold Courier-Bold Courier-Oblique %%DocumentPaperSizes: a4 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -R -q -t a4 README.dvi -o README.ps %DVIPSParameters: dpi=600 %DVIPSSource: TeX output 2008.06.02:0721 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc 0 0 % File 8r.enc TeX Base 1 Encoding Revision 2.0 2002-10-30 % % @@psencodingfile@{ % author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, % W. Schmidt, P. Lehman", % version = "2.0", % date = "27nov06", % filename = "8r.enc", % email = "tex-fonts@@tug.org", % docstring = "This is the encoding vector for Type1 and TrueType % fonts to be used with TeX. This file is part of the % PSNFSS bundle, version 9" % @} % % The idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard encoding, ISO Latin 1, Windows ANSI including the euro symbol, % MacRoman, and some extra characters from Lucida. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % These are /dotlessj /ff /ffi /ffl. % % (4) hyphen appears twice for compatibility with both ASCII and Windows. % % (5) /Euro was assigned to 128, as in Windows ANSI % % (6) Missing characters from MacRoman encoding incorporated as follows: % % PostScript MacRoman TeXBase1 % -------------- -------------- -------------- % /notequal 173 0x16 % /infinity 176 0x17 % /lessequal 178 0x18 % /greaterequal 179 0x19 % /partialdiff 182 0x1A % /summation 183 0x1B % /product 184 0x1C % /pi 185 0x1D % /integral 186 0x81 % /Omega 189 0x8D % /radical 195 0x8E % /approxequal 197 0x8F % /Delta 198 0x9D % /lozenge 215 0x9E % /TeXBase1Encoding [ % 0x00 /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef /Zcaron /zcaron % 0x10 /caron /dotlessi /dotlessj /ff /ffi /ffl /notequal /infinity /lessequal /greaterequal /partialdiff /summation /product /pi /grave /quotesingle % 0x20 /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % 0x80 /Euro /integral /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /Omega /radical /approxequal % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /Delta /lozenge /Ydieresis % 0xA0 /.notdef /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron % 0xB0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: texps.pro 0 0 %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def end %%EndProcSet %%BeginProcSet: special.pro 0 0 %! TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N /vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N /rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N /@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ /hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B /@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ /urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known {userdict/md get type/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale }if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState save N userdict maxlength dict begin/magscale true def normalscale currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts /psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def @MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin/SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N} N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N /setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B /rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginProcSet: color.pro 0 0 %! TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll }repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def /TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ /currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC /Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC /Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ 0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ 0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ 0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ 0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ 0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end %%EndProcSet TeXDict begin @defspecial /DvipsToPDF { 72.27 mul Resolution div } def /PDFToDvips { 72.27 div Resolution mul } def /HyperBorder { 1 PDFToDvips } def /H.V {pdf@hoff pdf@voff null} def /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def /H.S { currentpoint HyperBorder add /pdf@lly exch def dup DvipsToPDF /pdf@hoff exch def HyperBorder sub /pdf@llx exch def } def /H.L { 2 sub dup /HyperBasePt exch def PDFToDvips /HyperBaseDvips exch def currentpoint HyperBaseDvips sub /pdf@ury exch def /pdf@urx exch def } def /H.A { H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF HyperBasePt sub sub /pdf@voff exch def } def /H.R { currentpoint HyperBorder sub /pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint exch pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def } def systemdict /pdfmark known { userdict /?pdfmark systemdict /exec get put }{ userdict /?pdfmark systemdict /pop get put userdict /pdfmark systemdict /cleartomark get put } ifelse @fedspecial end TeXDict begin 39158280 55380996 1000 600 600 (README.dvi) @start /Fa 137[45 45 45 1[45 1[45 45 45 45 45 1[45 45 45 2[45 45 45 45 45 1[45 95[{TeXBase1Encoding ReEncodeFont}18 74.7198 /Courier-Oblique rf /Fb 134[45 2[45 45 45 45 45 1[45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 1[45 8[45 45 1[45 3[45 1[45 1[45 45 4[45 45 45 45 3[45 45 45 4[45 3[45 1[45 45 45 45 45 45[{TeXBase1Encoding ReEncodeFont}44 74.7198 /Courier-Bold rf /Fc 106[23 149[{TeXBase1Encoding ReEncodeFont} 1 66.4176 /Times-Roman rf /Fd 133[60 66 1[93 66 73 40 66 47 1[73 73 73 106 33 66 1[33 73 73 40 66 73 66 73 66 1[66 8[80 86 73 80 86 1[80 93 1[100 73 86 1[33 86 1[73 80 86 86 86 86 7[66 66 66 66 66 66 66 66 66 66 33 33 40 45[{TeXBase1Encoding ReEncodeFont}55 119.552 /Helvetica-Bold rf /Fe 135[42 2[46 28 32 37 1[46 42 46 69 23 46 1[23 3[37 2[46 42 1[42 5[60 4[55 46 60 1[51 65 60 2[65 42 32 3[55 1[60 1[60 19[28 45[{TeXBase1Encoding ReEncodeFont}30 83.022 /Times-Bold rf /Ff 138[51 28 1[32 2[51 2[23 2[23 3[46 51 46 15[55 2[55 1[60 4[23 2[51 1[60 60 1[60 14[46 50[{TeXBase1Encoding ReEncodeFont}18 83.022 /Helvetica-Bold rf /Fg 134[37 2[37 42 23 32 32 1[42 42 42 60 23 37 23 23 42 2[37 42 37 42 42 11[60 46 42 51 3[55 3[37 28 3[51 1[55 51 8[42 42 42 42 42 42 42 42 42 1[23 1[28 45[{ TeXBase1Encoding ReEncodeFont}41 83.022 /Times-Italic rf /Fh 134[45 45 1[45 45 45 45 45 1[45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 1[45 5[45 2[45 45 45 45 2[45 45 45 2[45 45 45 45 2[45 45 45 45 45 5[45 45 1[45 45 45 45 45 45 45 45 45 45 45 45 45 1[45 45 45 40[{ TeXBase1Encoding ReEncodeFont}59 74.7198 /Courier rf /Fi 3[42 103[37 37 20[45 3[37 42 42 60 42 42 23 32 28 42 42 42 42 65 23 42 23 23 42 42 28 37 42 37 42 37 1[42 5[60 60 78 60 60 51 46 55 1[46 60 60 74 51 60 32 28 60 60 46 51 60 55 55 60 76 1[47 47 2[23 42 42 42 42 42 42 42 42 42 42 23 21 28 21 2[28 28 28 1[69 1[42 34 28 29[46 46 2[{TeXBase1Encoding ReEncodeFont}82 83.022 /Times-Roman rf /Fj 86[73 47[55 4[33 55 39 1[61 61 61 89 28 2[28 61 61 1[55 2[61 55 12[61 66 72 3[72 4[28 72 78 1[66 72 72 10[55 2[55 55 1[55 55 55 1[28 9[55 36[{TeXBase1Encoding ReEncodeFont}34 99.6264 /Helvetica-Bold rf /Fk 3[88 130[80 1[112 80 88 48 80 56 1[88 88 88 128 40 2[40 88 88 48 80 88 80 88 80 9[135 1[104 88 96 104 1[96 112 1[120 1[104 1[40 104 1[88 3[104 104 8[80 80 80 80 80 80 80 80 2[40 48 42[88 2[{TeXBase1Encoding ReEncodeFont}47 143.462 /Helvetica-Bold rf /Fl 134[115 2[115 3[80 1[126 126 126 184 1[115 1[57 126 2[115 126 115 126 115 11[149 126 138 149 3[149 3[115 57 3[138 1[149 149 18[57 1[69 45[{TeXBase1Encoding ReEncodeFont}27 206.584 /Helvetica-Bold rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%BeginPaperSize: a4 /setpagedevice where { pop << /PageSize [595 842] >> setpagedevice } { /a4 where { pop a4 } if } ifelse %%EndPaperSize end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a -600 -600 a SDict begin [ /Producer (dvips + Distiller) /Title () /Subject () /Creator (LaTeX with hyperref package) /Author () /Keywords () /DOCINFO pdfmark end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark end -2 -102 a Black Black -2 -11 a SDict begin [ /Page 1 /View [ /Fit ] /PageMode /UseOutlines /DOCVIEW pdfmark end -2 -11 a -2 -11 a SDict begin [ {Catalog} << >> /PUT pdfmark end -2 -11 a -2 -11 a SDict begin H.S end -2 -11 a -2 -11 a SDict begin 12 H.A end -2 -11 a -2 -11 a SDict begin [ /View [/XYZ H.V] /Dest (Doc-Start) cvn H.B /DEST pdfmark end -2 -11 a -2 -11 a SDict begin H.S end -2 -11 a -2 -11 a SDict begin 12 H.A end -2 -11 a -2 -11 a SDict begin [ /View [/XYZ H.V] /Dest (0:0) cvn H.B /DEST pdfmark end -2 -11 a 983 140 a Fl(REINER)58 b(SCT)g(c)n(yberJac)l(k)421 409 y(pinpad/e-com)g(USB)g(c)n(hipcar)l(d)g(reader)1853 677 y(driver)1582 953 y Fk(Matthias)37 b(Br\374stle)1708 1230 y(Harald)h(W)-5 b(elte)1664 1506 y(Mar)s(tin)38 b(Preuss)1251 1703 y Fj(Cop)o(yright)27 b(\251)h(2004)h(REINER)f(SCT)g (GmbH)1976 1811 y($Date$)542 2168 y Fi(This)20 b(is)h(the)f(user)g (manual)f(to)i(the)f(linux)f(dri)n(v)o(er)g(for)h(REINER)g(SCT)h(c)o (yberjack)e(chipcard)f(readers.)39 2478 y SDict begin H.S end 39 2478 a 39 2478 a SDict begin 13 H.A end 39 2478 a 39 2478 a SDict begin [ /View [/XYZ H.V] /Dest (0:19) cvn H.B /DEST pdfmark end 39 2478 a -2 2855 a Fk(1.)39 b(Over)q(vie)n(w)796 2855 y SDict begin H.S end 796 2855 a 796 2855 a SDict begin 22.464 H.A end 796 2855 a 796 2855 a SDict begin [ /View [/XYZ H.V] /Dest (0.1.1) cvn H.B /DEST pdfmark end 796 2855 a -2 3022 a SDict begin H.S end -2 3022 a -2 3022 a SDict begin 13 H.A end -2 3022 a -2 3022 a SDict begin [ /View [/XYZ H.V] /Dest (0:21) cvn H.B /DEST pdfmark end -2 3022 a 396 3129 a Fi(This)21 b(dri)n(v)o(er)d(for)i(the)g(REINER)h(SCT)g(c)o(yberJack)d (pinpad/e-com)f(USB)22 b(f)o(amily)d(of)h(chipcard)f(readers)g (implements)396 3237 y(the)h(CT)-8 b(-API)21 b(1.1)f(interf)o(ace,)f (as)i(well)f(as)h(the)f(PC/SC)i(interf)o(ace)e(of)g(pcsc-lite.)-2 3421 y SDict begin H.S end -2 3421 a -2 3421 a SDict begin 13 H.A end -2 3421 a -2 3421 a SDict begin [ /View [/XYZ H.V] /Dest (0:22) cvn H.B /DEST pdfmark end -2 3421 a 396 3511 a Fi(It)h(is)g(implemented)d(100\045)i(in)g(userspace.)f (This)i(means)e(no)h(trouble)f(with)i(dif)n(ferent)d(k)o(ernel)h(v)o (ersions,)396 3618 y(compiling/patching)e(the)j(k)o(ernel)f(etc.)-2 3802 y SDict begin H.S end -2 3802 a -2 3802 a SDict begin 13 H.A end -2 3802 a -2 3802 a SDict begin [ /View [/XYZ H.V] /Dest (0:23) cvn H.B /DEST pdfmark end -2 3802 a 396 3892 a Fi(All)i(accesses)g(are)f(done)f(via)i(the)1374 3892 y SDict begin H.S end 1374 3892 a 1374 3892 a SDict begin 13 H.A end 1374 3892 a 1374 3892 a SDict begin [ /View [/XYZ H.V] /Dest (0:24) cvn H.B /DEST pdfmark end 1374 3892 a Fh(usb)44 b(devfs)20 b Fi(in)1883 3892 y SDict begin H.S end 1883 3892 a 1883 3892 a SDict begin 13 H.A end 1883 3892 a 1883 3892 a SDict begin [ /View [/XYZ H.V] /Dest (0:25) cvn H.B /DEST pdfmark end 1883 3892 a Fh(/proc/bus/usb)f Fi(\(or)2604 3892 y SDict begin H.S end 2604 3892 a 2604 3892 a SDict begin 13 H.A end 2604 3892 a 2604 3892 a SDict begin [ /View [/XYZ H.V] /Dest (0:26) cvn H.B /DEST pdfmark end 2604 3892 a Fh(/dev/bus/usb)g Fi(for)h(ude)n(v-based)396 4000 y(systems\).)-2 4184 y SDict begin H.S end -2 4184 a -2 4184 a SDict begin 13 H.A end -2 4184 a -2 4184 a SDict begin [ /View [/XYZ H.V] /Dest (0:27) cvn H.B /DEST pdfmark end -2 4184 a 396 4274 a Fi(Permission)f(handling)d(is)k(done)1350 4274 y SDict begin H.S end 1350 4274 a 1350 4274 a SDict begin 13 H.A end 1350 4274 a 1350 4274 a SDict begin [ /View [/XYZ H.V] /Dest (0:28) cvn H.B /DEST pdfmark end 1350 4274 a Fg(only)e Fi(via)h(ude)n(v)-5 b(.)17 b(The)1975 4274 y SDict begin H.S end 1975 4274 a 1975 4274 a SDict begin 13 H.A end 1975 4274 a 1975 4274 a SDict begin [ /View [/XYZ H.V] /Dest (0:29) cvn H.B /DEST pdfmark end 1975 4274 a Fh(cyberjack.rules)g Fi(if)i(installed)f(to)3121 4274 y SDict begin H.S end 3121 4274 a 3121 4274 a SDict begin 13 H.A end 3121 4274 a 3121 4274 a SDict begin [ /View [/XYZ H.V] /Dest (0:30) cvn H.B /DEST pdfmark end 3121 4274 a Fh(/etc/udev/rules.d)396 4382 y Fi(is)j(automatically)e (called)h(by)g(ude)n(v)f(when)h(a)g(reader)f(is)i(plugged)e(in.)h(This) g(scripts)h(dynamically)d(updates)h(the)396 4490 y(permissions)h(of)g (the)g(respecti)n(v)o(e)f(de)n(vice,)g(so)h(users)h(in)f(the)g(group) 2344 4490 y SDict begin H.S end 2344 4490 a 2344 4490 a SDict begin 13 H.A end 2344 4490 a 2344 4490 a SDict begin [ /View [/XYZ H.V] /Dest (0:31) cvn H.B /DEST pdfmark end 2344 4490 a Fh(cyberjack)f Fi(are)h(able)g(to)h(access)f(it.)-2 4674 y SDict begin H.S end -2 4674 a -2 4674 a SDict begin 13 H.A end -2 4674 a -2 4674 a SDict begin [ /View [/XYZ H.V] /Dest (0:32) cvn H.B /DEST pdfmark end -2 4674 a 396 4764 a Fi(F)o(or)g(more)f(information)f(about)h(the)i(smart)f (card)g(reader)f(itself)h(please)h(visit)2638 4764 y SDict begin H.S end 2638 4764 a 2638 4764 a SDict begin 13 H.A end 2638 4764 a 2638 4764 a SDict begin [ /View [/XYZ H.V] /Dest (0:33) cvn H.B /DEST pdfmark end 2638 4764 a Fi(http://www)-5 b(.reiner)n(-sct.com/.)17 b(There)j(is)396 4872 y(also)h(a)f(shop)g(where)g(the)g(the)g(readers)f(can)h(be)h (ordered)d(online.)-2 4900 y SDict begin H.S end -2 4900 a -2 4900 a SDict begin 13 H.A end -2 4900 a -2 4900 a SDict begin [ /View [/XYZ H.V] /Dest (0:34) cvn H.B /DEST pdfmark end -2 4900 a Black 3842 5569 a Fg(1)p Black eop end %%Page: 2 2 TeXDict begin 2 1 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.2) cvn H.B /DEST pdfmark end -2 -102 a Black -2 -201 a SDict begin H.S end -2 -201 a -2 -201 a SDict begin 13 H.A end -2 -201 a -2 -201 a SDict begin [ /View [/XYZ H.V] /Dest (0:84) cvn H.B /DEST pdfmark end -2 -201 a 1654 -132 a Fg(REINER)20 b(SCT)h(cyberJ)m(ac)n(k)f(pinpad/e-com)d(USB)j(c)o (hipcar)m(d)e(r)m(eader)i(driver)p Black -2 94 a Fk(2.)39 b(Reader)n(s)f(suppor)s(ted)f(b)m(y)j(this)f(driver)2405 94 y SDict begin H.S end 2405 94 a 2405 94 a SDict begin 22.464 H.A end 2405 94 a 2405 94 a SDict begin [ /View [/XYZ H.V] /Dest (0.2.1) cvn H.B /DEST pdfmark end 2405 94 a -2 290 a SDict begin H.S end -2 290 a -2 290 a SDict begin 13 H.A end -2 290 a -2 290 a SDict begin [ /View [/XYZ H.V] /Dest (0:36) cvn H.B /DEST pdfmark end -2 290 a 396 368 a Fi(The)20 b(follo)n(wing)f(Reiner)n(-SCT)h(readers)f(are)i (supported:)2083 368 y SDict begin H.S end 2083 368 a 2083 368 a SDict begin 13 H.A end 2083 368 a 2083 368 a SDict begin [ /View [/XYZ H.V] /Dest (0:37) cvn H.B /DEST pdfmark end 2083 368 a -2 498 a SDict begin H.S end -2 498 a -2 498 a SDict begin 13 H.A end -2 498 a -2 498 a SDict begin [ /View [/XYZ H.V] /Dest (0:38) cvn H.B /DEST pdfmark end -2 498 a -2 498 a SDict begin H.S end -2 498 a -2 498 a SDict begin 0 H.A end -2 498 a -2 498 a SDict begin [ /View [/XYZ H.V] /Dest (table.1) cvn H.B /DEST pdfmark end -2 498 a 396 501 3497 4 v 396 501 V 396 626 4 125 v 424 601 a Ff(Pr)n(oduct)p 2143 626 V 1435 w(Pr)n(oductID)p 3890 626 V 396 629 3497 4 v 396 629 V 396 753 4 125 v 424 729 a Fi(REINER)g(SCT)g(c)o(yberJack)d(pinpad)h (USB)p 2143 753 V 494 w(0x100)p 3890 753 V 396 757 3497 4 v 396 757 V 396 881 4 125 v 424 856 a(REINER)i(SCT)g(c)o(yberJack)d (e-com)i(USB)p 2143 881 V 512 w(0x100)p 3890 881 V 396 885 3497 4 v 396 885 V 396 1009 4 125 v 424 984 a(REINER)h(SCT)g(c)o (yberJack)d(pinpad_a)h(USB)p 2143 1009 V 415 w(0x300)p 3890 1009 V 396 1013 3497 4 v 396 1013 V 396 1179 a(Y)-9 b(ou)20 b(can)g(use)g(the)940 1179 y SDict begin H.S end 940 1179 a 940 1179 a SDict begin 13 H.A end 940 1179 a 940 1179 a SDict begin [ /View [/XYZ H.V] /Dest (0:53) cvn H.B /DEST pdfmark end 940 1179 a Fe(lsusb)i Fi(command)c(to)j(list)g (all)g(de)n(vices)e(connected)g(to)h(the)g(USB)i(b)n(us)e(of)g(your)f (machine.)g(It)h(will)396 1286 y(print)g(out)g(the)g(v)o(endor)e(and)i (de)n(vice)f(ID)h(of)g(all)h(your)e(de)n(vices,)g(lik)o(e)i(:)-2 1470 y SDict begin H.S end -2 1470 a -2 1470 a SDict begin 13 H.A end -2 1470 a -2 1470 a SDict begin [ /View [/XYZ H.V] /Dest (0:54) cvn H.B /DEST pdfmark end -2 1470 a -2 1470 a SDict begin H.S end -2 1470 a -2 1470 a SDict begin 13 H.A end -2 1470 a -2 1470 a SDict begin [ /View [/XYZ H.V] /Dest (0:55) cvn H.B /DEST pdfmark end -2 1470 a 396 1560 a Fh(Bus)45 b(Nr)f(Device)g(Nr)g(VeID:PrID)g(Bus)g(002) g(Device)g(002:)g(ID)h(0451:1446)e(Texas)396 1668 y(Instruments,)g (Inc.)h(TUSB2040/2070)f(Hub)h(Bus)h(002)f(Device)g(006:)g(ID)g (0c4b:0300)-2 1843 y SDict begin H.S end -2 1843 a -2 1843 a SDict begin 13 H.A end -2 1843 a -2 1843 a SDict begin [ /View [/XYZ H.V] /Dest (0:56) cvn H.B /DEST pdfmark end -2 1843 a 396 1942 a Fi(The)20 b(REINER)h(SCT)g(V)-9 b(endorID)18 b(is)1464 1942 y SDict begin H.S end 1464 1942 a 1464 1942 a SDict begin 13 H.A end 1464 1942 a 1464 1942 a SDict begin [ /View [/XYZ H.V] /Dest (0:57) cvn H.B /DEST pdfmark end 1464 1942 a Fh(0c4b)p Fi(.)i(ProductID')-5 b(s)19 b(can)h(be)g(look)o(ed)f(up)h(in)g(the)g(table)g(abo)o(v)o(e.)-2 1971 y SDict begin H.S end -2 1971 a -2 1971 a SDict begin 13 H.A end -2 1971 a -2 1971 a SDict begin [ /View [/XYZ H.V] /Dest (0:58) cvn H.B /DEST pdfmark end -2 1971 a 359 x Fk(3.)39 b(distrib)m(ution-speci\002c)c(notes)1949 2330 y SDict begin H.S end 1949 2330 a 1949 2330 a SDict begin 22.464 H.A end 1949 2330 a 1949 2330 a SDict begin [ /View [/XYZ H.V] /Dest (0.3.1) cvn H.B /DEST pdfmark end 1949 2330 a -2 2526 a SDict begin H.S end -2 2526 a -2 2526 a SDict begin 13 H.A end -2 2526 a -2 2526 a SDict begin [ /View [/XYZ H.V] /Dest (0:60) cvn H.B /DEST pdfmark end -2 2526 a 396 2604 a Fi(Y)-9 b(ou)20 b(\002nd)g(all)h (packages)e(at)1210 2604 y SDict begin H.S end 1210 2604 a 1210 2604 a SDict begin 13 H.A end 1210 2604 a 1210 2604 a SDict begin [ /View [/XYZ H.V] /Dest (0:61) cvn H.B /DEST pdfmark end 1210 2604 a Fi(http://www)-5 b(.reiner)n (-sct.com/content/vie)n(w/32)o(/43/#)o(linu)o(x.)-2 2788 y SDict begin H.S end -2 2788 a -2 2788 a SDict begin 13 H.A end -2 2788 a -2 2788 a SDict begin [ /View [/XYZ H.V] /Dest (0:62) cvn H.B /DEST pdfmark end -2 2788 a 396 2878 a Fi(Most)21 b(packages)e(need)g(you)h(to)g(add)g(the)g(user)g (which)f(is)j(to)e(access)h(the)f(card)g(reader)f(to)h(be)g(added)f(to) i(the)f(group)396 2986 y SDict begin H.S end 396 2986 a 396 2986 a SDict begin 13 H.A end 396 2986 a 396 2986 a SDict begin [ /View [/XYZ H.V] /Dest (0:63) cvn H.B /DEST pdfmark end 396 2986 a Fg(cyberjac)n(k)q Fi(.)g(This)h(can)f(be)g (done)f(by)h(using)f(the)i(tool)1922 2986 y SDict begin H.S end 1922 2986 a 1922 2986 a SDict begin 13 H.A end 1922 2986 a 1922 2986 a SDict begin [ /View [/XYZ H.V] /Dest (0:64) cvn H.B /DEST pdfmark end 1922 2986 a Fg(kuser)i Fi(or)d(the)g(system')-5 b(s)21 b(administration)d(tool)i(\(e.g.)3462 2986 y SDict begin H.S end 3462 2986 a 3462 2986 a SDict begin 13 H.A end 3462 2986 a 3462 2986 a SDict begin [ /View [/XYZ H.V] /Dest (0:65) cvn H.B /DEST pdfmark end 3462 2986 a Fg(yast)i Fi(on)396 3094 y(SuSE\).)-2 3275 y SDict begin H.S end -2 3275 a -2 3275 a SDict begin 13 H.A end -2 3275 a -2 3275 a SDict begin [ /View [/XYZ H.V] /Dest (0:66) cvn H.B /DEST pdfmark end -2 3275 a 396 3368 a Fi(Y)-9 b(ou)20 b(should)f(reboot)g(your)g(machine)g(after)h (installing)g(the)g(dri)n(v)o(er)e(package)h(and)h(adding)f(the)h(user) g(to)g(the)g(group)396 3476 y SDict begin H.S end 396 3476 a 396 3476 a SDict begin 13 H.A end 396 3476 a 396 3476 a SDict begin [ /View [/XYZ H.V] /Dest (0:67) cvn H.B /DEST pdfmark end 396 3476 a Fg(cyberjac)n(k)h Fi(in)g(order)e(for)g (the)i(changes)e(to)h(tak)o(e)g(ef)n(fect.)-2 3494 y SDict begin H.S end -2 3494 a -2 3494 a SDict begin 13 H.A end -2 3494 a -2 3494 a SDict begin [ /View [/XYZ H.V] /Dest (0:68) cvn H.B /DEST pdfmark end -2 3494 a 396 3804 a Fd(3.1.)35 b(RPM-based)1279 3804 y SDict begin H.S end 1279 3804 a 1279 3804 a SDict begin 18.72 H.A end 1279 3804 a 1279 3804 a SDict begin [ /View [/XYZ H.V] /Dest (0.3.1.2) cvn H.B /DEST pdfmark end 1279 3804 a -2 3971 a SDict begin H.S end -2 3971 a -2 3971 a SDict begin 13 H.A end -2 3971 a -2 3971 a SDict begin [ /View [/XYZ H.V] /Dest (0:70) cvn H.B /DEST pdfmark end -2 3971 a 396 4078 a Fi(Reiner)n(-SCT)21 b(pro)o(vides)d(RPM)j(packages)e(for)h(the)g (follo)n(wing)e(distrib)n(utions:)2703 4078 y SDict begin H.S end 2703 4078 a 2703 4078 a SDict begin 13 H.A end 2703 4078 a 2703 4078 a SDict begin [ /View [/XYZ H.V] /Dest (0:71) cvn H.B /DEST pdfmark end 2703 4078 a -2 4120 a SDict begin H.S end -2 4120 a -2 4120 a SDict begin 13 H.A end -2 4120 a -2 4120 a SDict begin [ /View [/XYZ H.V] /Dest (0:72) cvn H.B /DEST pdfmark end -2 4120 a Black 396 4275 a Fc(\225)p Black 479 4275 a SDict begin H.S end 479 4275 a 479 4275 a SDict begin 13 H.A end 479 4275 a 479 4275 a SDict begin [ /View [/XYZ H.V] /Dest (0:73) cvn H.B /DEST pdfmark end 479 4275 a Fi(SuSE)j(10.2)-2 4276 y SDict begin H.S end -2 4276 a -2 4276 a SDict begin 13 H.A end -2 4276 a -2 4276 a SDict begin [ /View [/XYZ H.V] /Dest (0:74) cvn H.B /DEST pdfmark end -2 4276 a Black 396 4424 a Fc(\225)p Black 479 4424 a SDict begin H.S end 479 4424 a 479 4424 a SDict begin 13 H.A end 479 4424 a 479 4424 a SDict begin [ /View [/XYZ H.V] /Dest (0:75) cvn H.B /DEST pdfmark end 479 4424 a Fi(SuSE)g(10.1)-2 4425 y SDict begin H.S end -2 4425 a -2 4425 a SDict begin 13 H.A end -2 4425 a -2 4425 a SDict begin [ /View [/XYZ H.V] /Dest (0:76) cvn H.B /DEST pdfmark end -2 4425 a Black 396 4574 a Fc(\225)p Black 479 4574 a SDict begin H.S end 479 4574 a 479 4574 a SDict begin 13 H.A end 479 4574 a 479 4574 a SDict begin [ /View [/XYZ H.V] /Dest (0:77) cvn H.B /DEST pdfmark end 479 4574 a Fi(SuSE)g(10.0)-2 4575 y SDict begin H.S end -2 4575 a -2 4575 a SDict begin 13 H.A end -2 4575 a -2 4575 a SDict begin [ /View [/XYZ H.V] /Dest (0:78) cvn H.B /DEST pdfmark end -2 4575 a Black 396 4723 a Fc(\225)p Black 479 4723 a SDict begin H.S end 479 4723 a 479 4723 a SDict begin 13 H.A end 479 4723 a 479 4723 a SDict begin [ /View [/XYZ H.V] /Dest (0:79) cvn H.B /DEST pdfmark end 479 4723 a Fi(SuSE)g(9.3)-2 4725 y SDict begin H.S end -2 4725 a -2 4725 a SDict begin 13 H.A end -2 4725 a -2 4725 a SDict begin [ /View [/XYZ H.V] /Dest (0:80) cvn H.B /DEST pdfmark end -2 4725 a Black 396 4873 a Fc(\225)p Black 479 4873 a SDict begin H.S end 479 4873 a 479 4873 a SDict begin 13 H.A end 479 4873 a 479 4873 a SDict begin [ /View [/XYZ H.V] /Dest (0:81) cvn H.B /DEST pdfmark end 479 4873 a Fi(Fedora)f(Core)g(5)-2 4874 y SDict begin H.S end -2 4874 a -2 4874 a SDict begin 13 H.A end -2 4874 a -2 4874 a SDict begin [ /View [/XYZ H.V] /Dest (0:82) cvn H.B /DEST pdfmark end -2 4874 a Black 396 5022 a Fc(\225)p Black 479 5022 a SDict begin H.S end 479 5022 a 479 5022 a SDict begin 13 H.A end 479 5022 a 479 5022 a SDict begin [ /View [/XYZ H.V] /Dest (0:83) cvn H.B /DEST pdfmark end 479 5022 a Fi(Fedora)g(Core)g(4)p Black 3842 5569 a Fg(2)p Black eop end %%Page: 3 3 TeXDict begin 3 2 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.3) cvn H.B /DEST pdfmark end -2 -102 a Black -2 -201 a SDict begin H.S end -2 -201 a -2 -201 a SDict begin 13 H.A end -2 -201 a -2 -201 a SDict begin [ /View [/XYZ H.V] /Dest (0:120) cvn H.B /DEST pdfmark end -2 -201 a 1654 -132 a Fg(REINER)20 b(SCT)h(cyberJ)m(ac)n(k)f(pinpad/e-com)d(USB)j(c)o (hipcar)m(d)e(r)m(eader)i(driver)p Black 396 346 a Fi(Just)h(install)g (the)f(package)f(corresponding)e(to)j(your)f(system)h(lik)o(e)h(this:) 65 b Fb(rpm)45 b(-i)f()-2 530 y SDict begin H.S end -2 530 a -2 530 a SDict begin 13 H.A end -2 530 a -2 530 a SDict begin [ /View [/XYZ H.V] /Dest (0:86) cvn H.B /DEST pdfmark end -2 530 a 396 620 a Fi(If)20 b(you)g(already)f(ha)n(v)o(e)g(one)h(of)g(Reiner)n(-SCT')-5 b(s)21 b(pre)n(vious)d(RPM)j(packages)e(installed)h(you)g(must)g (update)f(that)h(e)o(xisting)396 728 y(package)f(instead,)h(lik)o(e)g (in:)1219 728 y SDict begin H.S end 1219 728 a 1219 728 a SDict begin 13 H.A end 1219 728 a 1219 728 a SDict begin [ /View [/XYZ H.V] /Dest (0:87) cvn H.B /DEST pdfmark end 1219 728 a 44 w Fb(rpm)45 b(-U)f()-2 757 y SDict begin H.S end -2 757 a -2 757 a SDict begin 13 H.A end -2 757 a -2 757 a SDict begin [ /View [/XYZ H.V] /Dest (0:88) cvn H.B /DEST pdfmark end -2 757 a 396 1067 a Fd(3.2.)35 b(DEB-based)1265 1067 y SDict begin H.S end 1265 1067 a 1265 1067 a SDict begin 18.72 H.A end 1265 1067 a 1265 1067 a SDict begin [ /View [/XYZ H.V] /Dest (0.3.2.2) cvn H.B /DEST pdfmark end 1265 1067 a -2 1234 a SDict begin H.S end -2 1234 a -2 1234 a SDict begin 13 H.A end -2 1234 a -2 1234 a SDict begin [ /View [/XYZ H.V] /Dest (0:90) cvn H.B /DEST pdfmark end -2 1234 a 396 1341 a Fi(Reiner)n(-SCT)21 b(pro)o(vides)d(RPM)j(packages)e(for)h(the)g (follo)n(wing)e(distrib)n(utions:)2703 1341 y SDict begin H.S end 2703 1341 a 2703 1341 a SDict begin 13 H.A end 2703 1341 a 2703 1341 a SDict begin [ /View [/XYZ H.V] /Dest (0:91) cvn H.B /DEST pdfmark end 2703 1341 a -2 1383 a SDict begin H.S end -2 1383 a -2 1383 a SDict begin 13 H.A end -2 1383 a -2 1383 a SDict begin [ /View [/XYZ H.V] /Dest (0:92) cvn H.B /DEST pdfmark end -2 1383 a Black 396 1538 a Fc(\225)p Black 479 1538 a SDict begin H.S end 479 1538 a 479 1538 a SDict begin 13 H.A end 479 1538 a 479 1538 a SDict begin [ /View [/XYZ H.V] /Dest (0:93) cvn H.B /DEST pdfmark end 479 1538 a Fi(Debian)i(unstable)-2 1539 y SDict begin H.S end -2 1539 a -2 1539 a SDict begin 13 H.A end -2 1539 a -2 1539 a SDict begin [ /View [/XYZ H.V] /Dest (0:94) cvn H.B /DEST pdfmark end -2 1539 a Black 396 1688 a Fc(\225)p Black 479 1688 a SDict begin H.S end 479 1688 a 479 1688 a SDict begin 13 H.A end 479 1688 a 479 1688 a SDict begin [ /View [/XYZ H.V] /Dest (0:95) cvn H.B /DEST pdfmark end 479 1688 a Fi(Ub)n(untu)f(6.06)-2 1689 y SDict begin H.S end -2 1689 a -2 1689 a SDict begin 13 H.A end -2 1689 a -2 1689 a SDict begin [ /View [/XYZ H.V] /Dest (0:96) cvn H.B /DEST pdfmark end -2 1689 a Black 396 1837 a Fc(\225)p Black 479 1837 a SDict begin H.S end 479 1837 a 479 1837 a SDict begin 13 H.A end 479 1837 a 479 1837 a SDict begin [ /View [/XYZ H.V] /Dest (0:97) cvn H.B /DEST pdfmark end 479 1837 a Fi(Ub)n(untu)g(6.10)-2 2152 y SDict begin H.S end -2 2152 a -2 2152 a SDict begin 13 H.A end -2 2152 a -2 2152 a SDict begin [ /View [/XYZ H.V] /Dest (0:98) cvn H.B /DEST pdfmark end -2 2152 a 396 2260 a Fi(Just)i(install)g(the)f(package)f(corresponding)e(to)j (your)f(system)h(lik)o(e)h(this:)2499 2260 y SDict begin H.S end 2499 2260 a 2499 2260 a SDict begin 13 H.A end 2499 2260 a 2499 2260 a SDict begin [ /View [/XYZ H.V] /Dest (0:99) cvn H.B /DEST pdfmark end 2499 2260 a 44 w Fb(dpkg)45 b(-i)f()-2 2289 y SDict begin H.S end -2 2289 a -2 2289 a SDict begin 13 H.A end -2 2289 a -2 2289 a SDict begin [ /View [/XYZ H.V] /Dest (0:100) cvn H.B /DEST pdfmark end -2 2289 a 396 2599 a Fd(3.3.)35 b(All)f(other)f(Distrib)n(utions)1881 2599 y SDict begin H.S end 1881 2599 a 1881 2599 a SDict begin 18.72 H.A end 1881 2599 a 1881 2599 a SDict begin [ /View [/XYZ H.V] /Dest (0.3.3.2) cvn H.B /DEST pdfmark end 1881 2599 a -2 2766 a SDict begin H.S end -2 2766 a -2 2766 a SDict begin 13 H.A end -2 2766 a -2 2766 a SDict begin [ /View [/XYZ H.V] /Dest (0:102) cvn H.B /DEST pdfmark end -2 2766 a 396 2873 a Fi(There)20 b(is)h(currently)d(no)i(e)o (xperience)e(with)i(other)g(Linux)f(distrib)n(utions.)g(It)h(should)g (w)o(ork)f(in)h(most)h(cases)g(as)396 2981 y(described)e(abo)o(v)o(e.)e (If)j(you)f(get)g(an)o(y)g(problems)f(with)i(the)g(RPM)g(package,)e (you)h(can)h(try)f(to)h(reb)n(uild)f(it)h(on)f(your)g(system)396 3089 y(with)565 3089 y SDict begin H.S end 565 3089 a 565 3089 a SDict begin 13 H.A end 565 3089 a 565 3089 a SDict begin [ /View [/XYZ H.V] /Dest (0:103) cvn H.B /DEST pdfmark end 565 3089 a 44 w Fb(rpm)45 b(--rebuild)e()65 b Fi(or)2334 3089 y SDict begin H.S end 2334 3089 a 2334 3089 a SDict begin 13 H.A end 2334 3089 a 2334 3089 a SDict begin [ /View [/XYZ H.V] /Dest (0:104) cvn H.B /DEST pdfmark end 2334 3089 a 45 w Fb(rpmbuild)43 b(--rebuild)h()-2 3373 y SDict begin H.S end -2 3373 a -2 3373 a SDict begin 13 H.A end -2 3373 a -2 3373 a SDict begin [ /View [/XYZ H.V] /Dest (0:105) cvn H.B /DEST pdfmark end -2 3373 a 396 3471 a Fi(If)20 b(you)g(w)o(ant)g(to)g(compile)g(the)g(source)f (yourself)g(just)i(go)e(into)h(the)h(main)e(directory)g(of)h(the)g(e)o (xtracted)f(archi)n(v)o(e)g(and)396 3578 y(type)560 3578 y SDict begin H.S end 560 3578 a 560 3578 a SDict begin 13 H.A end 560 3578 a 560 3578 a SDict begin [ /View [/XYZ H.V] /Dest (0:106) cvn H.B /DEST pdfmark end 560 3578 a 45 w Fb(./configure)43 b(make)-2 3763 y SDict begin H.S end -2 3763 a -2 3763 a SDict begin 13 H.A end -2 3763 a -2 3763 a SDict begin [ /View [/XYZ H.V] /Dest (0:107) cvn H.B /DEST pdfmark end -2 3763 a 396 3852 a Fi(The)20 b(include)f(\002le)938 3852 y SDict begin H.S end 938 3852 a 938 3852 a SDict begin 13 H.A end 938 3852 a 938 3852 a SDict begin [ /View [/XYZ H.V] /Dest (0:108) cvn H.B /DEST pdfmark end 938 3852 a Fh(ctapi.h)h Fi(and)f(the)i(resulting)e (library)2089 3852 y SDict begin H.S end 2089 3852 a 2089 3852 a SDict begin 13 H.A end 2089 3852 a 2089 3852 a SDict begin [ /View [/XYZ H.V] /Dest (0:109) cvn H.B /DEST pdfmark end 2089 3852 a Fh(libctapi-cyberjack.so)e Fi(from)i(the)i(directory)396 3960 y SDict begin H.S end 396 3960 a 396 3960 a SDict begin 13 H.A end 396 3960 a 396 3960 a SDict begin [ /View [/XYZ H.V] /Dest (0:110) cvn H.B /DEST pdfmark end 396 3960 a Fh(ctapi/)f Fi(can)g(then)g(be)g (copied)f(to)h(con)m(v)o(enient)e(places.)i(F)o(or)2177 3960 y SDict begin H.S end 2177 3960 a 2177 3960 a SDict begin 13 H.A end 2177 3960 a 2177 3960 a SDict begin [ /View [/XYZ H.V] /Dest (0:111) cvn H.B /DEST pdfmark end 2177 3960 a Fh(ctapi.h)f Fi(this)i(w)o(ould)e(normally)g(be)3299 3960 y SDict begin H.S end 3299 3960 a 3299 3960 a SDict begin 13 H.A end 3299 3960 a 3299 3960 a SDict begin [ /View [/XYZ H.V] /Dest (0:112) cvn H.B /DEST pdfmark end 3299 3960 a Fh(/usr/include)396 4068 y Fi(and)h(for)f(the)i(library) 1019 4068 y SDict begin H.S end 1019 4068 a 1019 4068 a SDict begin 13 H.A end 1019 4068 a 1019 4068 a SDict begin [ /View [/XYZ H.V] /Dest (0:113) cvn H.B /DEST pdfmark end 1019 4068 a Fh(/usr/lib)p Fi(.)e(The)h(command)1917 4068 y SDict begin H.S end 1917 4068 a 1917 4068 a SDict begin 13 H.A end 1917 4068 a 1917 4068 a SDict begin [ /View [/XYZ H.V] /Dest (0:114) cvn H.B /DEST pdfmark end 1917 4068 a Fe(mak)o(e)h(install)f Fi(can)g(do)g(that)g(for)g(you.)-2 4252 y SDict begin H.S end -2 4252 a -2 4252 a SDict begin 13 H.A end -2 4252 a -2 4252 a SDict begin [ /View [/XYZ H.V] /Dest (0:115) cvn H.B /DEST pdfmark end -2 4252 a 396 4342 a Fi(The)g(name)g(scheme)1016 4342 y SDict begin H.S end 1016 4342 a 1016 4342 a SDict begin 13 H.A end 1016 4342 a 1016 4342 a SDict begin [ /View [/XYZ H.V] /Dest (0:116) cvn H.B /DEST pdfmark end 1016 4342 a Fh(libctapi-cyberjack.)1871 4355 y(*)1934 4342 y Fi(has)g(been)g (choosen)f(to)h(mak)o(e)g(it)h(possible)e(to)i(install)g(more)e(than) 396 4450 y(one)h(CT)-8 b(-API)21 b(library)e(on)g(your)g(system.)-2 4562 y SDict begin H.S end -2 4562 a -2 4562 a SDict begin 13 H.A end -2 4562 a -2 4562 a SDict begin [ /View [/XYZ H.V] /Dest (0:117) cvn H.B /DEST pdfmark end -2 4562 a Black 3842 5569 a Fg(3)p Black eop end %%Page: 4 4 TeXDict begin 4 3 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.4) cvn H.B /DEST pdfmark end -2 -102 a Black -2 -201 a SDict begin H.S end -2 -201 a -2 -201 a SDict begin 13 H.A end -2 -201 a -2 -201 a SDict begin [ /View [/XYZ H.V] /Dest (0:153) cvn H.B /DEST pdfmark end -2 -201 a 1654 -132 a Fg(REINER)20 b(SCT)h(cyberJ)m(ac)n(k)f(pinpad/e-com)d(USB)j(c)o (hipcar)m(d)e(r)m(eader)i(driver)p Black -2 94 a Fk(4.)39 b(Updating)f(the)h(Firmware)1714 94 y SDict begin H.S end 1714 94 a 1714 94 a SDict begin 22.464 H.A end 1714 94 a 1714 94 a SDict begin [ /View [/XYZ H.V] /Dest (0.4.1) cvn H.B /DEST pdfmark end 1714 94 a -2 292 a SDict begin H.S end -2 292 a -2 292 a SDict begin 13 H.A end -2 292 a -2 292 a SDict begin [ /View [/XYZ H.V] /Dest (0:119) cvn H.B /DEST pdfmark end -2 292 a 396 368 a Fi(The)20 b(latest)h(dri)n(v)o(er)e(contains)g(the)h(tool)g("cj\003ash")h(which)e (can)h(be)g(used)g(to)h(update)e(the)h(\002rmw)o(are)g(of)g(the)g (reader)-5 b(.)396 642 y(The)20 b(current)f(v)o(ersion)g(of)h(this)h (tool)e(only)h(supports)f(\003ashing)h(ne)n(wer)f(Cyberjack)g(de)n (vices)h(\(USB)h(product)d(id)i(0x400\).)-2 826 y SDict begin H.S end -2 826 a -2 826 a SDict begin 13 H.A end -2 826 a -2 826 a SDict begin [ /View [/XYZ H.V] /Dest (0:121) cvn H.B /DEST pdfmark end -2 826 a 396 916 a Fi(T)-7 b(o)21 b(update)e(the)h(\002rmw)o(are)g(just)g(use)h(the)f(follo)n (wing)e(command:)2294 916 y SDict begin H.S end 2294 916 a 2294 916 a SDict begin 13 H.A end 2294 916 a 2294 916 a SDict begin [ /View [/XYZ H.V] /Dest (0:122) cvn H.B /DEST pdfmark end 2294 916 a 45 w Fb(cjflash)43 b(1)i(Kernel_V30_07.bin) 396 1024 y(Kernel_V30_07.bin.ecoma.sgn)-2 1200 y SDict begin H.S end -2 1200 a -2 1200 a SDict begin 13 H.A end -2 1200 a -2 1200 a SDict begin [ /View [/XYZ H.V] /Dest (0:123) cvn H.B /DEST pdfmark end -2 1200 a 396 1298 a Fi(The)20 b(\002rst)h(ar)o(gument)d(is)j(the)f(number)f(of)h(the)g(de)n (vice)f(\(starting)h(with)g("1",)g(the)g(second)f(reader)g(w)o(ould)h (be)g("2"\).)f(The)396 1406 y(ne)o(xt)h(ar)o(gument)e(is)j(the)f(name)f (of)h(the)h(\002le)f(containing)f(the)h(ne)n(w)g(\002rmw)o(are,)f (follo)n(wed)g(by)h(the)g(name)g(of)g(the)g(\002le)396 1514 y(containing)f(the)h(signature)f(of)h(the)g(ne)n(w)g(\002rmw)o (are.)-2 1698 y SDict begin H.S end -2 1698 a -2 1698 a SDict begin 13 H.A end -2 1698 a -2 1698 a SDict begin [ /View [/XYZ H.V] /Dest (0:124) cvn H.B /DEST pdfmark end -2 1698 a 396 1788 a Fi(After)g(this)h(command)d(has)j(been)e(issued) h(the)h(reader)e(asks)h(you)g(to)g(con\002rm)f(the)h(operation)f (\(press)h("OK")g(on)g(the)396 1896 y(reader')-5 b(s)20 b(k)o(e)o(ypad)e(to)j(con\002rm)e(or)h("CANCEL")g(to)g(abort\).)-2 2080 y SDict begin H.S end -2 2080 a -2 2080 a SDict begin 13 H.A end -2 2080 a -2 2080 a SDict begin [ /View [/XYZ H.V] /Dest (0:125) cvn H.B /DEST pdfmark end -2 2080 a 396 2170 a Fi(If)g(the)h(reader)e(hangs)g(after)h(you)f(pressed)h ("OK")g(then)g(it)h(has)f(an)h(old)e(\002rmw)o(are.)h(In)g(that)g(case) h(you')o(ll)e(ha)n(v)o(e)g(to)i(use)f(a)396 2278 y(slightly)g (modi\002ed)f(v)o(ersion)g(of)h(the)g(command)e(abo)o(v)o(e:)2046 2278 y SDict begin H.S end 2046 2278 a 2046 2278 a SDict begin 13 H.A end 2046 2278 a 2046 2278 a SDict begin [ /View [/XYZ H.V] /Dest (0:126) cvn H.B /DEST pdfmark end 2046 2278 a 45 w Fb(CJ_USB_MODE=1)42 b(cjflash)i(1)396 2386 y(Kernel_V30_07.bin)e(Kernel_V30_07.bin.ecoma.sgn)-2 2562 y SDict begin H.S end -2 2562 a -2 2562 a SDict begin 13 H.A end -2 2562 a -2 2562 a SDict begin [ /View [/XYZ H.V] /Dest (0:127) cvn H.B /DEST pdfmark end -2 2562 a 396 2659 a Fi(This)21 b(sets)g(the)f(en)m(vironment)d(v)n(ariable)i ("CJ_USB_MODE")h(to)h(the)f(v)n(alue)f("1")h(prior)g(to)g(e)o(x)o (ecuting)e(the)i(command.)396 2767 y(This)h(tells)g(the)f(dri)n(v)o(er) f(\(which)g(is)i(used)f(by)g(cj\003ash\))g(that)g(another)f(approach)f (to)i(the)h(reader)e(is)i(needed.)-2 2951 y SDict begin H.S end -2 2951 a -2 2951 a SDict begin 13 H.A end -2 2951 a -2 2951 a SDict begin [ /View [/XYZ H.V] /Dest (0:128) cvn H.B /DEST pdfmark end -2 2951 a 396 3041 a Fi(Please)g(only)f (set)g(that)h(v)n(ariable)e(if)h(the)h(tool)e(doesn')o(t)g(w)o(ork)h (otherwise!)-2 3070 y SDict begin H.S end -2 3070 a -2 3070 a SDict begin 13 H.A end -2 3070 a -2 3070 a SDict begin [ /View [/XYZ H.V] /Dest (0:129) cvn H.B /DEST pdfmark end -2 3070 a 359 x Fk(5.)39 b(Suppor)s(t)712 3429 y SDict begin H.S end 712 3429 a 712 3429 a SDict begin 22.464 H.A end 712 3429 a 712 3429 a SDict begin [ /View [/XYZ H.V] /Dest (0.5.1) cvn H.B /DEST pdfmark end 712 3429 a -2 3625 a SDict begin H.S end -2 3625 a -2 3625 a SDict begin 13 H.A end -2 3625 a -2 3625 a SDict begin [ /View [/XYZ H.V] /Dest (0:131) cvn H.B /DEST pdfmark end -2 3625 a 396 3703 a Fi(Support)19 b(of)h(this)h(dri)n(v)o(er)d(is)j(pro)o (vided)d(by)i(REINER)g(SCT)-6 b(.)21 b(E-mail:)f(support@reiner)n (-sct.com)d(Postal)j(address:)396 3811 y(Schw)o(abacher)f(Str)-5 b(.)21 b(34,)e(90762)f(F\374rth,)i(GERMANY)-2 3989 y SDict begin H.S end -2 3989 a -2 3989 a SDict begin 13 H.A end -2 3989 a -2 3989 a SDict begin [ /View [/XYZ H.V] /Dest (0:132) cvn H.B /DEST pdfmark end -2 3989 a 396 4085 a Fi(In)g(your)f(problem)g(description,)f(please)i(include)f(as)i (f)o(ar)f(as)h(possible:)-2 4103 y SDict begin H.S end -2 4103 a -2 4103 a SDict begin 13 H.A end -2 4103 a -2 4103 a SDict begin [ /View [/XYZ H.V] /Dest (0:133) cvn H.B /DEST pdfmark end -2 4103 a -2 4113 a SDict begin H.S end -2 4113 a -2 4113 a SDict begin 13 H.A end -2 4113 a -2 4113 a SDict begin [ /View [/XYZ H.V] /Dest (0:134) cvn H.B /DEST pdfmark end -2 4113 a Black 396 4255 a Fc(\225)p Black 479 4255 a SDict begin H.S end 479 4255 a 479 4255 a SDict begin 13 H.A end 479 4255 a 479 4255 a SDict begin [ /View [/XYZ H.V] /Dest (0:135) cvn H.B /DEST pdfmark end 479 4255 a Fi(An)o(y)f(error)f(messages)h(you)f(get.) -2 4273 y SDict begin H.S end -2 4273 a -2 4273 a SDict begin 13 H.A end -2 4273 a -2 4273 a SDict begin [ /View [/XYZ H.V] /Dest (0:136) cvn H.B /DEST pdfmark end -2 4273 a Black 396 4404 a Fc(\225)p Black 479 4404 a SDict begin H.S end 479 4404 a 479 4404 a SDict begin 13 H.A end 479 4404 a 479 4404 a SDict begin [ /View [/XYZ H.V] /Dest (0:137) cvn H.B /DEST pdfmark end 479 4404 a Fi(Which)h(Linux)f (distrib)n(ution)g(you)h(use)g(including)f(v)o(ersion,)f(e.g.)i(SuSE)g (10.1,)f(Debian)h(3.0r1)e(testing,)i(...)-2 4422 y SDict begin H.S end -2 4422 a -2 4422 a SDict begin 13 H.A end -2 4422 a -2 4422 a SDict begin [ /View [/XYZ H.V] /Dest (0:138) cvn H.B /DEST pdfmark end -2 4422 a Black 396 4554 a Fc(\225)p Black 479 4554 a SDict begin H.S end 479 4554 a 479 4554 a SDict begin 13 H.A end 479 4554 a 479 4554 a SDict begin [ /View [/XYZ H.V] /Dest (0:139) cvn H.B /DEST pdfmark end 479 4554 a Fi(CPU)i(type,)d(e.g.)h(on)f (Linux)h(the)g(content)f(of)h(the)g(\002le)2036 4554 y SDict begin H.S end 2036 4554 a 2036 4554 a SDict begin 13 H.A end 2036 4554 a 2036 4554 a SDict begin [ /View [/XYZ H.V] /Dest (0:140) cvn H.B /DEST pdfmark end 2036 4554 a Fh(/proc/cpuinfo)p Fi(.)-2 4572 y SDict begin H.S end -2 4572 a -2 4572 a SDict begin 13 H.A end -2 4572 a -2 4572 a SDict begin [ /View [/XYZ H.V] /Dest (0:141) cvn H.B /DEST pdfmark end -2 4572 a Black 396 4703 a Fc(\225)p Black 479 4703 a SDict begin H.S end 479 4703 a 479 4703 a SDict begin 13 H.A end 479 4703 a 479 4703 a SDict begin [ /View [/XYZ H.V] /Dest (0:142) cvn H.B /DEST pdfmark end 479 4703 a Fi(K)n(ernel)g(v)o(ersion,)f(e.g.)g(on)h (Linux)f(the)h(output)f(from)g(the)i(command)2480 4703 y SDict begin H.S end 2480 4703 a 2480 4703 a SDict begin 13 H.A end 2480 4703 a 2480 4703 a SDict begin [ /View [/XYZ H.V] /Dest (0:143) cvn H.B /DEST pdfmark end 2480 4703 a Fe(uname)f(-r)p Fi(.)-2 4721 y SDict begin H.S end -2 4721 a -2 4721 a SDict begin 13 H.A end -2 4721 a -2 4721 a SDict begin [ /View [/XYZ H.V] /Dest (0:144) cvn H.B /DEST pdfmark end -2 4721 a Black 396 4853 a Fc(\225)p Black 479 4853 a SDict begin H.S end 479 4853 a 479 4853 a SDict begin 13 H.A end 479 4853 a 479 4853 a SDict begin [ /View [/XYZ H.V] /Dest (0:145) cvn H.B /DEST pdfmark end 479 4853 a Fi(List)h(of)f(attached)g(USB)h(de)n(vices,)e(e.g.)h (on)g(Linux)f(the)h(output)f(of)h(the)2518 4853 y SDict begin H.S end 2518 4853 a 2518 4853 a SDict begin 13 H.A end 2518 4853 a 2518 4853 a SDict begin [ /View [/XYZ H.V] /Dest (0:146) cvn H.B /DEST pdfmark end 2518 4853 a Fe(lsusb)i Fi(command.)-2 4912 y SDict begin H.S end -2 4912 a -2 4912 a SDict begin 13 H.A end -2 4912 a -2 4912 a SDict begin [ /View [/XYZ H.V] /Dest (0:147) cvn H.B /DEST pdfmark end -2 4912 a Black 3842 5569 a Fg(4)p Black eop end %%Page: 5 5 TeXDict begin 5 4 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.5) cvn H.B /DEST pdfmark end -2 -102 a Black 1654 -132 a Fg(REINER)20 b(SCT)h(cyberJ)m(ac)n(k)f(pinpad/e-com)d(USB)j(c)o (hipcar)m(d)e(r)m(eader)i(driver)p Black -2 94 a Fk(6.)39 b(T)-11 b(r)m(oub)o(leshooting)1278 94 y SDict begin H.S end 1278 94 a 1278 94 a SDict begin 22.464 H.A end 1278 94 a 1278 94 a SDict begin [ /View [/XYZ H.V] /Dest (0.6.1) cvn H.B /DEST pdfmark end 1278 94 a -2 126 a SDict begin H.S end -2 126 a -2 126 a SDict begin 13 H.A end -2 126 a -2 126 a SDict begin [ /View [/XYZ H.V] /Dest (0:149) cvn H.B /DEST pdfmark end -2 126 a 396 422 a Fd(6.1.)35 b(Ho)n(w)f(to)f(c)o(hec)n(k)h(the)g(kernel)g(ver)n(sion)2447 422 y SDict begin H.S end 2447 422 a 2447 422 a SDict begin 18.72 H.A end 2447 422 a 2447 422 a SDict begin [ /View [/XYZ H.V] /Dest (0.6.4.2) cvn H.B /DEST pdfmark end 2447 422 a -2 590 a SDict begin H.S end -2 590 a -2 590 a SDict begin 13 H.A end -2 590 a -2 590 a SDict begin [ /View [/XYZ H.V] /Dest (0:151) cvn H.B /DEST pdfmark end -2 590 a 396 696 a Fi(Y)-9 b(ou)20 b(can)g(determine)f(the)h(v)o(ersion)f (of)h(the)g(currently)e(running)g(k)o(ernel)i(by)g(e)o(x)o(ecuting)2910 696 y SDict begin H.S end 2910 696 a 2910 696 a SDict begin 13 H.A end 2910 696 a 2910 696 a SDict begin [ /View [/XYZ H.V] /Dest (0:152) cvn H.B /DEST pdfmark end 2910 696 a Fb(uname)44 b(-r)396 970 y Fi(The)20 b(v)o(ersion)f(of)h(the)g (installed)g(k)o(ernel)g(sources,)f(which)h(are)g(normally)e(located)i (belo)n(w)g Fh(/usr/src)p Fi(,)f(can)h(be)396 1078 y(determined)f(by)g (looking)g(at)h(the)h(source)e(directory)g(name)g(or)h(by)g(looking)e (into)i(the)g(main)g(Mak)o(e\002le,)g(where)g(it)h(is)g(in)396 1186 y(the)f(\002rst)h(three)f(lines.)-2 1197 y SDict begin H.S end -2 1197 a -2 1197 a SDict begin 13 H.A end -2 1197 a -2 1197 a SDict begin [ /View [/XYZ H.V] /Dest (0:155) cvn H.B /DEST pdfmark end -2 1197 a 396 1524 a Fd(6.2.)35 b(Lar)n(g)q(e)f(n)o(umber)g(of)f(reader)n(s)2033 1524 y SDict begin H.S end 2033 1524 a 2033 1524 a SDict begin 18.72 H.A end 2033 1524 a 2033 1524 a SDict begin [ /View [/XYZ H.V] /Dest (0.6.5.2) cvn H.B /DEST pdfmark end 2033 1524 a -2 1717 a SDict begin H.S end -2 1717 a -2 1717 a SDict begin 13 H.A end -2 1717 a -2 1717 a SDict begin [ /View [/XYZ H.V] /Dest (0:157) cvn H.B /DEST pdfmark end -2 1717 a 396 1798 a Fi(The)20 b(c)o(yberJack)f(has)h(been)f (tested)i(with)f(up)g(to)g(52)g(de)n(vices)g(attached)f(simultaneously) g(to)h(a)h(single)f(PC)h(via)f(7-port)396 1906 y(hubs.)g(Some)f(notes)h (re)o(garding)e(this)i(con\002guration:)-2 1924 y SDict begin H.S end -2 1924 a -2 1924 a SDict begin 13 H.A end -2 1924 a -2 1924 a SDict begin [ /View [/XYZ H.V] /Dest (0:158) cvn H.B /DEST pdfmark end -2 1924 a -2 1934 a SDict begin H.S end -2 1934 a -2 1934 a SDict begin 13 H.A end -2 1934 a -2 1934 a SDict begin [ /View [/XYZ H.V] /Dest (0:159) cvn H.B /DEST pdfmark end -2 1934 a Black 396 2077 a Fc(\225)p Black 479 2077 a SDict begin H.S end 479 2077 a 479 2077 a SDict begin 13 H.A end 479 2077 a 479 2077 a SDict begin [ /View [/XYZ H.V] /Dest (0:160) cvn H.B /DEST pdfmark end 479 2077 a Fi(Linux)f(at)i(least)g(up)f (to)g(2.4.19)e(does)i(result)h(in)f(a)h(k)o(ernel)e(panic,)g(when)h (too)g(man)o(y)f(de)n(vices)g(are)h(attached.)g(Kno)n(wn)479 2185 y(to)h(w)o(ork)e(is)i(2.4.20.)-2 2186 y SDict begin H.S end -2 2186 a -2 2186 a SDict begin 13 H.A end -2 2186 a -2 2186 a SDict begin [ /View [/XYZ H.V] /Dest (0:161) cvn H.B /DEST pdfmark end -2 2186 a Black 396 2334 a Fc(\225)p Black 479 2334 a SDict begin H.S end 479 2334 a 479 2334 a SDict begin 13 H.A end 479 2334 a 479 2334 a SDict begin [ /View [/XYZ H.V] /Dest (0:162) cvn H.B /DEST pdfmark end 479 2334 a Fi(Sometimes)f(timeouts)g(occur)f (resulting)g(in)i(a)f(shift)h(of)f(the)g(T=1)g(blocks)f(resulting)g(in) i(bad)e(performance)f(and)479 2442 y(sooner)h(or)h(later)h(a)f(f)o (ailure)g(of)g(communcation.)d(The)j(problem)e(seems)j(to)f(lie)h(some) n(where)e(in)h(the)g(usb-uhci)f(part)479 2550 y(and)h(v)n(anishes)g (with)g(a)h(f)o(aster)f(PC.)h(\(T)m(ry)e(>2GHz\))-2 2568 y SDict begin H.S end -2 2568 a -2 2568 a SDict begin 13 H.A end -2 2568 a -2 2568 a SDict begin [ /View [/XYZ H.V] /Dest (0:163) cvn H.B /DEST pdfmark end -2 2568 a Black 396 2699 a Fc(\225)p Black 479 2699 a SDict begin H.S end 479 2699 a 479 2699 a SDict begin 13 H.A end 479 2699 a 479 2699 a SDict begin [ /View [/XYZ H.V] /Dest (0:164) cvn H.B /DEST pdfmark end 479 2699 a Fi(If)h(there)g(are)g(still)i (some)e(problems)e(try)i(other)g(hubs)f(and)h(other)f(USB)i(host)g (controller)d(cards.)i(There)f(seems)i(to)f(be)479 2807 y(a)h(great)f(dif)n(ference)e(in)i(quality)g(in)g(these)g(parts.)-2 2991 y SDict begin H.S end -2 2991 a -2 2991 a SDict begin 13 H.A end -2 2991 a -2 2991 a SDict begin [ /View [/XYZ H.V] /Dest (0:165) cvn H.B /DEST pdfmark end -2 2991 a 396 3081 a Fi(The)g(performance)d(does)j(not)g(de)o(grade,)e(when)i (going)f(from)g(1)h(up)g(to)g(50)g(readers,)f(e)n(v)o(en)g(when)h (doing)f(constant)g(I/O)396 3189 y(with)i(cards.)e(\(Select)i(and)e (Read)i(Binary\))-2 3217 y SDict begin H.S end -2 3217 a -2 3217 a SDict begin 13 H.A end -2 3217 a -2 3217 a SDict begin [ /View [/XYZ H.V] /Dest (0:166) cvn H.B /DEST pdfmark end -2 3217 a 396 3528 a Fd(6.3.)35 b(Hotplug)o(ging)1331 3528 y SDict begin H.S end 1331 3528 a 1331 3528 a SDict begin 18.72 H.A end 1331 3528 a 1331 3528 a SDict begin [ /View [/XYZ H.V] /Dest (0.6.6.2) cvn H.B /DEST pdfmark end 1331 3528 a -2 3720 a SDict begin H.S end -2 3720 a -2 3720 a SDict begin 13 H.A end -2 3720 a -2 3720 a SDict begin [ /View [/XYZ H.V] /Dest (0:168) cvn H.B /DEST pdfmark end -2 3720 a 396 3802 a Fi(Linux)19 b(supports)g(hotplugging)f (with)i(USB)h(de)n(vices.)f(This)g(is)h(implemented)d(via)j(the)f(ude)n (v-system.)-2 3986 y SDict begin H.S end -2 3986 a -2 3986 a SDict begin 13 H.A end -2 3986 a -2 3986 a SDict begin [ /View [/XYZ H.V] /Dest (0:169) cvn H.B /DEST pdfmark end -2 3986 a 396 4076 a Fi(Y)-9 b(ou)20 b(can)g(\002nd)g(some)g (ude)n(v)f(scripts)h(for)g(the)g(REINER)h(SCT)g(c)o(yberjack)d(reader)h (f)o(amily)h(in)g(the)3198 4076 y SDict begin H.S end 3198 4076 a 3198 4076 a SDict begin 13 H.A end 3198 4076 a 3198 4076 a SDict begin [ /View [/XYZ H.V] /Dest (0:170) cvn H.B /DEST pdfmark end 3198 4076 a Fh(etc/udev)g Fi(directory)396 4183 y(of)g(this)h(archi)n(v)o(e.)-2 4350 y SDict begin H.S end -2 4350 a -2 4350 a SDict begin 13 H.A end -2 4350 a -2 4350 a SDict begin [ /View [/XYZ H.V] /Dest (0:171) cvn H.B /DEST pdfmark end -2 4350 a 396 4457 a Fi(Since)e(ude)n (v-related)d(scripts)k(are)e(highly)g(distrib)n(ution)f(speci\002c,)i (REINER)g(SCT)h(can)f(only)f(pro)o(vide)e(limited)j(support)396 4565 y(in)i(this)f(area.)g(The)g(pro)o(vided)e(RPM)j(and)e(Debian)h (packages)f(install)i(those)f(scripts)g(to)g(their)g(respecti)n(v)o(e)f (places.)-2 4594 y SDict begin H.S end -2 4594 a -2 4594 a SDict begin 13 H.A end -2 4594 a -2 4594 a SDict begin [ /View [/XYZ H.V] /Dest (0:172) cvn H.B /DEST pdfmark end -2 4594 a Black 3842 5569 a Fg(5)p Black eop end %%Page: 6 6 TeXDict begin 6 5 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.6) cvn H.B /DEST pdfmark end -2 -102 a Black -2 -201 a SDict begin H.S end -2 -201 a -2 -201 a SDict begin 13 H.A end -2 -201 a -2 -201 a SDict begin [ /View [/XYZ H.V] /Dest (0:195) cvn H.B /DEST pdfmark end -2 -201 a 1654 -132 a Fg(REINER)20 b(SCT)h(cyberJ)m(ac)n(k)f(pinpad/e-com)d(USB)j(c)o (hipcar)m(d)e(r)m(eader)i(driver)p Black 396 77 a Fd(6.4.)35 b(Log)o(ging)1099 77 y SDict begin H.S end 1099 77 a 1099 77 a SDict begin 18.72 H.A end 1099 77 a 1099 77 a SDict begin [ /View [/XYZ H.V] /Dest (0.6.7.2) cvn H.B /DEST pdfmark end 1099 77 a -2 269 a SDict begin H.S end -2 269 a -2 269 a SDict begin 13 H.A end -2 269 a -2 269 a SDict begin [ /View [/XYZ H.V] /Dest (0:174) cvn H.B /DEST pdfmark end -2 269 a 396 351 a Fi(The)20 b(c)o(yberjack)e(CT)-8 b(-API)21 b(library)e(supports)g(logging)g(of)h(the)g(communication)d (with)j(the)h(reader)-5 b(.)19 b(This)h(is)h(done,)e(if)i(at)396 459 y(the)f(moment)811 459 y SDict begin H.S end 811 459 a 811 459 a SDict begin 13 H.A end 811 459 a 811 459 a SDict begin [ /View [/XYZ H.V] /Dest (0:175) cvn H.B /DEST pdfmark end 811 459 a Fh(CT_init)g Fi(is)h(called)f(the)g(en)m (vironment)d(v)n(ariable)2286 459 y SDict begin H.S end 2286 459 a 2286 459 a SDict begin 13 H.A end 2286 459 a 2286 459 a SDict begin [ /View [/XYZ H.V] /Dest (0:176) cvn H.B /DEST pdfmark end 2286 459 a Fi(CJDEB)o(UG)22 b(e)o(xists.)e(The) g(def)o(ault)g(output)f(\002le)i(is)396 566 y SDict begin H.S end 396 566 a 396 566 a SDict begin 13 H.A end 396 566 a 396 566 a SDict begin [ /View [/XYZ H.V] /Dest (0:177) cvn H.B /DEST pdfmark end 396 566 a Fh(/tmp/cj.log)p Fi(.)e(The)h(logging)e(is)j(done)f(on)f(T=1)h(le)n(v)o(el)g(and)g(each) f(entry)h(be)o(gins)f(with)h(a)h(time)f(stamp.)-2 678 y SDict begin H.S end -2 678 a -2 678 a SDict begin 13 H.A end -2 678 a -2 678 a SDict begin [ /View [/XYZ H.V] /Dest (0:178) cvn H.B /DEST pdfmark end -2 678 a 359 x Fk(7.)39 b(Kno)n(wn)f(Issues)1121 1037 y SDict begin H.S end 1121 1037 a 1121 1037 a SDict begin 22.464 H.A end 1121 1037 a 1121 1037 a SDict begin [ /View [/XYZ H.V] /Dest (0.7.1) cvn H.B /DEST pdfmark end 1121 1037 a -2 1205 a SDict begin H.S end -2 1205 a -2 1205 a SDict begin 13 H.A end -2 1205 a -2 1205 a SDict begin [ /View [/XYZ H.V] /Dest (0:180) cvn H.B /DEST pdfmark end -2 1205 a 396 1311 a Fi(Unfortunately)-5 b(,)17 b(all)k(Linux)e(k)o(ernel)g(v)o (ersions,)g(at)i(least)g(up)f(to)g(\(including\))e(2.6.12-rc5)f(ha)n(v) o(e)i(a)i(se)n(v)o(ere)e(b)n(ug)h(in)g(the)396 1419 y(handling)e(of)i (asynchronous)d(URB')-5 b(s)22 b(\(USB)f(Request)f(Blocks\))g(in)g (userspace.)f(This)h(b)n(ug)f(is)i(totally)f(unrelated)f(to)h(the)396 1527 y(REINER-SCT)h(c)o(yberjack)d(dri)n(v)o(er)m(,)g(b)n(ut)i(it)h (will)g(sho)n(w)f(as)h(soon)f(as)g(the)h(PC/SC)h(daemon)c(terminates)i (\(and)f(you')l(re)396 1635 y(using)h(a)h(pinpad_a)d(\(0x300\))f (reader)-5 b(.)20 b(The)f(b)n(ug)h(can)g(crash)g(your)f(k)o(ernel)g (:\(.)-2 1819 y SDict begin H.S end -2 1819 a -2 1819 a SDict begin 13 H.A end -2 1819 a -2 1819 a SDict begin [ /View [/XYZ H.V] /Dest (0:181) cvn H.B /DEST pdfmark end -2 1819 a 396 1909 a Fi(A)i(b)n(ug\002x)e(has)i(been)e(de)n(v)o (eloped)f(\(b)n(ut)i(not)g(yet)g(included)e(into)i(the)h(mainline)e(k)o (ernel\).)g(It)h(is)h(a)n(v)n(ailable)f(as)h(k)o(ernel)396 2017 y(patch)f(in)g('patches/usb-async_urb-de)n(vio)o(-o)o(op)o (s-\002x.p)o(atch)o('.)-2 2201 y SDict begin H.S end -2 2201 a -2 2201 a SDict begin 13 H.A end -2 2201 a -2 2201 a SDict begin [ /View [/XYZ H.V] /Dest (0:182) cvn H.B /DEST pdfmark end -2 2201 a 396 2291 a Fi(It)h(is)g(strongly)e (recommended)e(to)j(apply)f(this)i(k)o(ernel)f(patch)f(if)i(you)e (intend)g(to)i(use)f(the)g(PC/SC)i(dri)n(v)o(er)-5 b(.)-2 2319 y SDict begin H.S end -2 2319 a -2 2319 a SDict begin 13 H.A end -2 2319 a -2 2319 a SDict begin [ /View [/XYZ H.V] /Dest (0:183) cvn H.B /DEST pdfmark end -2 2319 a 359 x Fk(8.)39 b(Ad)o(ditional)e(Inf)m(ormation)1686 2678 y SDict begin H.S end 1686 2678 a 1686 2678 a SDict begin 22.464 H.A end 1686 2678 a 1686 2678 a SDict begin [ /View [/XYZ H.V] /Dest (0.8.1) cvn H.B /DEST pdfmark end 1686 2678 a -2 2680 a SDict begin H.S end -2 2680 a -2 2680 a SDict begin 13 H.A end -2 2680 a -2 2680 a SDict begin [ /View [/XYZ H.V] /Dest (0:185) cvn H.B /DEST pdfmark end -2 2680 a 396 3006 a Fd(8.1.)e(Beeping)g(at)e(K)n(e)n(ypress) 1805 3006 y SDict begin H.S end 1805 3006 a 1805 3006 a SDict begin 18.72 H.A end 1805 3006 a 1805 3006 a SDict begin [ /View [/XYZ H.V] /Dest (0.8.8.2) cvn H.B /DEST pdfmark end 1805 3006 a -2 3199 a SDict begin H.S end -2 3199 a -2 3199 a SDict begin 13 H.A end -2 3199 a -2 3199 a SDict begin [ /View [/XYZ H.V] /Dest (0:187) cvn H.B /DEST pdfmark end -2 3199 a 396 3280 a Fi(Starting)20 b(with)g(V)-9 b(ersion)19 b(2.0.5)f(of)i(ctapi-c)o(yberjack,)c(the)k(host)g(PC)h (will)f(emit)g(a)h(beep)e(sound)f(at)j(e)n(v)o(ery)d(k)o(e)o(y)h (press.)h(The)396 3388 y(dri)n(v)o(er)f(tries)i(to)f(detect)g(the)g (best)h(mechanism)e(for)g(beeping)g(by)h(itself,)g(i.e.)g(xBell)h(when) f(you)f(run)g(under)g(X11,)h(or)396 3496 y(sending)f(a)i(BEL)f(ASCII)h (character)e(to)h(STDOUT)h(when)e(running)f(as)j(a)g(console)e (application.)-2 3680 y SDict begin H.S end -2 3680 a -2 3680 a SDict begin 13 H.A end -2 3680 a -2 3680 a SDict begin [ /View [/XYZ H.V] /Dest (0:188) cvn H.B /DEST pdfmark end -2 3680 a 396 3770 a Fi(If)h(you)g(w)o(ant)g(to)g(disable)g (the)g(beep,)g(you)f(can)h(set)h(the)1977 3770 y SDict begin H.S end 1977 3770 a 1977 3770 a SDict begin 13 H.A end 1977 3770 a 1977 3770 a SDict begin [ /View [/XYZ H.V] /Dest (0:189) cvn H.B /DEST pdfmark end 1977 3770 a Fh(CJCTAPI_NO_KEYBEEP)d Fi(en)m(vironment)f(v)n(ariable)i(before)396 3878 y(starting)h(your)f(application.)-2 4062 y SDict begin H.S end -2 4062 a -2 4062 a SDict begin 13 H.A end -2 4062 a -2 4062 a SDict begin [ /View [/XYZ H.V] /Dest (0:190) cvn H.B /DEST pdfmark end -2 4062 a 396 4152 a Fi(Depending)f(on)i(your)f(shell,)h(this)h(can)f(be)g(achie)n(v)o(ed)f (with)h(a)h(command)d(lik)o(e)2663 4152 y SDict begin H.S end 2663 4152 a 2663 4152 a SDict begin 13 H.A end 2663 4152 a 2663 4152 a SDict begin [ /View [/XYZ H.V] /Dest (0:191) cvn H.B /DEST pdfmark end 2663 4152 a Fe(export)396 4260 y(CJCT)-7 b(API_NO_KEYPRESS)p Fi(.)-2 4281 y SDict begin H.S end -2 4281 a -2 4281 a SDict begin 13 H.A end -2 4281 a -2 4281 a SDict begin [ /View [/XYZ H.V] /Dest (0:192) cvn H.B /DEST pdfmark end -2 4281 a 396 4598 a Fd(8.2.)35 b(Mandator)q(y)f(loc)n(king)1683 4598 y SDict begin H.S end 1683 4598 a 1683 4598 a SDict begin 18.72 H.A end 1683 4598 a 1683 4598 a SDict begin [ /View [/XYZ H.V] /Dest (0.8.9.2) cvn H.B /DEST pdfmark end 1683 4598 a -2 4791 a SDict begin H.S end -2 4791 a -2 4791 a SDict begin 13 H.A end -2 4791 a -2 4791 a SDict begin [ /View [/XYZ H.V] /Dest (0:194) cvn H.B /DEST pdfmark end -2 4791 a 396 4872 a Fi(Normal)20 b(locking)e(is)k(only)d(advisory)-5 b(,)18 b(i.e.)i(the)g(programs)f(must)h(be)g(cooperati)n(v)o(e)e(to)i (do)g(the)g(locking)f(properly)-5 b(.)17 b(A)396 4980 y(non-cooperati)n(v)o(e)f(program)i(can)h(ignore)g(a)h(lock)g(and)f (access)i(the)f(reader)-5 b(.)19 b(Mandatory)f(locking,)g(which)h (stops)h(e)n(v)o(en)f(a)p Black 3840 5569 a Fg(6)p Black eop end %%Page: 7 7 TeXDict begin 7 6 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.7) cvn H.B /DEST pdfmark end -2 -102 a Black 1654 -132 a Fg(REINER)20 b(SCT)h(cyberJ)m(ac)n(k)f(pinpad/e-com)d(USB)j(c)o (hipcar)m(d)e(r)m(eader)i(driver)p Black 396 72 a Fi(malicious)g (program)e(from)h(access)i(the)f(reader)f(when)h(it)h(is)g(lock)o(ed,)e (requires)g(setting)h(special)g(permissions)g(of)g(the)396 180 y(de)n(vice)g(node.)396 454 y(From)g Fh (linux/Documentation/mandatory.txt)p Fi(:)2120 454 y SDict begin H.S end 2120 454 a 2120 454 a SDict begin 13 H.A end 2120 454 a 2120 454 a SDict begin [ /View [/XYZ H.V] /Dest (0:197) cvn H.B /DEST pdfmark end 2120 454 a Fi(\223)h(A)g(\002le)f(is)i(mark)o(ed)c(as)j(a)g(candidate)e(for)g (mandatory)396 562 y(locking)g(by)h(setting)g(the)g(group-id)e(bit)i (in)h(its)g(\002le)g(mode)e(b)n(ut)h(remo)o(ving)e(the)i(group-e)o(x)o (ecute)c(bit.)k(This)h(is)g(an)396 670 y(otherwise)f(meaningless)f (combination,)f(and)h(w)o(as)i(chosen)f(by)f(the)i(System)f(V)h (implementors)d(so)i(as)h(not)f(to)h(break)396 778 y(e)o(xisting)f (user)g(programs.)e(\224)-2 807 y SDict begin H.S end -2 807 a -2 807 a SDict begin 13 H.A end -2 807 a -2 807 a SDict begin [ /View [/XYZ H.V] /Dest (0:198) cvn H.B /DEST pdfmark end -2 807 a 396 1117 a Fd(8.3.)35 b(P)l(ermissions)1334 1117 y SDict begin H.S end 1334 1117 a 1334 1117 a SDict begin 18.72 H.A end 1334 1117 a 1334 1117 a SDict begin [ /View [/XYZ H.V] /Dest (0.8.10.2) cvn H.B /DEST pdfmark end 1334 1117 a -2 1284 a SDict begin H.S end -2 1284 a -2 1284 a SDict begin 13 H.A end -2 1284 a -2 1284 a SDict begin [ /View [/XYZ H.V] /Dest (0:200) cvn H.B /DEST pdfmark end -2 1284 a 396 1391 a Fi(If)20 b(a)h(normal)e(user)h(should)f (be)h(able)g(to)h(access)f(and)g(use)h(the)f(c)o(yberJack)e(chipcard)h (reader)m(,)f(the)j(permissions)e(should)396 1499 y(be)h('2666'.)e(The) i('2')g(enables)f(the)i(mandatory)c(locking)i(described)g(in)h(the)h (section)f(before.)e(The)i('666')f(enables)396 1606 y(read/write)h(for) f(all)i(users.)-2 1617 y SDict begin H.S end -2 1617 a -2 1617 a SDict begin 13 H.A end -2 1617 a -2 1617 a SDict begin [ /View [/XYZ H.V] /Dest (0:201) cvn H.B /DEST pdfmark end -2 1617 a 396 1945 a Fd(8.4.)35 b(CT)-14 b(-API)1013 1945 y SDict begin H.S end 1013 1945 a 1013 1945 a SDict begin 18.72 H.A end 1013 1945 a 1013 1945 a SDict begin [ /View [/XYZ H.V] /Dest (0.8.11.2) cvn H.B /DEST pdfmark end 1013 1945 a -2 2112 a SDict begin H.S end -2 2112 a -2 2112 a SDict begin 13 H.A end -2 2112 a -2 2112 a SDict begin [ /View [/XYZ H.V] /Dest (0:203) cvn H.B /DEST pdfmark end -2 2112 a 396 2219 a Fi(The)20 b(CT)-8 b(-API)21 b(speci\002cation)e(can)h(be)g(do)n(wnloaded)e(at) 2007 2219 y SDict begin H.S end 2007 2219 a 2007 2219 a SDict begin 13 H.A end 2007 2219 a 2007 2219 a SDict begin [ /View [/XYZ H.V] /Dest (0:204) cvn H.B /DEST pdfmark end 2007 2219 a Fi(http://www)-5 b (.darmstadt.gmd.de/~eckstein/CT/mk)o(t.htm)o(l)-2 2403 y SDict begin H.S end -2 2403 a -2 2403 a SDict begin 13 H.A end -2 2403 a -2 2403 a SDict begin [ /View [/XYZ H.V] /Dest (0:205) cvn H.B /DEST pdfmark end -2 2403 a 396 2493 a Fi(Please)21 b(note,)f(that)g(the)g(port)g(numbers)e(start)j (with)f(one.)g(This)g(beha)n(viour)e(is)j(speci\002ed)f(in)h(the)f(CT) -8 b(-API)396 2601 y(documentation.)-2 2612 y SDict begin H.S end -2 2612 a -2 2612 a SDict begin 13 H.A end -2 2612 a -2 2612 a SDict begin [ /View [/XYZ H.V] /Dest (0:206) cvn H.B /DEST pdfmark end -2 2612 a 396 2939 a Fd(8.5.)35 b(PC/SC)994 2939 y SDict begin H.S end 994 2939 a 994 2939 a SDict begin 18.72 H.A end 994 2939 a 994 2939 a SDict begin [ /View [/XYZ H.V] /Dest (0.8.12.2) cvn H.B /DEST pdfmark end 994 2939 a -2 3107 a SDict begin H.S end -2 3107 a -2 3107 a SDict begin 13 H.A end -2 3107 a -2 3107 a SDict begin [ /View [/XYZ H.V] /Dest (0:208) cvn H.B /DEST pdfmark end -2 3107 a 396 3213 a Fi(This)21 b(dri)n(v)o(er)d(package)h(no)n(w)h(contains)f(a)i(w)o(orking)d(PC/SC)k (dri)n(v)o(er)d(for)h(pcsc-lite.)f(The)h(dri)n(v)o(er)f(w)o(as)i (tested)f(with)396 3321 y(pcsc-lite-1.2.0)e(up)i(to)g(1.3.1.)-2 3339 y SDict begin H.S end -2 3339 a -2 3339 a SDict begin 13 H.A end -2 3339 a -2 3339 a SDict begin [ /View [/XYZ H.V] /Dest (0:209) cvn H.B /DEST pdfmark end -2 3339 a 396 3608 a Fj(8.5.1.)28 b(Installation)1199 3608 y SDict begin H.S end 1199 3608 a 1199 3608 a SDict begin 15.6 H.A end 1199 3608 a 1199 3608 a SDict begin [ /View [/XYZ H.V] /Dest (0.8.12.1.3) cvn H.B /DEST pdfmark end 1199 3608 a -2 3776 a SDict begin H.S end -2 3776 a -2 3776 a SDict begin 13 H.A end -2 3776 a -2 3776 a SDict begin [ /View [/XYZ H.V] /Dest (0:211) cvn H.B /DEST pdfmark end -2 3776 a 396 3882 a Fi(If)20 b(you')l(re)f(installing)g(the)i(dri)n (v)o(er)d(via)j(a)f(pre-b)n(uilt)f(RPM)i(package,)e(mak)o(e)h(sure)g (you)f(install)i(the)396 3990 y("ctapi-c)o(yberjack-ifd-handle)o(r")15 b(package.)-2 4174 y SDict begin H.S end -2 4174 a -2 4174 a SDict begin 13 H.A end -2 4174 a -2 4174 a SDict begin [ /View [/XYZ H.V] /Dest (0:212) cvn H.B /DEST pdfmark end -2 4174 a 396 4264 a Fi(If)20 b(you')l(re)f(b)n(uilding)f(the)j (dri)n(v)o(er)d(from)i(source)f(code,)g(mak)o(e)h(sure)g(you)f(install) i(the)396 4372 y SDict begin H.S end 396 4372 a 396 4372 a SDict begin 13 H.A end 396 4372 a 396 4372 a SDict begin [ /View [/XYZ H.V] /Dest (0:213) cvn H.B /DEST pdfmark end 396 4372 a Fh(pcsc/ifd-cyberjack.bundle)c Fi(directory)h(to)j (the)f("usb)g(plugdir")e(directory)h(of)h(your)f(pcsc-lite)h (installation.)396 4480 y(The)g(def)o(ault)797 4480 y SDict begin H.S end 797 4480 a 797 4480 a SDict begin 13 H.A end 797 4480 a 797 4480 a SDict begin [ /View [/XYZ H.V] /Dest (0:214) cvn H.B /DEST pdfmark end 797 4480 a Fe(mak)o(e)g(install)h Fi(procedure)c(puts)k(it)g(into)1976 4480 y SDict begin H.S end 1976 4480 a 1976 4480 a SDict begin 13 H.A end 1976 4480 a 1976 4480 a SDict begin [ /View [/XYZ H.V] /Dest (0:215) cvn H.B /DEST pdfmark end 1976 4480 a Fh(/usr/lib/pcsc/drivers/)p Fi(.)-2 4592 y SDict begin H.S end -2 4592 a -2 4592 a SDict begin 13 H.A end -2 4592 a -2 4592 a SDict begin [ /View [/XYZ H.V] /Dest (0:216) cvn H.B /DEST pdfmark end -2 4592 a Black 3839 5569 a Fg(7)p Black eop end %%Page: 8 8 TeXDict begin 8 7 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.8) cvn H.B /DEST pdfmark end -2 -102 a Black 1654 -132 a Fg(REINER)20 b(SCT)h(cyberJ)m(ac)n(k)f(pinpad/e-com)d(USB)j(c)o (hipcar)m(d)e(r)m(eader)i(driver)p Black 396 77 a Fd(8.6.)35 b(Multithreading)1452 77 y SDict begin H.S end 1452 77 a 1452 77 a SDict begin 18.72 H.A end 1452 77 a 1452 77 a SDict begin [ /View [/XYZ H.V] /Dest (0.8.13.2) cvn H.B /DEST pdfmark end 1452 77 a -2 269 a SDict begin H.S end -2 269 a -2 269 a SDict begin 13 H.A end -2 269 a -2 269 a SDict begin [ /View [/XYZ H.V] /Dest (0:218) cvn H.B /DEST pdfmark end -2 269 a 396 351 a Fi(The)20 b(library)f(is)i(NO)m(T)f(sa)n (v)o(e)h(against)e(multiple)h(threads)f(accessing)h(at)h(the)f(same)h (time)f(the)g(same)g(reader)-5 b(.)20 b(This)g(gi)n(v)o(es)396 459 y(you)g(also)g(most)g(probably)e(problems)h(with)h(your)f(card)h (an)o(yw)o(ay)-5 b(.)-2 643 y SDict begin H.S end -2 643 a -2 643 a SDict begin 13 H.A end -2 643 a -2 643 a SDict begin [ /View [/XYZ H.V] /Dest (0:219) cvn H.B /DEST pdfmark end -2 643 a 396 733 a Fi(The)20 b(library)f(is)i(sa)n(v)o(e)g (against)e(multiple)h(threads)f(accessing)h(multiple)g(readers.)f(So)h (you)g(could)f(start)i(3)f(threads,)f(each)396 840 y(accessing)h(their) g(o)n(wn)g(card)f(in)i(their)f(o)n(wn)f(reader)-5 b(.)-2 869 y SDict begin H.S end -2 869 a -2 869 a SDict begin 13 H.A end -2 869 a -2 869 a SDict begin [ /View [/XYZ H.V] /Dest (0:220) cvn H.B /DEST pdfmark end -2 869 a 396 1179 a Fd(8.7.)35 b(command)g(siz)q(e)1453 1179 y SDict begin H.S end 1453 1179 a 1453 1179 a SDict begin 18.72 H.A end 1453 1179 a 1453 1179 a SDict begin [ /View [/XYZ H.V] /Dest (0.8.14.2) cvn H.B /DEST pdfmark end 1453 1179 a -2 1346 a SDict begin H.S end -2 1346 a -2 1346 a SDict begin 13 H.A end -2 1346 a -2 1346 a SDict begin [ /View [/XYZ H.V] /Dest (0:222) cvn H.B /DEST pdfmark end -2 1346 a 396 1453 a Fi(The)20 b(command)e(size)j(is)g(currently)e (limited)h(to)g(ISO7816)f(short)g(commands.)-2 1481 y SDict begin H.S end -2 1481 a -2 1481 a SDict begin 13 H.A end -2 1481 a -2 1481 a SDict begin [ /View [/XYZ H.V] /Dest (0:223) cvn H.B /DEST pdfmark end -2 1481 a 396 1791 a Fd(8.8.)35 b(K)n(e)n(ypressed)h(callbac)n(k)1803 1791 y SDict begin H.S end 1803 1791 a 1803 1791 a SDict begin 18.72 H.A end 1803 1791 a 1803 1791 a SDict begin [ /View [/XYZ H.V] /Dest (0.8.15.2) cvn H.B /DEST pdfmark end 1803 1791 a -2 1982 a SDict begin H.S end -2 1982 a -2 1982 a SDict begin 13 H.A end -2 1982 a -2 1982 a SDict begin [ /View [/XYZ H.V] /Dest (0:225) cvn H.B /DEST pdfmark end -2 1982 a -2 2006 a SDict begin H.S end -2 2006 a -2 2006 a SDict begin 11.7 H.A end -2 2006 a -2 2006 a SDict begin [ /View [/XYZ H.V] /Dest (0:226) cvn H.B /DEST pdfmark end -2 2006 a -2 2089 a SDict begin H.S end -2 2089 a -2 2089 a SDict begin 11.7 H.A end -2 2089 a -2 2089 a SDict begin [ /View [/XYZ H.V] /Dest (0:227) cvn H.B /DEST pdfmark end -2 2089 a 396 2185 a Fh(IS8)576 2185 y SDict begin H.S end 576 2185 a 576 2185 a SDict begin 11.7 H.A end 576 2185 a 576 2185 a SDict begin [ /View [/XYZ H.V] /Dest (0:229) cvn H.B /DEST pdfmark end 576 2185 a Fb(rsct_setkeycb)1161 2185 y SDict begin H.S end 1161 2185 a 1161 2185 a SDict begin 11.7 H.A end 1161 2185 a 1161 2185 a SDict begin [ /View [/XYZ H.V] /Dest (0:230) cvn H.B /DEST pdfmark end 1161 2185 a Fh(\(IU16)1386 2185 y SDict begin H.S end 1386 2185 a 1386 2185 a SDict begin 11.7 H.A end 1386 2185 a 1386 2185 a SDict begin [ /View [/XYZ H.V] /Dest (0:231) cvn H.B /DEST pdfmark end 1386 2185 a Fa(ctn)p Fh(,)1607 2185 y SDict begin H.S end 1607 2185 a 1607 2185 a SDict begin 11.7 H.A end 1607 2185 a 1607 2185 a SDict begin [ /View [/XYZ H.V] /Dest (0:232) cvn H.B /DEST pdfmark end 1607 2185 a Fh(void)44 b(\()1876 2198 y(*)1921 2185 y SDict begin H.S end 1921 2185 a 1921 2185 a SDict begin 11.7 H.A end 1921 2185 a 1921 2185 a SDict begin [ /View [/XYZ H.V] /Dest (0:233) cvn H.B /DEST pdfmark end 1921 2185 a Fa(cb)r Fh(\))2102 2185 y SDict begin H.S end 2102 2185 a 2102 2185 a SDict begin 11.7 H.A end 2102 2185 a 2102 2185 a SDict begin [ /View [/XYZ H.V] /Dest (0:234) cvn H.B /DEST pdfmark end 2102 2185 a Fh(\(void)2371 2198 y(*)2416 2185 y(user_data\)\);)-2 2542 y SDict begin H.S end -2 2542 a -2 2542 a SDict begin 13 H.A end -2 2542 a -2 2542 a SDict begin [ /View [/XYZ H.V] /Dest (0:235) cvn H.B /DEST pdfmark end -2 2542 a 396 2650 a Fi(The)20 b(function)844 2650 y SDict begin H.S end 844 2650 a 844 2650 a SDict begin 13 H.A end 844 2650 a 844 2650 a SDict begin [ /View [/XYZ H.V] /Dest (0:236) cvn H.B /DEST pdfmark end 844 2650 a Fh(rsct_setkeycb)e Fi(has)j(been)e(added)g(to)h(specify)g(a)h(callback)e(to)h(signal)g(k)o (e)o(ypresses.)f(The)h(function)396 2758 y(speci\002ed)g(in)h(the)f (second)f(parameter)g(is)i(called)f(whene)n(v)o(er)e(a)j(C4)f(or)g(F4)h (S-block)e(is)i(recei)n(v)o(ed)d(from)i(the)g(reader)-5 b(.)19 b(This)396 2866 y(information)f(can)i(be)g(used)g(to)g(help)g (the)g(user)m(,)g(when)f(entering)g(a)i(PIN)f(on)g(the)g(c)o(yberJack)f (pinpad)g(reader)m(,)f(which)396 2974 y(does)i(not)g(sho)n(w)g(ho)n(w)g (man)o(y)f(k)o(e)o(ys)g(ha)n(v)o(e)h(been)g(pressed.)-2 3002 y SDict begin H.S end -2 3002 a -2 3002 a SDict begin 13 H.A end -2 3002 a -2 3002 a SDict begin [ /View [/XYZ H.V] /Dest (0:237) cvn H.B /DEST pdfmark end -2 3002 a 396 3313 a Fd(8.9.)35 b(Obtaining)f(V)-6 b(er)n(sion)34 b(Inf)n(o)1901 3313 y SDict begin H.S end 1901 3313 a 1901 3313 a SDict begin 18.72 H.A end 1901 3313 a 1901 3313 a SDict begin [ /View [/XYZ H.V] /Dest (0.8.16.2) cvn H.B /DEST pdfmark end 1901 3313 a -2 3505 a SDict begin H.S end -2 3505 a -2 3505 a SDict begin 13 H.A end -2 3505 a -2 3505 a SDict begin [ /View [/XYZ H.V] /Dest (0:239) cvn H.B /DEST pdfmark end -2 3505 a -2 3529 a SDict begin H.S end -2 3529 a -2 3529 a SDict begin 11.7 H.A end -2 3529 a -2 3529 a SDict begin [ /View [/XYZ H.V] /Dest (0:240) cvn H.B /DEST pdfmark end -2 3529 a -2 3612 a SDict begin H.S end -2 3612 a -2 3612 a SDict begin 11.7 H.A end -2 3612 a -2 3612 a SDict begin [ /View [/XYZ H.V] /Dest (0:241) cvn H.B /DEST pdfmark end -2 3612 a 396 3707 a Fh(void)620 3707 y SDict begin H.S end 620 3707 a 620 3707 a SDict begin 11.7 H.A end 620 3707 a 620 3707 a SDict begin [ /View [/XYZ H.V] /Dest (0:243) cvn H.B /DEST pdfmark end 620 3707 a Fb(rsct_version)1160 3707 y SDict begin H.S end 1160 3707 a 1160 3707 a SDict begin 11.7 H.A end 1160 3707 a 1160 3707 a SDict begin [ /View [/XYZ H.V] /Dest (0:244) cvn H.B /DEST pdfmark end 1160 3707 a Fh(\(IU8)1340 3720 y(*)1385 3707 y SDict begin H.S end 1385 3707 a 1385 3707 a SDict begin 11.7 H.A end 1385 3707 a 1385 3707 a SDict begin [ /View [/XYZ H.V] /Dest (0:245) cvn H.B /DEST pdfmark end 1385 3707 a Fa(vmajor)s Fh(,)1744 3707 y SDict begin H.S end 1744 3707 a 1744 3707 a SDict begin 11.7 H.A end 1744 3707 a 1744 3707 a SDict begin [ /View [/XYZ H.V] /Dest (0:246) cvn H.B /DEST pdfmark end 1744 3707 a Fh(IU8)1879 3720 y(*)1924 3707 y SDict begin H.S end 1924 3707 a 1924 3707 a SDict begin 11.7 H.A end 1924 3707 a 1924 3707 a SDict begin [ /View [/XYZ H.V] /Dest (0:247) cvn H.B /DEST pdfmark end 1924 3707 a Fa(vminor)s Fh(,)2285 3707 y SDict begin H.S end 2285 3707 a 2285 3707 a SDict begin 11.7 H.A end 2285 3707 a 2285 3707 a SDict begin [ /View [/XYZ H.V] /Dest (0:248) cvn H.B /DEST pdfmark end 2285 3707 a Fh(IU8)2420 3720 y(*)2465 3707 y SDict begin H.S end 2465 3707 a 2465 3707 a SDict begin 11.7 H.A end 2465 3707 a 2465 3707 a SDict begin [ /View [/XYZ H.V] /Dest (0:249) cvn H.B /DEST pdfmark end 2465 3707 a Fa(vpatchlevel)p Fh(,)3047 3707 y SDict begin H.S end 3047 3707 a 3047 3707 a SDict begin 11.7 H.A end 3047 3707 a 3047 3707 a SDict begin [ /View [/XYZ H.V] /Dest (0:250) cvn H.B /DEST pdfmark end 3047 3707 a Fh(IU16)3227 3720 y(*)3272 3707 y SDict begin H.S end 3272 3707 a 3272 3707 a SDict begin 11.7 H.A end 3272 3707 a 3272 3707 a SDict begin [ /View [/XYZ H.V] /Dest (0:251) cvn H.B /DEST pdfmark end 3272 3707 a Fa(vbuild)s Fh(\);)-2 4064 y SDict begin H.S end -2 4064 a -2 4064 a SDict begin 13 H.A end -2 4064 a -2 4064 a SDict begin [ /View [/XYZ H.V] /Dest (0:252) cvn H.B /DEST pdfmark end -2 4064 a 396 4172 a Fi(The)20 b(function)844 4172 y SDict begin H.S end 844 4172 a 844 4172 a SDict begin 13 H.A end 844 4172 a 844 4172 a SDict begin [ /View [/XYZ H.V] /Dest (0:253) cvn H.B /DEST pdfmark end 844 4172 a Fh(rsct_version)e Fi(returns)i(the)g(complete)f(v)o(ersion)g(of)h(the)g(dri)n(v)o(er)-5 b(.)-2 4200 y SDict begin H.S end -2 4200 a -2 4200 a SDict begin 13 H.A end -2 4200 a -2 4200 a SDict begin [ /View [/XYZ H.V] /Dest (0:254) cvn H.B /DEST pdfmark end -2 4200 a 396 4510 a Fd(8.10.)35 b(Ad)o(ditional)g(CT_init)f (Replacement)j(Function)3032 4510 y SDict begin H.S end 3032 4510 a 3032 4510 a SDict begin 18.72 H.A end 3032 4510 a 3032 4510 a SDict begin [ /View [/XYZ H.V] /Dest (0.8.17.2) cvn H.B /DEST pdfmark end 3032 4510 a -2 4701 a SDict begin H.S end -2 4701 a -2 4701 a SDict begin 13 H.A end -2 4701 a -2 4701 a SDict begin [ /View [/XYZ H.V] /Dest (0:256) cvn H.B /DEST pdfmark end -2 4701 a -2 4725 a SDict begin H.S end -2 4725 a -2 4725 a SDict begin 11.7 H.A end -2 4725 a -2 4725 a SDict begin [ /View [/XYZ H.V] /Dest (0:257) cvn H.B /DEST pdfmark end -2 4725 a -2 4808 a SDict begin H.S end -2 4808 a -2 4808 a SDict begin 11.7 H.A end -2 4808 a -2 4808 a SDict begin [ /View [/XYZ H.V] /Dest (0:258) cvn H.B /DEST pdfmark end -2 4808 a 396 4904 a Fh(IS8)576 4904 y SDict begin H.S end 576 4904 a 576 4904 a SDict begin 11.7 H.A end 576 4904 a 576 4904 a SDict begin [ /View [/XYZ H.V] /Dest (0:260) cvn H.B /DEST pdfmark end 576 4904 a Fb(rsct_init_name)1206 4904 y SDict begin H.S end 1206 4904 a 1206 4904 a SDict begin 11.7 H.A end 1206 4904 a 1206 4904 a SDict begin [ /View [/XYZ H.V] /Dest (0:261) cvn H.B /DEST pdfmark end 1206 4904 a Fh(\(IU16)1431 4904 y SDict begin H.S end 1431 4904 a 1431 4904 a SDict begin 11.7 H.A end 1431 4904 a 1431 4904 a SDict begin [ /View [/XYZ H.V] /Dest (0:262) cvn H.B /DEST pdfmark end 1431 4904 a Fa(ctn)p Fh(,)1652 4904 y SDict begin H.S end 1652 4904 a 1652 4904 a SDict begin 11.7 H.A end 1652 4904 a 1652 4904 a SDict begin [ /View [/XYZ H.V] /Dest (0:263) cvn H.B /DEST pdfmark end 1652 4904 a Fh(const)44 b(char)2101 4917 y(*)2146 4904 y SDict begin H.S end 2146 4904 a 2146 4904 a SDict begin 11.7 H.A end 2146 4904 a 2146 4904 a SDict begin [ /View [/XYZ H.V] /Dest (0:264) cvn H.B /DEST pdfmark end 2146 4904 a Fa(device_name)p Fh(\);)p Black 3842 5569 a Fg(8)p Black eop end %%Page: 9 9 TeXDict begin 9 8 bop -600 -600 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end -600 -600 a Black 0 TeXcolorgray -2 -102 a SDict begin H.S end -2 -102 a 0 TeXcolorgray 0 TeXcolorgray -2 -102 a SDict begin H.R end -2 -102 a -2 -102 a SDict begin [ /View [/XYZ H.V] /Dest (page.9) cvn H.B /DEST pdfmark end -2 -102 a Black 1654 -132 a Fg(REINER)20 b(SCT)h(cyberJ)m(ac)n(k)f(pinpad/e-com)d(USB)j(c)o (hipcar)m(d)e(r)m(eader)i(driver)p Black -2 -11 a SDict begin H.S end -2 -11 a -2 -11 a SDict begin 13 H.A end -2 -11 a -2 -11 a SDict begin [ /View [/XYZ H.V] /Dest (0:265) cvn H.B /DEST pdfmark end -2 -11 a 396 72 a Fi(The)f(function) 842 72 y SDict begin H.S end 842 72 a 842 72 a SDict begin 13 H.A end 842 72 a 842 72 a SDict begin [ /View [/XYZ H.V] /Dest (0:266) cvn H.B /DEST pdfmark end 842 72 a Fh(rsct_init_name)f Fi(can)h(be)g(used)g(to)h(directly)e(specify)h(the) g(de)n(vice)g(to)g(be)h(used.)e(The)i(de)n(vice)e(name)h(is)396 180 y(speci\002ed)h(lik)o(e)h(for)e(PC/SC)j(dri)n(v)o(ers:)d ("usb:VENDOR_ID/PR)m(ODUCT_ID:lib)n(usb:B)o(US_ID:DEVICE_ID",)d(so)396 288 y(for)k(a)g(ne)n(w)g(c)o(yberjack)f(at)h(/proc/b)n(us/usb/003/002)c (the)k(correct)f(name)h(w)o(ould)g(be:)396 396 y("usb:0c4b/0300:lib)n (usb:003:00)o(2")-2 407 y SDict begin H.S end -2 407 a -2 407 a SDict begin 13 H.A end -2 407 a -2 407 a SDict begin [ /View [/XYZ H.V] /Dest (0:267) cvn H.B /DEST pdfmark end -2 407 a 396 735 a Fd(8.11.)35 b(V)-6 b(erifying)34 b(Pins)g(Using)g(PC/SC)g(Function)g(SCar)n(dContr)n(ol)3595 735 y SDict begin H.S end 3595 735 a 3595 735 a SDict begin 18.72 H.A end 3595 735 a 3595 735 a SDict begin [ /View [/XYZ H.V] /Dest (0.8.18.2) cvn H.B /DEST pdfmark end 3595 735 a -2 927 a SDict begin H.S end -2 927 a -2 927 a SDict begin 13 H.A end -2 927 a -2 927 a SDict begin [ /View [/XYZ H.V] /Dest (0:269) cvn H.B /DEST pdfmark end -2 927 a 396 1009 a Fi(The)20 b(follo)n(wing)f(table)h(sho)n(ws)g(v)n (alues)g(for)f(the)i(PSCS_VERIFY_STR)m(UCTURE)f(object)g(which)f(ha)n (v)o(e)h(been)f(tested)396 1117 y(with)i(ASCII)f(and)g(FPIN2)g (formatted)f(pins.)-2 1135 y SDict begin H.S end -2 1135 a -2 1135 a SDict begin 13 H.A end -2 1135 a -2 1135 a SDict begin [ /View [/XYZ H.V] /Dest (0:270) cvn H.B /DEST pdfmark end -2 1135 a -2 1228 a SDict begin H.S end -2 1228 a -2 1228 a SDict begin 13 H.A end -2 1228 a -2 1228 a SDict begin [ /View [/XYZ H.V] /Dest (0:271) cvn H.B /DEST pdfmark end -2 1228 a -2 1228 a SDict begin H.S end -2 1228 a -2 1228 a SDict begin 0 H.A end -2 1228 a -2 1228 a SDict begin [ /View [/XYZ H.V] /Dest (table.2) cvn H.B /DEST pdfmark end -2 1228 a 396 1231 3501 4 v 396 1231 V 396 1356 4 125 v 424 1331 a Ff(Field)p 1562 1356 V 972 w(ASCII)p 2728 1356 V 945 w(FPIN2)p 3893 1356 V 396 1359 3501 4 v 396 1359 V 396 1484 4 125 v 424 1459 a Fi(bT)m(imerOut)p 1562 1484 V 798 w(00)p 2728 1484 V 1082 w(00)p 3893 1484 V 396 1487 3501 4 v 396 1487 V 396 1612 4 125 v 424 1587 a(bT)m(imerOut2)p 1562 1612 V 756 w(00)p 2728 1612 V 1082 w(00)p 3893 1612 V 396 1615 3501 4 v 396 1615 V 396 1739 4 125 v 424 1715 a(bmF)o(ormatString) p 1562 1739 V 615 w(82)p 2728 1739 V 1082 w(81)p 3893 1739 V 396 1743 3501 4 v 396 1743 V 396 1867 4 125 v 424 1842 a(bmPINBlockString)p 1562 1867 V 522 w(04)p 2728 1867 V 1082 w(48)p 3893 1867 V 396 1871 3501 4 v 396 1871 V 396 1995 4 125 v 424 1970 a(bmPINLengthF)o(ormat)p 1562 1995 V 448 w(00)p 2728 1995 V 1082 w(04)p 3893 1995 V 396 1998 3501 4 v 396 1998 V 396 2123 4 125 v 424 2098 a(wPINMaxExtraDigit)p 1562 2123 V 467 w(0408)p 2728 2123 V 998 w(0408)p 3893 2123 V 396 2126 3501 4 v 396 2126 V 396 2251 4 125 v 424 2226 a(bEntryV)-9 b(alidationCondition)p 1562 2251 V 261 w(02)p 2728 2251 V 1082 w(02)p 3893 2251 V 396 2254 3501 4 v 396 2254 V 396 2379 4 125 v 424 2354 a(bNumberMessage)p 1562 2379 V 559 w(01)p 2728 2379 V 1082 w(01)p 3893 2379 V 396 2382 3501 4 v 396 2382 V 396 2507 4 125 v 424 2482 a(wLangId)p 1562 2507 V 864 w(0904)p 2728 2507 V 998 w(0904)p 3893 2507 V 396 2510 3501 4 v 396 2510 V 396 2634 4 125 v 424 2610 a(bMsgInde)o(x)p 1562 2634 V 786 w(00)p 2728 2634 V 1082 w(00)p 3893 2634 V 396 2638 3501 4 v 396 2638 V 396 2762 4 125 v 424 2737 a(bT)j(eoPrologue)18 b(0-2)p 1562 2762 V 568 w(00)p 2728 2762 V 1082 w(00)p 3893 2762 V 396 2766 3501 4 v 396 2766 V Black 3842 5569 a Fg(9)p Black eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF pcsc-cyberjack-3.99.5final.sp05/doc/README.txt000066400000000000000000000362671231776762100206010ustar00rootroot00000000000000REINER SCT cyberJack pinpad/e-com USB chipcard reader driver Matthias Brüstle Harald Welte Martin Preuss Copyright © 2004 REINER SCT GmbH $Date$ This is the user manual to the linux driver for REINER SCT cyberjack chipcard readers. __________________________________________________________ Table of Contents 1. Overview 2. Readers supported by this driver 3. distribution-specific notes 3.1. RPM-based 3.2. DEB-based 3.3. All other Distributions 4. Updating the Firmware 5. Support 6. Troubleshooting 6.1. How to check the kernel version 6.2. Large number of readers 6.3. Hotplugging 6.4. Logging 7. Known Issues 8. Additional Information 8.1. Beeping at Keypress 8.2. Mandatory locking 8.3. Permissions 8.4. CT-API 8.5. PC/SC 8.5.1. Installation 8.6. Multithreading 8.7. command size 8.8. Keypressed callback 8.9. Obtaining Version Info 8.10. Additional CT_init Replacement Function 8.11. Verifying Pins Using PC/SC Function SCardControl 1. Overview This driver for the REINER SCT cyberJack pinpad/e-com USB family of chipcard readers implements the CT-API 1.1 interface, as well as the PC/SC interface of pcsc-lite. It is implemented 100% in userspace. This means no trouble with different kernel versions, compiling/patching the kernel etc. All accesses are done via the usb devfs in /proc/bus/usb (or /dev/bus/usb for udev-based systems). Permission handling is done only via udev. The cyberjack.rules if installed to /etc/udev/rules.d is automatically called by udev when a reader is plugged in. This scripts dynamically updates the permissions of the respective device, so users in the group cyberjack are able to access it. For more information about the smart card reader itself please visit http://www.reiner-sct.com/. There is also a shop where the the readers can be ordered online. __________________________________________________________ 2. Readers supported by this driver The following Reiner-SCT readers are supported: Product ProductID REINER SCT cyberJack pinpad USB 0x100 REINER SCT cyberJack e-com USB 0x100 REINER SCT cyberJack pinpad_a USB 0x300 You can use the lsusb command to list all devices connected to the USB bus of your machine. It will print out the vendor and device ID of all your devices, like : Bus Nr Device Nr VeID:PrID Bus 002 Device 002: ID 0451:1446 Texas Instruments, Inc. TUSB2040/2070 Hub Bus 002 Device 006: ID 0c4b:0300 The REINER SCT VendorID is 0c4b. ProductID's can be looked up in the table above. __________________________________________________________ 3. distribution-specific notes You find all packages at http://www.reiner-sct.com/content/view/32/43/#linux. Most packages need you to add the user which is to access the card reader to be added to the group cyberjack. This can be done by using the tool kuser or the system's administration tool (e.g. yast on SuSE). You should reboot your machine after installing the driver package and adding the user to the group cyberjack in order for the changes to take effect. __________________________________________________________ 3.1. RPM-based Reiner-SCT provides RPM packages for the following distributions: * SuSE 10.2 * SuSE 10.1 * SuSE 10.0 * SuSE 9.3 * Fedora Core 5 * Fedora Core 4 Just install the package corresponding to your system like this: rpm -i If you already have one of Reiner-SCT's previous RPM packages installed you must update that existing package instead, like in: rpm -U __________________________________________________________ 3.2. DEB-based Reiner-SCT provides RPM packages for the following distributions: * Debian unstable * Ubuntu 6.06 * Ubuntu 6.10 Just install the package corresponding to your system like this: dpkg -i __________________________________________________________ 3.3. All other Distributions There is currently no experience with other Linux distributions. It should work in most cases as described above. If you get any problems with the RPM package, you can try to rebuild it on your system with rpm --rebuild or rpmbuild --rebuild If you want to compile the source yourself just go into the main directory of the extracted archive and type ./configure make The include file ctapi.h and the resulting library libctapi-cyberjack.so from the directory ctapi/ can then be copied to convenient places. For ctapi.h this would normally be /usr/include and for the library /usr/lib. The command make install can do that for you. The name scheme libctapi-cyberjack.* has been choosen to make it possible to install more than one CT-API library on your system. __________________________________________________________ 4. Updating the Firmware The latest driver contains the tool "cjflash" which can be used to update the firmware of the reader. The current version of this tool only supports flashing newer Cyberjack devices (USB product id 0x400). To update the firmware just use the following command: cjflash 1 Kernel_V30_07.bin Kernel_V30_07.bin.ecoma.sgn The first argument is the number of the device (starting with "1", the second reader would be "2"). The next argument is the name of the file containing the new firmware, followed by the name of the file containing the signature of the new firmware. After this command has been issued the reader asks you to confirm the operation (press "OK" on the reader's keypad to confirm or "CANCEL" to abort). If the reader hangs after you pressed "OK" then it has an old firmware. In that case you'll have to use a slightly modified version of the command above: CJ_USB_MODE=1 cjflash 1 Kernel_V30_07.bin Kernel_V30_07.bin.ecoma.sgn This sets the environment variable "CJ_USB_MODE" to the value "1" prior to executing the command. This tells the driver (which is used by cjflash) that another approach to the reader is needed. Please only set that variable if the tool doesn't work otherwise! __________________________________________________________ 5. Support Support of this driver is provided by REINER SCT. E-mail: support@reiner-sct.com Postal address: Schwabacher Str. 34, 90762 Fürth, GERMANY In your problem description, please include as far as possible: * Any error messages you get. * Which Linux distribution you use including version, e.g. SuSE 10.1, Debian 3.0r1 testing, ... * CPU type, e.g. on Linux the content of the file /proc/cpuinfo. * Kernel version, e.g. on Linux the output from the command uname -r. * List of attached USB devices, e.g. on Linux the output of the lsusb command. __________________________________________________________ 6. Troubleshooting 6.1. How to check the kernel version You can determine the version of the currently running kernel by executing uname -r The version of the installed kernel sources, which are normally located below /usr/src, can be determined by looking at the source directory name or by looking into the main Makefile, where it is in the first three lines. __________________________________________________________ 6.2. Large number of readers The cyberJack has been tested with up to 52 devices attached simultaneously to a single PC via 7-port hubs. Some notes regarding this configuration: * Linux at least up to 2.4.19 does result in a kernel panic, when too many devices are attached. Known to work is 2.4.20. * Sometimes timeouts occur resulting in a shift of the T=1 blocks resulting in bad performance and sooner or later a failure of communcation. The problem seems to lie somewhere in the usb-uhci part and vanishes with a faster PC. (Try >2GHz) * If there are still some problems try other hubs and other USB host controller cards. There seems to be a great difference in quality in these parts. The performance does not degrade, when going from 1 up to 50 readers, even when doing constant I/O with cards. (Select and Read Binary) __________________________________________________________ 6.3. Hotplugging Linux supports hotplugging with USB devices. This is implemented via the udev-system. You can find some udev scripts for the REINER SCT cyberjack reader family in the etc/udev directory of this archive. Since udev-related scripts are highly distribution specific, REINER SCT can only provide limited support in this area. The provided RPM and Debian packages install those scripts to their respective places. __________________________________________________________ 6.4. Logging The cyberjack CT-API library supports logging of the communication with the reader. This is done, if at the moment CT_init is called the environment variable CJDEBUG exists. The default output file is /tmp/cj.log. The logging is done on T=1 level and each entry begins with a time stamp. __________________________________________________________ 7. Known Issues Unfortunately, all Linux kernel versions, at least up to (including) 2.6.12-rc5 have a severe bug in the handling of asynchronous URB's (USB Request Blocks) in userspace. This bug is totally unrelated to the REINER-SCT cyberjack driver, but it will show as soon as the PC/SC daemon terminates (and you're using a pinpad_a (0x300) reader. The bug can crash your kernel :(. A bugfix has been developed (but not yet included into the mainline kernel). It is available as kernel patch in 'patches/usb-async_urb-devio-oops-fix.patch'. It is strongly recommended to apply this kernel patch if you intend to use the PC/SC driver. __________________________________________________________ 8. Additional Information 8.1. Beeping at Keypress Starting with Version 2.0.5 of ctapi-cyberjack, the host PC will emit a beep sound at every key press. The driver tries to detect the best mechanism for beeping by itself, i.e. xBell when you run under X11, or sending a BEL ASCII character to STDOUT when running as a console application. If you want to disable the beep, you can set the CJCTAPI_NO_KEYBEEP environment variable before starting your application. Depending on your shell, this can be achieved with a command like export CJCTAPI_NO_KEYPRESS. __________________________________________________________ 8.2. Mandatory locking Normal locking is only advisory, i.e. the programs must be cooperative to do the locking properly. A non-cooperative program can ignore a lock and access the reader. Mandatory locking, which stops even a malicious program from access the reader when it is locked, requires setting special permissions of the device node. From linux/Documentation/mandatory.txt: " A file is marked as a candidate for mandatory locking by setting the group-id bit in its file mode but removing the group-execute bit. This is an otherwise meaningless combination, and was chosen by the System V implementors so as not to break existing user programs. " __________________________________________________________ 8.3. Permissions If a normal user should be able to access and use the cyberJack chipcard reader, the permissions should be '2666'. The '2' enables the mandatory locking described in the section before. The '666' enables read/write for all users. __________________________________________________________ 8.4. CT-API The CT-API specification can be downloaded at http://www.darmstadt.gmd.de/~eckstein/CT/mkt.html Please note, that the port numbers start with one. This behaviour is specified in the CT-API documentation. __________________________________________________________ 8.5. PC/SC This driver package now contains a working PC/SC driver for pcsc-lite. The driver was tested with pcsc-lite-1.2.0 up to 1.3.1. __________________________________________________________ 8.5.1. Installation If you're installing the driver via a pre-built RPM package, make sure you install the "ctapi-cyberjack-ifd-handler" package. If you're building the driver from source code, make sure you install the pcsc/ifd-cyberjack.bundle directory to the "usb plugdir" directory of your pcsc-lite installation. The default make install procedure puts it into /usr/lib/pcsc/drivers/. __________________________________________________________ 8.6. Multithreading The library is NOT save against multiple threads accessing at the same time the same reader. This gives you also most probably problems with your card anyway. The library is save against multiple threads accessing multiple readers. So you could start 3 threads, each accessing their own card in their own reader. __________________________________________________________ 8.7. command size The command size is currently limited to ISO7816 short commands. __________________________________________________________ 8.8. Keypressed callback IS8 rsct_setkeycb(IU16ctn, void (*cb) (void *user_data)); The function rsct_setkeycb has been added to specify a callback to signal keypresses. The function specified in the second parameter is called whenever a C4 or F4 S-block is received from the reader. This information can be used to help the user, when entering a PIN on the cyberJack pinpad reader, which does not show how many keys have been pressed. __________________________________________________________ 8.9. Obtaining Version Info void rsct_version(IU8*vmajor, IU8*vminor, IU8*vpatchlevel, IU16*vbuild); The function rsct_version returns the complete version of the driver. __________________________________________________________ 8.10. Additional CT_init Replacement Function IS8 rsct_init_name(IU16ctn, const char*device_name); The function rsct_init_name can be used to directly specify the device to be used. The device name is specified like for PC/SC drivers: "usb:VENDOR_ID/PRODUCT_ID:libusb:BUS_ID:DEVICE_ID", so for a new cyberjack at /proc/bus/usb/003/002 the correct name would be: "usb:0c4b/0300:libusb:003:002" __________________________________________________________ 8.11. Verifying Pins Using PC/SC Function SCardControl The following table shows values for the PSCS_VERIFY_STRUCTURE object which have been tested with ASCII and FPIN2 formatted pins. Field ASCII FPIN2 bTimerOut 00 00 bTimerOut2 00 00 bmFormatString 82 81 bmPINBlockString 04 48 bmPINLengthFormat 00 04 wPINMaxExtraDigit 0408 0408 bEntryValidationCondition 02 02 bNumberMessage 01 01 wLangId 0904 0904 bMsgIndex 00 00 bTeoPrologue 0-2 00 00 pcsc-cyberjack-3.99.5final.sp05/doc/README.xml000066400000000000000000000523421231776762100205520ustar00rootroot00000000000000
REINER SCT cyberJack pinpad/e-com USB chipcard reader driver Matthias Brüstle Harald Welte Martin Preuss $Date$ 2004 REINER SCT GmbH This is the user manual to the linux driver for REINER SCT cyberjack chipcard readers.
Overview This driver for the REINER SCT cyberJack pinpad/e-com USB family of chipcard readers implements the CT-API 1.1 interface, as well as the PC/SC interface of pcsc-lite. It is implemented 100% in userspace. This means no trouble with different kernel versions, compiling/patching the kernel etc. All accesses are done via the usb devfs in /proc/bus/usb (or /dev/bus/usb for udev-based systems). Permission handling is done only via udev. The cyberjack.rules if installed to /etc/udev/rules.d is automatically called by udev when a reader is plugged in. This scripts dynamically updates the permissions of the respective device, so users in the group cyberjack are able to access it. For more information about the smart card reader itself please visit . There is also a shop where the the readers can be ordered online.
Readers supported by this driver The following Reiner-SCT readers are supported: Product ProductID REINER SCT cyberJack pinpad USB 0x100 REINER SCT cyberJack e-com USB 0x100 REINER SCT cyberJack pinpad_a USB 0x300 You can use the lsusb command to list all devices connected to the USB bus of your machine. It will print out the vendor and device ID of all your devices, like : Bus Nr Device Nr VeID:PrID Bus 002 Device 002: ID 0451:1446 Texas Instruments, Inc. TUSB2040/2070 Hub Bus 002 Device 006: ID 0c4b:0300 The REINER SCT VendorID is 0c4b. ProductID's can be looked up in the table above.
distribution-specific notes You find all packages at . Most packages need you to add the user which is to access the card reader to be added to the group cyberjack. This can be done by using the tool kuser or the system's administration tool (e.g. yast on SuSE). You should reboot your machine after installing the driver package and adding the user to the group cyberjack in order for the changes to take effect.
RPM-based Reiner-SCT provides RPM packages for the following distributions: SuSE 10.2 SuSE 10.1 SuSE 10.0 SuSE 9.3 Fedora Core 5 Fedora Core 4 Just install the package corresponding to your system like this: rpm -i <package file> If you already have one of Reiner-SCT's previous RPM packages installed you must update that existing package instead, like in: rpm -U <package file>
DEB-based Reiner-SCT provides RPM packages for the following distributions: Debian unstable Ubuntu 6.06 Ubuntu 6.10 Just install the package corresponding to your system like this: dpkg -i <package file>
All other Distributions There is currently no experience with other Linux distributions. It should work in most cases as described above. If you get any problems with the RPM package, you can try to rebuild it on your system with rpm --rebuild <source package file> or rpmbuild --rebuild <source package file> If you want to compile the source yourself just go into the main directory of the extracted archive and type ./configure make The include file ctapi.h and the resulting library libctapi-cyberjack.so from the directory ctapi/ can then be copied to convenient places. For ctapi.h this would normally be /usr/include and for the library /usr/lib. The command make install can do that for you. The name scheme libctapi-cyberjack.* has been choosen to make it possible to install more than one CT-API library on your system.
Updating the Firmware The latest driver contains the tool "cjflash" which can be used to update the firmware of the reader. The current version of this tool only supports flashing newer Cyberjack devices (USB product id 0x400). To update the firmware just use the following command: cjflash 1 Kernel_V30_07.bin Kernel_V30_07.bin.ecoma.sgn The first argument is the number of the device (starting with "1", the second reader would be "2"). The next argument is the name of the file containing the new firmware, followed by the name of the file containing the signature of the new firmware. After this command has been issued the reader asks you to confirm the operation (press "OK" on the reader's keypad to confirm or "CANCEL" to abort). If the reader hangs after you pressed "OK" then it has an old firmware. In that case you'll have to use a slightly modified version of the command above: CJ_USB_MODE=1 cjflash 1 Kernel_V30_07.bin Kernel_V30_07.bin.ecoma.sgn This sets the environment variable "CJ_USB_MODE" to the value "1" prior to executing the command. This tells the driver (which is used by cjflash) that another approach to the reader is needed. Please only set that variable if the tool doesn't work otherwise!
Support Support of this driver is provided by REINER SCT. E-mail: support@reiner-sct.com Postal address: Schwabacher Str. 34, 90762 Fürth, GERMANY In your problem description, please include as far as possible: Any error messages you get. Which Linux distribution you use including version, e.g. SuSE 10.1, Debian 3.0r1 testing, ... CPU type, e.g. on Linux the content of the file /proc/cpuinfo. Kernel version, e.g. on Linux the output from the command uname -r. List of attached USB devices, e.g. on Linux the output of the lsusb command.
Troubleshooting
How to check the kernel version You can determine the version of the currently running kernel by executing uname -r The version of the installed kernel sources, which are normally located below /usr/src, can be determined by looking at the source directory name or by looking into the main Makefile, where it is in the first three lines.
Large number of readers The cyberJack has been tested with up to 52 devices attached simultaneously to a single PC via 7-port hubs. Some notes regarding this configuration: Linux at least up to 2.4.19 does result in a kernel panic, when too many devices are attached. Known to work is 2.4.20. Sometimes timeouts occur resulting in a shift of the T=1 blocks resulting in bad performance and sooner or later a failure of communcation. The problem seems to lie somewhere in the usb-uhci part and vanishes with a faster PC. (Try >2GHz) If there are still some problems try other hubs and other USB host controller cards. There seems to be a great difference in quality in these parts. The performance does not degrade, when going from 1 up to 50 readers, even when doing constant I/O with cards. (Select and Read Binary)
Hotplugging Linux supports hotplugging with USB devices. This is implemented via the udev-system. You can find some udev scripts for the REINER SCT cyberjack reader family in the etc/udev directory of this archive. Since udev-related scripts are highly distribution specific, REINER SCT can only provide limited support in this area. The provided RPM and Debian packages install those scripts to their respective places.
Logging The cyberjack CT-API library supports logging of the communication with the reader. This is done, if at the moment CT_init is called the environment variable CJDEBUG exists. The default output file is /tmp/cj.log. The logging is done on T=1 level and each entry begins with a time stamp.
Known Issues Unfortunately, all Linux kernel versions, at least up to (including) 2.6.12-rc5 have a severe bug in the handling of asynchronous URB's (USB Request Blocks) in userspace. This bug is totally unrelated to the REINER-SCT cyberjack driver, but it will show as soon as the PC/SC daemon terminates (and you're using a pinpad_a (0x300) reader. The bug can crash your kernel :(. A bugfix has been developed (but not yet included into the mainline kernel). It is available as kernel patch in 'patches/usb-async_urb-devio-oops-fix.patch'. It is strongly recommended to apply this kernel patch if you intend to use the PC/SC driver.
Additional Information
Beeping at Keypress Starting with Version 2.0.5 of ctapi-cyberjack, the host PC will emit a beep sound at every key press. The driver tries to detect the best mechanism for beeping by itself, i.e. xBell when you run under X11, or sending a BEL ASCII character to STDOUT when running as a console application. If you want to disable the beep, you can set the CJCTAPI_NO_KEYBEEP environment variable before starting your application. Depending on your shell, this can be achieved with a command like export CJCTAPI_NO_KEYPRESS.
Mandatory locking Normal locking is only advisory, i.e. the programs must be cooperative to do the locking properly. A non-cooperative program can ignore a lock and access the reader. Mandatory locking, which stops even a malicious program from access the reader when it is locked, requires setting special permissions of the device node. From linux/Documentation/mandatory.txt: A file is marked as a candidate for mandatory locking by setting the group-id bit in its file mode but removing the group-execute bit. This is an otherwise meaningless combination, and was chosen by the System V implementors so as not to break existing user programs.
Permissions If a normal user should be able to access and use the cyberJack chipcard reader, the permissions should be '2666'. The '2' enables the mandatory locking described in the section before. The '666' enables read/write for all users.
CT-API The CT-API specification can be downloaded at Please note, that the port numbers start with one. This behaviour is specified in the CT-API documentation.
PC/SC This driver package now contains a working PC/SC driver for pcsc-lite. The driver was tested with pcsc-lite-1.2.0 up to 1.3.1.
Installation If you're installing the driver via a pre-built RPM package, make sure you install the "ctapi-cyberjack-ifd-handler" package. If you're building the driver from source code, make sure you install the pcsc/ifd-cyberjack.bundle directory to the "usb plugdir" directory of your pcsc-lite installation. The default make install procedure puts it into /usr/lib/pcsc/drivers/.
Multithreading The library is NOT save against multiple threads accessing at the same time the same reader. This gives you also most probably problems with your card anyway. The library is save against multiple threads accessing multiple readers. So you could start 3 threads, each accessing their own card in their own reader.
command size The command size is currently limited to ISO7816 short commands.
Keypressed callback IS8 rsct_setkeycb IU16ctn void (*cb) void *user_data The function rsct_setkeycb has been added to specify a callback to signal keypresses. The function specified in the second parameter is called whenever a C4 or F4 S-block is received from the reader. This information can be used to help the user, when entering a PIN on the cyberJack pinpad reader, which does not show how many keys have been pressed.
Obtaining Version Info void rsct_version IU8*vmajor IU8*vminor IU8*vpatchlevel IU16*vbuild The function rsct_version returns the complete version of the driver.
Additional CT_init Replacement Function IS8 rsct_init_name IU16ctn const char*device_name The function rsct_init_name can be used to directly specify the device to be used. The device name is specified like for PC/SC drivers: "usb:VENDOR_ID/PRODUCT_ID:libusb:BUS_ID:DEVICE_ID", so for a new cyberjack at /proc/bus/usb/003/002 the correct name would be: "usb:0c4b/0300:libusb:003:002"
Verifying Pins Using PC/SC Function SCardControl The following table shows values for the PSCS_VERIFY_STRUCTURE object which have been tested with ASCII and FPIN2 formatted pins. Field ASCII FPIN2 bTimerOut 00 00 bTimerOut2 00 00 bmFormatString 82 81 bmPINBlockString 04 48 bmPINLengthFormat 00 04 wPINMaxExtraDigit 0408 0408 bEntryValidationCondition 02 02 bNumberMessage 01 01 wLangId 0904 0904 bMsgIndex 00 00 bTeoPrologue 0-2 00 00
pcsc-cyberjack-3.99.5final.sp05/doc/cyberjack.8000066400000000000000000000021131231776762100211100ustar00rootroot00000000000000.TH cyberjack 8 "20 April 2010" .IX cyberjack .SH NAME cyberjack -- configuration and testing utility .SH SYNOPSIS cyberjack [COMMAND] [ARGUMENTS] .SH DESCRIPTION cyberjack helps you in case of troubleshooting as well as for configuration of your CyberJack card reader. Using the "check" command, it will create 3 files: .IP "cyberjack-report.log" with the test results .IP "cyberjack-hints.log" with possible hints for you to solve the issue you may have .IP "cyberjack.xml" with detailed results for the support team .SH OPTIONS .IP "\fBcheck\fR" perform system checks .IP "\fBaddflags \fR" adds flags in the CTAPI configuration file. This command needs an argument (the flags to add) .IP "\fBdelflags \fR" clears flags in the CTAPI configuration file. This command needs an argument (the flags to add) .IP "\fBbeep1\fR" Beeps using /dev/console .IP "\fBbeep2\fR" Beeps by outputting sending a control character to stdout .IP "\fBbeep3\fR" Beeps using a running X11 server .SH EXAMPLES cyberjack check cyberjack addflags 0xffff cyberjack delflags 0xff00 cyberjack --help pcsc-cyberjack-3.99.5final.sp05/doc/verifypin_ascii.c000066400000000000000000000377511231776762100224310ustar00rootroot00000000000000/* scardcontrol.c: sample code to use/test SCardControl() API Copyright (C) 2004-2005 Ludovic Rousseau 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 2 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, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * $Id: scardcontrol.c 2116 2006-07-31 15:10:48Z rousseau $ */ /* adapted by Martin Preuss, 2007/03/13 * This file is an example on how to verify an ASCII pin using Part 10 * of the PC/SC specs. * This example uses a STARCOS HBCI card. */ #include #include #include #include #include #include #include #include #define VERIFY_PIN #undef MODIFY_PIN #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif #define IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE SCARD_CTL_CODE(1) /* PCSC error message pretty print */ #define PCSC_ERROR_EXIT(rv, text) \ if (rv != SCARD_S_SUCCESS) \ { \ printf(text ": %s (0x%lX)\n", pcsc_stringify_error(rv), rv); \ goto end; \ } \ else \ printf(text ": OK\n\n"); #define PCSC_ERROR_CONT(rv, text) \ if (rv != SCARD_S_SUCCESS) \ printf(text ": %s (0x%lX)\n", pcsc_stringify_error(rv), rv); \ else \ printf(text ": OK\n\n"); int main(int argc, char *argv[]) { LONG rv; SCARDCONTEXT hContext; DWORD dwReaders; LPSTR mszReaders; char *ptr, **readers = NULL; int nbReaders; SCARDHANDLE hCard; DWORD dwActiveProtocol, dwReaderLen, dwState, dwProt, dwAtrLen; BYTE pbAtr[MAX_ATR_SIZE] = ""; char pbReader[MAX_READERNAME] = ""; int reader_nb; int i; unsigned char bSendBuffer[MAX_BUFFER_SIZE]; unsigned char bRecvBuffer[MAX_BUFFER_SIZE]; DWORD send_length, length; DWORD verify_ioctl = 0; DWORD modify_ioctl = 0; SCARD_IO_REQUEST pioRecvPci; SCARD_IO_REQUEST pioSendPci; PCSC_TLV_STRUCTURE *pcsc_tlv; #if defined(VERIFY_PIN) | defined(MODIFY_PIN) int offset; #endif #ifdef VERIFY_PIN PIN_VERIFY_STRUCTURE *pin_verify; #endif #ifdef MODIFY_PIN PIN_MODIFY_STRUCTURE *pin_modify; #endif printf("SCardControl sample code\n"); printf("V 1.1 2004-2005, Ludovic Rousseau \n"); printf("\nTHIS PROGRAM IS NOT DESIGNED AS A TESTING TOOL!\n"); printf("Do NOT use it unless you really know what you do.\n\n"); rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext); if (rv != SCARD_S_SUCCESS) { printf("SCardEstablishContext: Cannot Connect to Resource Manager %lX\n", rv); return 1; } /* Retrieve the available readers list */ rv = SCardListReaders(hContext, NULL, NULL, &dwReaders); if (rv != SCARD_S_SUCCESS) { printf("SCardListReader: %lX\n", rv); } mszReaders = malloc(sizeof(char)*dwReaders); if (mszReaders == NULL) { printf("malloc: not enough memory\n"); goto end; } rv = SCardListReaders(hContext, NULL, mszReaders, &dwReaders); if (rv != SCARD_S_SUCCESS) printf("SCardListReader: %lX\n", rv); /* Extract readers from the null separated string and get the total * number of readers */ nbReaders = 0; ptr = mszReaders; while (*ptr != '\0') { ptr += strlen(ptr)+1; nbReaders++; } if (nbReaders == 0) { printf("No reader found\n"); goto end; } /* allocate the readers table */ readers = calloc(nbReaders, sizeof(char *)); if (NULL == readers) { printf("Not enough memory for readers[]\n"); goto end; } /* fill the readers table */ nbReaders = 0; ptr = mszReaders; while (*ptr != '\0') { printf("%d: %s\n", nbReaders, ptr); readers[nbReaders] = ptr; ptr += strlen(ptr)+1; nbReaders++; } if (argc > 1) { reader_nb = atoi(argv[1]); if (reader_nb < 0 || reader_nb >= nbReaders) { printf("Wrong reader index: %d\n", reader_nb); goto end; } } else reader_nb = 0; /* connect to a reader (even without a card) */ dwActiveProtocol = -1; rv = SCardConnect(hContext, readers[reader_nb], SCARD_SHARE_DIRECT, SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1, &hCard, &dwActiveProtocol); printf(" Protocol: %ld\n", dwActiveProtocol); PCSC_ERROR_EXIT(rv, "SCardConnect") /* get GemPC firmware */ printf(" Get GemPC Firmware\n"); /* this is specific to Gemplus readers */ bSendBuffer[0] = 0x02; rv = SCardControl(hCard, IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE, bSendBuffer, 1, bRecvBuffer, sizeof(bRecvBuffer), &length); printf(" Firmware: "); for (i=0; i bTimerOut = 33; pin_verify -> bTimerOut2 = 0x00; pin_verify -> bmFormatString = 0x82; pin_verify -> bmPINBlockString = 0x04; pin_verify -> bmPINLengthFormat = 0x00; pin_verify -> wPINMaxExtraDigit = htons(0x0408); /* Min Max */ pin_verify -> bEntryValidationCondition = 0x02; /* validation key pressed */ pin_verify -> bNumberMessage = 0x01; pin_verify -> wLangId = htons(0x0904); pin_verify -> bMsgIndex = 0x00; pin_verify -> bTeoPrologue[0] = 0x00; pin_verify -> bTeoPrologue[1] = 0x00; pin_verify -> bTeoPrologue[2] = 0x00; /* pin_verify -> ulDataLength = 0x00; we don't know the size yet */ /* APDU: 00 20 00 00 08 30 30 30 30 00 00 00 00 */ offset = 0; pin_verify -> abData[offset++] = 0x00; /* CLA */ pin_verify -> abData[offset++] = 0x20; /* INS: VERIFY */ pin_verify -> abData[offset++] = 0x00; /* P1 */ pin_verify -> abData[offset++] = 0x90; /* P2 */ pin_verify -> abData[offset++] = 0x08; /* Lc: 8 data bytes */ pin_verify -> abData[offset++] = 0x20; /* '0' */ pin_verify -> abData[offset++] = 0x20; /* '0' */ pin_verify -> abData[offset++] = 0x20; /* '0' */ pin_verify -> abData[offset++] = 0x20; /* '0' */ pin_verify -> abData[offset++] = 0x20; /* '\0' */ pin_verify -> abData[offset++] = 0x20; /* '\0' */ pin_verify -> abData[offset++] = 0x20; /* '\0' */ pin_verify -> abData[offset++] = 0x20; /* '\0' */ pin_verify -> ulDataLength = htonl(offset); /* APDU size */ length = sizeof(PIN_VERIFY_STRUCTURE) + offset -1; /* -1 because PIN_VERIFY_STRUCTURE contains the first byte of abData[] */ printf(" command:"); for (i=0; i 0) { /* read the fake digits */ char in[40]; /* 4 digits + \n + \0 */ (void)fgets(in, sizeof(in), stdin); printf("keyboard sent: %s", in); } else /* if it is not a keyboard */ printf("\n"); } printf(" card response:"); for (i=0; i bTimerOut = 0x00; pin_modify -> bTimerOut2 = 0x00; pin_modify -> bmFormatString = 0x82; pin_modify -> bmPINBlockString = 0x04; pin_modify -> bmPINLengthFormat = 0x00; pin_modify -> bInsertionOffsetOld = 0x00; /* offset from APDU start */ pin_modify -> bInsertionOffsetNew = 0x04; /* offset from APDU start */ pin_modify -> wPINMaxExtraDigit = HOST_TO_CCID_16(0x0404); /* Min Max */ pin_modify -> bConfirmPIN = 0x03; /* b0 set = confirmation requested */ /* b1 set = current PIN entry requested */ pin_modify -> bEntryValidationCondition = 0x02; /* validation key pressed */ pin_modify -> bNumberMessage = 0x03; /* 3 for GemPC Pinpad, 0 for SPR532 */ pin_modify -> wLangId = HOST_TO_CCID_16(0x0904); pin_modify -> bMsgIndex1 = 0x00; pin_modify -> bMsgIndex2 = 0x00; pin_modify -> bMsgIndex3 = 0x00; pin_modify -> bTeoPrologue[0] = 0x00; pin_modify -> bTeoPrologue[1] = 0x00; pin_modify -> bTeoPrologue[2] = 0x00; /* pin_modify -> ulDataLength = 0x00; we don't know the size yet */ /* APDU: 00 20 00 00 08 30 30 30 30 00 00 00 00 */ offset = 0; pin_modify -> abData[offset++] = 0x00; /* CLA */ pin_modify -> abData[offset++] = 0x24; /* INS: CHANGE/UNBLOCK */ pin_modify -> abData[offset++] = 0x00; /* P1 */ pin_modify -> abData[offset++] = 0x00; /* P2 */ pin_modify -> abData[offset++] = 0x08; /* Lc: 2x8 data bytes */ pin_modify -> abData[offset++] = 0x30; /* '0' old PIN */ pin_modify -> abData[offset++] = 0x30; /* '0' */ pin_modify -> abData[offset++] = 0x30; /* '0' */ pin_modify -> abData[offset++] = 0x30; /* '0' */ pin_modify -> abData[offset++] = 0x30; /* '0' new PIN */ pin_modify -> abData[offset++] = 0x30; /* '0' */ pin_modify -> abData[offset++] = 0x30; /* '0' */ pin_modify -> abData[offset++] = 0x30; /* '0' */ pin_modify -> ulDataLength = HOST_TO_CCID_32(offset); /* APDU size */ length = sizeof(PIN_MODIFY_STRUCTURE) + offset -1; /* -1 because PIN_MODIFY_STRUCTURE contains the first byte of abData[] */ printf(" command:"); for (i=0; i 0) { /* read the fake digits */ char in[40]; /* 4 digits + \n + \0 */ (void)fgets(in, sizeof(in), stdin); printf("keyboard sent: %s", in); } } } /* modify PIN dump */ printf("\nmodify PIN dump: "); send_length = 5; memcpy(bSendBuffer, "\x00\x40\x00\x00\xFF", send_length); for (i=0; i #include #include #include #include #include #include #include #define VERIFY_PIN #undef MODIFY_PIN #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif #define IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE SCARD_CTL_CODE(1) /* PCSC error message pretty print */ #define PCSC_ERROR_EXIT(rv, text) \ if (rv != SCARD_S_SUCCESS) \ { \ printf(text ": %s (0x%lX)\n", pcsc_stringify_error(rv), rv); \ goto end; \ } \ else \ printf(text ": OK\n\n"); #define PCSC_ERROR_CONT(rv, text) \ if (rv != SCARD_S_SUCCESS) \ printf(text ": %s (0x%lX)\n", pcsc_stringify_error(rv), rv); \ else \ printf(text ": OK\n\n"); int main(int argc, char *argv[]) { LONG rv; SCARDCONTEXT hContext; DWORD dwReaders; LPSTR mszReaders; char *ptr, **readers = NULL; int nbReaders; SCARDHANDLE hCard; DWORD dwActiveProtocol, dwReaderLen, dwState, dwProt, dwAtrLen; BYTE pbAtr[MAX_ATR_SIZE] = ""; char pbReader[MAX_READERNAME] = ""; int reader_nb; int i; unsigned char bSendBuffer[MAX_BUFFER_SIZE]; unsigned char bRecvBuffer[MAX_BUFFER_SIZE]; DWORD send_length, length; DWORD verify_ioctl = 0; DWORD modify_ioctl = 0; SCARD_IO_REQUEST pioRecvPci; SCARD_IO_REQUEST pioSendPci; PCSC_TLV_STRUCTURE *pcsc_tlv; #if defined(VERIFY_PIN) | defined(MODIFY_PIN) int offset; #endif #ifdef VERIFY_PIN PIN_VERIFY_STRUCTURE *pin_verify; #endif #ifdef MODIFY_PIN PIN_MODIFY_STRUCTURE *pin_modify; #endif printf("SCardControl sample code\n"); printf("V 1.1 2004-2005, Ludovic Rousseau \n"); printf("\nTHIS PROGRAM IS NOT DESIGNED AS A TESTING TOOL!\n"); printf("Do NOT use it unless you really know what you do.\n\n"); rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext); if (rv != SCARD_S_SUCCESS) { printf("SCardEstablishContext: Cannot Connect to Resource Manager %lX\n", rv); return 1; } /* Retrieve the available readers list */ rv = SCardListReaders(hContext, NULL, NULL, &dwReaders); if (rv != SCARD_S_SUCCESS) { printf("SCardListReader: %lX\n", rv); } mszReaders = malloc(sizeof(char)*dwReaders); if (mszReaders == NULL) { printf("malloc: not enough memory\n"); goto end; } rv = SCardListReaders(hContext, NULL, mszReaders, &dwReaders); if (rv != SCARD_S_SUCCESS) printf("SCardListReader: %lX\n", rv); /* Extract readers from the null separated string and get the total * number of readers */ nbReaders = 0; ptr = mszReaders; while (*ptr != '\0') { ptr += strlen(ptr)+1; nbReaders++; } if (nbReaders == 0) { printf("No reader found\n"); goto end; } /* allocate the readers table */ readers = calloc(nbReaders, sizeof(char *)); if (NULL == readers) { printf("Not enough memory for readers[]\n"); goto end; } /* fill the readers table */ nbReaders = 0; ptr = mszReaders; while (*ptr != '\0') { printf("%d: %s\n", nbReaders, ptr); readers[nbReaders] = ptr; ptr += strlen(ptr)+1; nbReaders++; } if (argc > 1) { reader_nb = atoi(argv[1]); if (reader_nb < 0 || reader_nb >= nbReaders) { printf("Wrong reader index: %d\n", reader_nb); goto end; } } else reader_nb = 0; /* connect to a reader (even without a card) */ dwActiveProtocol = -1; rv = SCardConnect(hContext, readers[reader_nb], SCARD_SHARE_DIRECT, SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1, &hCard, &dwActiveProtocol); printf(" Protocol: %ld\n", dwActiveProtocol); PCSC_ERROR_EXIT(rv, "SCardConnect") /* get GemPC firmware */ printf(" Get GemPC Firmware\n"); /* this is specific to Gemplus readers */ bSendBuffer[0] = 0x02; rv = SCardControl(hCard, IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE, bSendBuffer, 1, bRecvBuffer, sizeof(bRecvBuffer), &length); printf(" Firmware: "); for (i=0; i bTimerOut = 33; pin_verify -> bTimerOut2 = 0x00; pin_verify -> bmFormatString = 0x81; /* 89? */ pin_verify -> bmPINBlockString = 0x48; pin_verify -> bmPINLengthFormat = 0x04; pin_verify -> wPINMaxExtraDigit = htons(0x0408); /* Min Max */ pin_verify -> bEntryValidationCondition = 0x02; /* validation key pressed */ pin_verify -> bNumberMessage = 0x01; pin_verify -> wLangId = htons(0x0904); pin_verify -> bMsgIndex = 0x00; pin_verify -> bTeoPrologue[0] = 0x00; pin_verify -> bTeoPrologue[1] = 0x00; pin_verify -> bTeoPrologue[2] = 0x00; /* pin_verify -> ulDataLength = 0x00; we don't know the size yet */ /* APDU: 00 20 00 00 08 30 30 30 30 00 00 00 00 */ offset = 0; pin_verify -> abData[offset++] = 0x00; /* CLA */ pin_verify -> abData[offset++] = 0x20; /* INS: VERIFY */ pin_verify -> abData[offset++] = 0x00; /* P1 */ pin_verify -> abData[offset++] = 0x81; /* P2 */ pin_verify -> abData[offset++] = 0x08; /* Lc: 8 data bytes */ pin_verify -> abData[offset++] = 0x2f; /* '0' */ pin_verify -> abData[offset++] = 0xff; /* '0' */ pin_verify -> abData[offset++] = 0xff; /* '0' */ pin_verify -> abData[offset++] = 0xff; /* '0' */ pin_verify -> abData[offset++] = 0xff; /* '\0' */ pin_verify -> abData[offset++] = 0xff; /* '\0' */ pin_verify -> abData[offset++] = 0xff; /* '\0' */ pin_verify -> abData[offset++] = 0xff; /* '\0' */ pin_verify -> ulDataLength = htonl(offset); /* APDU size */ length = sizeof(PIN_VERIFY_STRUCTURE) + offset -1; /* -1 because PIN_VERIFY_STRUCTURE contains the first byte of abData[] */ printf(" command:"); for (i=0; i 0) { /* read the fake digits */ char in[40]; /* 4 digits + \n + \0 */ (void)fgets(in, sizeof(in), stdin); printf("keyboard sent: %s", in); } else /* if it is not a keyboard */ printf("\n"); } printf(" card response:"); for (i=0; i bTimerOut = 0x00; pin_modify -> bTimerOut2 = 0x00; pin_modify -> bmFormatString = 0x82; pin_modify -> bmPINBlockString = 0x04; pin_modify -> bmPINLengthFormat = 0x00; pin_modify -> bInsertionOffsetOld = 0x00; /* offset from APDU start */ pin_modify -> bInsertionOffsetNew = 0x04; /* offset from APDU start */ pin_modify -> wPINMaxExtraDigit = HOST_TO_CCID_16(0x0404); /* Min Max */ pin_modify -> bConfirmPIN = 0x03; /* b0 set = confirmation requested */ /* b1 set = current PIN entry requested */ pin_modify -> bEntryValidationCondition = 0x02; /* validation key pressed */ pin_modify -> bNumberMessage = 0x03; /* 3 for GemPC Pinpad, 0 for SPR532 */ pin_modify -> wLangId = HOST_TO_CCID_16(0x0904); pin_modify -> bMsgIndex1 = 0x00; pin_modify -> bMsgIndex2 = 0x00; pin_modify -> bMsgIndex3 = 0x00; pin_modify -> bTeoPrologue[0] = 0x00; pin_modify -> bTeoPrologue[1] = 0x00; pin_modify -> bTeoPrologue[2] = 0x00; /* pin_modify -> ulDataLength = 0x00; we don't know the size yet */ /* APDU: 00 20 00 00 08 30 30 30 30 00 00 00 00 */ offset = 0; pin_modify -> abData[offset++] = 0x00; /* CLA */ pin_modify -> abData[offset++] = 0x24; /* INS: CHANGE/UNBLOCK */ pin_modify -> abData[offset++] = 0x00; /* P1 */ pin_modify -> abData[offset++] = 0x00; /* P2 */ pin_modify -> abData[offset++] = 0x08; /* Lc: 2x8 data bytes */ pin_modify -> abData[offset++] = 0x30; /* '0' old PIN */ pin_modify -> abData[offset++] = 0x30; /* '0' */ pin_modify -> abData[offset++] = 0x30; /* '0' */ pin_modify -> abData[offset++] = 0x30; /* '0' */ pin_modify -> abData[offset++] = 0x30; /* '0' new PIN */ pin_modify -> abData[offset++] = 0x30; /* '0' */ pin_modify -> abData[offset++] = 0x30; /* '0' */ pin_modify -> abData[offset++] = 0x30; /* '0' */ pin_modify -> ulDataLength = HOST_TO_CCID_32(offset); /* APDU size */ length = sizeof(PIN_MODIFY_STRUCTURE) + offset -1; /* -1 because PIN_MODIFY_STRUCTURE contains the first byte of abData[] */ printf(" command:"); for (i=0; i 0) { /* read the fake digits */ char in[40]; /* 4 digits + \n + \0 */ (void)fgets(in, sizeof(in), stdin); printf("keyboard sent: %s", in); } } } /* modify PIN dump */ printf("\nmodify PIN dump: "); send_length = 5; memcpy(bSendBuffer, "\x00\x40\x00\x00\xFF", send_length); for (i=0; isecurity risk!) # 0x80000 don't use X11 for beeping (always use console) # # These values can be OR combined to form the resulting value. # # When using Moneyplex with Kernel 2.6.13 or before (e.g. SuSE10.0) on a # 64 bit system you must use the kernel module for the cyberjack/ecom: # # flags=0x20000 # # Debug logging can be enabled on such a system with the following setting: # # flags=0x2ffff # flags=0 # # Path and name of the default logfile (defaults to /tmp/cj.log) # debugFile=/tmp/cj.log # # This file is used to store the serial numbers of the connected devices # It can be used to assign a reader to a particular port number, regardless # of the USB port the reader actually is connected to. # If you call CT_init() with port 0x9000 then the first serial number is read # from this file and the USB bus is scanned for a reader with this particular # serial number. # Port 0x9001 indicates the seconds serial number and so forth. # # Normally this setting is left blank which makes the driver read and write # the file from/to the home directory of the calling user (the filename is # then $HOME/cyberjack_serials). # #serialFile=/etc/cyberjack_serials [vars] ReplaceTA1_96=149 pcsc-cyberjack-3.99.5final.sp05/gource.sh000077500000000000000000000005621231776762100201460ustar00rootroot00000000000000#!/bin/sh `gource --git-log-command` > /tmp/my-git-project.log gource -1280x720 --highlight-all-users -s .05 --hide-filenames --user-scale 2 --crop horizontal --date-format "%d %B %Y" --stop-at-end --output-ppm-stream - --output-framerate 30 . /tmp/my-git-project.log | ffmpeg -y -b 3000K -r 30 -f image2pipe -vcodec ppm -i - -vcodec mpeg4 /tmp/cyberjack-gource.mp4 pcsc-cyberjack-3.99.5final.sp05/ifd-cyberjack.spec.in000066400000000000000000000054421231776762100223030ustar00rootroot00000000000000 %define PACK_VER 1 %define dist @RPM_DIST_NAME@ %define disttag @RPM_DIST_TAG@ %define distver @RPM_DIST_VER@ %define readers_dir %{_libdir}/readers Name: pcsc-cyberjack Summary: PC/SC driver for REINER SCT cyberjack USB chipcard reader Version: @CYBERJACK_VERSION_RELEASE_STRING@ Release: %{PACK_VER}.%{disttag}%{distver} License: LGPL Packager: Frank Neuber URL: http://www.reiner-sct.de/ Group: System Environment/Libraries Source: pcsc-cyberjack_%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-root Requires: udev, pcsc-lite # BuildRequires: Prereq: /sbin/ldconfig %package gui Summary: Graphical Diagnostic Tool Requires: %{name} = %{version} Group: System Environment/Libraries %description gui Graphical diagnostic tool for Reiner SCT cyberJack card readers. This package contains a graphical tool which lists all connected Reiner SCT readers and allows flashing E-Com A and newer readers. It can also be used to diagnose most frequent problems in the reader-/driver setup. %description REINER SCT cyberJack USB chipcard reader user space driver This package includes the IFD driver for the cyberJack contactless (RFID) and contact USB chipcard reader. If you run into problems you should stop current running pcscd by typing "sudo /etc/init.d/pcscd stop" or "sudo killall pcscd" and start the pcscd in debug mode by typing "sudo /usr/sbin/pcscd -d -a -f" in a console and watch its output. For more information regarding installation under Linux see the README.txt in the documentation directory, esp. regarding compatibility with host controllers. For more information about the reader, software updates and a shop see http://www.reiner-sct.com/ %prep %setup -q %build %configure --disable-static --sysconfdir="%{_sysconfdir}" --with-usbdropdir="@RPM_PCSC_DROPDIR@" make %install [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT make DESTDIR=$RPM_BUILD_ROOT install rm $RPM_BUILD_ROOT/@RPM_PCSC_DROPDIR@/libifd-cyberjack.bundle/Contents/Linux/libifd-cyberjack.la rm -rf $RPM_BUILD_ROOT/usr/bin/fxcyberjack %clean [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT %post /sbin/ldconfig /sbin/insserv pcscd /etc/init.d/pcscd restart %postun /sbin/ldconfig %files %defattr(0644,root,root) %doc COPYRIGHT.GPL COPYRIGHT.LGPL doc/README.txt doc/LIESMICH.txt # PC/SC %attr(0755,root,root) %{_bindir}/cyberjack %attr(0755,root,root) %{_libdir}/cyberjack/getdist.sh %attr(0755,root,root) %{_libdir}/cyberjack/pcscd_init.diff @RPM_PCSC_DROPDIR@/libifd-cyberjack.bundle/* %{_mandir}* /etc/cyberjack.conf.default %changelog -n pcsc-cyberjack * Tue Jun 14 2011 09:53:20 +0200 - Frank Neuber + pcsc-cyberjack-3.99.5final.SP02 - released 3.99.5final.SP02 - see changelog in debian/changelog in the source package pcsc-cyberjack-3.99.5final.sp05/ifd/000077500000000000000000000000001231776762100170625ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/ifd/Info.plist.in000066400000000000000000000035441231776762100214450ustar00rootroot00000000000000 CFBundleDevelopmentRegion English CFBundleExecutable @cyberjack_ifd_filename@ CFBundleInfoDictionaryVersion 6.0 CFBundleName cyberjack-ifd CFBundlePackageType BNDL CFBundleSignature ???? CFBundleVersion 0.0.1d1 ifdManufacturerString REINER SCT (www.reiner-sct.com) ifdProductString PC/SC Lite IFD driver ifdCapabilities 0x00000000 ifdProtocolSupport 0x00000001 ifdVersionNumber 0x00000001 ifdVendorID 0x0c4b 0x0c4b 0x0c4b 0x0c4b 0x0c4b 0x0c4b 0x0c4b 0x0c4b ifdProductID 0x0300 0x0400 0x0401 0x0500 0x0501 0x0502 0x0504 0x0505 ifdFriendlyName REINER SCT cyberJack pp_a REINER SCT cyberJack ecom_a REINER SCT cyberJack pp_a2 REINER SCT cyberJack RFID standard REINER SCT cyberJack RFID komfort REINER SCT cyberJack compact REINER SCT cyberJack go / go plus REINER SCT cyberJack wave pcsc-cyberjack-3.99.5final.sp05/ifd/Makefile.am000066400000000000000000000017171231776762100211240ustar00rootroot00000000000000 EXTRA_DIST=Info.plist.in PkgInfo ifd_special.cpp AM_CFLAGS=$(visibility_cflags) AM_CPPFLAGS=$(visibility_cflags) noinst_HEADERS=\ ctbcs.h ifd.h cyberjack_l.h INCLUDES=-I$(top_srcdir)/include -I../include/driver -I../include/firmware -I.. -I../cjeca32 -I.. -I../cjeca32/ausb $(pcsc_includes) bundledir=$(usbdropdir)/libifd-cyberjack.bundle/Contents bundle_DATA=Info.plist PkgInfo if IS_LINUX bundlelinuxdir=$(usbdropdir)/libifd-cyberjack.bundle/Contents/Linux bundlelinux_LTLIBRARIES=libifd-cyberjack.la endif if IS_OSX bundleosxdir=$(usbdropdir)/libifd-cyberjack.bundle/Contents/MacOS bundleosx_LTLIBRARIES=libifd-cyberjack.la endif libifd_cyberjack_la_SOURCES=ifd.cpp libifd_cyberjack_la_LDFLAGS=-version-info @CYBERJACK_SO_CURRENT@:@CYBERJACK_SO_REVISION@:@CYBERJACK_SO_AGE@ -no-undefined #libifd_cyberjack_la_LIBADD=$(top_builddir)/cjeca32/libeca.la $(top_builddir)/cjeca32/ausb/libausb.la libifd_cyberjack_la_LIBADD=$(top_builddir)/cjeca32/libeca.la -lstdc++ pcsc-cyberjack-3.99.5final.sp05/ifd/PkgInfo000066400000000000000000000000111231776762100203320ustar00rootroot00000000000000BNDL???? pcsc-cyberjack-3.99.5final.sp05/ifd/ctbcs.h000066400000000000000000000123431231776762100203340ustar00rootroot00000000000000/* CT-BCS commands, responses and parameters for terminals without keypad and display. This file is part of the Unix driver for Towitoko smartcard readers Copyright (C) 1998 1999 2000 Carlos Prados (cprados@yahoo.com) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _CTBCS_ #define _CTBCS_ /* * Command and response size */ #define CTBCS_MIN_COMMAND_SIZE 2 #define CTBCS_MIN_RESPONSE_SIZE 2 /* * Class byte of all CTBCS commands */ #define CTBCS_CLA 0x20 /* * Mandatory CT-BCS commands */ #define CTBCS_INS_RESET 0x11 /* Reset CT */ #define CTBCS_INS_REQUEST 0x12 /* Request ICC */ #define CTBCS_INS_STATUS 0x13 /* Get reader status */ #define CTBCS_INS_EJECT 0x15 /* Eject ICC */ /* * P1 parameter: functional units */ #define CTBCS_P1_CT_KERNEL 0x00 #define CTBCS_P1_INTERFACE1 0x01 #define CTBCS_P1_INTERFACE2 0x02 #define CTBCS_P1_INTERFACE3 0x03 #define CTBCS_P1_INTERFACE4 0x04 #define CTBCS_P1_INTERFACE5 0x05 #define CTBCS_P1_INTERFACE6 0x06 #define CTBCS_P1_INTERFACE7 0x07 #define CTBCS_P1_INTERFACE8 0x08 #define CTBCS_P1_INTERFACE9 0x09 #define CTBCS_P1_INTERFACE10 0x0A #define CTBCS_P1_INTERFACE11 0x0B #define CTBCS_P1_INTERFACE12 0x0C #define CTBCS_P1_INTERFACE13 0x0D #define CTBCS_P1_INTERFACE14 0x0E #define CTBCS_P1_DISPLAY 0x40 #define CTBCS_P1_KEYPAD 0x50 /* * P2 parameter for Reset CT: data to be returned */ #define CTBCS_P2_RESET_NO_RESP 0x00 /* Return no data */ #define CTBCS_P2_RESET_GET_ATR 0x01 /* Return complete ATR */ #define CTBCS_P2_RESET_GET_HIST 0x02 /* Return historical bytes */ /* * P2 parameter for Request ICC: data to be returned */ #define CTBCS_P2_REQUEST_NO_RESP 0x00 /* Return no data */ #define CTBCS_P2_REQUEST_GET_ATR 0x01 /* Return complete ATR */ #define CTBCS_P2_REQUEST_GET_HIST 0x02 /* Return historical bytes */ /* * P2 parameter for Get status: TAG of data object to return */ #define CTBCS_P2_STATUS_MANUFACTURER 0x46 /* Return manufacturer DO */ #define CTBCS_P2_STATUS_ICC 0x80 /* Return ICC DO */ /* * General return codes */ #define CTBCS_SW1_OK 0x90 /* Command successful */ #define CTBCS_SW2_OK 0x00 #define CTBCS_SW1_WRONG_LENGTH 0x67 /* Wrong length */ #define CTBCS_SW2_WRONG_LENGTH 0x00 #define CTBCS_SW1_COMMAND_NOT_ALLOWED 0x69 /* Command not allowed */ #define CTBCS_SW2_COMMAND_NOT_ALLOWED 0x00 #define CTBCS_SW1_WRONG_PARAM 0x6A /* Wrong parameters P1, P2 */ #define CTBCS_SW2_WRONG_PARAM 0x00 #define CTBCS_SW1_WRONG_INS 0x6D /* Wrong Instruction */ #define CTBCS_SW2_WRONG_INS 0x00 #define CTBCS_SW1_WRONG_CLA 0x6E /* Class not supported */ #define CTBCS_SW2_WRONG_CLA 0x00 #define CTBCS_SW1_ICC_ERROR 0x6F /* ICC removed, defective or */ #define CTBCS_SW2_ICC_ERROR 0x00 /* no longer reacts */ /* * Return codes for Reset CT */ #define CTBCS_SW1_RESET_CT_OK 0x90 /* Reset CT successful */ #define CTBCS_SW2_RESET_CT_OK 0x00 #define CTBCS_SW1_RESET_SYNC_OK 0x90 /* Synchoronous ICC, */ #define CTBCS_SW2_RESET_SYNC_OK 0x00 /* reset successful */ #define CTBCS_SW1_RESET_ASYNC_OK 0x90 /* Asynchoronous ICC, */ #define CTBCS_SW2_RESET_ASYNC_OK 0x01 /* reset successful */ #define CTBCS_SW1_RESET_ERROR 0x64 /* Reset not successful */ #define CTBCS_SW2_RESET_ERROR 0x00 /* * Return codes for Request ICC */ #define CTBCS_SW1_REQUEST_SYNC_OK 0x90 /* Synchoronous ICC, */ #define CTBCS_SW2_REQUEST_SYNC_OK 0x00 /* reset successful */ #define CTBCS_SW1_REQUEST_ASYNC_OK 0x90 /* Asynchoronous ICC, */ #define CTBCS_SW2_REQUEST_ASYNC_OK 0x01 /* reset successful */ #define CTBCS_SW1_REQUEST_NO_CARD 0x62 /* No card present */ #define CTBCS_SW2_REQUEST_NO_CARD 0x00 #define CTBCS_SW1_REQUEST_CARD_PRESENT 0x62 /* Card already present */ #define CTBCS_SW2_REQUEST_CARD_PRESENT 0x01 #define CTBCS_SW1_REQUEST_ERROR 0x64 /* Reset not successful */ #define CTBCS_SW2_REQUEST_ERROR 0x00 #define CTBCS_SW1_REQUEST_TIMER_ERROR 0x69 /* Timer not supported */ #define CTBCS_SW2_REQUEST_TIMER_ERROR 0x00 /* * Return codes for Eject ICC */ #define CTBCS_SW1_EJECT_OK 0x90 /* Command succesful, */ #define CTBCS_SW2_EJECT_OK 0x00 #define CTBCS_SW1_EJECT_REMOVED 0x90 /* Command succesful, */ #define CTBCS_SW2_EJECT_REMOVED 0x01 /* Card removed */ #define CTBCS_SW1_EJECT_NOT_REMOVED 0x62 /* Card not removed */ #define CTBCS_SW2_EJECT_NOT_REMOVED 0x00 /* * Data returned on Get Status command */ #define CTBCS_DATA_STATUS_NOCARD 0x00 /* No card present */ #define CTBCS_DATA_STATUS_CARD 0x01 /* Card present */ #define CTBCS_DATA_STATUS_CARD_CONNECT 0x05 /* Card present */ #endif /* _CTBCS_ */ pcsc-cyberjack-3.99.5final.sp05/ifd/cyberjack_l.h000066400000000000000000000175011231776762100215070ustar00rootroot00000000000000/*************************************************************************** begin : Mon Aug 14 2006 copyright : (C) 2006 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef CYBERJACKAPI_H #define CYBERJACKAPI_H #include #include #include #define CT_MAX_DEVICES 256 #define CT_INVALID_CTN (0xffff) #define CT_API_RV_OK 0 #define CT_API_RV_ERR_INVALID -1 #define CT_API_RV_ERR_CT -8 #define CT_API_RV_ERR_TRANS -10 #define CT_API_RV_ERR_MEMORY -11 #define CT_API_RV_ERR_HOST -127 #define CT_API_RV_ERR_HTSI -128 #define CT_API_AD_HOST 2 #define CT_API_AD_REMOTE 5 #define CT_API_AD_CT 1 /* 14 (0x0e) is normally used for chipcard slot 14, but no cyberjack has that many * slots, so we can safely use this value here */ #define CT_API_AD_DRIVER 14 #define CJ_CTAPI_MAX_LENC (4+1+255+1) #define CJ_CTAPI_MAX_LENR (256+2) #define CJ_KEY_DIGIT 1 #define CJ_KEY_CLEAR 2 #define CT_LOGFILE_LIMIT (10*1024*1024) /* some special APDUs specific to cyberJack ECA and newer */ #define CJ_SPECIAL_CLA 0x30 /** Update the keys stored on the reader. * * * * * * * * * *
CLAINSP1P2DATAResponse
0x300x10Bit 7=1: Last data block; Bit 6=1: abort; Bit 5=1: first data block; Bits 4-0: 0 * 0x00 * Key data (max 255 bytes per command)SW1, SW2
*/ #define CJ_SPECIAL_INS_KEYUPDATE 0x10 /** Delete all modules on the reader. * * * * * * * * * *
CLAINSP1P2DATAResponse
0x300x200x00 * 0x00 * noneSW1, SW2
*/ #define CJ_SPECIAL_INS_DELETEALLMODS 0x20 /** Upload a module/kernel to the driver for later flashing. * * * * * * * * * *
CLAINSP1P2DATAResponse
0x300x21Bit 6=1: abort; Bit 5=1: first data block; Bits 7, 4-0: 0 * 0x00 * Module data (max 255 bytes per command)SW1, SW2
*/ #define CJ_SPECIAL_INS_UPLOADMOD 0x21 /** Upload a module/kernel signature to the driver for later flashing. * * * * * * * * * *
CLAINSP1P2DATAResponse
0x300x22Bit 6=1: abort; Bit 5=1: first data block; Bits 7, 4-0: 0 * 0x00 * Module data (max 255 bytes per command)SW1, SW2
*/ #define CJ_SPECIAL_INS_UPLOADSIG 0x22 /** Flash the kernel/module uploaded via @ref CJ_SPECIAL_INS_UPLOADSIG and @ref CJ_SPECIAL_INS_UPLOADMOD. * * * * * * * * * *
CLAINSP1P2DATAResponse
0x300x230x00 * 0x00 * noneSW1, SW2
*/ #define CJ_SPECIAL_INS_UPLOADFLASH 0x23 /** Get the module info of the module previously uploaded via @ref CJ_SPECIAL_INS_UPLOADMOD. * * * * * * * * * *
CLAINSP1P2DATAResponse
0x300x240x00 * 0x00 * noneModule info (cj_ModuleInfo) SW1, SW2
*/ #define CJ_SPECIAL_INS_UPLOADINFO 0x24 #define CJ_SPECIAL_INS_SHOWAUTH 0x30 /** Get the number of available module infos. * * * * * * * * * *
CLAINSP1P2DATAResponse
0x300x310x00 * 0x00 * noneNumber of modules (1 byte) SW1, SW2
*/ #define CJ_SPECIAL_INS_GETMODCOUNT 0x31 /** Get a module info. * * * * * * * * * *
CLAINSP1P2DATAResponse
0x300x32Index (0 for first module) * 0x00 * noneModule info (cj_ModuleInfo) SW1, SW2
*/ #define CJ_SPECIAL_INS_GETMODINFO 0x32 /** Get a reader info. * * * * * * * * * *
CLAINSP1P2DATAResponse
0x300x400x00 * 0x00 * noneReader info (cj_ReaderInfo) SW1, SW2
*/ #define CJ_SPECIAL_INS_GETREADERINFO 0x40 #ifdef __cplusplus extern "C" { #endif enum RSCT_KEY { RSCT_Key_Unknown=0, RSCT_Key_Digit, RSCT_Key_C, RSCT_Key_CLR, RSCT_Key_At, RSCT_Key_Ok, RSCT_Key_Up, RSCT_Key_Down }; /** * @return <0 on error, 0 if reader should beep, 1 if this has been handled * by the callback function */ typedef int (*CT_KEY_CB)(uint16_t ctn, int key, void *user_data); CJECA32_API int8_t CT_init(uint16_t ctn, uint16_t pn); CJECA32_API int8_t CT_data(uint16_t ctn, uint8_t *dad, uint8_t *sad, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); CJECA32_API int8_t CT_close(uint16_t ctn); CJECA32_API int8_t rsct_setkeycb(uint16_t ctn, CT_KEY_CB cb, void *user_data); CJECA32_API int8_t rsct_init_name(uint16_t ctn, const char *devName); CJECA32_API void rsct_version(uint8_t *vmajor, uint8_t *vminor, uint8_t *vpatchlevel, uint16_t *vbuild); CJECA32_API void rsct_log(uint16_t ctn, unsigned int what, const char *file, int line, const char *function, const char *format, ...); CJECA32_API void rsct_vlog(uint16_t ctn, unsigned int what, const char *file, int line, const char *function, const char *format, va_list args); CJECA32_API void rsct_log_bytes(uint16_t ctn, unsigned int what, const char *file, int line, const char *function, const char *hdr, int datalen, const uint8_t *data); CJECA32_API uint32_t rsct_ifd_ioctl(uint16_t ctn, uint32_t IoCtrlCode, uint8_t *Input, uint32_t InputLength, uint8_t *Output, uint32_t *OutputLength); #ifdef __cplusplus } #endif #endif pcsc-cyberjack-3.99.5final.sp05/ifd/ifd.cpp000066400000000000000000001222221231776762100203310ustar00rootroot00000000000000 #ifdef HAVE_CONFIG_H #include #endif #include "ifd.h" #include "Platform.h" #include "cjeca32.h" #include "Reader.h" #define FEATURE_EXECUTE_PACE 0x20 #include "Debug.h" #include "config_l.h" #include "cyberjack_l.h" #ifdef ENABLE_NONSERIAL # include "ausb_l.h" # include "usbdev_l.h" #endif #include /* * Not exported constants definition */ /* Maximum number of readers handled */ #define IFDH_MAX_READERS 32 /* Maximum number of slots per reader handled */ #define IFDH_MAX_SLOTS 1 #define PATHMAX 256 #define TAG_IFD_ATR_WIN32 0x90303 /* uncomment to disable sending commands to the reader */ /*#define PART10_DISABLE_APDU*/ #define WINDOWS_CTL_GET_FEATURE 0x313520 #define WINDOWS_CTL_GET_FEATURE2 0x42000c20 #define DEBUGLUN(MACRO_LUN, debug_mask, format, ...) { \ char dbg_lun_buffer[32]; \ char dbg_buffer[256]; \ \ snprintf(dbg_lun_buffer, sizeof(dbg_lun_buffer)-1, "LUN%X", (int) MACRO_LUN); \ snprintf(dbg_buffer, sizeof(dbg_buffer)-1, \ __FILE__":%5d: " format , __LINE__ , ##__VA_ARGS__); \ dbg_buffer[sizeof(dbg_buffer)-1]=0; \ Debug.Out(dbg_lun_buffer, debug_mask, dbg_buffer,0,0); \ } #define DEBUGDEV(devName, debug_mask, format, ...) {\ char dbg_buffer[256]; \ \ snprintf(dbg_buffer, sizeof(dbg_buffer)-1,\ __FILE__":%5d: " format , __LINE__ , ##__VA_ARGS__); \ dbg_buffer[sizeof(dbg_buffer)-1]=0; \ Debug.Out(devName, debug_mask, dbg_buffer,0,0); \ } #ifdef HAVE_PTHREAD_H # define MUTEX_LOCK(MACRO_MUTEX) pthread_mutex_lock(&MACRO_MUTEX) # define MUTEX_UNLOCK(MACRO_MUTEX) pthread_mutex_unlock(&MACRO_MUTEX) #else # define MUTEX_LOCK(MACRO_MUTEX) # define MUTEX_UNLOCK(MACRO_MUTEX) #endif static int rsct_ifd_driver_initialized=0; static IFDHandler rsct_ifd_handler; /* Add new devices here */ static bool _isDeviceSupported(uint16_t vendorId, uint16_t productId) { return (vendorId==0xc4b) && (productId==0x300 || productId==0x400 || productId==0x401 || productId==0x500 || productId==0x501); } #ifdef ENABLE_NONSERIAL static rsct_usbdev_t *_findUsbDevByName(rsct_usbdev_t *d, const char *s) { int vendorId, productId, busId, busPos; if (strstr(s, ":libusb:")!=NULL) { if (sscanf(s, "usb:%04x/%04x:libusb:%03d:%03d", &vendorId, &productId, &busId, &busPos)!=4) { DEBUGDEV(s,DEBUG_MASK_IFD, "Bad device string [%s]\n", s); return NULL; } while(d) { if ((d->busId==(uint32_t)busId) && (d->busPos==(uint32_t)busPos) && (d->vendorId==(uint32_t)vendorId) && (d->productId==(uint32_t)productId)) break; d=d->next; } } else if (strstr(s, ":libhal:")!=NULL) { const char *t; t=strstr(s, ":libhal:"); t+=8; while(d) { if (d->halUDI && strcasecmp(t, d->halUDI)==0) break; d=d->next; } } return d; } static void _logAusb(ausb_dev_handle *ah, const char *text, const void *pData, uint32_t ulDataLen) { rsct_debug_out("", DEBUG_MASK_COMMUNICATION_IN, (char*)text, (char*)pData, ulDataLen); } #endif IFDHandler::IFDHandler() { fprintf(stderr, "CYBERJACK: Started\n"); #ifdef HAVE_PTHREAD_H pthread_mutex_init(&m_contextMutex, NULL); #endif } IFDHandler::~IFDHandler() { MUTEX_LOCK(m_contextMutex); /* the map contains pointers, so delete their targets first */ for (ContextMap::iterator it=m_contextMap.begin(); it!=m_contextMap.end(); it++) { delete it->second; it->second=NULL; } /* then clear the map */ m_contextMap.clear(); MUTEX_UNLOCK(m_contextMutex); DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Driver deinitialized"); rsct_config_fini(); #ifdef HAVE_PTHREAD_H pthread_mutex_destroy(&m_contextMutex); #endif } int IFDHandler::init() { unsigned int nLevelMask=0; const char *s; rsct_config_init(); /* generic debug */ if (rsct_config_get_flags() & (CT_FLAGS_DEBUG_GENERIC | CT_FLAGS_DEBUG_READER)) { nLevelMask|= DEBUG_MASK_RESULTS | DEBUG_MASK_COMMUNICATION_ERROR; } /* ECA debugging */ if (rsct_config_get_flags() & CT_FLAGS_DEBUG_ECA) { nLevelMask|= DEBUG_MASK_INPUT | DEBUG_MASK_OUTPUT | DEBUG_MASK_TRANSLATION; } /* USB debug */ if (rsct_config_get_flags() & (CT_FLAGS_DEBUG_AUSB | CT_FLAGS_DEBUG_USB)) { nLevelMask|= DEBUG_MASK_COMMUNICATION_OUT | DEBUG_MASK_COMMUNICATION_IN | DEBUG_MASK_COMMUNICATION_ERROR | DEBUG_MASK_COMMUNICATION_INFO | DEBUG_MASK_COMMUNICATION_INT; } /* misc debug */ if (rsct_config_get_flags() & CT_FLAGS_DEBUG_CTAPI) { nLevelMask|=DEBUG_MASK_CTAPI; } if (rsct_config_get_flags() & CT_FLAGS_DEBUG_IFD) { nLevelMask|=DEBUG_MASK_IFD; } /* set resulting debug mask */ Debug.setLevelMask(nLevelMask); /* set log file */ s=rsct_config_get_debug_filename(); if (s) { struct stat st; Debug.setLogFileName(s); /* check for log file size */ if (stat(s, &st)==0) { if (st.st_size>CT_LOGFILE_LIMIT) { if (truncate(s, 0)==0) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Truncated log file"); } } } } #ifdef ENABLE_NONSERIAL ausb_set_log_fn(_logAusb); /* init usbdev interface */ if (rsct_usbdev_init()<0) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Error on rsct_usbdev_init, maybe hald is not running?"); return -1; } #endif DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Driver initialized"); return 0; } RESPONSECODE IFDHandler::createChannel(DWORD Lun, DWORD Channel) { unsigned short ctn, slot; ContextMap::iterator it; Context *ctx; rsct_usbdev_t *devs=NULL; rsct_usbdev_t *d; int rv; CReader *r; char ubuf[128]; uint32_t busId; uint32_t busPos; ctn=((unsigned short) (Lun >> 16)) & 0xffff; slot=((unsigned short) (Lun & 0x0000FFFF)) % IFDH_MAX_SLOTS; if (ctn>=IFDH_MAX_READERS || slot>=IFDH_MAX_SLOTS) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Invalid LUN %X\n", (int)Lun); return IFD_COMMUNICATION_ERROR; } /* look for context */ MUTEX_LOCK(m_contextMutex); it=m_contextMap.find(ctn); if (it!=m_contextMap.end()) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "LUN %X is already in use when opening channel %d\n", (int) Lun, (int) Channel); MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } /* scan for devices */ rv=rsct_usbdev_scan(&devs); if (rv<0) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Error on scan (%d)\n", rv); rsct_usbdev_list_free(devs); MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } /* find first supported device which is not used */ d=devs; DEBUGLUN(Lun, DEBUG_MASK_IFD, "Looking for device (%d, %d)\n", (int) Lun, (int) Channel); while(d) { /* check supported cyberJacks only */ if (_isDeviceSupported(d->vendorId, d->productId)) { ContextMap::iterator it; bool devInUse=false; /* check whether this device is in use */ DEBUGLUN(Lun, DEBUG_MASK_IFD, "Device %04x:%04x at %03d/%03d supported, checking whether it is in use (%d, %d)\n", d->vendorId, d->productId, d->busId, d->busPos, (int) Lun, (int) Channel); for (it=m_contextMap.begin(); it!=m_contextMap.end(); it++) { if ((d->busId==it->second->busId) && (d->busPos==it->second->busPos)) { devInUse=true; DEBUGLUN(Lun, DEBUG_MASK_IFD, "Device %04x:%04x at %03d/%03d is already in use (%d, %d)\n", d->vendorId, d->productId, d->busId, d->busPos, (int) Lun, (int) Channel); break; } } if (!devInUse) { /* device is unused, use it */ DEBUGLUN(Lun, DEBUG_MASK_IFD, "Device %04x:%04x at %03d/%03d is free (%d, %d)\n", d->vendorId, d->productId, d->busId, d->busPos, (int) Lun, (int) Channel); break; } } else { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Device %04x:%04x at %03d/%03d is not supported (%d, %d)\n", d->vendorId, d->productId, d->busId, d->busPos, (int) Lun, (int) Channel); } d=d->next; } if (d==NULL) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Device not found (Lun=%d, Channel=%d)\n", (int)Lun, (int)Channel); rsct_usbdev_list_free(devs); MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } busId=d->busId; busPos=d->busPos; /* create device name from USB info */ snprintf(ubuf, sizeof(ubuf), "usb:%04x/%04x:libusb:%03d:%03d", d->vendorId, d->productId, d->busId, d->busPos); rsct_usbdev_list_free(devs); /* ok, device found, create reader object and connect it to USB layer */ r=new CReader(ubuf); rv=r->Connect(); if (rv!=CJ_SUCCESS) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Unable to connect reader \"%s\" (%d)\n", ubuf, rv); delete r; MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } /* reader created and conected, create context */ ctx=new Context(Lun, r); ctx->busId=busId; ctx->busPos=busPos; m_contextMap.insert(ContextMap::value_type(ctn, ctx)); /* done */ DEBUGLUN(Lun, DEBUG_MASK_IFD, "Device \"%s\" connected at channel %d\n", ubuf, (int) Channel); MUTEX_UNLOCK(m_contextMutex); return IFD_SUCCESS; } #ifdef OS_DARWIN RESPONSECODE IFDHandler::createChannelByName(DWORD Lun, char *devName) { unsigned short ctn, slot; ContextMap::iterator it; Context *ctx; rsct_usbdev_t *devs=NULL; rsct_usbdev_t *d; int rv; CReader *r; char ubuf[128]; uint32_t busId; uint32_t busPos; uint16_t wantedPid=0x400; ctn=((unsigned short) (Lun >> 16)) & 0xffff; slot=((unsigned short) (Lun & 0x0000FFFF)) % IFDH_MAX_SLOTS; if (ctn>=IFDH_MAX_READERS || slot>=IFDH_MAX_SLOTS) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Invalid LUN %X\n", (int)Lun); return IFD_COMMUNICATION_ERROR; } /* Darwin uses the friendly name here, so we need to extract the PID */ if (strcasecmp(devName, "REINER SCT cyberJack pp_a")==0) wantedPid=0x300; else if (strcasecmp(devName, "REINER SCT cyberJack ecom_a")==0) wantedPid=0x400; else if (strcasecmp(devName, "REINER SCT cyberJack pp_a2")==0) wantedPid=0x401; else if (strcasecmp(devName, "REINER SCT cyberJack RFID standard")==0) wantedPid=0x500; else if (strcasecmp(devName, "REINER SCT cyberJack RFID komfort")==0) wantedPid=0x501; else if (strcasecmp(devName, "REINER SCT cyberJack compact")==0) wantedPid=0x502; else if (strcasecmp(devName, "REINER SCT cyberJack go / go plus")==0) wantedPid=0x504; else if (strcasecmp(devName, "REINER SCT cyberJack wave")==0) wantedPid=0x505; /* look for context */ MUTEX_LOCK(m_contextMutex); it=m_contextMap.find(ctn); if (it!=m_contextMap.end()) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "LUN %X is already in use when opening channel\n", (int) Lun); MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } /* scan for devices */ rv=rsct_usbdev_scan(&devs); if (rv<0) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Error on scan (%d)\n", rv); rsct_usbdev_list_free(devs); MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } /* find first supported device which is not used */ d=devs; DEBUGLUN(Lun, DEBUG_MASK_IFD, "Looking for device (%d)\n", (int) Lun); while(d) { /* check supported cyberJacks only */ if (d->vendorId==0xc4b && d->productId==wantedPid) { ContextMap::iterator it; bool devInUse=false; /* check whether this device is in use */ DEBUGLUN(Lun, DEBUG_MASK_IFD, "Device %04x:%04x at %03d/%03d supported, checking whether it is in use (%d)\n", d->vendorId, d->productId, d->busId, d->busPos, (int) Lun); for (it=m_contextMap.begin(); it!=m_contextMap.end(); it++) { if ((d->busId==it->second->busId) && (d->busPos==it->second->busPos)) { devInUse=true; DEBUGLUN(Lun, DEBUG_MASK_IFD, "Device %04x:%04x at %03d/%03d is already in use (%d)\n", d->vendorId, d->productId, d->busId, d->busPos, (int) Lun); break; } } if (!devInUse) { /* device is unused, use it */ DEBUGLUN(Lun, DEBUG_MASK_IFD, "Device %04x:%04x at %03d/%03d is free (%d)\n", d->vendorId, d->productId, d->busId, d->busPos, (int) Lun); break; } } else { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Device %04x:%04x at %03d/%03d is not supported (%d)\n", d->vendorId, d->productId, d->busId, d->busPos, (int) Lun); } d=d->next; } if (d==NULL) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Device not found (Lun=%d)\n", (int)Lun); rsct_usbdev_list_free(devs); MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } busId=d->busId; busPos=d->busPos; /* create device name from USB info */ snprintf(ubuf, sizeof(ubuf), "usb:%04x/%04x:libusb:%03d:%03d", d->vendorId, d->productId, d->busId, d->busPos); rsct_usbdev_list_free(devs); /* ok, device found, create reader object and connect it to USB layer */ r=new CReader(ubuf); rv=r->Connect(); if (rv!=CJ_SUCCESS) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Unable to connect reader \"%s\" (%d)\n", ubuf, rv); delete r; MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } /* reader created and conected, create context */ ctx=new Context(Lun, r); ctx->busId=busId; ctx->busPos=busPos; m_contextMap.insert(ContextMap::value_type(ctn, ctx)); /* done */ DEBUGLUN(Lun, DEBUG_MASK_IFD, "Device \"%s\" connected\n", ubuf); MUTEX_UNLOCK(m_contextMutex); return IFD_SUCCESS; } #else RESPONSECODE IFDHandler::createChannelByName(DWORD Lun, char *devName) { unsigned short ctn, slot; ContextMap::iterator it; Context *ctx; rsct_usbdev_t *devs=NULL; rsct_usbdev_t *d; int rv; CReader *r; uint32_t busId; uint32_t busPos; ctn=((unsigned short) (Lun >> 16)) & 0xffff; slot=((unsigned short) (Lun & 0x0000FFFF)) % IFDH_MAX_SLOTS; if (ctn>=IFDH_MAX_READERS || slot>=IFDH_MAX_SLOTS) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Invalid LUN %X\n", (int)Lun); return IFD_COMMUNICATION_ERROR; } /* look for context */ MUTEX_LOCK(m_contextMutex); it=m_contextMap.find(ctn); if (it!=m_contextMap.end()) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "LUN %X is already in use when opening \"%s\"\n", (int) Lun, devName); MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } /* scan for devices */ rv=rsct_usbdev_scan(&devs); if (rv<0) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Error on scan (%d)\n", rv); rsct_usbdev_list_free(devs); MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } /* find requested device */ d=_findUsbDevByName(devs, devName); if (d==NULL) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Device \"%s\" not found\n", devName); rsct_usbdev_list_free(devs); MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } busId=d->busId; busPos=d->busPos; rsct_usbdev_list_free(devs); /* ok, device found, create reader object and connect it to USB layer */ r=new CReader(devName); rv=r->Connect(); if (rv!=CJ_SUCCESS) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Unable to connect reader \"%s\" (%d)\n", devName, rv); delete r; MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } /* reader created and conected, create context */ ctx=new Context(Lun, r); ctx->busId=busId; ctx->busPos=busPos; m_contextMap.insert(ContextMap::value_type(ctn, ctx)); /* done */ DEBUGLUN(Lun, DEBUG_MASK_IFD, "Device \"%s\" connected\n", devName); MUTEX_UNLOCK(m_contextMutex); return IFD_SUCCESS; } #endif RESPONSECODE IFDHandler::closeChannel(DWORD Lun) { unsigned short ctn, slot; ContextMap::iterator it; Context *ctx; ctn=((unsigned short) (Lun >> 16)) & 0xffff; slot=((unsigned short) (Lun & 0x0000FFFF)) % IFDH_MAX_SLOTS; if (ctn>=IFDH_MAX_READERS || slot>=IFDH_MAX_SLOTS) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Invalid LUN %X\n", (int)Lun); return IFD_COMMUNICATION_ERROR; } /* get context */ MUTEX_LOCK(m_contextMutex); it=m_contextMap.find(ctn); if (it==m_contextMap.end()) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "LUN %X is not in use\n", (int) Lun); MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } ctx=it->second; /* remove context from map */ it->second=NULL; m_contextMap.erase(it); /* disconnect reader, delete context */ ctx->getReader()->Disonnect(); delete ctx; DEBUGLUN(Lun, DEBUG_MASK_IFD, "Reader disconnected\n"); MUTEX_UNLOCK(m_contextMutex); return IFD_SUCCESS; } RESPONSECODE IFDHandler::getCapabilities(DWORD Lun, DWORD Tag, PDWORD Length, PUCHAR Value) { unsigned short ctn, slot; ContextMap::iterator it; Context *ctx; RESPONSECODE rc; ctn=((unsigned short) (Lun >> 16)) & 0xffff; slot=((unsigned short) (Lun & 0x0000FFFF)) % IFDH_MAX_SLOTS; if (ctn>=IFDH_MAX_READERS || slot>=IFDH_MAX_SLOTS) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Invalid LUN %X\n", (int)Lun); return IFD_COMMUNICATION_ERROR; } MUTEX_LOCK(m_contextMutex); it=m_contextMap.find(ctn); if (it==m_contextMap.end()) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "LUN %X is not in use\n", (int) Lun); MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } ctx=it->second; ctx->lock(); MUTEX_UNLOCK(m_contextMutex); /* action */ switch(Tag) { case TAG_IFD_ATR: case TAG_IFD_ATR_WIN32: { ICC_STATE *state=ctx->getState(); if ((*Length)>=ctx->getAtrLength() && Value) { (*Length)=ctx->getAtrLength(); memcpy (Value, state->ATR, (*Length)); rc=IFD_SUCCESS; } else rc=IFD_ERROR_TAG; break; } #ifdef HAVE_PTHREAD_H case TAG_IFD_SIMULTANEOUS_ACCESS: if (*Length>=1 && Value) { *Length=1; *Value=IFDH_MAX_READERS; rc=IFD_SUCCESS; } else rc=IFD_ERROR_TAG; break; case TAG_IFD_THREAD_SAFE: if (*Length>=1){ *Length=1; *Value=1; /* allow mutliple readers at the same time */ rc=IFD_SUCCESS; } else rc=IFD_ERROR_TAG; break; #endif case TAG_IFD_SLOTS_NUMBER: if (*Length>=1 && Value) { *Length=1; *Value=1; rc=IFD_SUCCESS; } else rc=IFD_ERROR_TAG; break; case TAG_IFD_SLOT_THREAD_SAFE: if (*Length>=1 && Value){ *Length=1; *Value=0; /* Can NOT talk to multiple slots at the same time */ rc=IFD_SUCCESS; } else rc=IFD_ERROR_TAG; break; case SCARD_ATTR_VENDOR_IFD_VERSION: /* Vendor-supplied interface device version (DWORD in the form * 0xMMmmbbbb where MM = major version, mm = minor version, and * bbbb = build number). */ if (*Length>=1 && Value){ DWORD v; v=(CYBERJACK_VERSION_MAJOR<<24) | (CYBERJACK_VERSION_MINOR<<16) | (CYBERJACK_VERSION_BUILD & 0xffff); *Length=sizeof(DWORD); *(DWORD*)Value=v; rc=IFD_SUCCESS; } else rc=IFD_ERROR_TAG; break; case SCARD_ATTR_VENDOR_NAME: #define VENDOR_NAME "Reiner SCT" if (*Length>=sizeof(VENDOR_NAME) && Value){ *Length=sizeof(VENDOR_NAME); memcpy(Value, VENDOR_NAME, sizeof(VENDOR_NAME)); rc=IFD_SUCCESS; } else rc=IFD_ERROR_TAG; #undef VENDOR_NAME break; default: rc=IFD_ERROR_TAG; } /* switch */ /* done */ ctx->unlock(); return rc; } RESPONSECODE IFDHandler::setCapabilities(DWORD Lun, DWORD Tag, DWORD Length, PUCHAR Value) { unsigned short ctn, slot; ctn=((unsigned short) (Lun >> 16)) & 0xffff; slot=((unsigned short) (Lun & 0x0000FFFF)) % IFDH_MAX_SLOTS; if (ctn>=IFDH_MAX_READERS || slot>=IFDH_MAX_SLOTS) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Invalid LUN %X\n", (int)Lun); return IFD_COMMUNICATION_ERROR; } return IFD_NOT_SUPPORTED; } RESPONSECODE IFDHandler::setProtocolParameters (DWORD Lun, DWORD Protocol, UCHAR Flags, UCHAR PTS1, UCHAR PTS2, UCHAR PTS3) { unsigned short ctn, slot; ContextMap::iterator it; Context *ctx; CReader *r; RSCT_IFD_RESULT rj; uint32_t l_proto; RESPONSECODE rc; ctn=((unsigned short) (Lun >> 16)) & 0xffff; slot=((unsigned short) (Lun & 0x0000FFFF)) % IFDH_MAX_SLOTS; if (ctn>=IFDH_MAX_READERS || slot>=IFDH_MAX_SLOTS) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Invalid LUN %X\n", (int)Lun); return IFD_COMMUNICATION_ERROR; } /* get context and lock it */ MUTEX_LOCK(m_contextMutex); it=m_contextMap.find(ctn); if (it==m_contextMap.end()) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "LUN %X is not in use\n", (int) Lun); MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } ctx=it->second; r=ctx->getReader(); ctx->lock(); MUTEX_UNLOCK(m_contextMutex); /* action */ l_proto=Protocol; rj=r->IfdSetProtocol(&l_proto); switch (rj) { case STATUS_SUCCESS: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Success (active protocol: %d)\n", (int)l_proto); rc=IFD_SUCCESS; break; case STATUS_NO_MEDIA: DEBUGLUN(Lun, DEBUG_MASK_IFD, "No media\n"); rc=IFD_ERROR_POWER_ACTION; break; case STATUS_UNRECOGNIZED_MEDIA: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Unrecognized media\n"); rc=IFD_ERROR_POWER_ACTION; break; case STATUS_CANCELLED: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Cancelled\n"); rc=IFD_ERROR_POWER_ACTION; break; case STATUS_IO_TIMEOUT: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Timeout\n"); rc=IFD_RESPONSE_TIMEOUT; break; case STATUS_NOT_SUPPORTED: rc=IFD_NOT_SUPPORTED; break; default: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Error (%d)\n", (int)rj); rc=IFD_COMMUNICATION_ERROR; break; }; /* unlock context */ ctx->unlock(); return rc; } RESPONSECODE IFDHandler::powerICC(DWORD Lun, DWORD Action, PUCHAR Atr, PDWORD AtrLength) { unsigned short ctn, slot; ContextMap::iterator it; Context *ctx; CReader *r; RESPONSECODE rc; uint32_t l_atrLength; uint32_t mode; CJ_RESULT rj; ctn=((unsigned short) (Lun >> 16)) & 0xffff; slot=((unsigned short) (Lun & 0x0000FFFF)) % IFDH_MAX_SLOTS; if (ctn>=IFDH_MAX_READERS || slot>=IFDH_MAX_SLOTS) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Invalid LUN %X\n", (int)Lun); return IFD_COMMUNICATION_ERROR; } /* get context and lock it */ MUTEX_LOCK(m_contextMutex); it=m_contextMap.find(ctn); if (it==m_contextMap.end()) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "LUN %X is not in use\n", (int) Lun); MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } ctx=it->second; ctx->lock(); MUTEX_UNLOCK(m_contextMutex); r=ctx->getReader(); /* action */ switch(Action) { case IFD_POWER_UP: mode=SCARD_COLD_RESET; break; case IFD_POWER_DOWN: mode=SCARD_POWER_DOWN; break; case IFD_RESET: mode=SCARD_COLD_RESET; break; default: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Action %d not supported\n", (int)Action); return IFD_NOT_SUPPORTED; } if (AtrLength) l_atrLength=*AtrLength; else l_atrLength=0; rj=r->IfdPower(mode, Atr, &l_atrLength); switch (rj) { case STATUS_SUCCESS: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Success (ATR: %d bytes)\n", (int)l_atrLength); rc=IFD_SUCCESS; if (AtrLength) *AtrLength=l_atrLength; break; case STATUS_NO_MEDIA: DEBUGLUN(Lun, DEBUG_MASK_IFD, "No media\n"); rc=IFD_ERROR_POWER_ACTION; break; case STATUS_UNRECOGNIZED_MEDIA: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Unrecognized media\n"); rc=IFD_ERROR_POWER_ACTION; break; case STATUS_CANCELLED: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Cancelled\n"); rc=IFD_ERROR_POWER_ACTION; break; case STATUS_IO_TIMEOUT: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Timeout\n"); rc=IFD_RESPONSE_TIMEOUT; break; default: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Error (%d)\n", (int)rj); rc=IFD_COMMUNICATION_ERROR; break; }; /* unlock context */ ctx->unlock(); return rc; } RESPONSECODE IFDHandler::transmitToICC(DWORD Lun, SCARD_IO_HEADER SendPci, PUCHAR TxBuffer, DWORD TxLength, PUCHAR RxBuffer, PDWORD RxLength, PSCARD_IO_HEADER RecvPci) { unsigned short ctn, slot; ContextMap::iterator it; Context *ctx; CReader *r; char rj; RESPONSECODE rc; uint16_t l_rxlength; uint8_t sad; uint8_t dad; ctn=((unsigned short) (Lun >> 16)) & 0xffff; slot=((unsigned short) (Lun & 0x0000FFFF)) % IFDH_MAX_SLOTS; if (ctn>=IFDH_MAX_READERS || slot>=IFDH_MAX_SLOTS) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Invalid LUN %X\n", (int)Lun); return IFD_COMMUNICATION_ERROR; } /* get context and lock it */ MUTEX_LOCK(m_contextMutex); it=m_contextMap.find(ctn); if (it==m_contextMap.end()) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "LUN %X is not in use\n", (int) Lun); MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } ctx=it->second; r=ctx->getReader(); ctx->lock(); MUTEX_UNLOCK(m_contextMutex); /* action */ if (RxLength) { if (*RxLength>65535) *RxLength = 65535; l_rxlength=*RxLength; } else l_rxlength=0; dad=0; /* slot 0 */ sad=CT_API_AD_HOST; rj=r->CtData(&dad, &sad, TxLength, TxBuffer, &l_rxlength, RxBuffer); switch (rj) { case CT_API_RV_OK: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Success (response length: %d)\n", (int)l_rxlength); if (RxLength) *RxLength=l_rxlength; rc=IFD_SUCCESS; break; case CT_API_RV_ERR_INVALID: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Invalid parameter\n"); rc=IFD_COMMUNICATION_ERROR; break; case CT_API_RV_ERR_CT: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Terminal error\n"); rc=IFD_COMMUNICATION_ERROR; break; case CT_API_RV_ERR_TRANS: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Transport error\n"); rc=IFD_COMMUNICATION_ERROR; break; case CT_API_RV_ERR_MEMORY: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Memory error\n"); rc=IFD_COMMUNICATION_ERROR; break; case CT_API_RV_ERR_HOST: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Host error\n"); rc=IFD_COMMUNICATION_ERROR; break; case CT_API_RV_ERR_HTSI: DEBUGLUN(Lun, DEBUG_MASK_IFD, "HTSI error\n"); rc=IFD_COMMUNICATION_ERROR; break; default: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Error (%d)\n", (int) rj); rc=IFD_COMMUNICATION_ERROR; break; } /* unlock context */ ctx->unlock(); return rc; } /* ============================================================================================================= Begin Part 10 Stuff */ RESPONSECODE IFDHandler::p10GetFeatures(Context *ctx, DWORD Lun, PUCHAR RxBuffer, DWORD RxLength, PDWORD RxReturned) { PCSC_TLV_STRUCTURE *pcsc_tlv = (PCSC_TLV_STRUCTURE *)RxBuffer; unsigned int len = 0; CReader *r; int rv; cj_ReaderInfo ri; r=ctx->getReader(); memset(&ri, 0, sizeof(cj_ReaderInfo)); ri.SizeOfStruct=sizeof(cj_ReaderInfo); rv=r->CtGetReaderInfo(&ri); if (rv!=CJ_SUCCESS) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Unable to get reader info (%d)\n", rv); return CT_API_RV_ERR_CT; } DEBUGLUN(Lun, DEBUG_MASK_IFD, "GetFeatures called\n"); /* WATCHOUT: When supporting a new TLV the size must be adjusted here */ if (RxLength<4*sizeof(PCSC_TLV_STRUCTURE)) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Buffer too small\n"); return IFD_COMMUNICATION_ERROR; } DEBUGLUN(Lun, DEBUG_MASK_IFD, " Reporting Feature FEATURE_VERIFY_PIN_DIRECT (%08x)", CJPCSC_VEN_IOCTRL_VERIFY_PIN_DIRECT); pcsc_tlv->tag = FEATURE_VERIFY_PIN_DIRECT; pcsc_tlv->length = 0x04; /* always 0x04 */ //pcsc_tlv->value = htonl(IOCTL_FEATURE_VERIFY_PIN_DIRECT); pcsc_tlv->value = htonl(CJPCSC_VEN_IOCTRL_VERIFY_PIN_DIRECT); pcsc_tlv++; len+=sizeof(PCSC_TLV_STRUCTURE); DEBUGLUN(Lun, DEBUG_MASK_IFD, " Reporting Feature FEATURE_MODIFY_PIN_DIRECT (%08x)", CJPCSC_VEN_IOCTRL_MODIFY_PIN_DIRECT); pcsc_tlv->tag=FEATURE_MODIFY_PIN_DIRECT; pcsc_tlv->length=0x04; /* always 0x04 */ //pcsc_tlv->value=htonl(IOCTL_FEATURE_MODIFY_PIN_DIRECT); pcsc_tlv->value=htonl(CJPCSC_VEN_IOCTRL_MODIFY_PIN_DIRECT); pcsc_tlv++; len+=sizeof(PCSC_TLV_STRUCTURE); #if defined FEATURE_MCT_READER_DIRECT DEBUGLUN(Lun, DEBUG_MASK_IFD, " Reporting Feature FEATURE_MCT_READER_DIRECT (%08x)", CJPCSC_VEN_IOCTRL_MCT_READERDIRECT); pcsc_tlv->tag = FEATURE_MCT_READER_DIRECT; #else DEBUGLUN(Lun, DEBUG_MASK_IFD, " Reporting Feature FEATURE_MCT_READERDIRECT (%08x)", CJPCSC_VEN_IOCTRL_MCT_READERDIRECT); pcsc_tlv->tag = FEATURE_MCT_READERDIRECT; #endif pcsc_tlv->length = 0x04; /* always 0x04 */ pcsc_tlv->value = htonl(CJPCSC_VEN_IOCTRL_MCT_READERDIRECT); pcsc_tlv++; len+=sizeof(PCSC_TLV_STRUCTURE); DEBUGLUN(Lun, DEBUG_MASK_IFD, " Reporting Feature FEATURE_MCT_UNIVERSAL (%08x)", CJPCSC_VEN_IOCTRL_MCT_READERUNIVERSAL); pcsc_tlv->tag = FEATURE_MCT_UNIVERSAL; pcsc_tlv->length = 0x04; /* always 0x04 */ pcsc_tlv->value = htonl(CJPCSC_VEN_IOCTRL_MCT_READERUNIVERSAL); pcsc_tlv++; len+=sizeof(PCSC_TLV_STRUCTURE); if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_PACE) { DEBUGLUN(Lun, DEBUG_MASK_IFD, " Reporting Feature FEATURE_EXECUTE_PACE (%08x)", CJPCSC_VEN_IOCTRL_EXECUTE_PACE); pcsc_tlv->tag = FEATURE_EXECUTE_PACE; pcsc_tlv->length = 0x04; /* always 0x04 */ pcsc_tlv->value = htonl(CJPCSC_VEN_IOCTRL_EXECUTE_PACE); pcsc_tlv++; len+=sizeof(PCSC_TLV_STRUCTURE); } *RxReturned=len; return IFD_SUCCESS; } RESPONSECODE IFDHandler::p10MctUniversal(Context *ctx, MCTUniversal_t *uni, PUCHAR RxBuffer, DWORD RxLength, PDWORD RxReturned) { DWORD Lun; CReader *r; char rj; RESPONSECODE rc; uint8_t sad; uint8_t dad; uint16_t lenc; uint16_t lenr; MCTUniversal_t *response; Lun=ctx->getLun(); r=ctx->getReader(); /* action */ response=(MCTUniversal_t*)RxBuffer; /* need at least space for MCTUniversal_t with at least 2 bytes response */ if (RxLength<(sizeof(MCTUniversal_t)+1)) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Buffer too small\n"); return IFD_COMMUNICATION_ERROR; } dad=uni->DAD; sad=uni->SAD; lenc=uni->BufferLength; /* TODO: is this really little endian? */ if (RxLength>65535) lenr=65535-(sizeof(MCTUniversal_t)-1); else lenr=RxLength-(sizeof(MCTUniversal_t)-1); #ifdef PART10_DISABLE_APDU DEBUGPLUN(Lun, DEBUG_MASK_IFD, "Apdu's disabled"); rj=-127; #else if (uni->BufferLength>3 && uni->buffer==CJ_SPECIAL_CLA) /* special APDU, go handle it */ rj=_special(ctx, lenc, &(uni->buffer), &lenr, &(response->buffer)); else /* standard APDU */ rj=r->CtData(&dad, &sad, lenc, &(uni->buffer), &lenr, &(response->buffer)); #endif if (rj==0) { response->BufferLength=lenr; *RxReturned=(sizeof(MCTUniversal_t)-1)+lenr; response->SAD=sad; response->DAD=dad; rc=IFD_SUCCESS; } else { *RxReturned=0; rc=IFD_COMMUNICATION_ERROR; } /* done */ return rc; } /* ============================================================================================================= End Part 10 Stuff */ RESPONSECODE IFDHandler::control(DWORD Lun, DWORD controlCode, PUCHAR TxBuffer, DWORD TxLength, PUCHAR RxBuffer, DWORD RxLength, PDWORD RxReturned) { unsigned short ctn, slot; ContextMap::iterator it; Context *ctx; CReader *r; RSCT_IFD_RESULT rj; RESPONSECODE rc; uint32_t l_rxlength; ctn=((unsigned short) (Lun >> 16)) & 0xffff; slot=((unsigned short) (Lun & 0x0000FFFF)) % IFDH_MAX_SLOTS; if (ctn>=IFDH_MAX_READERS || slot>=IFDH_MAX_SLOTS) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Invalid LUN %X\n", (int)Lun); return IFD_COMMUNICATION_ERROR; } /* get context and lock it */ MUTEX_LOCK(m_contextMutex); it=m_contextMap.find(ctn); if (it==m_contextMap.end()) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "LUN %X is not in use\n", (int) Lun); MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } ctx=it->second; r=ctx->getReader(); ctx->lock(); MUTEX_UNLOCK(m_contextMutex); /* action */ switch(controlCode) { case CM_IOCTL_GET_FEATURE_REQUEST: DEBUGLUN(Lun, DEBUG_MASK_IFD, "CM_IOCTL_GET_FEATURE_REQUEST\n"); rc=p10GetFeatures(ctx, Lun, RxBuffer, RxLength, RxReturned); break; case WINDOWS_CTL_GET_FEATURE: DEBUGLUN(Lun, DEBUG_MASK_IFD, "WINDOWS_CTL_GET_FEATURE\n"); rc=p10GetFeatures(ctx, Lun, RxBuffer, RxLength, RxReturned); break; case WINDOWS_CTL_GET_FEATURE2: DEBUGLUN(Lun, DEBUG_MASK_IFD, "WINDOWS_CTL_GET_FEATURE2\n"); rc=p10GetFeatures(ctx, Lun, RxBuffer, RxLength, RxReturned); break; case CJPCSC_VEN_IOCTRL_MCT_READERUNIVERSAL: DEBUGLUN(Lun, DEBUG_MASK_IFD, "CJPCSC_VEN_IOCTRL_MCT_READERUNIVERSAL\n"); /* directly send the command with SAD/DAD in TxBuffer */ if (TxLength<(sizeof(MCTUniversal_t)-1)) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Too few bytes in TxBuffer (%d bytes)\n", (int)TxLength); rc=IFD_COMMUNICATION_ERROR; } else { MCTUniversal_t *uni=(MCTUniversal_t*) TxBuffer; /* check overall length including data length */ if (TxLength<(sizeof(MCTUniversal_t)-1+uni->BufferLength)) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Too few bytes in TxBuffer (%d bytes, %d bytes data)\n", (int)TxLength, uni->BufferLength); ctx->unlock(); return IFD_COMMUNICATION_ERROR; } rc=p10MctUniversal(ctx, uni, RxBuffer, RxLength, RxReturned); } break; #if 0 /* forward this to base driver */ case CJPCSC_VEN_IOCTRL_MCT_READERDIRECT: DEBUGLUN(Lun, DEBUG_MASK_IFD, "CJPCSC_VEN_IOCTRL_MCT_READERDIRECT\n"); /* directly send the command with DAD=01 and SAD=02 */ // TODO rc=IFD_ERROR_NOT_SUPPORTED; break; #endif default: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Forwarding control call with fn %X to CJECA32\n", (int) controlCode); l_rxlength=RxLength; /* let base driver handle other codes */ rj=r->IfdIoControl(controlCode, TxBuffer, TxLength, RxBuffer, &l_rxlength); switch (rj) { case STATUS_SUCCESS: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Success (returned bytes: %d)\n", (int)l_rxlength); if (RxReturned) *RxReturned=l_rxlength; rc=IFD_SUCCESS; break; case STATUS_NO_MEDIA: DEBUGLUN(Lun, DEBUG_MASK_IFD, "No media\n"); rc=IFD_ERROR_POWER_ACTION; break; case STATUS_UNRECOGNIZED_MEDIA: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Unrecognized media\n"); rc=IFD_ERROR_POWER_ACTION; break; case STATUS_CANCELLED: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Cancelled\n"); rc=IFD_ERROR_POWER_ACTION; break; case STATUS_IO_TIMEOUT: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Timeout\n"); rc=IFD_RESPONSE_TIMEOUT; break; case STATUS_NOT_SUPPORTED: rc=IFD_NOT_SUPPORTED; break; default: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Error (%d)\n", (int)rj); rc=IFD_COMMUNICATION_ERROR; break; }; } /* unlock context */ ctx->unlock(); return rc; } RESPONSECODE IFDHandler::iccPresence(DWORD Lun) { unsigned short ctn, slot; ContextMap::iterator it; Context *ctx; CReader *r; uint32_t state; RESPONSECODE rc; ctn=((unsigned short) (Lun >> 16)) & 0xffff; slot=((unsigned short) (Lun & 0x0000FFFF)) % IFDH_MAX_SLOTS; if (ctn>=IFDH_MAX_READERS || slot>=IFDH_MAX_SLOTS) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Invalid LUN %X\n", (int)Lun); return IFD_COMMUNICATION_ERROR; } /* get context and lock it */ MUTEX_LOCK(m_contextMutex); it=m_contextMap.find(ctn); if (it==m_contextMap.end()) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "LUN %X is not in use\n", (int) Lun); MUTEX_UNLOCK(m_contextMutex); return IFD_COMMUNICATION_ERROR; } ctx=it->second; ctx->lock(); MUTEX_UNLOCK(m_contextMutex); r=ctx->getReader(); /* action */ if (r->IfdGetState(&state)==STATUS_DEVICE_NOT_CONNECTED) { DEBUGLUN(Lun, DEBUG_MASK_IFD, "Device is not connected\n"); ctx->unlock(); return IFD_COMMUNICATION_ERROR; } DEBUGLUN(Lun, DEBUG_MASK_IFD, "Status %u\n", (unsigned int) state); switch(state) { case SCARD_SPECIFIC: case SCARD_NEGOTIABLE: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Card connected\n"); rc=IFD_ICC_PRESENT; break; case SCARD_SWALLOWED: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Card inserted\n"); rc=IFD_ICC_PRESENT; break; case SCARD_ABSENT: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Card absent\n"); rc=IFD_ICC_NOT_PRESENT; break; default: DEBUGLUN(Lun, DEBUG_MASK_IFD, "Unexpected status %u\n", (unsigned int) state); ctx->unlock(); return IFD_COMMUNICATION_ERROR; } /* unlock context */ ctx->unlock(); return rc; } IFDHandler::Context::Context(DWORD lun, CReader *r) :m_lun(lun) ,m_reader(r) ,m_atr_length(0) { #ifdef HAVE_PTHREAD_H pthread_mutex_init(&m_mutex, NULL); #endif memset(&m_icc_state, 0, sizeof(m_icc_state)); } IFDHandler::Context::~Context() { delete m_reader; #ifdef HAVE_PTHREAD_H pthread_mutex_destroy(&m_mutex); #endif } void IFDHandler::Context::lock() { MUTEX_LOCK(m_mutex); } void IFDHandler::Context::unlock() { MUTEX_UNLOCK(m_mutex); } extern "C" { CJECA32_EXPORT RESPONSECODE IFDHCreateChannel(DWORD Lun, DWORD Channel) { RESPONSECODE rc; if (rsct_ifd_driver_initialized==0) { int rv; rv=rsct_ifd_handler.init(); if (rv<0) { fprintf(stderr, "CYBERJACK: Unable to init IFD handler.\n"); return IFD_COMMUNICATION_ERROR; } rsct_ifd_driver_initialized++; } DEBUGLUN(Lun, DEBUG_MASK_IFD, "IFDHCreateChannel(%X, %d)\n", (int)Lun, (int)Channel); rc=rsct_ifd_handler.createChannel(Lun, Channel); return rc; } CJECA32_EXPORT RESPONSECODE IFDHCreateChannelByName(DWORD Lun, char *devName){ RESPONSECODE rc; if (rsct_ifd_driver_initialized==0) { int rv; rv=rsct_ifd_handler.init(); if (rv<0) { fprintf(stderr, "CYBERJACK: Unable to init IFD handler.\n"); return IFD_COMMUNICATION_ERROR; } rsct_ifd_driver_initialized++; } DEBUGLUN(Lun, DEBUG_MASK_IFD, "IFDHCreateChannelByName(%X, %s)\n", (int)Lun, devName); rc=rsct_ifd_handler.createChannelByName(Lun, devName); return rc; } CJECA32_EXPORT RESPONSECODE IFDHCloseChannel(DWORD Lun){ RESPONSECODE rc; DEBUGLUN(Lun, DEBUG_MASK_IFD, "IFDHCloseChannel(%X)\n", (int)Lun); rc=rsct_ifd_handler.closeChannel(Lun); return rc; } CJECA32_EXPORT RESPONSECODE IFDHGetCapabilities(DWORD Lun, DWORD Tag, PDWORD Length, PUCHAR Value){ RESPONSECODE rc; DEBUGLUN(Lun, DEBUG_MASK_IFD, "IFDHGetCapabilities(%X, %X, %p, %p)\n", (int)Lun, (int)Tag, Length, Value); rc=rsct_ifd_handler.getCapabilities(Lun, Tag, Length, Value); return rc; } CJECA32_EXPORT RESPONSECODE IFDHSetCapabilities (DWORD Lun, DWORD Tag, DWORD Length, PUCHAR Value){ RESPONSECODE rc; DEBUGLUN(Lun, DEBUG_MASK_IFD, "IFDHSetCapabilities(%X, %X, %d, %p)\n", (int)Lun, (int)Tag, (int)Length, Value); rc=rsct_ifd_handler.setCapabilities(Lun, Tag, Length, Value); return rc; } CJECA32_EXPORT RESPONSECODE IFDHSetProtocolParameters(DWORD Lun, DWORD Protocol, UCHAR Flags, UCHAR PTS1, UCHAR PTS2, UCHAR PTS3){ RESPONSECODE rc; DEBUGLUN(Lun, DEBUG_MASK_IFD, "IFDHSetProtocolParameters(%X, %X, %02X, %02X, %02X, %02X)\n", (int)Lun, (int)Protocol, (int)Flags, (int)PTS1, (int)PTS2, (int)PTS3); rc=rsct_ifd_handler.setProtocolParameters(Lun, Protocol, Flags, PTS1, PTS2, PTS3); return rc; } CJECA32_EXPORT RESPONSECODE IFDHPowerICC(DWORD Lun, DWORD Action, PUCHAR Atr, PDWORD AtrLength){ RESPONSECODE rc; DEBUGLUN(Lun, DEBUG_MASK_IFD, "IFDHPowerICC(%X, %X, %p, %p)\n", (int)Lun, (int)Action, Atr, AtrLength); rc=rsct_ifd_handler.powerICC(Lun, Action, Atr, AtrLength); return rc; } CJECA32_EXPORT RESPONSECODE IFDHTransmitToICC(DWORD Lun, SCARD_IO_HEADER SendPci, PUCHAR TxBuffer, DWORD TxLength, PUCHAR RxBuffer, PDWORD RxLength, PSCARD_IO_HEADER RecvPci){ RESPONSECODE rc; DEBUGLUN(Lun, DEBUG_MASK_IFD, "IFDHTransmitToICC(%X)\n", (int)Lun); rc=rsct_ifd_handler.transmitToICC(Lun, SendPci, TxBuffer, TxLength, RxBuffer, RxLength, RecvPci); return rc; } CJECA32_EXPORT RESPONSECODE IFDHControl(DWORD Lun, DWORD controlCode, PUCHAR TxBuffer, DWORD TxLength, PUCHAR RxBuffer, DWORD RxLength, PDWORD RxReturned){ RESPONSECODE rc; DEBUGLUN(Lun, DEBUG_MASK_IFD, "IFDHControl(%X, %X)\n", (int)Lun, (int)controlCode); rc=rsct_ifd_handler.control(Lun, controlCode, TxBuffer, TxLength, RxBuffer, RxLength, RxReturned); return rc; } CJECA32_EXPORT RESPONSECODE IFDHICCPresence(DWORD Lun){ RESPONSECODE rc; DEBUGLUN(Lun, DEBUG_MASK_IFD, "IFDHICCPresence(%X)\n", (int)Lun); rc=rsct_ifd_handler.iccPresence(Lun); return rc; } } /* extern C */ #include "ifd_special.cpp" pcsc-cyberjack-3.99.5final.sp05/ifd/ifd.h000066400000000000000000000132021231776762100177730ustar00rootroot00000000000000 #ifndef RSCT_IFD_H #define RSCT_IFD_H #include "Platform.h" extern "C" { # include "ifdhandler.h" } #include "cjeca32.h" #ifdef HAVE_PTHREAD_H #include #endif #include #include #include /* Set structure elements aligment on bytes * http://gcc.gnu.org/onlinedocs/gcc/Structure_002dPacking-Pragmas.html */ #ifdef __APPLE__ #pragma pack(1) #else #pragma pack(push, 1) #endif typedef struct { uint8_t SAD; uint8_t DAD; uint16_t BufferLength; uint8_t buffer; } MCTUniversal_t; /* restore default structure elements alignment */ #ifdef __APPLE__ #pragma pack() #else #pragma pack(pop) #endif class IFDHandler { protected: class Context { private: DWORD m_lun; CReader *m_reader; #ifdef HAVE_PTHREAD_H pthread_mutex_t m_mutex; #endif ICC_STATE m_icc_state; DWORD m_atr_length; public: std::string dataToFlash; std::string signatureToFlash; uint32_t moduleCount; cj_ModuleInfo *moduleList; uint32_t busId; uint32_t busPos; uint16_t vendorId; uint16_t productId; public: Context(DWORD lun, CReader *r); ~Context(); DWORD getLun() const { return m_lun;}; CReader *getReader() { return m_reader;}; ICC_STATE *getState() { return &m_icc_state;}; DWORD getAtrLength() const { return m_atr_length;}; void lock(); void unlock(); }; typedef std::map ContextMap; public: IFDHandler(); ~IFDHandler(); int init(); RESPONSECODE createChannel(DWORD Lun, DWORD Channel); RESPONSECODE createChannelByName(DWORD Lun, char *devName); RESPONSECODE closeChannel(DWORD Lun); RESPONSECODE getCapabilities(DWORD Lun, DWORD Tag, PDWORD Length, PUCHAR Value); RESPONSECODE setCapabilities (DWORD Lun, DWORD Tag, DWORD Length, PUCHAR Value); RESPONSECODE setProtocolParameters (DWORD Lun, DWORD Protocol, UCHAR Flags, UCHAR PTS1, UCHAR PTS2, UCHAR PTS3); RESPONSECODE powerICC (DWORD Lun, DWORD Action, PUCHAR Atr, PDWORD AtrLength); RESPONSECODE transmitToICC(DWORD Lun, SCARD_IO_HEADER SendPci, PUCHAR TxBuffer, DWORD TxLength, PUCHAR RxBuffer, PDWORD RxLength, PSCARD_IO_HEADER RecvPci); RESPONSECODE control(DWORD Lun, DWORD controlCode, PUCHAR TxBuffer, DWORD TxLength, PUCHAR RxBuffer, DWORD RxLength, PDWORD RxReturned); RESPONSECODE iccPresence (DWORD Lun); protected: RESPONSECODE p10MctUniversal(Context *ctx, MCTUniversal_t *uni, PUCHAR RxBuffer, DWORD RxLength, PDWORD RxReturned); RESPONSECODE p10GetFeatures(Context *ctx, DWORD Lun, PUCHAR RxBuffer, DWORD RxLength, PDWORD RxReturned); int8_t _specialKeyUpdate(Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); int8_t _specialUploadMod(Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); int8_t _specialUploadSig(Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); int8_t _specialUploadFlash(Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); int8_t _specialUploadInfo(Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); int8_t _specialDeleteAllMods(Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); int8_t _specialShowAuth(Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); int8_t _specialGetModuleCount(Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); int8_t _specialGetModuleInfo(Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); int8_t _specialGetReaderInfo(Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); int8_t _special(Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); private: #ifdef HAVE_PTHREAD_H pthread_mutex_t m_contextMutex; #endif ContextMap m_contextMap; }; #endif pcsc-cyberjack-3.99.5final.sp05/ifd/ifd_special.cpp000066400000000000000000000363541231776762100220430ustar00rootroot00000000000000/*************************************************************************** begin : Tue Mar 24 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ /* this file is included from ifd.cpp */ int8_t IFDHandler::_specialKeyUpdate(IFDHandler::Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response) { uint8_t dataLen; CReader *r; r=ctx->getReader(); if (r==NULL) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "No reader"); return CT_API_RV_ERR_INVALID; } if (cmd[2] & 0x20) /* first block */ ctx->dataToFlash.erase(); if (cmd[2] & 0x40) { /* abort */ ctx->dataToFlash.erase(); response[0]=0x90; response[1]=0x00; *response_len=2; return CT_API_RV_OK; } /* determine length of data */ if (cmd_len<5) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "APDU too short"); return CT_API_RV_ERR_INVALID; } /* add data */ dataLen=cmd[4]; if (dataLen) ctx->dataToFlash+=std::string((const char*) (cmd+5), dataLen); if (cmd[2] & 0x80) { uint32_t result; int rv; /* finished */ DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Updating key (%d bytes)", (int) (ctx->dataToFlash.size())); rv=r->CtKeyUpdate((uint8_t*) ctx->dataToFlash.data(), ctx->dataToFlash.size(), &result); if (rv!=CJ_SUCCESS) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Unable to update the keys (%d / %d)\n", rv, result); return CT_API_RV_ERR_CT; } } response[0]=0x90; response[1]=0x00; *response_len=2; return CT_API_RV_OK; } int8_t IFDHandler::_specialUploadMod(IFDHandler::Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response) { uint8_t dataLen; CReader *r; r=ctx->getReader(); if (r==NULL) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "No reader"); return CT_API_RV_ERR_INVALID; } DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Module Upload"); if (cmd[2] & 0x20) /* first block */ ctx->dataToFlash.erase(); if (cmd[2] & 0x40) { /* abort */ ctx->dataToFlash.erase(); response[0]=0x90; response[1]=0x00; *response_len=2; return CT_API_RV_OK; } /* determine length of data */ if (cmd_len<5) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "APDU too short"); return CT_API_RV_ERR_INVALID; } /* add data */ dataLen=cmd[4]; if (dataLen) ctx->dataToFlash+=std::string((const char*) (cmd+5), dataLen); response[0]=0x90; response[1]=0x00; *response_len=2; return CT_API_RV_OK; } int8_t IFDHandler::_specialUploadSig(IFDHandler::Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response) { uint8_t dataLen; CReader *r; r=ctx->getReader(); if (r==NULL) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "No reader"); return CT_API_RV_ERR_INVALID; } DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Signature Upload"); if (cmd[2] & 0x20) /* first block */ ctx->signatureToFlash.erase(); if (cmd[2] & 0x40) { /* abort */ ctx->signatureToFlash.erase(); response[0]=0x90; response[1]=0x00; *response_len=2; return CT_API_RV_OK; } /* determine length of data */ if (cmd_len<5) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "APDU too short"); return CT_API_RV_ERR_INVALID; } /* add data */ dataLen=cmd[4]; if (dataLen) ctx->signatureToFlash+=std::string((const char*) (cmd+5), dataLen); response[0]=0x90; response[1]=0x00; *response_len=2; return CT_API_RV_OK; } int8_t IFDHandler::_specialUploadFlash(IFDHandler::Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response) { uint32_t result; int rv; CReader *r; r=ctx->getReader(); if (r==NULL) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "No reader"); return CT_API_RV_ERR_INVALID; } if (ctx->dataToFlash.size()<1 || ctx->signatureToFlash.size()<1) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Please upload module and signature first"); return CT_API_RV_ERR_INVALID; } /* flash data */ DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Flashing module (%d bytes)\n", (int)(ctx->dataToFlash.size())); rv=r->CtLoadModule((uint8_t*) ctx->dataToFlash.data(), ctx->dataToFlash.size(), (uint8_t*) ctx->signatureToFlash.data(), ctx->signatureToFlash.size(), &result); if (rv!=CJ_SUCCESS) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Unable to flash the module (%d / %d)\n", rv, result); return CT_API_RV_ERR_CT; } response[0]=0x90; response[1]=0x00; *response_len=2; return CT_API_RV_OK; } int8_t IFDHandler::_specialUploadInfo(IFDHandler::Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response) { int rv; int lr; uint32_t estimatedUpdateTime=0; cj_ModuleInfo mi; CReader *r; r=ctx->getReader(); if (r==NULL) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "No reader"); return CT_API_RV_ERR_INVALID; } if (ctx->dataToFlash.size()<1) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Please upload module first"); return CT_API_RV_ERR_INVALID; } mi.SizeOfStruct=sizeof(cj_ModuleInfo); rv=r->CtGetModuleInfoFromFile((uint8_t*) ctx->dataToFlash.data(), ctx->dataToFlash.size(), &mi, &estimatedUpdateTime); if (rv!=CJ_SUCCESS) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Unable to extract module info (%d)\n", rv); return CT_API_RV_ERR_CT; } if (*response_len<(2+sizeof(cj_ModuleInfo))) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Response buffer too short"); return CT_API_RV_ERR_MEMORY; } memmove(response, (const void*) &mi, sizeof(cj_ModuleInfo)); lr=sizeof(cj_ModuleInfo); response[lr++]=0x90; response[lr++]=0x00; *response_len=lr; return CT_API_RV_OK; } int8_t IFDHandler::_specialDeleteAllMods(IFDHandler::Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response) { uint32_t result; int rv; CReader *r; r=ctx->getReader(); if (r==NULL) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "No reader"); return CT_API_RV_ERR_INVALID; } /* delete all modules */ DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Deleting all modules"); rv=r->CtDeleteALLModules(&result); if (rv!=CJ_SUCCESS) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Unable to delete all modules (%d / %d)\n", rv, result); return CT_API_RV_ERR_CT; } response[0]=0x90; response[1]=0x00; *response_len=2; return CT_API_RV_OK; } int8_t IFDHandler::_specialShowAuth(IFDHandler::Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response) { int rv; CReader *r; r=ctx->getReader(); if (r==NULL) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "No reader"); return CT_API_RV_ERR_INVALID; } /* delete all modules */ rv=r->CtShowAuth(); if (rv!=CJ_SUCCESS) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Unable to show auth info (%d)\n", rv); return CT_API_RV_ERR_CT; } response[0]=0x90; response[1]=0x00; *response_len=2; return CT_API_RV_OK; } int8_t IFDHandler::_specialGetModuleCount(IFDHandler::Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response) { int rv; CReader *r; r=ctx->getReader(); if (r==NULL) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "No reader"); return CT_API_RV_ERR_INVALID; } if (*response_len<3) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Response buffer too short"); return CT_API_RV_ERR_MEMORY; } if (ctx->moduleCount==SCARD_AUTOALLOCATE) { if (ctx->moduleList) free(ctx->moduleList); ctx->moduleList=NULL; rv=r->CtListModules(&(ctx->moduleCount), (cj_ModuleInfo*) &(ctx->moduleList)); if (rv!=CJ_SUCCESS) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Unable to list module infos (%d)\n", rv); return CT_API_RV_ERR_CT; } } response[0]=(ctx->moduleCount<256)?ctx->moduleCount:255; response[1]=0x90; response[2]=0x00; *response_len=3; return CT_API_RV_OK; } static char *cmdImage(uint16_t cmd_len, const uint8_t *cmd) { static char buff[60]; int i; if (2*cmd_len >= sizeof(buff)) cmd_len = sizeof(buff)/2; memset(buff,0, sizeof(buff)); for (i=0; igetReader(); if (r==NULL) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "No reader"); return CT_API_RV_ERR_INVALID; } if (ctx->moduleCount==SCARD_AUTOALLOCATE) { if (ctx->moduleList) free(ctx->moduleList); ctx->moduleList=NULL; /* this is really ugly */ rv=r->CtListModules(&(ctx->moduleCount), (cj_ModuleInfo*) &(ctx->moduleList)); if (rv!=CJ_SUCCESS) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Unable to list module infos (%d)\n", rv); return CT_API_RV_ERR_CT; } } lr=0; idx=cmd[2]; /* p1 */ if (idx>=ctx->moduleCount) { /* EOF met */ response[lr++]=0x62; response[lr++]=0x82; *response_len=lr; return CT_API_RV_OK; } if (*response_len<(2+sizeof(cj_ModuleInfo))) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Response buffer too short"); return CT_API_RV_ERR_MEMORY; } if (&(ctx->moduleList[idx]) == NULL ) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "CWSW: Illegal module %d=0x%x? cmd_len=%u cmd=%s? ", idx, idx, cmd_len, cmdImage(cmd_len, cmd) ); return CT_API_RV_ERR_MEMORY; } memmove(response, (const void*) &(ctx->moduleList[idx]), sizeof(cj_ModuleInfo)); lr+=sizeof(cj_ModuleInfo); response[lr++]=0x90; response[lr++]=0x00; *response_len=lr; return CT_API_RV_OK; } int8_t IFDHandler::_specialGetReaderInfo(IFDHandler::Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response) { int rv; int lr; cj_ReaderInfo ri; CReader *r; r=ctx->getReader(); if (r==NULL) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "No reader"); return CT_API_RV_ERR_INVALID; } lr=0; if (*response_len<(2+sizeof(cj_ReaderInfo))) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Response buffer too short"); return CT_API_RV_ERR_MEMORY; } memset(&ri, 0, sizeof(cj_ReaderInfo)); ri.SizeOfStruct=sizeof(cj_ReaderInfo); rv=r->CtGetReaderInfo(&ri); if (rv!=CJ_SUCCESS) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Unable to get reader info (%d)\n", rv); return CT_API_RV_ERR_CT; } memmove(response, (const void*) &ri, sizeof(cj_ReaderInfo)); lr+=sizeof(cj_ReaderInfo); response[lr++]=0x90; response[lr++]=0x00; *response_len=lr; return CT_API_RV_OK; } int8_t IFDHandler::_special(IFDHandler::Context *ctx, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response) { int8_t rv; DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Received special command %02x %02x %02x %02x", cmd[0], cmd[1], cmd[2], cmd[3]); if (cmd[0]!=CJ_SPECIAL_CLA) { DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Special command but no special CLA byte (%02x)", cmd[0]); return CT_API_RV_ERR_INVALID; } switch(cmd[1]) { case CJ_SPECIAL_INS_KEYUPDATE: rv=_specialKeyUpdate(ctx, cmd_len, cmd, response_len, response); break; case CJ_SPECIAL_INS_DELETEALLMODS: rv=_specialDeleteAllMods(ctx, cmd_len, cmd, response_len, response); break; case CJ_SPECIAL_INS_UPLOADMOD: rv=_specialUploadMod(ctx, cmd_len, cmd, response_len, response); break; case CJ_SPECIAL_INS_UPLOADSIG: rv=_specialUploadSig(ctx, cmd_len, cmd, response_len, response); break; case CJ_SPECIAL_INS_UPLOADFLASH: rv=_specialUploadFlash(ctx, cmd_len, cmd, response_len, response); break; case CJ_SPECIAL_INS_UPLOADINFO: rv=_specialUploadInfo(ctx, cmd_len, cmd, response_len, response); break; case CJ_SPECIAL_INS_SHOWAUTH: rv=_specialShowAuth(ctx, cmd_len, cmd, response_len, response); break; case CJ_SPECIAL_INS_GETMODCOUNT: rv=_specialGetModuleCount(ctx, cmd_len, cmd, response_len, response); break; case CJ_SPECIAL_INS_GETMODINFO: rv=_specialGetModuleInfo(ctx, cmd_len, cmd, response_len, response); break; case CJ_SPECIAL_INS_GETREADERINFO: rv=_specialGetReaderInfo(ctx, cmd_len, cmd, response_len, response); break; default: DEBUGDEV("DRIVER", DEBUG_MASK_IFD, "Invalid special command (%02x)", cmd[1]); rv=CT_API_RV_ERR_INVALID; } /* done */ return rv; } pcsc-cyberjack-3.99.5final.sp05/include/000077500000000000000000000000001231776762100177435ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/include/Makefile.am000066400000000000000000000004341231776762100220000ustar00rootroot00000000000000SUBDIRS=macosx EXTRA_DIST=\ driver/Debug.h \ driver/Platform.h \ driver/Platform_unix.h \ driver/Platform_win32.h \ driver/Reader.h \ driver/cjeca32.h \ firmware/BingoError.h \ firmware/eca_defines.h \ firmware/eca_module_errors.h \ firmware/memory_placements.h pcsc-cyberjack-3.99.5final.sp05/include/driver/000077500000000000000000000000001231776762100212365ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/include/driver/Debug.h000066400000000000000000000035041231776762100224370ustar00rootroot00000000000000#ifndef ECA_DEBUG_H #define ECA_DEBUG_H #define DEBUG_MASK_COMMUNICATION_OUT 0x00000001 #define DEBUG_MASK_COMMUNICATION_IN 0x00000002 #define DEBUG_MASK_COMMUNICATION_ERROR 0x00000004 #define DEBUG_MASK_COMMUNICATION_INT 0x00000008 #define DEBUG_MASK_COMMUNICATION_INFO 0x00000010 #define DEBUG_MASK_TRANSLATION 0x00000100 #define DEBUG_MASK_RESULTS 0x00000200 #define DEBUG_MASK_INPUT 0x00010000 #define DEBUG_MASK_OUTPUT 0x00020000 #define DEBUG_MASK_CTAPI 0x00040000 #define DEBUG_MASK_IFD 0x00080000 #define DEBUG_MASK_CJECOM 0x00100000 #define DEBUG_MASK_PPA 0x00200000 #define DEBUG_MASK_GENERIC 0x80000000 #ifdef __cplusplus class CJECA32_PRIVATE_CLASS CDebug { public: CDebug(unsigned int nLevelMask); void Out(const char *cDeviceName, unsigned int nLevelMask, const char *cCaption, void *pData, uint32_t ulDataLen); /** * This method can be used to log arbitrary information. It is used just * like printf. It internally calls @ref CDebug::Out. */ void varLog(const char *devName, unsigned int nLevelMask, const char *format, ...); public: ~CDebug(void); #if defined(OS_LINUX) || defined(OS_DARWIN) void setLevelMask(unsigned int nLevelMask); void setLogFileName(const char *fname); #endif private: unsigned int m_nLevelMask; #if defined(OS_LINUX) || defined(OS_DARWIN) char *m_logFileName; #endif }; extern CDebug CJECA32_PRIVATE_CLASS Debug; #endif /* ifdef __cplusplus */ #ifdef __cplusplus extern "C" { #endif void rsct_debug_out(const char *cDeviceName, unsigned int nLevelMask, const char *cCaption, void *pData, uint32_t ulDataLen); #ifdef __cplusplus } #endif #endif pcsc-cyberjack-3.99.5final.sp05/include/driver/Platform.h000066400000000000000000000051051231776762100231740ustar00rootroot00000000000000/*************************************************************************** begin : Mon Jun 14 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef RSCT_PLATFORM_H #define RSCT_PLATFORM_H #ifdef UNDER_CE #include "Platform_win_ce.h" #include "Winsock2.h" #else #ifdef _WINDOWS # include "Platform_win32.h" #else # include "Platform_unix.h" #endif #endif #include "Debug.h" #ifndef CJPCSC_VEN_IOCTRL_ESCAPE # define CJPCSC_VEN_IOCTRL_ESCAPE SCARD_CTL_CODE(3103) #endif #define CJPCSC_VEN_IOCTRL_VERIFY_PIN_DIRECT SCARD_CTL_CODE(3506) #define CJPCSC_VEN_IOCTRL_MODIFY_PIN_DIRECT SCARD_CTL_CODE(3507) #define CJPCSC_VEN_IOCTRL_MCT_READERDIRECT SCARD_CTL_CODE(3508) #define CJPCSC_VEN_IOCTRL_MCT_READERUNIVERSAL SCARD_CTL_CODE(3509) #define CJPCSC_VEN_IOCTRL_EXECUTE_PACE SCARD_CTL_CODE(3532) #define CJPCSC_VEN_IOCTRL_SET_NORM SCARD_CTL_CODE(3154) #ifdef __cplusplus class CBaseCommunication; class CReader; CBaseCommunication *rsct_platform_create_com(const char *deviceName, CReader *reader); const char *rsct_get_package_version(void); uint32_t rsct_get_environment(const char *name, uint32_t defval); #endif #endif pcsc-cyberjack-3.99.5final.sp05/include/driver/Platform_unix.h000066400000000000000000000061301231776762100242360ustar00rootroot00000000000000/*************************************************************************** begin : Mon Jun 14 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef RSCT_PLATFORM_UNIX_H #define RSCT_PLATFORM_UNIX_H #ifdef HAVE_CONFIG_H # include #endif // global headers special to Linux and/or Mac OS X #include #include #include #include #include #include #include #ifndef OS_DARWIN # include #endif #ifdef __cplusplus extern "C" { #endif # include # include #ifdef __cplusplus } #endif #ifndef SCARD_POWER_DOWN # define SCARD_POWER_DOWN 0x0000 #endif #ifndef SCARD_COLD_RESET # define SCARD_COLD_RESET 0x0001 #endif #ifndef SCARD_WARM_RESET # define SCARD_WARM_RESET 0x0002 #endif #ifndef SCARD_PROTOCOL_DEFAULT # define SCARD_PROTOCOL_DEFAULT 0x80000000 #endif #ifndef SCARD_PROTOCOL_OPTIMAL # define SCARD_PROTOCOL_OPTIMAL 0x00000000 #endif #define RSCT_STDCALL #define max(a, b) ((a>b)?a:b) #define Sleep(ms) usleep(ms*1000) #ifdef BUILDING_CYBERJACK # ifdef GCC_WITH_VISIBILITY_ATTRIBUTE # define CJECA32_API __attribute__((visibility("default"))) # define CJECA32_PRIVATE_API __attribute__((visibility("hidden"))) # define CJECA32_PRIVATE_CLASS __attribute__((visibility("hidden"))) # else # define CJECA32_API # define CJECA32_PRIVATE_API # define CJECA32_PRIVATE_CLASS # endif #else # define CJECA32_API # define CJECA32_PRIVATE_API # define CJECA32_PRIVATE_CLASS #endif # #ifdef GCC_WITH_VISIBILITY_ATTRIBUTE # define CJECA32_EXPORT __attribute__((visibility("default"))) #else # define CJECA32_EXPORT #endif #include "ntstatus.h" #endif pcsc-cyberjack-3.99.5final.sp05/include/driver/Platform_win32.h000066400000000000000000000046701231776762100242240ustar00rootroot00000000000000/*************************************************************************** begin : Mon Jun 14 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef RSCT_PLATFORM_WIN32_H #define RSCT_PLATFORM_WIN32_H #include #include #include #include #define uint32_t ULONG #define uint16_t USHORT #define uint8_t BYTE #define int32_t LONG #define int16_t SHORT #define int8_t char /*typedef ULONG uint32_t; typedef USHORT uint16_t; typedef BYTE uint8_t; typedef LONG int32_t; typedef SHORT int16_t; typedef char int8_t;*/ #pragma warning (disable:4996) #ifdef UNDER_CE # define RSCT_NO_VARGS #endif #ifdef CJECA32_EXPORTS # define CJECA32_API __declspec(dllexport) #else # define CJECA32_API __declspec(dllimport) #endif #define CJECA32_PRIVATE_API #define CJECA32_PRIVATE_CLASS #define RSCT_STDCALL _stdcall #define strdup(m) _strdup(m) #include "stdafx.h" #ifndef strcasecmp # define strcasecmp stricmp #endif #endif pcsc-cyberjack-3.99.5final.sp05/include/driver/Platform_win_ce.h000066400000000000000000000046701231776762100245260ustar00rootroot00000000000000/*************************************************************************** begin : Mon Jun 14 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef RSCT_PLATFORM_WIN32_H #define RSCT_PLATFORM_WIN32_H #include #include #include #include #define uint32_t ULONG #define uint16_t USHORT #define uint8_t BYTE #define int32_t LONG #define int16_t SHORT #define int8_t char /*typedef ULONG uint32_t; typedef USHORT uint16_t; typedef BYTE uint8_t; typedef LONG int32_t; typedef SHORT int16_t; typedef char int8_t;*/ #pragma warning (disable:4996) #ifdef UNDER_CE # define RSCT_NO_VARGS #endif #ifdef CJECA32_EXPORTS # define CJECA32_API __declspec(dllexport) #else # define CJECA32_API __declspec(dllimport) #endif #define CJECA32_PRIVATE_API #define CJECA32_PRIVATE_CLASS #define RSCT_STDCALL _stdcall #define strdup(m) _strdup(m) #include "stdafx.h" #ifndef strcasecmp # define strcasecmp stricmp #endif #endif pcsc-cyberjack-3.99.5final.sp05/include/driver/Reader.h000066400000000000000000000100651231776762100226130ustar00rootroot00000000000000#pragma once class CBaseReader; class CRSCTCriticalSection; #include "cjeca32.h" #ifdef _MAC # define CREADER_CLASS_EXPORT #else # define CREADER_CLASS_EXPORT CJECA32_API #endif class CREADER_CLASS_EXPORT CReader { public: CReader(char *cDeviceName); CReader(const char *cDeviceName); virtual ~CReader(void); CJ_RESULT Connect(); CJ_RESULT CreateVirtualReaderObject(const char *cReaderName); CJ_RESULT Disonnect(); private: void CReaderConstructor(const char *cDeviceName); public: char CtData(uint8_t *dad,uint8_t *sad, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); public: RSCT_IFD_RESULT IfdPower(uint32_t Mode,uint8_t *ATR,uint32_t *ATR_Length); RSCT_IFD_RESULT IfdSetProtocol(uint32_t *Protocol); RSCT_IFD_RESULT IfdGetState(uint32_t *State); RSCT_IFD_RESULT IfdSetAttribute(const uint8_t *Input,uint32_t InputLength); RSCT_IFD_RESULT IfdGetAttribute(uint32_t Tag,uint8_t *Attribute,uint32_t *AttributeLength); RSCT_IFD_RESULT IfdSwallow(); RSCT_IFD_RESULT IfdEject(); RSCT_IFD_RESULT IfdVendor(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength); RSCT_IFD_RESULT IfdTransmit(const uint8_t *cmd, uint16_t cmd_len,uint8_t *response,uint16_t *response_len); RSCT_IFD_RESULT IfdIoControl(uint32_t IoCtrlCode,uint8_t *Input,uint32_t InputLength,uint8_t *Output,uint32_t *OutputLength); public: CJ_RESULT CtLoadModule(uint8_t *pData,uint32_t DataLength,uint8_t *pSgn,uint32_t SgnLength,uint32_t *Result); CJ_RESULT CtKeyUpdate(uint8_t *pData,uint32_t DataLength,uint32_t *Result); CJ_RESULT CtIsKeyUpdateRecommended(uint8_t *pData,uint32_t DataLength,uint32_t *EstimatedUpdateTime); CJ_RESULT CtDeleteModule(uint32_t ModuleID,uint32_t *Result); CJ_RESULT CtActivateModule(uint32_t ModuleID,uint32_t *Result); CJ_RESULT CtDeactivateModule(uint32_t ModuleID,uint32_t *Result); CJ_RESULT CtDeleteALLModules(uint32_t *Result); CJ_RESULT CtListModules(uint32_t *Count,cj_ModuleInfo *ModuleInfo); CJ_RESULT CtGetModuleInfoFromFile(uint8_t *pData,uint32_t DataLength,cj_ModuleInfo *ModuleInfo,uint32_t *EstimatedUpdateTime); CJ_RESULT CtFreeModuleInfoList(cj_ModuleInfo *pModuleInfo); CJ_RESULT CtIsModuleUpdateRecommended(uint8_t *pData,uint32_t DataLength,uint32_t *EstimatedUpdateTime); CJ_RESULT CtGetActiveModuleID(uint32_t *ID,uint32_t *Result); CJ_RESULT CtGetActivationID(uint32_t *ID,uint32_t *Result); CJ_RESULT CtApplicationData(uint32_t ApplicationID,uint16_t Function,uint8_t *InputData, uint32_t InputLen, uint32_t *Result, uint8_t *ResponseData, uint32_t *ResponseLen); CJ_RESULT CtApplicationDataEx(uint32_t ApplicationID,uint16_t Function,uint8_t *InputData, uint32_t InputLen, uint32_t *Result, uint8_t *ResponseData, uint32_t *ResponseLen, uint8_t *ApplicationError,uint32_t *ApplicationErrorLength); CJ_RESULT CtSelfTest(void); CJ_RESULT CtSelfTest2(const uint8_t *TransportKey,uint8_t KeyNr); CJ_RESULT CtShowAuth(void); CJ_RESULT CtSetAPDUNorm(const EApduNorm Norm); CJ_RESULT CtSetContrast(EContrast eContrast,uint32_t *Result); CJ_RESULT CtSetBacklight(EBacklight eBacklight,uint32_t *Result); CJ_RESULT CtSetSilentMode(bool boolMode,bool *pboolMode,uint32_t *Result); CJ_RESULT CtGetSilentMode(bool *pboolMode,uint32_t *Result); CJ_RESULT CtSetModulestoreInfo(uint8_t *Info,uint8_t InfoLength); CJ_RESULT CtGetModulestoreInfo(uint8_t *Info,uint8_t *InfoLength); CJ_RESULT InstallAndStartIFDHandler(); CJ_RESULT StopIFDHandler(); CJ_RESULT IntroduceReaderGroups(); CJ_RESULT CtGetReaderInfo(cj_ReaderInfo *pReaderInfo); public: void SetChangeInterruptCallback(fctChangeIntCallback ChangeIntCallback,ctxPtr ChangeOwner); void SetKeyInterruptCallback(fctKeyIntCallback KeyIntCallback,ctxPtr KeyOwner); void DebugResult(const char *format, ...); void DebugErrorSW1SW2(const char *format, ...); void DebugLeveled(uint32_t Mask,const char *format, ...); CRSCTCriticalSection *CritSec; private: CBaseReader *m_Reader; void CheckcJResult(CJ_RESULT Result); char *m_cDeviceName; }; pcsc-cyberjack-3.99.5final.sp05/include/driver/cjeca32.h000066400000000000000000000142431231776762100226250ustar00rootroot00000000000000 #ifndef CJECA32_H #define CJECA32_H #include "Platform.h" #define CJ_SUCCESS 0 #define CJ_ERR_OPENING_DEVICE -1 #define CJ_ERR_WRITE_DEVICE -2 #define CJ_ERR_DEVICE_LOST -3 #define CJ_ERR_WRONG_ANSWER -4 #define CJ_ERR_SEQ -5 #define CJ_ERR_WRONG_LENGTH -6 #define CJ_ERR_NO_ICC -7 #define CJ_ERR_OPEN_ICC -8 #define CJ_ERR_PARITY -9 #define CJ_ERR_TIMEOUT -10 #define CJ_ERR_LEN -11 #define CJ_ERR_RBUFFER_TO_SMALL -12 #define CJ_ERR_PROT -13 #define CJ_ERR_NO_ACTIVE_ICC -14 #define CJ_ERR_SIGN -15 #define CJ_ERR_WRONG_SIZE -16 #define CJ_ERR_PIN_TIMEOUT -17 #define CJ_ERR_PIN_CANCELED -18 #define CJ_ERR_PIN_DIFFERENT -19 #define CJ_ERR_FIRMWARE_OLD -20 #define CJ_NOT_UPDATABLE -21 #define CJ_ERR_NO_SIGN -22 #define CJ_ERR_WRONG_PARAMETER -23 #define CJ_ERR_INTERNAL_BUFFER_OVERFLOW -24 #define CJ_ERR_CHECK_RESULT -25 #define CJ_ERR_DATA_CORRUPT -26 #define CJ_ERR_CONDITION_OF_USE -27 #define CJ_ERR_PIN_EXTENDED -28 #define CJ_ERR_CONNECT_TIMEOUT -29 #define RSCT_MODULE_MASK_STATUS 0x00000001 #define RSCT_MODULE_MASK_ID 0x00000002 #define RSCT_MODULE_MASK_VARIANT 0x00000004 #define RSCT_MODULE_MASK_BASE_ADDR 0x00000008 #define RSCT_MODULE_MASK_CODE_SIZE 0x00000010 #define RSCT_MODULE_MASK_VERSION 0x00000020 #define RSCT_MODULE_MASK_REVISION 0x00000040 #define RSCT_MODULE_MASK_REQUIRED_VERSION 0x00000080 #define RSCT_MODULE_MASK_REQUIRED_REVISION 0x00000100 #define RSCT_MODULE_MASK_HEAP_SIZE 0x00000200 #define RSCT_MODULE_MASK_DESCRIPTION 0x00000400 #define RSCT_MODULE_MASK_DATE 0x00000800 typedef struct _cj_ModuleInfo { uint32_t SizeOfStruct; uint32_t ContentsMask; uint32_t Status; uint32_t ID; uint32_t Variant; uint32_t BaseAddr; uint32_t CodeSize; uint32_t Version; uint32_t Revision; uint32_t RequieredKernelVersion; uint32_t RequieredKernelRevision; uint32_t HeapSize; int8_t Description[17]; int8_t Date[12]; int8_t Time[6]; }cj_ModuleInfo; #define RSCT_READER_MASK_PID 0x00000001 #define RSCT_READER_MASK_HARDWARE 0x00000002 #define RSCT_READER_MASK_VERSION 0x00000004 #define RSCT_READER_MASK_HARDWARE_VERSION 0x00000008 #define RSCT_READER_MASK_FLASH_SIZE 0x00000010 #define RSCT_READER_MASK_HEAP_SIZE 0x00000020 #define RSCT_READER_MASK_SERIALNUMBER 0x00000040 #define RSCT_READER_MASK_VENDOR_STRING 0x00000080 #define RSCT_READER_MASK_PRODUCT_STRING 0x00000100 #define RSCT_READER_MASK_PRODUCTION_DATE 0x00000200 #define RSCT_READER_MASK_TEST_DATE 0x00000400 #define RSCT_READER_MASK_COMMISSIONING_DATE 0x00000800 #define RSCT_READER_MASK_COM_TYPE 0x00001000 #define RSCT_READER_MASK_PORT_ID 0x00002000 #define RSCT_READER_MASK_IFD_BRIDGE 0x00004000 #define RSCT_READER_MASK_HW_STRING 0x00008000 #define RSCT_READER_HARDWARE_MASK_ICC1 0x00000001 #define RSCT_READER_HARDWARE_MASK_ICC2 0x00000002 #define RSCT_READER_HARDWARE_MASK_ICC3 0x00000004 #define RSCT_READER_HARDWARE_MASK_ICC4 0x00000008 #define RSCT_READER_HARDWARE_MASK_ICC5 0x00000010 #define RSCT_READER_HARDWARE_MASK_ICC6 0x00000020 #define RSCT_READER_HARDWARE_MASK_ICC7 0x00000040 #define RSCT_READER_HARDWARE_MASK_ICC8 0x00000080 #define RSCT_READER_HARDWARE_MASK_KEYPAD 0x00000100 #define RSCT_READER_HARDWARE_MASK_DISPLAY 0x00000200 #define RSCT_READER_HARDWARE_MASK_BIOMETRIC 0x00000400 #define RSCT_READER_HARDWARE_MASK_BUZZER 0x00000800 #define RSCT_READER_HARDWARE_MASK_DISPLAY_ONOFF 0x00001000 #define RSCT_READER_HARDWARE_MASK_RFID 0x00002000 #define RSCT_READER_HARDWARE_MASK_PACE 0x00004000 #define RSCT_READER_HARDWARE_MASK_UPDATEABLE 0x00010000 #define RSCT_READER_HARDWARE_MASK_MODULES 0x00020000 #define RSCT_READER_HARDWARE_BACKLIGHT 0x00040000 typedef struct _tKeyInfo { uint8_t KNr; uint8_t Version; }tKeyInfo; typedef struct _tSecoderInfo { uint32_t FixedModuleID; uint8_t FixedModuleVersion; uint8_t FixedModuleRevision; }tSecoderInfo; typedef struct _ReaderInfo { uint32_t SizeOfStruct; uint32_t ContentsMask; uint32_t PID; uint32_t HardwareMask; uint32_t Version; uint32_t HardwareVersion; uint32_t FlashSize; uint32_t HeapSize; tKeyInfo Keys[2]; int8_t SeriaNumber[11]; int8_t VendorString[128]; int8_t ProductString[128]; int8_t ProductionDate[11]; int8_t ProductionTime[6]; int8_t TestDate[11]; int8_t TestTime[6]; int8_t CommissioningDate[11]; int8_t CommissioningTime[6]; int8_t CommunicationString[4]; uint32_t PortID; int8_t IFDNameOfIfdBridgeDevice[256]; int8_t HardwareString[128]; tSecoderInfo Info[1]; }cj_ReaderInfo; typedef void* ctxPtr; typedef void (RSCT_STDCALL *fctKeyIntCallback)(ctxPtr Context, uint8_t Key); typedef void (RSCT_STDCALL *fctChangeIntCallback)(ctxPtr Context, uint8_t State); typedef enum _EContrast{ContrastVeryLow,ContrastLow,ContrastMedium,ContrastHigh,ContrastVeryHigh}EContrast; typedef enum _EBacklight{BacklightOff,BacklightVeryLow,BacklightLow,BacklightMedium,BacklightHigh,BacklightVeryHigh}EBacklight; typedef int CJ_RESULT; typedef uint32_t RSCT_IFD_RESULT; typedef enum _EApduNorm{NORM_PCSC,NORM_ISO,NORM_EMV}EApduNorm; #ifndef CJPCSC_VEN_IOCTRL_ESCAPE # define CJPCSC_VEN_IOCTRL_ESCAPE SCARD_CTL_CODE(3103) #endif extern CJECA32_API int ncjeca32; CJECA32_API int fncjeca32(void); #ifdef __cplusplus // Diese Klasse wird aus cjeca32.dll exportiert. class CJECA32_API Ccjeca32 { public: Ccjeca32(void); // TODO: Hier die Methoden hinzufügen. }; #endif #ifdef CJECA32_EXPORTS #ifdef _EXP_CTAPI #define CTAPI_RETURN CJECA32_API char _stdcall #ifdef __cplusplus extern "C" { #endif CTAPI_RETURN CT_init(WORD,WORD); CTAPI_RETURN CT_data(WORD,uint8_t *dad,uint8_t *sad, WORD cmd_len, const uint8_t *cmd, WORD *response_len, uint8_t *response); CTAPI_RETURN CT_close(WORD); #ifdef __cplusplus } #endif #endif #endif #endif pcsc-cyberjack-3.99.5final.sp05/include/firmware/000077500000000000000000000000001231776762100215575ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/include/firmware/BingoError.h000066400000000000000000000025131231776762100240010ustar00rootroot00000000000000#ifndef BINGO_ERROR_H //Eroor classes #define ERROR_CARD 0x10000000 //Class: Card communication errors #define ERROR_CARD_CMD 0x20000000 //Class: Card state errors #define ERROR_USER 0x30000000 //Class: User errors #define ERROR_INPUT 0x40000000 //Class: Input validation errors #define ERROR_STATE 0x50000000 //Class: State machine errors #define ERROR_OPENING_CARD (ERROR_CARD | 1) #define ERROR_WRONG_CARD (ERROR_CARD | 2) #define ERROR_COM_CARD (ERROR_CARD | 3) #define ERROR_AUTH_CARD (ERROR_CARD | 4) #define ERROR_CARD_CMD_SELECT(SW1,SW2) (ERROR_CARD_CMD | 0x00A40000 | (SW1<<8) | SW2) #define ERROR_CARD_CMD_AUTH(SW1,SW2) (ERROR_CARD_CMD | 0x00880000 | (SW1<<8) | SW2) #define ERROR_CARD_CMD_GETCHALLANGE(SW1,SW2) (ERROR_CARD_CMD | 0x00020000 | (SW1<<8) | SW2) #define ERROR_USER_TIMEOUT (ERROR_USER | 1) #define ERROR_USER_ABORT (ERROR_USER | 2) #define ERROR_INPUT_LENGTH (ERROR_INPUT | 1) #define ERROR_INPUT_VALUE (ERROR_INPUT | 2) #define ERROR_STATE_NO_RND (ERROR_STATE | 1) #endif pcsc-cyberjack-3.99.5final.sp05/include/firmware/eca_defines.h000066400000000000000000000016061231776762100241600ustar00rootroot00000000000000#ifndef ECA_DEFINES #define ECA_DEFINES #define MODULE_READY 0xa55a55aaL #define MODULE_DEAKTIV 0xaaa55a55L #define MODULE_CORRUPT 0xffffffffL #ifndef ECOM_F #define MODULE_UPDATE 0x12448841L #else #define MODULE_UPDATE 0x055000aaL #endif #define MODULE_ID_KERNEL 0x01000001L #define MODULE_ID_TEST_APPL1 0xFE000001L #define MODULE_ID_TEST_APPL2 0xFE000002L #define MODULE_ID_MKT_COMP 0x01000002L #define MODULE_ID_ZKA_SIG 0x02000001L #define MODULE_ID_GK_APPL 0x02000002L #define MODULE_ID_KT_LIGHT 0x02000003L #define MODULE_ID_KT_LIGHT_GC 0x02000103L #define MODULE_ID_RETAILER_ID 0x03000000L #define MODULE_ID_BINGO_VOTING 0x04000001L #define MODULE_ID_HHD 0x05000001L #define MODULE_ID_RF_UPDATE 0x06000001L #define MODULE_ID_NPA_CERT_STORE 0x07000001L #define MODULE_ID_PACE 0xFC000001L #define MODULE_ID_SERVICE_TOOL 0xFE000003L #endif pcsc-cyberjack-3.99.5final.sp05/include/firmware/eca_module_errors.h000066400000000000000000000042601231776762100254230ustar00rootroot00000000000000#ifndef ECA_MODULE_ERRORS #define ECA_MODULE_ERRORS #define ECA_MODULE_ERR_SUCCESS 0x00000000 #define ECA_MODULE_ERR_INVALID_PARAMS 0x00000001 #define ECA_MODULE_ERR_INVALID_LENGTH 0x00000002 #define ECA_MODULE_ERR_ACCESS_DENIED 0x00000003 #define ECA_MODULE_ERR_CANCELED_BY_USER 0x00000004 #define ECA_MODULE_ERR_TIMEOUT 0x00000005 #define ECA_MODULE_ERR_OUT_OF_RESOURCE 0x00000006 #define ECA_MODULE_ERR_VERIFY_NOT_DSI 0x00000007 #define ECA_MODULE_ERR_VERIFY_INV_SIGN 0x00000008 #define ECA_MODULE_ERR_MODULE_NOT_FOUND 0x00000009 #define ECA_MODULE_ERR_OUT_OF_SEQUENCE 0x0000000A #define ECA_MODULE_ERR_VALIDATION 0x0000000B #define ECA_MODULE_ERR_MEMORY 0x0000000C #define ECA_MODULE_ERR_VERSION 0x0000000D #define ECA_MODULE_ERR_INVALID_KEY 0x0000000E #define ECA_MODULE_NOT_SUPPORTED 0x0000000F #define ECA_MODULE_ERR_NO_FUNCTION 0x00000010 #define ECA_MODULE_ERR_CO_EXISTENCE 0x00000011 #define ECA_MODULE_ERR_NO_SAM 0x10000001 #define ECA_MODULE_ERR_OPENING_SAM 0x10000002 #define ECA_MODULE_ERR_SAM_CARD_TYPE 0x10000003 #define ECA_MODULE_ERR_SAM_GET_RND 0x10000004 #define ECA_MODULE_ERR_SAM_PACE_ERR 0x10000005 #define ECA_MODULE_ERR_SAM_GET_CHALLENGE 0x10000006 #define ECA_MODULE_ERR_SAM_RESET_PIN 0x10000008 #define ECA_MODULE_ERR_SAM_PACE_ERR_STEP_2 0x10000009 #define ECA_MODULE_ERR_SAM_SELECT_AID 0x1000000A #define ECA_MODULE_ERR_SAM_GET_CHALLENGE_STEP2 0x1000000B #define ECA_MODULE_ERR_SAM_SET_ESIGN_PIN 0x1000000C #define ECA_MODULE_ERR_SAM_PACE_ERR_STEP_3 0x1000000D #define ECA_MODULE_ERR_SAM_SELECT_AID_STEP_3 0x1000000E #define ECA_MODULE_ERR_SAM_VERIFY_PIN 0x1000000F #define ECA_MODULE_ERR_SAM_NOT_READY 0x10000010 #define ECA_MODULE_ERR_SAM_SELECT_CURVE 0x10000011 #define ECA_MODULE_ERR_SAM_SIGNING 0x10000012 #define ECA_MODULE_ERR_SAM_VERIFING 0x10000013 #define ECA_MODULE_ERR_SELECT_EF_KEYD 0x10000014 #define ECA_MODULE_ERR_UPDATE_EF_KEYD 0x10000015 #define ECA_MODULE_ERR_SAM_SELECT_EF_GDO 0x10000016 #define ECA_MODULE_ERR_SAM_READ_EF_GDO 0x10000017 #endif pcsc-cyberjack-3.99.5final.sp05/include/firmware/memory_placements.h000066400000000000000000000156071231776762100254640ustar00rootroot00000000000000#ifndef memory_placements_H #define memory_placements_H #define FLASH_SIZE 0x00040000L typedef struct { unsigned short KeyNr; unsigned short KeyVersion; unsigned char Key[256]; }tSign; #define MODULE_HEADER_ID 0x1077aa01L typedef enum{FILTER_NEUTRAL,FILTER_ALLOW,FILTER_BLOCK,FILTER_OVERLOADED}FILTER_RESULT; typedef enum{INTEREST_RESULT_NO,INTEREST_RESULT_YES}INTEREST_RESULT; typedef enum{CARD_STATE_UNKNOWN,CARD_STATE_NO,CARD_STATE_INSERTED,CARD_STATE_POWER_PRCCESS,CARD_STATE_POWERED,CARD_STATE_SPECIFIC,USER_BREAK}ISO_POWER; #define APPL_ATTR_ENTRY 1 #define APPL_ATTR_HIGH_SEC 2 #define APPL_ATTR_AUTO_LED 4 #define APPL_ATTR_LIB 8 #define APPL_FLAG_DEFAULT_ON_RESET 1 #define APPL_FLAG_AUTO_SELECT 2 #define APPL_FLAG_NO_KEY_EVENT 4 #define APPL_FLAG_UNCONNECTED 8 #define APPL_FLAG_INSTALLER 16 #define APPL_FLAG_ONE_TIME_ANY_TIME 32 typedef void (*fctPowerUp)(void); typedef void (*fctSwitchTo)(void); typedef INTEREST_RESULT (*fctPostATRParser)(unsigned char *ATR,unsigned int ATRLen); typedef FILTER_RESULT (*fctPreICCCmdFilter)(unsigned long ActiveModule,unsigned char *APDU,unsigned int APDULen); typedef int (*fctPreICCSMCmdFilter)(unsigned char *APDU,unsigned int *APDULen,unsigned int MaxAPDULen); typedef void (*fctPostCmdParser)(const unsigned char *APDU,unsigned int APDULen,const unsigned char *RAPDU,unsigned int RAPDULen); typedef FILTER_RESULT (*fctPreIFDCmdFilter)(unsigned long ActiveModule,unsigned long ModuleID,unsigned short ModuleFkt,unsigned char *Input,unsigned int InputLen,unsigned short *OverloadFctNo); typedef FILTER_RESULT (*fctAllowSwitch)(unsigned long ModuleID); typedef void (*fctApplicationProcedure)(unsigned char *Input,unsigned int InputLen,unsigned char *Output,unsigned short *OutputLen,unsigned char *Error,unsigned short *ErrorLen); typedef FILTER_RESULT (*fctCheckCoExistens)(unsigned int ModuleCount,unsigned long *IDs); typedef int (*fctCheckCmdAndGetTexte)(unsigned char *cmd,unsigned int len,const char **Texte,unsigned int modi,const unsigned char **Symbol); typedef void (*fctRecognizePINResult)(unsigned short SW1SW2); typedef void (*fctRecognizeCardState)(ISO_POWER State); typedef const char *(*fctGetApplicationStdText)(void); typedef int (*fctCheckMessageParams)(const unsigned char *cmd,unsigned int len,unsigned int modi,unsigned short wLangId,unsigned char bMessageNumber,const unsigned char *bMessageIndex,unsigned char bConfirmPIN); typedef unsigned char (*fctGetExtApplicationError)(unsigned char error,unsigned int *ResponseLength,unsigned char *Response); typedef struct { fctApplicationProcedure Procedure; unsigned long Attributes; }tApplicationProcedure; typedef struct { #ifdef AT91_SAM3 unsigned long Status; unsigned long OffsetCrc16; unsigned long ModuleHeaderID; unsigned long ModuleBaseAddr; #else unsigned long OffsetCrc16; unsigned long Status; unsigned long ModuleBaseAddr; unsigned long ModuleHeaderID; #endif unsigned long ModuleID; unsigned long ModuleCodeSize; unsigned char Version; unsigned char Revision; unsigned char Variante; unsigned char RequieredKernelVersion; unsigned char RequieredKernelRevision; unsigned char GlobalHeapSize; unsigned char ExtraPages; unsigned char cReserved2; unsigned char DateOfCompilation[12]; unsigned char TimeOfCompilation[12]; char Description[16]; fctPowerUp PowerUp; fctPostATRParser PostATRParser; fctPreICCCmdFilter PreICCCmdFilter; fctPreIFDCmdFilter PreIFDCmdFilter; fctPostCmdParser PostCmdParser; fctAllowSwitch AllowSwitch; const tApplicationProcedure *ApplicationProcedures; unsigned long ApplicationProcedureCount; unsigned long ApplicationFlags; fctSwitchTo SwitchTo; fctCheckCoExistens CheckCoExistens; fctCheckCmdAndGetTexte CheckCmdAndGetTexte; fctRecognizePINResult RecognizePINResult; fctRecognizeCardState RecognizeCardState; fctGetApplicationStdText GetApplicationStdText; unsigned long PINTimeout; unsigned long MinPINTimeout; fctCheckMessageParams CheckMessageParams; fctGetExtApplicationError GetExtApplicationError; unsigned long EncryptionKey; fctPreICCSMCmdFilter PreBuildSM; fctPreICCSMCmdFilter PostBuildSM; const void *DataEntry; unsigned long Reserved[23]; }tModuleHeader; #ifdef AT91_SAM3 #define APPLICATION_START ((void *)0x00100000) #define APPLICATION_DATA 0x20000000 #define APPLICATION_DATA_SIZE 0x00001734 #define APPLICATION_HEADER_ADDR 0x00100000 #define PRNG_DATA 0x0009ED00 #define PRNG_SIZE 0x00000300 #define KEY_DATA 0x0009F000 #define GLOB_DATA 0x0009FA00 #define GLOB_SIZE 0x00000100 #define PRNG_CONST 0x0009FB00 #define PRNG_CONST_SIZE 0x00000100 #define SAM_CONST 0x0009FBD0 #define SAM_CONST_SIZE 0x00000030 #define CONF_DATA 0x0009FC00 #define CONF_SIZE 0x00000100 #define KERNEL_HEADER_ADDR 0x00081000 #define KERNEL_EXPORTS_ADDR 0x00081200 #define KERNEL_UPDATE_ADDR 0x00100000 #define DATASTORE_START 0x00110000 #define DATASTORE_HEADER_ADDR 0x00110000 #define MAX_FLASH_ADDR 0x0011FFFF #ifndef CJECA_MAX_MODULES #define CJECA_MAX_MODULES 1 #endif #else #ifndef ECOM_F #define APPLICATION_START ((void *)0x00020000) #define APPLICATION_DATA 0x00201C00 #define APPLICATION_DATA_SIZE 0x00000C00 #define KEY_DATA 0x00000600 #define GLOB_DATA 0x00000F00 #define CONF_DATA 0x00001000 #define CONF_SIZE 0x00000100 #define KERNEL_HEADER_ADDR 0x00001200 #define KERNEL_EXPORTS_ADDR 0x00001400 #define KERNEL_UPDATE_ADDR 0x00020000 //#define APPLICATION_HEADER_ADDR 0x00202700 #ifndef CJECA_MAX_MODULES #ifdef ECOM_S #define CJECA_MAX_MODULES 1 #else #define CJECA_MAX_MODULES 4 #endif #endif #else #define APPLICATION_DATA 0x00001C00L #define APPLICATION_DATA_SIZE 0x00000C00L #define KEY_DATA 0xff8000L #define GLOB_DATA 0xffc000L #define CONF_DATA 0xffbc00L #define KERNEL_HEADER_ADDR 0xfc0000L #define KERNEL_EXPORTS_ADDR 0xfcfe00L #define KERNEL_UPDATE_ADDR 0xfd0000L //#define APPLICATION_HEADER_ADDR 0x00202700 #define __root #define CJECA_MAX_MODULES 5 #endif #endif #ifndef AT91_SAM3 #ifndef PRODUKTION_KERNEL #ifdef RFID #define KERNEL_VERSION 0x38 #else #define KERNEL_VERSION 0x30 #endif #define KERNEL_REVISION 78 #else #define KERNEL_VERSION 0x28 #define KERNEL_REVISION 1 #endif #else #ifndef PRODUKTION_KERNEL #ifdef RF_STANDARD #define KERNEL_VERSION 0x12 #define KERNEL_REVISION 10 #else #ifdef MCT_UNIVERSAL #define KERNEL_VERSION 0x11 #define KERNEL_REVISION 0 #else #define KERNEL_VERSION 0x21 #define KERNEL_REVISION 0 #endif #endif #else #define KERNEL_VERSION 0x01 #define KERNEL_REVISION 0 #endif #endif #include "eca_defines.h" #endif pcsc-cyberjack-3.99.5final.sp05/include/macosx/000077500000000000000000000000001231776762100212355ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/include/macosx/Makefile.am000066400000000000000000000000161231776762100232660ustar00rootroot00000000000000SUBDIRS=PCSC pcsc-cyberjack-3.99.5final.sp05/include/macosx/PCSC/000077500000000000000000000000001231776762100217655ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/include/macosx/PCSC/Makefile.am000066400000000000000000000001341231776762100240170ustar00rootroot00000000000000 noinst_HEADERS=\ debuglog.h \ ifdhandler.h \ pcsclite.h \ reader.h \ wintypes.h pcsc-cyberjack-3.99.5final.sp05/include/macosx/PCSC/debuglog.h000066400000000000000000000055541231776762100237370ustar00rootroot00000000000000/* * MUSCLE SmartCard Development ( http://www.linuxnet.com ) * * Copyright (C) 1999-2004 * David Corcoran * Copyright (C) 1999-2005 * Ludovic Rousseau * * $Id: debuglog.h 3075 2008-07-30 14:25:27Z rousseau $ */ /** * @file * @brief This handles debugging. * * @note log message is sent to syslog or stderr depending on --foreground * command line argument * * @code * Log1(priority, "text"); * log "text" with priority level priority * Log2(priority, "text: %d", 1234); * log "text: 1234" * the format string can be anything printf() can understand * Log3(priority, "text: %d %d", 1234, 5678); * log "text: 1234 5678" * the format string can be anything printf() can understand * LogXxd(priority, msg, buffer, size); * log "msg" + a hex dump of size bytes of buffer[] * @endcode */ #ifndef __debuglog_h__ #define __debuglog_h__ #ifdef __cplusplus extern "C" { #endif #ifndef PCSC_API #define PCSC_API #endif #define DEBUGLOG_LOG_ENTRIES 1 #define DEBUGLOG_IGNORE_ENTRIES 2 enum { DEBUGLOG_NO_DEBUG = 0, DEBUGLOG_SYSLOG_DEBUG, DEBUGLOG_STDERR_DEBUG }; #define DEBUG_CATEGORY_NOTHING 0 #define DEBUG_CATEGORY_APDU 1 #define DEBUG_CATEGORY_SW 2 enum { PCSC_LOG_DEBUG = 0, PCSC_LOG_INFO, PCSC_LOG_ERROR, PCSC_LOG_CRITICAL }; /* You can't do #ifndef __FUNCTION__ */ #if !defined(__GNUC__) && !defined(__IBMC__) #define __FUNCTION__ "" #endif #define Log0(priority) log_msg(priority, "%s:%d:%s()", __FILE__, __LINE__, __FUNCTION__) #define Log1(priority, fmt) log_msg(priority, "%s:%d:%s() " fmt, __FILE__, __LINE__, __FUNCTION__) #define Log2(priority, fmt, data) log_msg(priority, "%s:%d:%s() " fmt, __FILE__, __LINE__, __FUNCTION__, data) #define Log3(priority, fmt, data1, data2) log_msg(priority, "%s:%d:%s() " fmt, __FILE__, __LINE__, __FUNCTION__, data1, data2) #define Log4(priority, fmt, data1, data2, data3) log_msg(priority, "%s:%d:%s() " fmt, __FILE__, __LINE__, __FUNCTION__, data1, data2, data3) #define Log9(priority, fmt, data1, data2, data3, data4, data5, data6, data7, data8) log_msg(priority, "%s:%d:%s() " fmt, __FILE__, __LINE__, __FUNCTION__, data1, data2, data3, data4, data5, data6, data7, data8) #define LogXxd(priority, msg, buffer, size) log_xxd(priority, msg, buffer, size) #define DebugLogA(a) Log1(PCSC_LOG_INFO, a) #define DebugLogB(a, b) Log2(PCSC_LOG_INFO, a, b) #define DebugLogC(a, b,c) Log3(PCSC_LOG_INFO, a, b, c) PCSC_API void log_msg(const int priority, const char *fmt, ...); PCSC_API void log_xxd(const int priority, const char *msg, const unsigned char *buffer, const int size); void DebugLogSuppress(const int); void DebugLogSetLogType(const int); int DebugLogSetCategory(const int); void DebugLogCategory(const int, const unsigned char *, const int); PCSC_API void DebugLogSetLevel(const int level); #ifdef __cplusplus } #endif #endif /* __debuglog_h__ */ pcsc-cyberjack-3.99.5final.sp05/include/macosx/PCSC/ifdhandler.h000066400000000000000000000131641231776762100242430ustar00rootroot00000000000000/* * MUSCLE SmartCard Development ( http://www.linuxnet.com ) * * Copyright (C) 1999-2004 * David Corcoran * Damien Sauveron * * $Id: ifdhandler.h 3029 2008-06-26 13:58:52Z rousseau $ */ /** * @file * @brief This provides reader specific low-level calls. */ #ifndef _ifd_handler_h_ #define _ifd_handler_h_ #include #ifdef __cplusplus extern "C" { #endif /* * List of data structures available to ifdhandler */ typedef struct _DEVICE_CAPABILITIES { LPSTR Vendor_Name; /**< Tag 0x0100 */ LPSTR IFD_Type; /**< Tag 0x0101 */ DWORD IFD_Version; /**< Tag 0x0102 */ LPSTR IFD_Serial; /**< Tag 0x0103 */ DWORD IFD_Channel_ID; /**< Tag 0x0110 */ DWORD Asynch_Supported; /**< Tag 0x0120 */ DWORD Default_Clock; /**< Tag 0x0121 */ DWORD Max_Clock; /**< Tag 0x0122 */ DWORD Default_Data_Rate; /**< Tag 0x0123 */ DWORD Max_Data_Rate; /**< Tag 0x0124 */ DWORD Max_IFSD; /**< Tag 0x0125 */ DWORD Synch_Supported; /**< Tag 0x0126 */ DWORD Power_Mgmt; /**< Tag 0x0131 */ DWORD Card_Auth_Devices; /**< Tag 0x0140 */ DWORD User_Auth_Device; /**< Tag 0x0142 */ DWORD Mechanics_Supported; /**< Tag 0x0150 */ DWORD Vendor_Features; /**< Tag 0x0180 - 0x01F0 User Defined. */ } DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES; typedef struct _ICC_STATE { UCHAR ICC_Presence; /**< Tag 0x0300 */ UCHAR ICC_Interface_Status; /**< Tag 0x0301 */ UCHAR ATR[MAX_ATR_SIZE]; /**< Tag 0x0303 */ UCHAR ICC_Type; /**< Tag 0x0304 */ } ICC_STATE, *PICC_STATE; typedef struct _PROTOCOL_OPTIONS { DWORD Protocol_Type; /**< Tag 0x0201 */ DWORD Current_Clock; /**< Tag 0x0202 */ DWORD Current_F; /**< Tag 0x0203 */ DWORD Current_D; /**< Tag 0x0204 */ DWORD Current_N; /**< Tag 0x0205 */ DWORD Current_W; /**< Tag 0x0206 */ DWORD Current_IFSC; /**< Tag 0x0207 */ DWORD Current_IFSD; /**< Tag 0x0208 */ DWORD Current_BWT; /**< Tag 0x0209 */ DWORD Current_CWT; /**< Tag 0x020A */ DWORD Current_EBC; /**< Tag 0x020B */ } PROTOCOL_OPTIONS, *PPROTOCOL_OPTIONS; typedef struct _SCARD_IO_HEADER { DWORD Protocol; DWORD Length; } SCARD_IO_HEADER, *PSCARD_IO_HEADER; /* * End of structure list */ /* * The list of tags should be alot more but this is all I use in the * meantime */ #define TAG_IFD_ATR 0x0303 #define TAG_IFD_SLOTNUM 0x0180 #define TAG_IFD_SLOT_THREAD_SAFE 0x0FAC #define TAG_IFD_THREAD_SAFE 0x0FAD #define TAG_IFD_SLOTS_NUMBER 0x0FAE #define TAG_IFD_SIMULTANEOUS_ACCESS 0x0FAF #define TAG_IFD_POLLING_THREAD 0x0FB0 #define TAG_IFD_POLLING_THREAD_KILLABLE 0x0FB1 /* * End of tag list */ /* * IFD Handler version number enummerations */ #define IFD_HVERSION_1_0 0x00010000 #define IFD_HVERSION_2_0 0x00020000 #define IFD_HVERSION_3_0 0x00030000 /* * End of version number enummerations */ /* * List of defines available to ifdhandler */ #define IFD_POWER_UP 500 #define IFD_POWER_DOWN 501 #define IFD_RESET 502 #define IFD_NEGOTIATE_PTS1 1 #define IFD_NEGOTIATE_PTS2 2 #define IFD_NEGOTIATE_PTS3 4 #define IFD_SUCCESS 0 #define IFD_ERROR_TAG 600 #define IFD_ERROR_SET_FAILURE 601 #define IFD_ERROR_VALUE_READ_ONLY 602 #define IFD_ERROR_PTS_FAILURE 605 #define IFD_ERROR_NOT_SUPPORTED 606 #define IFD_PROTOCOL_NOT_SUPPORTED 607 #define IFD_ERROR_POWER_ACTION 608 #define IFD_ERROR_SWALLOW 609 #define IFD_ERROR_EJECT 610 #define IFD_ERROR_CONFISCATE 611 #define IFD_COMMUNICATION_ERROR 612 #define IFD_RESPONSE_TIMEOUT 613 #define IFD_NOT_SUPPORTED 614 #define IFD_ICC_PRESENT 615 #define IFD_ICC_NOT_PRESENT 616 #define IFD_NO_SUCH_DEVICE 617 /* * If you want to compile a V2.0 IFDHandler, define IFDHANDLERv2 before you * include this file. * * By default it is setup for for most recent version of the API (V3.0) */ #ifndef IFDHANDLERv2 /* * List of Defined Functions Available to IFD_Handler 3.0 * * All the functions of IFD_Handler 2.0 are available * IFDHCreateChannelByName() is new * IFDHControl() API changed */ RESPONSECODE IFDHCreateChannelByName(DWORD, LPSTR); RESPONSECODE IFDHControl(DWORD, DWORD, PUCHAR, DWORD, PUCHAR, DWORD, LPDWORD); #else /* * List of Defined Functions Available to IFD_Handler 2.0 */ RESPONSECODE IFDHControl(DWORD, PUCHAR, DWORD, PUCHAR, PDWORD); #endif /* * common functions in IFD_Handler 2.0 and 3.0 */ RESPONSECODE IFDHCreateChannel(DWORD, DWORD); RESPONSECODE IFDHCloseChannel(DWORD); RESPONSECODE IFDHGetCapabilities(DWORD, DWORD, PDWORD, PUCHAR); RESPONSECODE IFDHSetCapabilities(DWORD, DWORD, DWORD, PUCHAR); RESPONSECODE IFDHSetProtocolParameters(DWORD, DWORD, UCHAR, UCHAR, UCHAR, UCHAR); RESPONSECODE IFDHPowerICC(DWORD, DWORD, PUCHAR, PDWORD); RESPONSECODE IFDHTransmitToICC(DWORD, SCARD_IO_HEADER, PUCHAR, DWORD, PUCHAR, PDWORD, PSCARD_IO_HEADER); RESPONSECODE IFDHICCPresence(DWORD); /* * List of Defined Functions Available to IFD_Handler 1.0 */ RESPONSECODE IO_Create_Channel(DWORD); RESPONSECODE IO_Close_Channel(void); RESPONSECODE IFD_Get_Capabilities(DWORD, PUCHAR); RESPONSECODE IFD_Set_Capabilities(DWORD, PUCHAR); RESPONSECODE IFD_Set_Protocol_Parameters(DWORD, UCHAR, UCHAR, UCHAR, UCHAR); RESPONSECODE IFD_Power_ICC(DWORD); RESPONSECODE IFD_Swallow_ICC(void); RESPONSECODE IFD_Eject_ICC(void); RESPONSECODE IFD_Confiscate_ICC(void); RESPONSECODE IFD_Transmit_to_ICC(SCARD_IO_HEADER, PUCHAR, DWORD, PUCHAR, PDWORD, PSCARD_IO_HEADER); RESPONSECODE IFD_Is_ICC_Present(void); RESPONSECODE IFD_Is_ICC_Absent(void); #ifdef __cplusplus } #endif #endif pcsc-cyberjack-3.99.5final.sp05/include/macosx/PCSC/pcsclite.h000066400000000000000000000266561231776762100237630ustar00rootroot00000000000000/* * MUSCLE SmartCard Development ( http://www.linuxnet.com ) * * Copyright (C) 1999-2004 * David Corcoran * Ludovic Rousseau * * $Id: pcsclite.h.in 3352 2009-03-20 08:56:19Z rousseau $ */ /** * @file * @brief This keeps a list of defines for pcsc-lite. * * Error codes from http://msdn.microsoft.com/en-us/library/aa924526.aspx */ #ifndef __pcsclite_h__ #define __pcsclite_h__ #include #ifdef __cplusplus extern "C" { #endif typedef long SCARDCONTEXT; /**< \p hContext returned by SCardEstablishContext() */ typedef SCARDCONTEXT *PSCARDCONTEXT; typedef SCARDCONTEXT *LPSCARDCONTEXT; typedef long SCARDHANDLE; /**< \p hCard returned by SCardConnect() */ typedef SCARDHANDLE *PSCARDHANDLE; typedef SCARDHANDLE *LPSCARDHANDLE; #define MAX_ATR_SIZE 33 /**< Maximum ATR size */ typedef struct { const char *szReader; void *pvUserData; unsigned long dwCurrentState; unsigned long dwEventState; unsigned long cbAtr; unsigned char rgbAtr[MAX_ATR_SIZE]; } SCARD_READERSTATE_A; typedef SCARD_READERSTATE_A SCARD_READERSTATE, *PSCARD_READERSTATE_A, *LPSCARD_READERSTATE_A; /** Protocol Control Information (PCI) */ typedef struct { unsigned long dwProtocol; /**< Protocol identifier */ unsigned long cbPciLength; /**< Protocol Control Inf Length */ } SCARD_IO_REQUEST, *PSCARD_IO_REQUEST, *LPSCARD_IO_REQUEST; typedef const SCARD_IO_REQUEST *LPCSCARD_IO_REQUEST; extern SCARD_IO_REQUEST g_rgSCardT0Pci, g_rgSCardT1Pci, g_rgSCardRawPci; #define SCARD_PCI_T0 (&g_rgSCardT0Pci) /**< protocol control information (PCI) for T=0 */ #define SCARD_PCI_T1 (&g_rgSCardT1Pci) /**< protocol control information (PCI) for T=1 */ #define SCARD_PCI_RAW (&g_rgSCardRawPci) /**< protocol control information (PCI) for RAW protocol */ /** error codes from http://msdn.microsoft.com/en-us/library/aa924526.aspx */ #define SCARD_S_SUCCESS 0x00000000 /**< No error was encountered. */ #define SCARD_F_INTERNAL_ERROR 0x80100001 /**< An internal consistency check failed. */ #define SCARD_E_CANCELLED 0x80100002 /**< The action was cancelled by an SCardCancel request. */ #define SCARD_E_INVALID_HANDLE 0x80100003 /**< The supplied handle was invalid. */ #define SCARD_E_INVALID_PARAMETER 0x80100004 /**< One or more of the supplied parameters could not be properly interpreted. */ #define SCARD_E_INVALID_TARGET 0x80100005 /**< Registry startup information is missing or invalid. */ #define SCARD_E_NO_MEMORY 0x80100006 /**< Not enough memory available to complete this command. */ #define SCARD_F_WAITED_TOO_LONG 0x80100007 /**< An internal consistency timer has expired. */ #define SCARD_E_INSUFFICIENT_BUFFER 0x80100008 /**< The data buffer to receive returned data is too small for the returned data. */ #define SCARD_E_UNKNOWN_READER 0x80100009 /**< The specified reader name is not recognized. */ #define SCARD_E_TIMEOUT 0x8010000A /**< The user-specified timeout value has expired. */ #define SCARD_E_SHARING_VIOLATION 0x8010000B /**< The smart card cannot be accessed because of other connections outstanding. */ #define SCARD_E_NO_SMARTCARD 0x8010000C /**< The operation requires a Smart Card, but no Smart Card is currently in the device. */ #define SCARD_E_UNKNOWN_CARD 0x8010000D /**< The specified smart card name is not recognized. */ #define SCARD_E_CANT_DISPOSE 0x8010000E /**< The system could not dispose of the media in the requested manner. */ #define SCARD_E_PROTO_MISMATCH 0x8010000F /**< The requested protocols are incompatible with the protocol currently in use with the smart card. */ #define SCARD_E_NOT_READY 0x80100010 /**< The reader or smart card is not ready to accept commands. */ #define SCARD_E_INVALID_VALUE 0x80100011 /**< One or more of the supplied parameters values could not be properly interpreted. */ #define SCARD_E_SYSTEM_CANCELLED 0x80100012 /**< The action was cancelled by the system, presumably to log off or shut down. */ #define SCARD_F_COMM_ERROR 0x80100013 /**< An internal communications error has been detected. */ #define SCARD_F_UNKNOWN_ERROR 0x80100014 /**< An internal error has been detected, but the source is unknown. */ #define SCARD_E_INVALID_ATR 0x80100015 /**< An ATR obtained from the registry is not a valid ATR string. */ #define SCARD_E_NOT_TRANSACTED 0x80100016 /**< An attempt was made to end a non-existent transaction. */ #define SCARD_E_READER_UNAVAILABLE 0x80100017 /**< The specified reader is not currently available for use. */ #define SCARD_E_PCI_TOO_SMALL 0x80100019 /**< The PCI Receive buffer was too small. */ #define SCARD_E_READER_UNSUPPORTED 0x8010001A /**< The reader driver does not meet minimal requirements for support. */ #define SCARD_E_DUPLICATE_READER 0x8010001B /**< The reader driver did not produce a unique reader name. */ #define SCARD_E_CARD_UNSUPPORTED 0x8010001C /**< The smart card does not meet minimal requirements for support. */ #define SCARD_E_NO_SERVICE 0x8010001D /**< The Smart card resource manager is not running. */ #define SCARD_E_SERVICE_STOPPED 0x8010001E /**< The Smart card resource manager has shut down. */ #define SCARD_E_UNEXPECTED 0x8010001F /**< An unexpected card error has occurred. */ #define SCARD_E_ICC_INSTALLATION 0x80100020 /**< No primary provider can be found for the smart card. */ #define SCARD_E_ICC_CREATEORDER 0x80100021 /**< The requested order of object creation is not supported. */ /* #define SCARD_E_UNSUPPORTED_FEATURE 0x80100022 / **< This smart card does not support the requested feature. */ #define SCARD_E_DIR_NOT_FOUND 0x80100023 /**< The identified directory does not exist in the smart card. */ #define SCARD_E_FILE_NOT_FOUND 0x80100024 /**< The identified file does not exist in the smart card. */ #define SCARD_E_NO_DIR 0x80100025 /**< The supplied path does not represent a smart card directory. */ #define SCARD_E_NO_FILE 0x80100026 /**< The supplied path does not represent a smart card file. */ #define SCARD_E_NO_ACCESS 0x80100027 /**< Access is denied to this file. */ #define SCARD_E_WRITE_TOO_MANY 0x80100028 /**< The smart card does not have enough memory to store the information. */ #define SCARD_E_BAD_SEEK 0x80100029 /**< There was an error trying to set the smart card file object pointer. */ #define SCARD_E_INVALID_CHV 0x8010002A /**< The supplied PIN is incorrect. */ #define SCARD_E_UNKNOWN_RES_MNG 0x8010002B /**< An unrecognized error code was returned from a layered component. */ #define SCARD_E_NO_SUCH_CERTIFICATE 0x8010002C /**< The requested certificate does not exist. */ #define SCARD_E_CERTIFICATE_UNAVAILABLE 0x8010002D /**< The requested certificate could not be obtained. */ #define SCARD_E_NO_READERS_AVAILABLE 0x8010002E /**< Cannot find a smart card reader. */ #define SCARD_E_COMM_DATA_LOST 0x8010002F /**< A communications error with the smart card has been detected. Retry the operation. */ #define SCARD_E_NO_KEY_CONTAINER 0x80100030 /**< The requested key container does not exist on the smart card. */ #define SCARD_E_SERVER_TOO_BUSY 0x80100031 /**< The Smart Card Resource Manager is too busy to complete this operation. */ #define SCARD_W_UNSUPPORTED_CARD 0x80100065 /**< The reader cannot communicate with the card, due to ATR string configuration conflicts. */ #define SCARD_W_UNRESPONSIVE_CARD 0x80100066 /**< The smart card is not responding to a reset. */ #define SCARD_W_UNPOWERED_CARD 0x80100067 /**< Power has been removed from the smart card, so that further communication is not possible. */ #define SCARD_W_RESET_CARD 0x80100068 /**< The smart card has been reset, so any shared state information is invalid. */ #define SCARD_W_REMOVED_CARD 0x80100069 /**< The smart card has been removed, so further communication is not possible. */ #define SCARD_W_SECURITY_VIOLATION 0x8010006A /**< Access was denied because of a security violation. */ #define SCARD_W_WRONG_CHV 0x8010006B /**< The card cannot be accessed because the wrong PIN was presented. */ #define SCARD_W_CHV_BLOCKED 0x8010006C /**< The card cannot be accessed because the maximum number of PIN entry attempts has been reached. */ #define SCARD_W_EOF 0x8010006D /**< The end of the smart card file has been reached. */ #define SCARD_W_CANCELLED_BY_USER 0x8010006E /**< The user pressed "Cancel" on a Smart Card Selection Dialog. */ #define SCARD_W_CARD_NOT_AUTHENTICATED 0x8010006F /**< No PIN was presented to the smart card. */ #define SCARD_AUTOALLOCATE (DWORD)(-1) /**< see SCardFreeMemory() */ #define SCARD_SCOPE_USER 0x0000 /**< Scope in user space */ #define SCARD_SCOPE_TERMINAL 0x0001 /**< Scope in terminal */ #define SCARD_SCOPE_SYSTEM 0x0002 /**< Scope in system */ #define SCARD_PROTOCOL_UNDEFINED 0x0000 /**< protocol not set */ #define SCARD_PROTOCOL_UNSET SCARD_PROTOCOL_UNDEFINED /* backward compat */ #define SCARD_PROTOCOL_T0 0x0001 /**< T=0 active protocol. */ #define SCARD_PROTOCOL_T1 0x0002 /**< T=1 active protocol. */ #define SCARD_PROTOCOL_RAW 0x0004 /**< Raw active protocol. */ #define SCARD_PROTOCOL_T15 0x0008 /**< T=15 protocol. */ #define SCARD_PROTOCOL_ANY (SCARD_PROTOCOL_T0|SCARD_PROTOCOL_T1) /**< IFD determines prot. */ #define SCARD_SHARE_EXCLUSIVE 0x0001 /**< Exclusive mode only */ #define SCARD_SHARE_SHARED 0x0002 /**< Shared mode only */ #define SCARD_SHARE_DIRECT 0x0003 /**< Raw mode only */ #define SCARD_LEAVE_CARD 0x0000 /**< Do nothing on close */ #define SCARD_RESET_CARD 0x0001 /**< Reset on close */ #define SCARD_UNPOWER_CARD 0x0002 /**< Power down on close */ #define SCARD_EJECT_CARD 0x0003 /**< Eject on close */ #define SCARD_UNKNOWN 0x0001 /**< Unknown state */ #define SCARD_ABSENT 0x0002 /**< Card is absent */ #define SCARD_PRESENT 0x0004 /**< Card is present */ #define SCARD_SWALLOWED 0x0008 /**< Card not powered */ #define SCARD_POWERED 0x0010 /**< Card is powered */ #define SCARD_NEGOTIABLE 0x0020 /**< Ready for PTS */ #define SCARD_SPECIFIC 0x0040 /**< PTS has been set */ #define SCARD_STATE_UNAWARE 0x0000 /**< App wants status */ #define SCARD_STATE_IGNORE 0x0001 /**< Ignore this reader */ #define SCARD_STATE_CHANGED 0x0002 /**< State has changed */ #define SCARD_STATE_UNKNOWN 0x0004 /**< Reader unknown */ #define SCARD_STATE_UNAVAILABLE 0x0008 /**< Status unavailable */ #define SCARD_STATE_EMPTY 0x0010 /**< Card removed */ #define SCARD_STATE_PRESENT 0x0020 /**< Card inserted */ #define SCARD_STATE_ATRMATCH 0x0040 /**< ATR matches card */ #define SCARD_STATE_EXCLUSIVE 0x0080 /**< Exclusive Mode */ #define SCARD_STATE_INUSE 0x0100 /**< Shared Mode */ #define SCARD_STATE_MUTE 0x0200 /**< Unresponsive card */ #define SCARD_STATE_UNPOWERED 0x0400 /**< Unpowered card */ /** PC/SC Lite specific extensions */ #define SCARD_W_INSERTED_CARD 0x8010006A #define SCARD_E_UNSUPPORTED_FEATURE 0x8010001F /**< feature not supported. */ #ifndef INFINITE #define INFINITE 0xFFFFFFFF /**< Infinite timeout */ #endif #define PCSCLITE_VERSION_NUMBER "1.5.3" /**< Current version */ /** Maximum readers context (a slot is count as a reader) */ #define PCSCLITE_MAX_READERS_CONTEXTS 16 #define MAX_READERNAME 100 #ifndef SCARD_ATR_LENGTH #define SCARD_ATR_LENGTH MAX_ATR_SIZE /**< Maximum ATR size */ #endif /* * The message and buffer sizes must be multiples of 16. * The max message size must be at least large enough * to accomodate the transmit_struct */ #define MAX_BUFFER_SIZE 264 /**< Maximum Tx/Rx Buffer for short APDU */ #define MAX_BUFFER_SIZE_EXTENDED (4 + 3 + (1<<16) + 3) /**< enhanced (64K + APDU + Lc + Le) Tx/Rx Buffer */ /* * Gets a stringified error response */ char *pcsc_stringify_error(const long); #ifdef __cplusplus } #endif #endif pcsc-cyberjack-3.99.5final.sp05/include/macosx/PCSC/reader.h000066400000000000000000000312551231776762100234060ustar00rootroot00000000000000/* * MUSCLE SmartCard Development ( http://www.linuxnet.com ) * * Copyright (C) 1999-2005 * David Corcoran * Copyright (C) 1999-2009 * Ludovic Rousseau * * $Id: reader.h.in 3355 2009-03-21 13:47:15Z rousseau $ */ /** * @file * @brief This keeps a list of defines shared between the driver and the application */ #ifndef __reader_h__ #define __reader_h__ /* * Tags for requesting card and reader attributes */ #define SCARD_ATTR_VALUE(Class, Tag) ((((ULONG)(Class)) << 16) | ((ULONG)(Tag))) #define SCARD_CLASS_VENDOR_INFO 1 /**< Vendor information definitions */ #define SCARD_CLASS_COMMUNICATIONS 2 /**< Communication definitions */ #define SCARD_CLASS_PROTOCOL 3 /**< Protocol definitions */ #define SCARD_CLASS_POWER_MGMT 4 /**< Power Management definitions */ #define SCARD_CLASS_SECURITY 5 /**< Security Assurance definitions */ #define SCARD_CLASS_MECHANICAL 6 /**< Mechanical characteristic definitions */ #define SCARD_CLASS_VENDOR_DEFINED 7 /**< Vendor specific definitions */ #define SCARD_CLASS_IFD_PROTOCOL 8 /**< Interface Device Protocol options */ #define SCARD_CLASS_ICC_STATE 9 /**< ICC State specific definitions */ #define SCARD_CLASS_SYSTEM 0x7fff /**< System-specific definitions */ #define SCARD_ATTR_VENDOR_NAME SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0100) /**< Vendor name. */ #define SCARD_ATTR_VENDOR_IFD_TYPE SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0101) /**< Vendor-supplied interface device type (model designation of reader). */ #define SCARD_ATTR_VENDOR_IFD_VERSION SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0102) /**< Vendor-supplied interface device version (DWORD in the form 0xMMmmbbbb where MM = major version, mm = minor version, and bbbb = build number). */ #define SCARD_ATTR_VENDOR_IFD_SERIAL_NO SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0103) /**< Vendor-supplied interface device serial number. */ #define SCARD_ATTR_CHANNEL_ID SCARD_ATTR_VALUE(SCARD_CLASS_COMMUNICATIONS, 0x0110) /**< DWORD encoded as 0xDDDDCCCC, where DDDD = data channel type and CCCC = channel number */ #define SCARD_ATTR_ASYNC_PROTOCOL_TYPES SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0120) /**< FIXME */ #define SCARD_ATTR_DEFAULT_CLK SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0121) /**< Default clock rate, in kHz. */ #define SCARD_ATTR_MAX_CLK SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0122) /**< Maximum clock rate, in kHz. */ #define SCARD_ATTR_DEFAULT_DATA_RATE SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0123) /**< Default data rate, in bps. */ #define SCARD_ATTR_MAX_DATA_RATE SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0124) /**< Maximum data rate, in bps. */ #define SCARD_ATTR_MAX_IFSD SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0125) /**< Maximum bytes for information file size device. */ #define SCARD_ATTR_SYNC_PROTOCOL_TYPES SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0126) /**< FIXME */ #define SCARD_ATTR_POWER_MGMT_SUPPORT SCARD_ATTR_VALUE(SCARD_CLASS_POWER_MGMT, 0x0131) /**< Zero if device does not support power down while smart card is inserted. Nonzero otherwise. */ #define SCARD_ATTR_USER_TO_CARD_AUTH_DEVICE SCARD_ATTR_VALUE(SCARD_CLASS_SECURITY, 0x0140) /**< FIXME */ #define SCARD_ATTR_USER_AUTH_INPUT_DEVICE SCARD_ATTR_VALUE(SCARD_CLASS_SECURITY, 0x0142) /**< FIXME */ #define SCARD_ATTR_CHARACTERISTICS SCARD_ATTR_VALUE(SCARD_CLASS_MECHANICAL, 0x0150) /**< DWORD indicating which mechanical characteristics are supported. If zero, no special characteristics are supported. Note that multiple bits can be set */ #define SCARD_ATTR_CURRENT_PROTOCOL_TYPE SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0201) /**< FIXME */ #define SCARD_ATTR_CURRENT_CLK SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0202) /**< Current clock rate, in kHz. */ #define SCARD_ATTR_CURRENT_F SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0203) /**< Clock conversion factor. */ #define SCARD_ATTR_CURRENT_D SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0204) /**< Bit rate conversion factor. */ #define SCARD_ATTR_CURRENT_N SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0205) /**< Current guard time. */ #define SCARD_ATTR_CURRENT_W SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0206) /**< Current work waiting time. */ #define SCARD_ATTR_CURRENT_IFSC SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0207) /**< Current byte size for information field size card. */ #define SCARD_ATTR_CURRENT_IFSD SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0208) /**< Current byte size for information field size device. */ #define SCARD_ATTR_CURRENT_BWT SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0209) /**< Current block waiting time. */ #define SCARD_ATTR_CURRENT_CWT SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x020a) /**< Current character waiting time. */ #define SCARD_ATTR_CURRENT_EBC_ENCODING SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x020b) /**< Current error block control encoding. */ #define SCARD_ATTR_EXTENDED_BWT SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x020c) /**< FIXME */ #define SCARD_ATTR_ICC_PRESENCE SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0300) /**< Single byte indicating smart card presence */ #define SCARD_ATTR_ICC_INTERFACE_STATUS SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0301) /**< Single byte. Zero if smart card electrical contact is not active; nonzero if contact is active. */ #define SCARD_ATTR_CURRENT_IO_STATE SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0302) /**< FIXME */ #define SCARD_ATTR_ATR_STRING SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0303) /**< Answer to reset (ATR) string. */ #define SCARD_ATTR_ICC_TYPE_PER_ATR SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0304) /**< Single byte indicating smart card type */ #define SCARD_ATTR_ESC_RESET SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED, 0xA000) /**< FIXME */ #define SCARD_ATTR_ESC_CANCEL SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED, 0xA003) /**< FIXME */ #define SCARD_ATTR_ESC_AUTHREQUEST SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED, 0xA005) /**< FIXME */ #define SCARD_ATTR_MAXINPUT SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED, 0xA007) /**< FIXME */ #define SCARD_ATTR_DEVICE_UNIT SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0001) /**< Instance of this vendor's reader attached to the computer. The first instance will be device unit 0, the next will be unit 1 (if it is the same brand of reader) and so on. Two different brands of readers will both have zero for this value. */ #define SCARD_ATTR_DEVICE_IN_USE SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0002) /**< Reserved for future use. */ #define SCARD_ATTR_DEVICE_FRIENDLY_NAME_A SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0003) #define SCARD_ATTR_DEVICE_SYSTEM_NAME_A SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0004) #define SCARD_ATTR_DEVICE_FRIENDLY_NAME_W SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0005) #define SCARD_ATTR_DEVICE_SYSTEM_NAME_W SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0006) #define SCARD_ATTR_SUPRESS_T1_IFS_REQUEST SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0007) /**< FIXME */ #ifdef UNICODE #define SCARD_ATTR_DEVICE_FRIENDLY_NAME SCARD_ATTR_DEVICE_FRIENDLY_NAME_W /**< Reader's display name. */ #define SCARD_ATTR_DEVICE_SYSTEM_NAME SCARD_ATTR_DEVICE_SYSTEM_NAME_W /**< Reader's system name. */ #else #define SCARD_ATTR_DEVICE_FRIENDLY_NAME SCARD_ATTR_DEVICE_FRIENDLY_NAME_A /**< Reader's display name. */ #define SCARD_ATTR_DEVICE_SYSTEM_NAME SCARD_ATTR_DEVICE_SYSTEM_NAME_A /**< Reader's system name. */ #endif /** * Provide source compatibility on different platforms */ #define SCARD_CTL_CODE(code) (0x42000000 + (code)) /** * PC/SC v2.02.05 part 10 reader tags */ #define CM_IOCTL_GET_FEATURE_REQUEST SCARD_CTL_CODE(3400) #define FEATURE_VERIFY_PIN_START 0x01 #define FEATURE_VERIFY_PIN_FINISH 0x02 #define FEATURE_MODIFY_PIN_START 0x03 #define FEATURE_MODIFY_PIN_FINISH 0x04 #define FEATURE_GET_KEY_PRESSED 0x05 #define FEATURE_VERIFY_PIN_DIRECT 0x06 #define FEATURE_MODIFY_PIN_DIRECT 0x07 #define FEATURE_MCT_READERDIRECT 0x08 #define FEATURE_MCT_UNIVERSAL 0x09 #define FEATURE_IFD_PIN_PROPERTIES 0x0A #define FEATURE_ABORT 0x0B #define FEATURE_SET_SPE_MESSAGE 0x0C #define FEATURE_VERIFY_PIN_DIRECT_APP_ID 0x0D #define FEATURE_MODIFY_PIN_DIRECT_APP_ID 0x0E #define FEATURE_WRITE_DISPLAY 0x0F #define FEATURE_GET_KEY 0x10 #define FEATURE_IFD_DISPLAY_PROPERTIES 0x11 #define FEATURE_EXECUTE_PACE 0x20 /* structures used (but not defined) in PC/SC Part 10 revision 2.02.05: * "IFDs with Secure Pin Entry Capabilities" */ #include /* Set structure elements aligment on bytes * http://gcc.gnu.org/onlinedocs/gcc/Structure_002dPacking-Pragmas.html */ #if defined(__APPLE__) | defined(sun) #pragma pack(1) #else #pragma pack(push, 1) #endif /** the structure must be 6-bytes long */ typedef struct { uint8_t tag; uint8_t length; uint32_t value; /**< This value is always in BIG ENDIAN format as documented in PCSC v2 part 10 ch 2.2 page 2. You can use ntohl() for example */ } PCSC_TLV_STRUCTURE; /** the wLangId and wPINMaxExtraDigit are 16-bits long so are subject to byte * ordering */ #define HOST_TO_CCID_16(x) (x) #define HOST_TO_CCID_32(x) (x) /** structure used with \ref FEATURE_VERIFY_PIN_DIRECT */ typedef struct { uint8_t bTimerOut; /**< timeout is seconds (00 means use default timeout) */ uint8_t bTimerOut2; /**< timeout in seconds after first key stroke */ uint8_t bmFormatString; /**< formatting options */ uint8_t bmPINBlockString; /**< bits 7-4 bit size of PIN length in APDU, * bits 3-0 PIN block size in bytes after * justification and formatting */ uint8_t bmPINLengthFormat; /**< bits 7-5 RFU, * bit 4 set if system units are bytes, clear if * system units are bits, * bits 3-0 PIN length position in system units */ uint16_t wPINMaxExtraDigit; /**< 0xXXYY where XX is minimum PIN size in digits, and YY is maximum PIN size in digits */ uint8_t bEntryValidationCondition; /**< Conditions under which PIN entry should * be considered complete */ uint8_t bNumberMessage; /**< Number of messages to display for PIN verification */ uint16_t wLangId; /**< Language for messages */ uint8_t bMsgIndex; /**< Message index (should be 00) */ uint8_t bTeoPrologue[3]; /**< T=1 block prologue field to use (fill with 00) */ uint32_t ulDataLength; /**< length of Data to be sent to the ICC */ uint8_t abData[1]; /**< Data to send to the ICC */ } PIN_VERIFY_STRUCTURE; /** structure used with \ref FEATURE_MODIFY_PIN_DIRECT */ typedef struct { uint8_t bTimerOut; /**< timeout is seconds (00 means use default timeout) */ uint8_t bTimerOut2; /**< timeout in seconds after first key stroke */ uint8_t bmFormatString; /**< formatting options */ uint8_t bmPINBlockString; /**< bits 7-4 bit size of PIN length in APDU, * bits 3-0 PIN block size in bytes after * justification and formatting */ uint8_t bmPINLengthFormat; /**< bits 7-5 RFU, * bit 4 set if system units are bytes, clear if * system units are bits, * bits 3-0 PIN length position in system units */ uint8_t bInsertionOffsetOld; /**< Insertion position offset in bytes for the current PIN */ uint8_t bInsertionOffsetNew; /**< Insertion position offset in bytes for the new PIN */ uint16_t wPINMaxExtraDigit; /**< 0xXXYY where XX is minimum PIN size in digits, and YY is maximum PIN size in digits */ uint8_t bConfirmPIN; /**< Flags governing need for confirmation of new PIN */ uint8_t bEntryValidationCondition; /**< Conditions under which PIN entry should * be considered complete */ uint8_t bNumberMessage; /**< Number of messages to display for PIN verification*/ uint16_t wLangId; /**< Language for messages */ uint8_t bMsgIndex1; /**< index of 1st prompting message */ uint8_t bMsgIndex2; /**< index of 2d prompting message */ uint8_t bMsgIndex3; /**< index of 3d prompting message */ uint8_t bTeoPrologue[3]; /**< T=1 block prologue field to use (fill with 00) */ uint32_t ulDataLength; /**< length of Data to be sent to the ICC */ uint8_t abData[1]; /**< Data to send to the ICC */ } PIN_MODIFY_STRUCTURE; /** structure used with \ref FEATURE_IFD_PIN_PROPERTIES */ typedef struct { uint16_t wLcdLayout; /**< display characteristics */ uint16_t wLcdMaxCharacters; uint16_t wLcdMaxLines; uint8_t bEntryValidationCondition; uint8_t bTimeOut2; } PIN_PROPERTIES_STRUCTURE; /* restore default structure elements alignment */ #if defined(__APPLE__) | defined(sun) #pragma pack() #else #pragma pack(pop) #endif #endif pcsc-cyberjack-3.99.5final.sp05/include/macosx/PCSC/wintypes.h000066400000000000000000000022041231776762100240160ustar00rootroot00000000000000/* * MUSCLE SmartCard Development ( http://www.linuxnet.com ) * * Copyright (C) 1999 * David Corcoran * * $Id: wintypes.h 3334 2009-03-02 14:56:38Z rousseau $ */ /** * @file * @brief This keeps a list of Windows(R) types. */ #ifndef __wintypes_h__ #define __wintypes_h__ #ifdef __cplusplus extern "C" { #endif #ifndef BYTE typedef unsigned char BYTE; #endif typedef unsigned char UCHAR; typedef unsigned char *PUCHAR; typedef unsigned short USHORT; #ifndef __COREFOUNDATION_CFPLUGINCOM__ typedef unsigned long ULONG; typedef void *LPVOID; #endif typedef const void *LPCVOID; typedef unsigned long DWORD; typedef unsigned long *PDWORD; typedef long LONG; typedef const char *LPCSTR; typedef const BYTE *LPCBYTE; typedef BYTE *LPBYTE; typedef DWORD *LPDWORD; typedef char *LPSTR; /* these types were deprecated but still used by old drivers and * applications. So just declare and use them. */ typedef LPSTR LPTSTR; typedef LPCSTR LPCTSTR; /* types unused by pcsc-lite */ // typedef short BOOL; typedef unsigned short WORD; typedef unsigned long *PULONG; #ifdef __cplusplus } #endif #endif pcsc-cyberjack-3.99.5final.sp05/include/macosx/winscard.h000066400000000000000000000000671231776762100232230ustar00rootroot00000000000000#include #include pcsc-cyberjack-3.99.5final.sp05/install-sh000077500000000000000000000332561231776762100203350ustar00rootroot00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-01-19.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for `test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for `test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for `test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: pcsc-cyberjack-3.99.5final.sp05/libcyberjack/000077500000000000000000000000001231776762100207445ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/libcyberjack/Makefile.am000066400000000000000000000023211231776762100227760ustar00rootroot00000000000000SUBDIRS=checksuite libdialog INCLUDES= $(pcsc_includes) $(libxml2_includes) \ -I../include -I../include/driver -I../ifd -I../libcyberjack -I../cjeca32 -I../include/firmware -Iausb #AM_CFLAGS=$(visibility_cflags) @cyberjack_platform_def@ #AM_CPPFLAGS=$(visibility_cflags) @cyberjack_platform_def@ AM_CFLAGS=@cyberjack_platform_def@ AM_CPPFLAGS=@cyberjack_platform_def@ noinst_LTLIBRARIES=libcyberjack.la libcyberjack_la_SOURCES=\ driver.cpp \ driver_pcsc.cpp \ module.cpp \ mtemplate.cpp \ modulestore.cpp if ENABLE_NONSERIAL libcyberjack_la_LIBADD=\ ../cjeca32/ausb/libausb.la \ -lstdc++ @THREAD_LIBS@ $(hal_libs) $(pcsc_libraries) $(pcsc_lib) $(libusb_LIBS) else libcyberjack_la_LIBADD=\ -lstdc++ @THREAD_LIBS@ $(pcsc_libraries) $(pcsc_lib) endif if USE_XML2 libcyberjack_la_LIBADD+=$(libxml2_libs) endif libcyberjack_la_LDFLAGS=\ -version-info @CYBERJACK_SO_CURRENT@:@CYBERJACK_SO_REVISION@:@CYBERJACK_SO_AGE@ noinst_HEADERS=\ driver.hpp \ driver_pcsc.hpp driver_pcsc_p.hpp \ module.hpp mtemplate.hpp modulestore.hpp noinst_PROGRAMS=libtest libtest_SOURCES=libtest.cpp libtest_LDADD=libcyberjack.la -ldl -lstdc++ $(pcsc_libraries) $(pcsc_lib) $(libusb_LIBS) #libtest_LDFLAGS=-all-static pcsc-cyberjack-3.99.5final.sp05/libcyberjack/checksuite/000077500000000000000000000000001231776762100230735ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/libcyberjack/checksuite/Makefile.am000066400000000000000000000012221231776762100251240ustar00rootroot00000000000000 noinst_LTLIBRARIES=libchecksuite.la DEFS+=-DCD_SCRIPT_DIR=\"$(libdir)/cyberjack\" AM_CXXFLAGS=@cyberjack_platform_def@ \ -DBUILDING_CYBERJACK INCLUDES= $(pcsc_includes) \ -I$(top_srcdir)/include \ -I../../include/driver \ -I../../include/firmware \ -I../.. -I../../cjeca32 -I../.. -I../../cjeca32/ausb \ -I../../libcyberjack \ -I../../ifd libchecksuite_la_SOURCES=\ cm_distri.cpp \ cm_group.cpp \ cm_reader.cpp \ cm_services.cpp \ cm_uname.cpp \ checkmodule.cpp \ checksuite.cpp noinst_HEADERS=\ cm_distri.h \ cm_group.h \ cm_reader.h \ cm_services.h \ cm_uname.h \ checkmodule.h \ checksuite.h pcsc-cyberjack-3.99.5final.sp05/libcyberjack/checksuite/checkmodule.cpp000066400000000000000000000016061231776762100260650ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "checkmodule.h" CheckModule::CheckModule() { } CheckModule::~CheckModule() { } std::string CheckModule::getTitle() { return "Keine Ueberschrift"; } bool CheckModule::check(std::string &xmlString, std::string &reportString, std::string &hintString) { return false; } pcsc-cyberjack-3.99.5final.sp05/libcyberjack/checksuite/checkmodule.h000066400000000000000000000020471231776762100255320ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #ifndef CHECKMODULE_H #define CHECKMODULE_H class CheckSuite; class CheckModule; #include class CheckModule { friend class CheckSuite; protected: CheckSuite *_suite; protected: void setSuite(CheckSuite *cs) { _suite=cs;}; public: CheckModule(); virtual ~CheckModule(); virtual std::string getTitle(); virtual bool check(std::string &xmlString, std::string &reportString, std::string &hintString); CheckSuite *getCheckSuite() const { return _suite;}; }; #endif pcsc-cyberjack-3.99.5final.sp05/libcyberjack/checksuite/checksuite.cpp000066400000000000000000000065471231776762100257420ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "checksuite.h" #include #include #include "checkmodule.h" #include "cm_distri.h" #include "cm_group.h" #include "cm_reader.h" #include "cm_services.h" #include "cm_uname.h" CheckSuite::CheckSuite() :_flags(0) { } CheckSuite::~CheckSuite() { } void CheckSuite::setFlags(uint32_t f) { _flags=f; } void CheckSuite::addFlags(uint32_t f) { _flags|=f; } void CheckSuite::delFlags(uint32_t f) { _flags&=~f; } void CheckSuite::setDist(const std::string &dname, const std::string &dver) { _distName=dname; _distVersion=dver; } void CheckSuite::addCheckModule(CheckModule *m) { m->setSuite(this); _moduleList.push_back(m); } void CheckSuite::addStandardModules(bool withReaderCheck) { CheckModule *m; /* create and add modules */ m=new CM_Distri(); addCheckModule(m); m=new CM_Uname(); addCheckModule(m); m=new CM_Group(); addCheckModule(m); m=new CM_Services(); addCheckModule(m); if (withReaderCheck) { m=new CM_Reader(); addCheckModule(m); } } bool CheckSuite::beginCheck(const char *title, int doneChecks, int totalChecks) { fprintf(stderr, "BEGIN: %s (%d/%d)\n", title, doneChecks, totalChecks); return true; } bool CheckSuite::endCheck(const char *title, int doneChecks, int totalChecks, bool result) { fprintf(stderr, "END : %s (%d/%d) [%s]\n", title, doneChecks, totalChecks, result?"OK":"ERROR"); return true; } bool CheckSuite::performChecks(std::string &xmlString, std::string &reportString, std::string &hintString) { std::list::iterator it; bool b=true; int i=0; char buf[256]; xmlString="\n"; xmlString+="\n"; xmlString+=" \n"; snprintf(buf, sizeof(buf)-1, " %d\n" " %d\n" " %d\n" " %d\n" " %s\n", CYBERJACK_VERSION_MAJOR, CYBERJACK_VERSION_MINOR, CYBERJACK_VERSION_PATCHLEVEL, CYBERJACK_VERSION_BUILD, CYBERJACK_VERSION_TAG); buf[sizeof(buf)-1]=0; xmlString+=buf; xmlString+=" \n"; for (it=_moduleList.begin(); it!=_moduleList.end(); it++) { bool lb; /* update GUI */ if (!beginCheck((*it)->getTitle().c_str(), i, _moduleList.size())) return false; /* perform check */ lb=(*it)->check(xmlString, reportString, hintString); if (!lb) { b=false; } /* increment number of done checks */ i++; /* update GUI again */ if (!endCheck((*it)->getTitle().c_str(), i, _moduleList.size(), lb)) return false; } xmlString+="\n"; return b; } pcsc-cyberjack-3.99.5final.sp05/libcyberjack/checksuite/checksuite.h000066400000000000000000000050171231776762100253760ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #ifndef CHECKSUITE_H #define CHECKSUITE_H class CheckSuite; #include #include #include "checkmodule.h" #define CHECKSUITE_SPECIAL_ERRORCODE (-126) #define CHECKSUITE_FLAGS_HAVE_PCSCD 0x00000001 #define CHECKSUITE_FLAGS_HAVE_OPENCT 0x00000002 #define CHECKSUITE_FLAGS_HAVE_LCC1 0x00000004 #define CHECKSUITE_FLAGS_HAVE_LCC2 0x00000008 #define CHECKSUITE_FLAGS_HAVE_LCC3 0x00000010 #define CHECKSUITE_FLAGS_HAVE_LCC4 0x00000020 class CheckSuite { private: typedef int8_t (*CT_INITNAME_FN)(uint16_t ctn, const char *devName); typedef int8_t (*CT_DATA_FN)(uint16_t ctn, uint8_t *dad, uint8_t *sad, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); typedef int8_t (*CT_CLOSE_FN)(uint16_t ctn); private: uint32_t _flags; std::string _distName; std::string _distVersion; std::list _moduleList; protected: virtual bool beginCheck(const char *title, int doneChecks, int totalChecks); virtual bool endCheck(const char *title, int doneChecks, int totalChecks, bool result); public: CheckSuite(); virtual ~CheckSuite(); bool performChecks(std::string &xmlString, std::string &reportString, std::string &hintString); void addStandardModules(bool withReaderCheck); void addCheckModule(CheckModule *m); uint32_t getFlags() const { return _flags;}; void setFlags(uint32_t f); void addFlags(uint32_t f); void delFlags(uint32_t f); void setDist(const std::string &dname, const std::string &dver); const std::string &getDistName() const { return _distName;}; const std::string &getDistVersion() const { return _distVersion;}; int8_t ctInitName(uint16_t ctn, const char *devName); int8_t ctData(uint16_t ctn, uint8_t *dad, uint8_t *sad, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); int8_t ctClose(uint16_t ctn); }; #endif pcsc-cyberjack-3.99.5final.sp05/libcyberjack/checksuite/cm_distri.cpp000066400000000000000000000107651231776762100255650ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #include "cm_distri.h" #include "checksuite.h" #include #include #include #include #include bool CM_Distri::check(std::string &xmlString, std::string &reportString, std::string &hintString) { int rv; int xs; rv=system(CD_SCRIPT_DIR "/getdist.sh"); if (rv<0) { const char *s; /* script not found */ s=strerror(errno); reportString+="*FEHLER* (Script \"getdist.sh\" nicht gefunden)\n"; xmlString+="\n"; xmlString+=" "; xmlString+=s; xmlString+=" \n"; xmlString+="\n"; return false; } xs=WEXITSTATUS(rv); if (xs==127) { reportString+="*FEHLER* (\"getdist.sh\" nicht gefunden)\n"; xmlString+="\n"; xmlString+=" "; xmlString+="Shell script nicht gefunden"; xmlString+=" \n"; xmlString+="\n"; return false; } else if (xs!=0) { char numbuf[16]; snprintf(numbuf, sizeof(numbuf), "%d", xs); reportString+="*FEHLER* (getdist.sh wurde mit code "; reportString+=numbuf; reportString+=" beendet)\n"; xmlString+="\n"; xmlString+=" "; xmlString+="getdist.sh beendet mit code "; xmlString+=numbuf; xmlString+=" \n"; xmlString+="\n"; return false; } else { FILE *f; std::string distName; std::string distVer; /* read dist name */ f=fopen("distname", "r"); if (f) { char *p; if (1==fscanf(f, "%as", &p)) { distName=std::string(p); free(p); fclose(f); unlink("distname"); } else { fclose(f); reportString+="*FEHLER* (konnte Distributionsname nicht lesen)\n"; xmlString+="\n"; xmlString+=" "; xmlString+="Konnte Distributionsname nicht lesen.\n"; xmlString+=" \n"; xmlString+="\n"; return false; } } else { const char *s; s=strerror(errno); reportString+="*FEHLER* ("; reportString+=s; reportString+=")\n"; xmlString+="\n"; xmlString+=" "; xmlString+=s; xmlString+=" \n"; xmlString+="\n"; return false; } /* read dist version */ f=fopen("distver", "r"); if (f) { char *p; if (1==fscanf(f, "%as", &p)) { distVer=std::string(p); free(p); fclose(f); unlink("distver"); } else { fclose(f); reportString+="*FEHLER* (konnte Distributionsversion nicht lesen)\n"; xmlString+="\n"; xmlString+=" "; xmlString+="Konnte Distributionsversion nicht lesen.\n"; xmlString+=" \n"; xmlString+="\n"; return false; } } else { const char *s; s=strerror(errno); reportString+="*FEHLER* ("; reportString+=s; reportString+=")\n"; xmlString+="\n"; xmlString+=" "; xmlString+=s; xmlString+=" \n"; xmlString+="\n"; return false; } /* evaluate */ if (distName.empty()) distName="(unbekannt)"; if (distVer.empty()) distVer="(unbekannt)"; reportString+="Distribution: "; reportString+=distName; reportString+=" "; reportString+=distVer; reportString+=" \n"; xmlString+="\n"; xmlString+=" \n"; xmlString+=" "; xmlString+=distName; xmlString+="\n"; xmlString+=" "; xmlString+=distVer; xmlString+="\n"; xmlString+="\n"; _suite->setDist(distName, distVer); return true; } } pcsc-cyberjack-3.99.5final.sp05/libcyberjack/checksuite/cm_distri.h000066400000000000000000000014771231776762100252320ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #include "checkmodule.h" class CM_Distri: public CheckModule { public: CM_Distri() {}; ~CM_Distri() {}; std::string getTitle() { return "ermittle Distribution";}; bool check(std::string &xmlString, std::string &reportString, std::string &hintString); }; pcsc-cyberjack-3.99.5final.sp05/libcyberjack/checksuite/cm_group.cpp000066400000000000000000000106671231776762100254240ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "cm_group.h" #include #include #include #include #include #include bool CM_Group::check(std::string &xmlString, std::string &reportString, std::string &hintString) { struct group *gr=NULL; struct passwd *pw=NULL; char **ps; uid_t uid; /* search for group "cyberjack" */ while( (gr=getgrent()) ) { if (strcasecmp(gr->gr_name, "cyberjack")==0) break; } if (gr==NULL) { /* group does not exist */ reportString+="*HINWEIS* Gruppe \"cyberjack\" existiert nicht\n"; hintString+= "Die Gruppe \"cyberjack\" existiert nicht.\n" "Wenn Sie die richtigen Pakete von Reiner SCT fuer Ihr jeweiliges " "System installieren, wird diese Gruppe automatisch erzeugt.\n" "Es wird empfohlen, nur die Pakete von Reiner SCT zu installieren, " "auch wenn von Ihrem Distributor andere Pakete angeboten werden.\n" "Nur mit unseren Paketen ist es uns moeglich, Ihnen im Falle von " "Problemen schnell zu helfen.\n" "Sollten fuer Ihr System keine Pakete verfuegbar sein, muessen " "Sie die Gruppe \"cyberjack\" mit Hilfe Ihrer Systemadministrations-" "Tools (z.B. yast, KUser etc) selbst erstellen.\n"; xmlString+="\n"; xmlString+=" "; xmlString+="Gruppe cyberjack existiert nicht"; xmlString+=" \n"; xmlString+="\n"; endgrent(); return false; } /* get name of calling user */ uid=getuid(); if (uid==0) { reportString+="Benutzer ist Administrator (root), hat daher alle noetigen Rechte.\n"; hintString+= "Sie haben dieses Programm als Administrator (root) aufgerufen. " "Dadurch ist keine Aussage darueber moeglich, ob Sie als " "normaler Benutzer alle noetigen Rechte haetten, weil der Administrator " "immer alle Rechte hat. Sie sollten dieses Programm als der Benutzer " "ausfuehren, der spaeter auch mit dem Leser arbeiten soll.\n\n"; /* create XML string */ xmlString+="\n"; xmlString+=" "; xmlString+="Called as user \"root\""; xmlString+="\n"; xmlString+="\n"; } else { pw=getpwuid(uid); if (pw==NULL) { const char *s; s=strerror(errno); reportString+="*FEHLER* ("; reportString+=s; reportString+=")\n"; xmlString+="\n"; xmlString+=" "; xmlString+=s; xmlString+=" \n"; xmlString+="\n"; return false; } /* check whether the user is a member of the group "cyberjack" */ ps=gr->gr_mem; while(*ps) { if (strcmp(*ps, pw->pw_name)==0) break; ps++; } if (*ps==NULL) { /* group does not exist */ reportString+="*HINWEIS* Benutzer \""; reportString+=pw->pw_name; reportString+="\" ist kein Mitglied der Gruppe \"cyberjack\"\n"; hintString+="Fuegen Sie den Benutzer \""; hintString+=pw->pw_name; hintString+="\" der Gruppe \"cyberjack\" hinzu und starten Sie Ihr "; hintString+="System neu.\n"; xmlString+="\n"; xmlString+=" "; xmlString+="Benutzer \""; xmlString+=pw->pw_name; xmlString+="\" ist kein Mitglied der Gruppe \"cyberjack\"\n"; xmlString+=" \n"; xmlString+="\n"; endgrent(); return false; } /* create XML string */ xmlString+="\n"; xmlString+=" \n"; xmlString+=" Benutzer \""; xmlString+=pw->pw_name; xmlString+="\" ist Mitglied der Gruppe \"cyberjack\"\n"; xmlString+=" \n"; xmlString+="\n"; endgrent(); } return true; } pcsc-cyberjack-3.99.5final.sp05/libcyberjack/checksuite/cm_group.h000066400000000000000000000015021231776762100250550ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #include "checkmodule.h" class CM_Group: public CheckModule { public: CM_Group() {}; ~CM_Group() {}; std::string getTitle() { return "ermittle Gruppeninformation";}; bool check(std::string &xmlString, std::string &reportString, std::string &hintString); }; pcsc-cyberjack-3.99.5final.sp05/libcyberjack/checksuite/cm_reader.cpp000066400000000000000000000320471231776762100255260ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "cm_reader.h" #include "checksuite.h" #include "driver_pcsc.hpp" #include "cyberjack_l.h" #include #include #include #include #include #include #include #define CYBERJACK_VENDOR_ID 0xc4b bool CM_Reader::_checkReaders(Cyberjack::Driver *dr, std::string &xmlString, std::string &reportString, std::string &hintString) { int rv; std::list::const_iterator it; char numbuf[256]; rv=dr->open(); if (rv<0) { if (rv==Cyberjack::ErrorCode_NoService) { xmlString+=" \n"; xmlString+= "Service is not available\n"; xmlString+=" \n"; reportString+="Dienst ist nicht verfuegbar.\n"; return true; } fprintf(stderr, "Error in open: %d\n", rv); return false; } rv=dr->enumReaders(); if (rv<0) { fprintf(stderr, "Error in enumReaders: %d\n", rv); dr->close(); return false; } xmlString+=" \n"; for (it=dr->getReaders().begin(); it!=dr->getReaders().end(); it++) { int rv; std::string ts; reportString+="Leser "; reportString+=(*it)->getName(); reportString+=" (vendorid=\""; snprintf(numbuf, sizeof(numbuf)-1, "%04x", (*it)->getVendorId()); reportString+=numbuf; reportString+="\", productid=\""; snprintf(numbuf, sizeof(numbuf)-1, "%04x", (*it)->getProductId()); reportString+=numbuf; reportString+="\")\n"; xmlString+=" getName(); xmlString+="\" vendorid=\""; snprintf(numbuf, sizeof(numbuf)-1, "%04x", (*it)->getVendorId()); xmlString+=numbuf; xmlString+="\" productid=\""; snprintf(numbuf, sizeof(numbuf)-1, "%04x", (*it)->getProductId()); xmlString+=numbuf; xmlString+="\">\n"; if ((*it)->test(ts)!=Cyberjack::ErrorCode_Ok) xmlString+=" \n"; else xmlString+=" \n"; reportString+="Ergebnis des Lesertests:\n"; reportString+=ts; xmlString+=ts; xmlString+=" \n"; rv=(*it)->gatherInfo(true); if (rv!=Cyberjack::ErrorCode_Ok) { //fprintf(stderr, "Error gathering info: %d\n", rv); dr->close(); return false; } if (1) { const cj_ReaderInfo &ri=(*it)->getReaderInfo(); xmlString+=" \n"; if (ri.ContentsMask & RSCT_READER_MASK_PID) { snprintf(numbuf, sizeof(numbuf)-1, "%04x", ri.PID); reportString+=" PID : "; reportString+=numbuf; reportString+="\n"; xmlString+=" "; xmlString+=numbuf; xmlString+=""; xmlString+="\n"; } if (ri.ContentsMask & RSCT_READER_MASK_HARDWARE) { snprintf(numbuf, sizeof(numbuf)-1, "%08x", ri.HardwareMask); reportString+=" HW-Mask : "; reportString+=numbuf; reportString+=" ("; xmlString+=" "; xmlString+=numbuf; xmlString+=""; xmlString+="\n"; xmlString+=" "; if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC1) { reportString+=" ICC1"; xmlString+=" ICC1"; } if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC2) { reportString+=" ICC2"; xmlString+=" ICC2"; } if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC3) { reportString+=" ICC3"; xmlString+=" ICC3"; } if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC4) { reportString+=" ICC4"; xmlString+=" ICC4"; } if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC5) { reportString+=" ICC5"; xmlString+=" ICC5"; } if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC6) { reportString+=" ICC6"; xmlString+=" ICC6"; } if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC7) { reportString+=" ICC7"; xmlString+=" ICC7"; } if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC8) { reportString+=" ICC8"; xmlString+=" ICC8"; } if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_KEYPAD) { reportString+=" keypad"; xmlString+=" keypad"; } if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_DISPLAY) { reportString+=" display"; xmlString+=" display"; } if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_BIOMETRIC) { reportString+=" Fingersensor"; xmlString+=" Fingersensor"; } if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_UPDATEABLE) { reportString+=" Firmwareupdate"; xmlString+=" Firmwareupdate"; } if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_MODULES) { reportString+=" Sicherheitsmodule"; xmlString+=" Sicherheitsmodule"; } reportString+=")\n"; xmlString+="\n"; } if (ri.ContentsMask & RSCT_READER_MASK_VERSION) { snprintf(numbuf, sizeof(numbuf)-1, "%x", ri.Version); reportString+=" Version : "; reportString+=numbuf; reportString+="\n"; xmlString+=" "; xmlString+=numbuf; xmlString+=""; xmlString+="\n"; } if (ri.ContentsMask & RSCT_READER_MASK_HARDWARE_VERSION) { snprintf(numbuf, sizeof(numbuf)-1, "%x", ri.HardwareVersion); reportString+=" HW-Version : "; reportString+=numbuf; reportString+="\n"; xmlString+=" "; xmlString+=numbuf; xmlString+=""; xmlString+="\n"; } if (ri.ContentsMask & RSCT_READER_MASK_FLASH_SIZE) { snprintf(numbuf, sizeof(numbuf)-1, "%d", ri.FlashSize); reportString+=" Flashsize : "; reportString+=numbuf; reportString+="\n"; xmlString+=" "; xmlString+=numbuf; xmlString+=""; xmlString+="\n"; } if (ri.ContentsMask & RSCT_READER_MASK_HEAP_SIZE) { snprintf(numbuf, sizeof(numbuf)-1, "%d", ri.HeapSize); reportString+=" Heapsize : "; reportString+=numbuf; reportString+="\n"; xmlString+=" "; xmlString+=numbuf; xmlString+=""; xmlString+="\n"; } if (ri.ContentsMask & RSCT_READER_MASK_SERIALNUMBER) { reportString+=" Serialnum : "; reportString+=(const char*)(ri.SeriaNumber); reportString+="\n"; xmlString+=" "; xmlString+=(const char*)(ri.SeriaNumber); xmlString+=""; xmlString+="\n"; } if (ri.ContentsMask & RSCT_READER_MASK_VENDOR_STRING) { reportString+=" Vendor : "; reportString+=(const char*)(ri.VendorString); reportString+="\n"; xmlString+=" "; xmlString+=(const char*)(ri.VendorString); xmlString+=""; xmlString+="\n"; } if (ri.ContentsMask & RSCT_READER_MASK_PRODUCT_STRING) { reportString+=" Product : "; reportString+=(const char*)(ri.ProductString); reportString+="\n"; xmlString+=" "; xmlString+=(const char*)(ri.ProductString); xmlString+=""; xmlString+="\n"; } if (ri.ContentsMask & RSCT_READER_MASK_PRODUCTION_DATE) { snprintf(numbuf, sizeof(numbuf)-1, "%s %s", ri.ProductionDate, ri.ProductionTime); reportString+=" P-Date : "; reportString+=numbuf; reportString+="\n"; xmlString+=" "; xmlString+=numbuf; xmlString+=""; xmlString+="\n"; } if (ri.ContentsMask & RSCT_READER_MASK_TEST_DATE) { snprintf(numbuf, sizeof(numbuf)-1, "%s %s", ri.TestDate, ri.TestTime); reportString+=" T-Date : "; reportString+=numbuf; reportString+="\n"; xmlString+=" "; xmlString+=numbuf; xmlString+=""; xmlString+="\n"; } if (ri.ContentsMask & RSCT_READER_MASK_COMMISSIONING_DATE) { snprintf(numbuf, sizeof(numbuf)-1, "%s %s", ri.CommissioningDate, ri.CommissioningTime); reportString+=" C-Date : "; reportString+=numbuf; reportString+="\n"; xmlString+=" "; xmlString+=numbuf; xmlString+=""; xmlString+="\n"; } if (ri.ContentsMask & RSCT_READER_MASK_COM_TYPE) { reportString+=" COM-Type : "; reportString+=(const char*)(ri.CommunicationString); reportString+="\n"; xmlString+=" "; xmlString+=(const char*)(ri.CommunicationString); xmlString+=""; xmlString+="\n"; } if (ri.ContentsMask & RSCT_READER_MASK_PORT_ID) { snprintf(numbuf, sizeof(numbuf)-1, "%d", ri.PortID); reportString+=" PortID : "; reportString+=numbuf; reportString+="\n"; xmlString+=" "; xmlString+=numbuf; xmlString+=""; xmlString+="\n"; } if (ri.ContentsMask & RSCT_READER_MASK_IFD_BRIDGE) { reportString+=" IFD-Bridge : "; reportString+=(const char*)(ri.IFDNameOfIfdBridgeDevice); reportString+="\n"; xmlString+=" "; xmlString+=(const char*)(ri.IFDNameOfIfdBridgeDevice); xmlString+=""; xmlString+="\n"; } if (ri.ContentsMask & RSCT_READER_MASK_HW_STRING) { reportString+=" HW-String : "; reportString+=(const char*)(ri.HardwareString); reportString+="\n"; xmlString+=" "; xmlString+=(const char*)(ri.HardwareString); xmlString+=""; xmlString+="\n"; } xmlString+=" \n"; } /* if newer reader */ if ((*it)->getProductId()>=0x400) { const std::list &modules=(*it)->getModuleInfos(); std::list::const_iterator mit; int i; xmlString+=" \n"; for (mit=modules.begin(), i=0; mit!=modules.end(); mit++, i++) { const cj_ModuleInfo &mi=*mit; reportString+="Module "; snprintf(numbuf, sizeof(numbuf)-1, "%d ", i); reportString+=numbuf; reportString+=":\n"; xmlString+=" \n"; if (mi.ContentsMask & RSCT_MODULE_MASK_DESCRIPTION) { reportString+=" Description: "; reportString+=(const char*)(mi.Description); reportString+="\n"; xmlString+=" "; xmlString+=(const char*)(mi.Description); xmlString+=""; xmlString+="\n"; } if (mi.ContentsMask & RSCT_MODULE_MASK_ID) { snprintf(numbuf, sizeof(numbuf)-1, "%08x", mi.ID); reportString+=" Id : "; reportString+=numbuf; reportString+="\n"; xmlString+=" "; xmlString+=numbuf; xmlString+=""; xmlString+="\n"; } if (mi.ContentsMask & RSCT_MODULE_MASK_VERSION) { snprintf(numbuf, sizeof(numbuf)-1, "%x", mi.Version); reportString+=" Version : "; reportString+=numbuf; reportString+="\n"; xmlString+=" "; xmlString+=numbuf; xmlString+=""; xmlString+="\n"; } if (mi.ContentsMask & RSCT_MODULE_MASK_REVISION) { snprintf(numbuf, sizeof(numbuf)-1, "%d", mi.Revision); reportString+=" Revision : "; reportString+=numbuf; reportString+="\n"; xmlString+=" "; xmlString+=numbuf; xmlString+=""; xmlString+="\n"; } if (mi.ContentsMask & RSCT_MODULE_MASK_VARIANT) { snprintf(numbuf, sizeof(numbuf)-1, "%d", mi.Variant); reportString+=" Variant : "; reportString+=numbuf; reportString+="\n"; xmlString+=" "; xmlString+=numbuf; xmlString+=""; xmlString+="\n"; } if (mi.ContentsMask & RSCT_MODULE_MASK_DATE) { snprintf(numbuf, sizeof(numbuf)-1, "%12s %6s", mi.Date, mi.Time); reportString+=" Date : "; reportString+=numbuf; reportString+="\n"; xmlString+=" "; xmlString+=numbuf; xmlString+=""; xmlString+="\n"; } xmlString+=" \n"; } xmlString+=" \n"; } /* if newer reader */ xmlString+=" "; } /* for every reader */ xmlString+=" \n"; dr->close(); return true; } bool CM_Reader::_checkPcsc(std::string &xmlString, std::string &reportString, std::string &hintString) { #ifdef HAVE_PCSC Cyberjack::Driver *dr=Cyberjack::NewDriverPcsc(); bool b; reportString+="PC/SC Interface\n"; xmlString+="\n"; b=_checkReaders(dr, xmlString, reportString, hintString); if (!b) reportString+=" PC/SC-Interface nicht verfuegbar.\n"; xmlString+="\n"; delete dr; return b; #else reportString+="PC/SC Interface\n"; reportString+=" PC/SC-Interface nicht getestet (keine Unterstuetzung eincompiliert).\n"; xmlString+="\n"; xmlString+=" \n"; xmlString+=" \n"; xmlString+="\n"; return true; #endif } bool CM_Reader::check(std::string &xmlString, std::string &reportString, std::string &hintString) { return _checkPcsc(xmlString, reportString, hintString); } pcsc-cyberjack-3.99.5final.sp05/libcyberjack/checksuite/cm_reader.h000066400000000000000000000021731231776762100251700ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #include "checkmodule.h" #include "driver.hpp" #include class CM_Reader: public CheckModule { public: CM_Reader() {}; ~CM_Reader() {}; std::string getTitle() { return "ermittle und teste angeschlossene Leser";}; bool check(std::string &xmlString, std::string &reportString, std::string &hintString); protected: bool _checkReaders(Cyberjack::Driver *dr, std::string &xmlString, std::string &reportString, std::string &hintString); bool _checkPcsc(std::string &xmlString, std::string &reportString, std::string &hintString); }; pcsc-cyberjack-3.99.5final.sp05/libcyberjack/checksuite/cm_services.cpp000066400000000000000000000127571231776762100261150ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #include "cm_services.h" #include "checksuite.h" #include #include #include #include #include #include #include #include bool CM_Services::check(std::string &xmlString, std::string &reportString, std::string &hintString) { DIR *d; struct dirent *de=NULL; assert(_suite); d=opendir("/proc"); if (d==NULL) { const char *s; s=strerror(errno); reportString+="*FEHLER* ("; reportString+=s; reportString+=")\n"; xmlString+="\n"; xmlString+=" "; xmlString+=s; xmlString+=" \n"; xmlString+="\n"; return false; } xmlString+="\n"; xmlString+=" \n"; while( (de=readdir(d)) ) { struct stat st; const char *s; s=de->d_name; while(*s && isdigit(*s)) s++; if (*s==0) { std::string fullName; /* all digits, so it is most likely a process dir */ fullName="/proc/"; fullName+=de->d_name; if (stat(fullName.c_str(), &st)==0) { if (S_ISDIR(st.st_mode)) { char lbuf[256]; struct passwd *pw; const char *ownerName=NULL; FILE *f; /* get PW entry for owner of the process */ pw=getpwuid(st.st_uid); if (pw && pw->pw_name[0]) ownerName=pw->pw_name; else ownerName="(unknown)"; /* it is a folder, so it definately *is* a process dir */ fullName+="/cmdline"; /* the folder contains a symbolic link \"exe\" which points to * the running executable. We read this link to get its name * and check it against known executables for problematic * services. */ f=fopen(fullName.c_str(), "r"); if (f) { if (1==fscanf(f, "%255s", lbuf)) { lbuf[sizeof(lbuf)-1]=0; if (strstr(lbuf, "pcscd")) { if (!(_suite->getFlags() & CHECKSUITE_FLAGS_HAVE_PCSCD)){ reportString+="PC/SC Dienst gefunden.\n"; xmlString+=" "; xmlString+="pcscd\n"; _suite->addFlags(CHECKSUITE_FLAGS_HAVE_PCSCD); } } else if (strstr(lbuf, "chipcardd2")) { if (!(_suite->getFlags() & CHECKSUITE_FLAGS_HAVE_LCC2)){ reportString+="Libchipcard2 Dienst gefunden.\n"; xmlString+=" "; xmlString+="chipcardd2\n"; _suite->addFlags(CHECKSUITE_FLAGS_HAVE_LCC2); } } else if (strstr(lbuf, "chipcardd3")) { if (!(_suite->getFlags() & CHECKSUITE_FLAGS_HAVE_LCC3)){ reportString+="Libchipcard3 Dienst gefunden.\n"; xmlString+=" "; xmlString+="chipcardd3\n"; _suite->addFlags(CHECKSUITE_FLAGS_HAVE_LCC3); } } else if (strstr(lbuf, "chipcardd4")) { if (!(_suite->getFlags() & CHECKSUITE_FLAGS_HAVE_LCC4)){ reportString+="Libchipcard4 Dienst gefunden.\n"; xmlString+=" "; xmlString+="chipcardd4\n"; _suite->addFlags(CHECKSUITE_FLAGS_HAVE_LCC4); } } else if (strstr(lbuf, "chipcardd")) { if (!(_suite->getFlags() & CHECKSUITE_FLAGS_HAVE_LCC1)){ xmlString+=" "; xmlString+="chipcardd\n"; reportString+="Libchipcard1 Dienst gefunden.\n"; hintString+= "Auf diesem System laeuft der Libchipcard1 Dienst. " "Manche Programme (insbesondere Moneyplex) koennen in " "diesem Fall nicht auf den Leser zugreifen.\n" "Abhilfe: Deinstallieren Sie Libchipcard1 oder beenden " "Sie den Dienst (mittels \"killall chipcardd\") solange " "Moneyplex laeuft.\n" "Fuer Libchipcard1 gibt es auch KDE-Tools, welche " "ebenfalls zweitweise den Dienst stoppen koennen.\n\n"; _suite->addFlags(CHECKSUITE_FLAGS_HAVE_LCC1); } } else if (strstr(lbuf, "ifdhandler")) { if (!(_suite->getFlags() & CHECKSUITE_FLAGS_HAVE_OPENCT)){ reportString+="OpenCT Dienst gefunden.\n"; xmlString+=" "; xmlString+="openct\n"; hintString+= "Auf diesem System laeuft der OpenCT Dienst. " "Manche Programme (insbesondere Moneyplex) koennen in " "diesem Fall je nach Leser und Version von OpenCT nicht " "auf den Leser zugreifen.\n" "Abhilfe: Entweder deinstallieren Sie den OpenCT Dienst " "komplett (das Paket heisst je nach System \"openct\" " "oder \"libopenct\"), oder Sie stoppen OpenCT mittels " "\"/etc/init.d/openct stop\" als root solange das " "Programm verwendet wird.\n\n"; _suite->addFlags(CHECKSUITE_FLAGS_HAVE_OPENCT); } } } fclose(f); } } } } } xmlString+="\n"; closedir(d); return true; } pcsc-cyberjack-3.99.5final.sp05/libcyberjack/checksuite/cm_services.h000066400000000000000000000015111231776762100255440ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #include "checkmodule.h" class CM_Services: public CheckModule { public: CM_Services() {}; ~CM_Services() {}; std::string getTitle() { return "ermittle laufende Dienste";}; bool check(std::string &xmlString, std::string &reportString, std::string &hintString); }; pcsc-cyberjack-3.99.5final.sp05/libcyberjack/checksuite/cm_uname.cpp000066400000000000000000000056201231776762100253660ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #include "cm_uname.h" #include #include #include bool CM_Uname::check(std::string &xmlString, std::string &reportString, std::string &hintString) { struct utsname un; if (uname(&un)) { const char *s; s=strerror(errno); reportString+="*FEHLER* ("; reportString+=s; reportString+=")\n"; xmlString+="\n"; xmlString+=" "; xmlString+=s; xmlString+=" \n"; xmlString+="\n"; return false; } if (strncmp(un.release, "2.4.", 4)==0 || strncmp(un.release, "2.3.", 4)==0 || strncmp(un.release, "2.2.", 4)==0 || strncmp(un.release, "2.1.", 4)==0 || strncmp(un.release, "2.0.", 4)==0) { hintString+= "Dieser Treiber wurde fuer einen 2.6er Kernel entwickelt, " "es wurde aber ein aelterer Kernel gefunden.\n" "Daher duerfte der Treiber wahrscheinlich auf diesem System " "nicht funktionieren.\n"; /* create XML string */ xmlString+="\n"; xmlString+=" Kernel too old\n"; xmlString+=" "; xmlString+=un.sysname; xmlString+="\n"; xmlString+=" "; xmlString+=un.release; xmlString+="\n"; xmlString+=" "; xmlString+=un.version; xmlString+="\n"; xmlString+=" "; xmlString+=un.machine; xmlString+="\n"; xmlString+="\n"; return false; } else { /* create XML string */ xmlString+="\n"; xmlString+=" \n"; xmlString+=" "; xmlString+=un.sysname; xmlString+="\n"; xmlString+=" "; xmlString+=un.release; xmlString+="\n"; xmlString+=" "; xmlString+=un.version; xmlString+="\n"; xmlString+=" "; xmlString+=un.machine; xmlString+="\n"; xmlString+="\n"; /* create report string */ reportString+="System: "; reportString+=un.sysname; reportString+=", "; reportString+=un.release; reportString+=", "; reportString+=un.version; reportString+=", "; reportString+=un.machine; reportString+="\n"; return true; } } pcsc-cyberjack-3.99.5final.sp05/libcyberjack/checksuite/cm_uname.h000066400000000000000000000015031231776762100250270ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #include "checkmodule.h" class CM_Uname: public CheckModule { public: CM_Uname() {}; ~CM_Uname() {}; std::string getTitle() { return "ermittle Systeminformationen";}; bool check(std::string &xmlString, std::string &reportString, std::string &hintString); }; pcsc-cyberjack-3.99.5final.sp05/libcyberjack/driver.cpp000066400000000000000000000261311231776762100227460ustar00rootroot00000000000000/*************************************************************************** begin : Tue Mar 24 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "driver.hpp" #include "cyberjack_l.h" #include #include #include namespace Cyberjack { Reader::Reader(Driver *driver, const std::string &name, const std::string &productString, const std::string &serial, int busType, uint32_t vendorId, uint32_t productId) :m_driver(driver) ,m_name(name) ,m_productString(productString) ,m_serial(serial) ,m_busType(busType) ,m_vendorId(vendorId) ,m_productId(productId) ,m_updateCounter(0) { /* clear reader info */ memset(&m_readerInfo, 0, sizeof(m_readerInfo)); m_readerInfo.SizeOfStruct=sizeof(m_readerInfo); } Reader::~Reader() { } int Reader::connect(int object) { return ErrorCode_NotSupported; } int Reader::disconnect() { return ErrorCode_NotSupported; } int Reader::connectedObject() { return ErrorCode_NotSupported; } int Reader::sendApdu(uint8_t *dad, uint8_t *sad, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response) { return ErrorCode_NotSupported; } int Reader::_getNumberOfModules() { unsigned char dad, sad, rsp[512]; unsigned short lr; unsigned char apdu[256]; unsigned int alen; char ret; /* get module count */ dad=CT_API_AD_DRIVER; sad=CT_API_AD_HOST; alen=0; apdu[alen++]=CJ_SPECIAL_CLA; apdu[alen++]=CJ_SPECIAL_INS_GETMODCOUNT; apdu[alen++]=0x00; apdu[alen++]=0x00; lr=sizeof(rsp); ret=sendApdu(&dad, &sad, alen, apdu, &lr, rsp ); if(ret!=CT_API_RV_OK) return -1; if (rsp[lr-2]!=0x90) { return -1; } return (int)rsp[0]; } int Reader::_getModuleInfo(int idx, cj_ModuleInfo *modInfo) { unsigned char dad, sad, rsp[512]; unsigned short lr; unsigned char apdu[256]; unsigned int alen; char ret; unsigned int l; /* get module count */ dad=CT_API_AD_DRIVER; sad=CT_API_AD_HOST; alen=0; apdu[alen++]=CJ_SPECIAL_CLA; apdu[alen++]=CJ_SPECIAL_INS_GETMODINFO; apdu[alen++]=(uint8_t)idx; apdu[alen++]=0x00; lr=sizeof(rsp); ret=sendApdu(&dad, &sad, alen, apdu, &lr, rsp ); if(ret!=CT_API_RV_OK) return -1; if (rsp[lr-2]!=0x90) { return -1; } if (lr<3) { fprintf(stderr, "Too few bytes returned (%d)\n", lr); return -1; } lr-=2; l=sizeof(cj_ModuleInfo); if (l>lr) l=lr; memmove(modInfo, rsp, l); return ErrorCode_Ok; } int Reader::_getReaderInfo(cj_ReaderInfo *readerInfo) { unsigned char dad, sad, rsp[1024]; unsigned short lr; unsigned char apdu[256]; unsigned int alen; char ret; unsigned int l; /* get module count */ dad=CT_API_AD_DRIVER; sad=CT_API_AD_HOST; alen=0; apdu[alen++]=CJ_SPECIAL_CLA; apdu[alen++]=CJ_SPECIAL_INS_GETREADERINFO; apdu[alen++]=0x00; apdu[alen++]=0x00; lr=sizeof(rsp); ret=sendApdu(&dad, &sad, alen, apdu, &lr, rsp ); if(ret!=CT_API_RV_OK) return -1; if (rsp[lr-2]!=0x90) { return -1; } if (lr<3) { fprintf(stderr, "Too few bytes returned (%d)\n", lr); return -1; } lr-=2; l=sizeof(cj_ReaderInfo); if (l>lr) l=lr; memmove(readerInfo, rsp, l); return ErrorCode_Ok; } int Reader::gatherInfo(bool doConnect) { int rv; /* reset */ m_moduleInfos.clear(); memset(&m_readerInfo, 0, sizeof(m_readerInfo)); m_readerInfo.SizeOfStruct=sizeof(m_readerInfo); if (doConnect) { rv=connect(Object_Reader); if (rv!=ErrorCode_Ok) { //fprintf(stderr, "Error connecting reader: %d\n", rv); return rv; } } /* get reader info */ rv=_getReaderInfo(&m_readerInfo); if (rv<0) { //fprintf(stderr, "Error getting reader info: %d\n", rv); if (doConnect) disconnect(); return rv; } if (getProductId()>=0x400) { int n; int i; /* get number of modules */ rv=_getNumberOfModules(); if (rv<0) { //fprintf(stderr, "Error getting module count: %d\n", rv); if (doConnect) disconnect(); return rv; } n=rv; /* read module infos */ for (i=0; iSizeOfStruct=sizeof(cj_ModuleInfo); rv=_getModuleInfo(i, mi); if (rv!=ErrorCode_Ok) { m_moduleInfos.pop_back(); //fprintf(stderr, "Error getting module info: %d\n", rv); if (doConnect) disconnect(); return rv; } } } if (doConnect) { rv=disconnect(); if (rv!=ErrorCode_Ok) { //fprintf(stderr, "Error disconnecting reader: %d\n", rv); return rv; } } return ErrorCode_Ok; } int Reader::test(std::string &result) { result+="Test ist nicht implementiert\n"; return ErrorCode_Ok; } int Reader::_sendData(uint8_t ins, const uint8_t *pdata, uint32_t ldata) { unsigned char dad, sad, rsp[512]; unsigned short lr; unsigned char apdu[256]; unsigned int alen; char ret; int first=1; /* send module */ while(ldata) { uint32_t l; l=ldata; if (l>240) l=240; dad=CT_API_AD_DRIVER; sad=CT_API_AD_HOST; alen=0; apdu[alen++]=CJ_SPECIAL_CLA; apdu[alen++]=ins; if (first) apdu[alen++]=0x20; /* first data block */ else apdu[alen++]=0x00; apdu[alen++]=0x00; apdu[alen++]=l & 0xff; memmove(apdu+alen, pdata, l); alen+=l; lr=sizeof(rsp); ret=sendApdu(&dad, &sad, alen, apdu, &lr, rsp ); if(ret!=CT_API_RV_OK) return -1; if (rsp[lr-2]!=0x90) return ErrorCode_Generic; ldata-=l; pdata+=l; first=0; } /* while ldata */ return ErrorCode_Ok; } int Reader::sendModuleToFlash(const uint8_t *pdata, uint32_t ldata) { return _sendData(CJ_SPECIAL_INS_UPLOADMOD, pdata, ldata); } int Reader::sendSignatureToFlash(const uint8_t *pdata, uint32_t ldata) { return _sendData(CJ_SPECIAL_INS_UPLOADSIG, pdata, ldata); } int Reader::flash() { unsigned char dad, sad, rsp[512]; unsigned short lr; unsigned char apdu[256]; unsigned int alen; char ret; /* get module count */ dad=CT_API_AD_DRIVER; sad=CT_API_AD_HOST; alen=0; apdu[alen++]=CJ_SPECIAL_CLA; apdu[alen++]=CJ_SPECIAL_INS_UPLOADFLASH; apdu[alen++]=0x00; apdu[alen++]=0x00; lr=sizeof(rsp); ret=sendApdu(&dad, &sad, alen, apdu, &lr, rsp ); if(ret!=CT_API_RV_OK) return ErrorCode_IO; if (rsp[lr-2]!=0x90) { return ErrorCode_Generic; } return ErrorCode_Ok; } int Reader::deleteAllModules(bool doConnect) { unsigned char dad, sad, rsp[512]; unsigned short lr; unsigned char apdu[256]; unsigned int alen; char ret; int rv; if (doConnect) { rv=connect(Object_Reader); if (rv!=ErrorCode_Ok) { //fprintf(stderr, "Error connecting reader: %d\n", rv); return rv; } } /* get module count */ dad=CT_API_AD_DRIVER; sad=CT_API_AD_HOST; alen=0; apdu[alen++]=CJ_SPECIAL_CLA; apdu[alen++]=CJ_SPECIAL_INS_DELETEALLMODS; apdu[alen++]=0x00; apdu[alen++]=0x00; lr=sizeof(rsp); ret=sendApdu(&dad, &sad, alen, apdu, &lr, rsp ); if(ret!=CT_API_RV_OK) { if (doConnect) disconnect(); return ErrorCode_IO; } if (rsp[lr-2]!=0x90) { if (doConnect) disconnect(); return ErrorCode_Generic; } /* reload module info */ rv=gatherInfo(false); if (rv!=ErrorCode_Ok) { if (doConnect) disconnect(); return rv; } if (doConnect) { rv=disconnect(); if (rv!=ErrorCode_Ok) { //fprintf(stderr, "Error disconnecting reader: %d\n", rv); return rv; } } return ErrorCode_Ok; } int Reader::updateKeys(const uint8_t *pdata, uint32_t ldata) { unsigned char dad, sad, rsp[512]; unsigned short lr; unsigned char apdu[256]; unsigned int alen; char ret; int first=1; /* send module */ while(ldata) { uint32_t l; uint8_t p1=0; if (first) p1|=0x20; /* first data block */ l=ldata; if (l>240) l=240; if ((ldata-l)<1) p1|=0x80; /* last data block */ dad=CT_API_AD_DRIVER; sad=CT_API_AD_HOST; alen=0; apdu[alen++]=CJ_SPECIAL_CLA; apdu[alen++]=CJ_SPECIAL_INS_KEYUPDATE; apdu[alen++]=p1; apdu[alen++]=0x00; apdu[alen++]=l & 0xff; memmove(apdu+alen, pdata, l); alen+=l; lr=sizeof(rsp); ret=sendApdu(&dad, &sad, alen, apdu, &lr, rsp ); if(ret!=CT_API_RV_OK) return -1; if (rsp[lr-2]!=0x90) return ErrorCode_Generic; ldata-=l; pdata+=l; first=0; } /* while ldata */ return ErrorCode_Ok; } Driver::Driver() :m_updateCounter(0) { } Driver::~Driver() { clearReaderList(); } int Driver::open() { return ErrorCode_NotSupported; } int Driver::enumReaders() { return ErrorCode_NotSupported; } int Driver::close() { return ErrorCode_NotSupported; } void Driver::clearReaderList() { std::list::iterator it; for (it=m_readerList.begin(); it!=m_readerList.end(); it++) delete *it; m_readerList.clear(); } void Driver::removeOldReaders() { bool stop; stop=false; while(!stop) { std::list::iterator it; stop=true; for (it=m_readerList.begin(); it!=m_readerList.end(); it++) { if ((*it)->getUpdateCounter()>0 && (*it)->getUpdateCounter() #include #include #include "cyberjack_l.h" #include "cjeca32.h" namespace Cyberjack { class Driver; enum { ErrorCode_Ok=0, ErrorCode_Generic=-1, ErrorCode_Invalid=-2, ErrorCode_NoDevice=-3, ErrorCode_NotSupported=-4, ErrorCode_IO=-5, ErrorCode_NoService=-6 }; enum { Object_None=0, Object_Reader, Object_Card0, Object_Card1, Object_Card2, Object_Card3 }; enum { BusType_None=0, BusType_UsbRaw, BusType_UsbTty, BusType_Serial, BusType_Pcsc, }; class Reader { public: virtual ~Reader(); Driver *getDriver() const { return m_driver;}; /** @name Lowlevel Methods * */ /*@{*/ virtual int connect(int object); virtual int disconnect(); virtual int connectedObject(); virtual int sendApdu(uint8_t *dad, uint8_t *sad, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); virtual int test(std::string &result); /*@}*/ /** @name Reader Information * * Some of the methods described here need @ref gatherInfo() to be called * before. */ /*@{*/ const std::string &getName() const { return m_name;}; const std::string &getProductString() const { return m_productString;}; const std::string &getSerial() const { return m_serial;}; int getBusType() const { return m_busType;}; uint32_t getVendorId() const { return m_vendorId;}; uint32_t getProductId() const { return m_productId;}; /** * This information is only available after @ref gatherInfo has been called. */ const std::list &getModuleInfos() const { return m_moduleInfos;}; /** * This information is only available after @ref gatherInfo has been called. */ const cj_ReaderInfo &getReaderInfo() const { return m_readerInfo;}; /** * Every time @ref Driver::enumReaders() is called an internal update counter * in the driver is incremented. New readers enumerated by that method always get * the update counter value "0". Devices which have already been available in previous * @ref Driver::enumReaders() calls are assigned the driver's current update counter * value. So in order to determine whether a reader is new, old or away is to compare * the value returned here to that returned by @ref Driver::getUpdateCounter(): *
    *
  • reader's update counter is 0: device has just been enumerated
  • *
  • reader's update counter < driver's update counter: device is gone
  • *
  • reader's update counter == driver's update counter: device is still available
  • *
*/ uint32_t getUpdateCounter() const { return m_updateCounter;}; /** * This method should only be called by a Driver implementation. */ void setUpdateCounter(uint32_t i) { m_updateCounter=i;}; /*@}*/ /** @name Common Highlevel Methods * * Methods in this group send special APDU's to get extended information about * a reader or to modify its setup. */ /*@{*/ /** * Retrieves reader- and module information from the device and stores them * internally. */ int gatherInfo(bool doConnect); /** * Send the given module data to the driver. This is the first step when * flashing a module/kernel to the reader. * Usually the data comes from a file ending in ".bin". */ int sendModuleToFlash(const uint8_t *pdata, uint32_t ldata); /** * Send the given signature data to the driver. This is the second step when * flashing a module/kernel to the reader. * Usually the data comes from a file ending in ".sgn". */ int sendSignatureToFlash(const uint8_t *pdata, uint32_t ldata); /** * Flash the data previously send using @ref sendModuleToFlash and * @ref sendSignatureToFlash. */ int flash(); /** * Delete all currently installed modules from the reader. */ int deleteAllModules(bool doConnect); /** * Send new keys to the reader. Such keys are used to verify the integrity * of the kernel and other modules. */ int updateKeys(const uint8_t *pdata, uint32_t ldata); /*@}*/ void setVendorId(uint32_t id) { m_vendorId=id;}; void setProductId(uint32_t id) { m_productId=id;}; void setProductString(const std::string &s) { m_productString=s;}; void setSerialNumber(const std::string &s) { m_serial=s;}; protected: Reader(Driver *driver, const std::string &name, const std::string &productString, const std::string &serial, int busType, uint32_t vendorId, uint32_t productId); int _getReaderInfo(cj_ReaderInfo *readerInfo); int _getNumberOfModules(); int _getModuleInfo(int idx, cj_ModuleInfo *modInfo); int _sendData(uint8_t ins, const uint8_t *pdata, uint32_t ldata); Driver *m_driver; std::string m_name; std::string m_productString; std::string m_serial; int m_busType; uint32_t m_vendorId; uint32_t m_productId; uint32_t m_updateCounter; std::list m_moduleInfos; cj_ReaderInfo m_readerInfo; }; class Driver { public: virtual ~Driver(); virtual int open(); virtual int enumReaders(); virtual int close(); std::list &getReaders() { return m_readerList;}; uint32_t getUpdateCounter() const { return m_updateCounter;}; void removeOldReaders(); void clearReaderList(); protected: Driver(); void setUpdateCounter(uint32_t i) { m_updateCounter=i;}; uint32_t m_updateCounter; std::list m_readerList; }; } /* namespace */ #endif pcsc-cyberjack-3.99.5final.sp05/libcyberjack/driver_pcsc.cpp000066400000000000000000000262711231776762100237630ustar00rootroot00000000000000/*************************************************************************** begin : Thu Mar 26 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "driver_pcsc_p.hpp" #include "driver_pcsc.hpp" #include "cyberjack_l.h" #include "Debug.h" #include #include #include #include #include #include #include #include #define DEBUGP(ctn, format, args...) \ rsct_log(ctn, DEBUG_MASK_CTAPI, __FILE__, __LINE__, __FUNCTION__, format, ## args) #define DEBUGL(ctn, hdr, len, data) \ rsct_log_bytes(ctn, DEBUG_MASK_CTAPI, __FILE__, __LINE__, __FUNCTION__, hdr, len, data) namespace Cyberjack { class ReaderPcsc: public Reader { public: ReaderPcsc(Driver *driver, const std::string &name); virtual ~ReaderPcsc(); virtual int connect(int object); virtual int disconnect(); virtual int connectedObject(); virtual int sendApdu(uint8_t *dad, uint8_t *sad, uint16_t cmd_len, const uint8_t *cmd, uint16_t *response_len, uint8_t *response); virtual int test(std::string &result); public: int m_connectedObject; SCARDHANDLE m_card; DWORD m_verify_ctrl; DWORD m_modify_ctrl; DWORD m_universal_ctrl; }; class DriverPcsc: public Driver { public: DriverPcsc(); virtual ~DriverPcsc(); virtual int open(); virtual int enumReaders(); virtual int close(); SCARDCONTEXT m_context; }; ReaderPcsc::ReaderPcsc(Driver *driver, const std::string &name) : Reader(driver, name, "", "", BusType_Pcsc, 0, 0) , m_connectedObject(Object_None) { } ReaderPcsc::~ReaderPcsc() { } int ReaderPcsc::connect(int object) { std::string devName; DriverPcsc *d=dynamic_cast(m_driver); if (m_connectedObject==object) return ErrorCode_Ok; if (object!=Object_None) { LONG rv; DWORD length; DWORD i; DWORD dwActiveProtocol; unsigned char bRecvBuffer[300]; PCSC_TLV_STRUCTURE *tlv; /* connect reader */ dwActiveProtocol=-1; if (object==Object_Reader) rv=SCardConnect(d->m_context, m_name.c_str(), SCARD_SHARE_DIRECT, SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1, &m_card, &dwActiveProtocol); else rv=SCardConnect(d->m_context, m_name.c_str(), SCARD_SHARE_EXCLUSIVE, SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1, &m_card, &dwActiveProtocol); if (rv!=SCARD_S_SUCCESS) { fprintf(stderr, "SCardConnect: %s (%lX)\n", pcsc_stringify_error(rv), rv); return ErrorCode_IO; } /* get control codes */ m_verify_ctrl=0; m_modify_ctrl=0; m_universal_ctrl=0; rv=SCardControl(m_card, CM_IOCTL_GET_FEATURE_REQUEST, NULL, 0, bRecvBuffer, sizeof(bRecvBuffer), &length); if (rv!=SCARD_S_SUCCESS) { fprintf(stderr, "SCardControl: %s (%lX)\n", pcsc_stringify_error(rv), rv); SCardDisconnect(m_card, SCARD_UNPOWER_CARD); return ErrorCode_IO; } if (length % sizeof(PCSC_TLV_STRUCTURE)) { fprintf(stderr, "Inconsistent result! Bad TLV values!\n"); SCardDisconnect(m_card, SCARD_UNPOWER_CARD); return ErrorCode_IO; } length /= sizeof(PCSC_TLV_STRUCTURE); tlv = (PCSC_TLV_STRUCTURE*) bRecvBuffer; for (i=0; iSAD=*sad; usent->DAD=*dad; usent->BufferLength=cmd_len; memmove(&usent->buffer, cmd, cmd_len); rlength=(*response_len)-sizeof(MCTUniversal_t); urecvd=(MCTUniversal_t*)response; rv=SCardControl(m_card, m_universal_ctrl, wbuf, wlength, response, rlength, &rlength); free(wbuf); if (rv!=SCARD_S_SUCCESS) { fprintf(stderr, "SCardControl: %s (%lX)\n", pcsc_stringify_error(rv), rv); return ErrorCode_IO; } *sad=urecvd->SAD; *dad=urecvd->DAD; rlength=urecvd->BufferLength; memmove(response, &urecvd->buffer, rlength); *response_len=rlength; return ErrorCode_Ok; } else { fprintf(stderr, "Device not connected\n"); return ErrorCode_Invalid; } } int ReaderPcsc::test(std::string &result) { return ErrorCode_Ok; } DriverPcsc::DriverPcsc() : Driver() { } DriverPcsc::~DriverPcsc() { } int DriverPcsc::open() { LONG rv; SCARDCONTEXT hContext; rv=SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext); if (rv!=SCARD_S_SUCCESS){ if (rv==SCARD_E_NO_SERVICE) { //fprintf(stderr, "No SCard service (pcscd not running)\n"); return ErrorCode_NoService; } fprintf(stderr, "SCardEstablishContext: Cannot Connect to Resource Manager: %s (%lX)\n", pcsc_stringify_error(rv), rv); return ErrorCode_IO; } m_context=hContext; return ErrorCode_Ok; } int DriverPcsc::close() { LONG rv; rv=SCardReleaseContext(m_context); if (rv!=SCARD_S_SUCCESS) fprintf(stderr, "SCardReleaseContext: %s (0x%lX)\n", pcsc_stringify_error(rv), rv); return ErrorCode_Ok; } static ReaderPcsc *findReader(const char *name, std::list &rl) { std::list::iterator it; for (it=rl.begin(); it!=rl.end(); it++) { ReaderPcsc *r=dynamic_cast(*it); if (r) { if (strcasecmp(r->getName().c_str(), name)==0) return r; } } return NULL; } int DriverPcsc::enumReaders() { LONG rv; DWORD dwReaders; LPSTR mszReaders; char *ptr; std::list::iterator rit; /* set previous update counter for all devices which have a counter of 0. * this means all deviced added in the last round now get a real counter value */ for (rit=m_readerList.begin(); rit!=m_readerList.end(); rit++) { Reader *r=*rit; if (r->getUpdateCounter()==0) r->setUpdateCounter(m_updateCounter); } /* start next round */ m_updateCounter++; /* Retrieve the available readers list */ rv=SCardListReaders(m_context, NULL, NULL, &dwReaders); if (rv!=SCARD_S_SUCCESS) { fprintf(stderr, "SCardListReader: %s (%lX)\n", pcsc_stringify_error(rv), rv); return ErrorCode_IO; } mszReaders=(LPSTR) malloc(sizeof(char)*dwReaders); if (mszReaders==NULL){ fprintf(stderr, "malloc: not enough memory\n"); return ErrorCode_IO; } rv=SCardListReaders(m_context, NULL, mszReaders, &dwReaders); if (rv!=SCARD_S_SUCCESS) fprintf(stderr, "SCardListReader: %s (%lX)\n", pcsc_stringify_error(rv), rv); /* create readers */ ptr=mszReaders; while (*ptr != '\0'){ //fprintf(stderr, "Found device: %s\n", ptr); if (strncasecmp(ptr, "REINER SCT", 10)==0) { ReaderPcsc *r; r=findReader(ptr, m_readerList); if (r) { //fprintf(stderr, "Found reader\n"); r->setUpdateCounter(m_updateCounter); } else { int res; /* create new reader */ r=new ReaderPcsc(this, ptr); r->setVendorId(0x0c4b); res=r->gatherInfo(true); if (res!=ErrorCode_Ok) { //fprintf(stderr, "Unable to connect reader\n"); } else { const cj_ReaderInfo &ri=r->getReaderInfo(); if (ri.ContentsMask & RSCT_READER_MASK_PID) { r->setProductId(ri.PID); } if (ri.ContentsMask & RSCT_READER_MASK_SERIALNUMBER) { r->setSerialNumber(std::string((const char*)ri.SeriaNumber)); } if (ri.ContentsMask & RSCT_READER_MASK_PRODUCT_STRING) { r->setProductString(std::string((const char*)ri.ProductString)); } } r->setUpdateCounter(0); /* 0 means "just created" */ m_readerList.push_back(r); } } ptr+=strlen(ptr)+1; } return 0; } Driver *NewDriverPcsc() { return new DriverPcsc(); } } /* namespace */ pcsc-cyberjack-3.99.5final.sp05/libcyberjack/driver_pcsc.hpp000066400000000000000000000033511231776762100237620ustar00rootroot00000000000000/*************************************************************************** begin : Thu Mar 26 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef LIBCYBERJACK_DRIVER_PCSC_HPP #define LIBCYBERJACK_DRIVER_PCSC_HPP #include "driver.hpp" namespace Cyberjack { Driver *NewDriverPcsc(); } /* namespace */ #endif pcsc-cyberjack-3.99.5final.sp05/libcyberjack/driver_pcsc_p.hpp000066400000000000000000000041541231776762100243030ustar00rootroot00000000000000/*************************************************************************** begin : Thu Mar 26 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef LIBCYBERJACK_DRIVER_PCSC_P_HPP #define LIBCYBERJACK_DRIVER_PCSC_P_HPP #include #ifdef __cplusplus extern "C" { #endif #include /* Set structure elements aligment on bytes * http://gcc.gnu.org/onlinedocs/gcc/Structure_002dPacking-Pragmas.html */ #ifdef __APPLE__ #pragma pack(1) #else #pragma pack(push, 1) #endif typedef struct { uint8_t SAD; uint8_t DAD; uint16_t BufferLength; uint8_t buffer; } MCTUniversal_t; #ifdef __APPLE__ #pragma pack() #else #pragma pack(pop) #endif #ifdef __cplusplus } #endif #endif pcsc-cyberjack-3.99.5final.sp05/libcyberjack/libdialog/000077500000000000000000000000001231776762100226725ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/libcyberjack/libdialog/Makefile.am000066400000000000000000000013171231776762100247300ustar00rootroot00000000000000SUBDIRS=base INCLUDES=\ -I../../include/driver \ -I../../cjeca32 \ -I../../cjeca32/ausb \ -Ibase \ -I../../ppa $(pcsc_includes) AM_CFLAGS=$(visibility_cflags) @cyberjack_platform_def@ \ -DBUILDING_CYBERJACK \ -DCYBERJACK_CONFIG_FILE=\"@cyberjack_config_file@\" AM_CPPFLAGS=$(visibility_cflags) @cyberjack_platform_def@ \ -DBUILDING_CYBERJACK \ -DCYBERJACK_CONFIG_FILE=\"@cyberjack_config_file@\" noinst_LTLIBRARIES=libdialog_client.la libdialog_client_la_SOURCES=dialog.c libdialog_client_la_LIBADD=base/libdialog_base.la $(FOUNDATION_FRAMEWORK) $(SYSCONF_FRAMEWORK) noinst_HEADERS=\ dialog.h\ dialog_p.h noinst_PROGRAMS=libtest libtest_SOURCES=libtest.cpp libtest_LDADD=libdialog_client.la pcsc-cyberjack-3.99.5final.sp05/libcyberjack/libdialog/base/000077500000000000000000000000001231776762100236045ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/libcyberjack/libdialog/base/Makefile.am000066400000000000000000000010361231776762100256400ustar00rootroot00000000000000 INCLUDES=\ -I../../../include/driver \ -I../../../cjeca32 \ -I../../../cjeca32/ausb \ -I../../../ppa $(pcsc_includes) AM_CFLAGS=$(visibility_cflags) @cyberjack_platform_def@ \ -DBUILDING_CYBERJACK \ -DCYBERJACK_CONFIG_FILE=\"@cyberjack_config_file@\" AM_CPPFLAGS=$(visibility_cflags) @cyberjack_platform_def@ \ -DBUILDING_CYBERJACK \ -DCYBERJACK_CONFIG_FILE=\"@cyberjack_config_file@\" noinst_LTLIBRARIES=libdialog_base.la libdialog_base_la_SOURCES=\ message.c \ network.c noinst_HEADERS=\ message.h \ network.h pcsc-cyberjack-3.99.5final.sp05/libcyberjack/libdialog/base/message.c000066400000000000000000000036311231776762100253770ustar00rootroot00000000000000/*************************************************************************** begin : Wed Jun 16 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #include "Platform.h" #include "message.h" const char *RSCT_MessageTypeToString(int t) { switch(t) { case RSCT_Message_Command_OpenDialog: return "openDialog"; case RSCT_Message_Command_CloseDialog: return "closeDialog"; case RSCT_Message_Command_SetCharNum: return "setCharNum"; default: return "unknown"; } } pcsc-cyberjack-3.99.5final.sp05/libcyberjack/libdialog/base/message.h000066400000000000000000000066201231776762100254050ustar00rootroot00000000000000/*************************************************************************** begin : Wed Jun 16 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef RSCT_MESSAGE_H #define RSCT_MESSAGE_H #include #ifdef __cplusplus extern "C" { #endif #if defined (__APPLE__) | defined (sun) # pragma pack(1) #else # pragma pack(push, 1) #endif #define RSCT_MAX_MESSAGE_LEN (65*1024) #define RSCT_MAX_BUFFER_LEN 4096 enum RSCT_MESSAGE_COMMANDS { RSCT_Message_Command_OpenDialog, RSCT_Message_Command_CloseDialog, RSCT_Message_Command_SetStage, RSCT_Message_Command_SetCharNum }; struct RSCT_MESSAGE_OPENDIALOG { uint32_t dialogId; uint32_t stages; uint8_t cla; uint8_t ins; uint8_t keyTimeout; char title[128]; char textStage0[512]; char textStage1[512]; char textStage2[512]; int8_t result; }; typedef struct RSCT_MESSAGE_OPENDIALOG RSCT_MESSAGE_OPENDIALOG; struct RSCT_MESSAGE_CLOSEDIALOG { uint32_t dialogId; int8_t result; }; typedef struct RSCT_MESSAGE_CLOSEDIALOG RSCT_MESSAGE_CLOSEDIALOG; struct RSCT_MESSAGE_SETSTAGE { uint32_t dialogId; uint32_t stage; int8_t result; }; typedef struct RSCT_MESSAGE_SETSTAGE RSCT_MESSAGE_SETSTAGE; struct RSCT_MESSAGE_SETCHARNUM { uint32_t dialogId; uint32_t charNum; int8_t beep; int8_t result; }; typedef struct RSCT_MESSAGE_SETCHARNUM RSCT_MESSAGE_SETCHARNUM; struct RSCT_MESSAGE_HEADER { uint8_t type; uint32_t len; }; typedef struct RSCT_MESSAGE_HEADER RSCT_MESSAGE_HEADER; struct RSCT_MESSAGE { RSCT_MESSAGE_HEADER header; union { RSCT_MESSAGE_OPENDIALOG openDialog; RSCT_MESSAGE_CLOSEDIALOG closeDialog; RSCT_MESSAGE_SETSTAGE setStage; RSCT_MESSAGE_SETCHARNUM setCharNum; }; }; typedef struct RSCT_MESSAGE RSCT_MESSAGE; #if defined (__APPLE__) | defined (sun) # pragma pack() #else # pragma pack(pop) #endif #define RSCT_MSG_SIZE(tp) (\ sizeof(struct RSCT_MESSAGE_HEADER)+\ sizeof(tp)) const char *RSCT_MessageTypeToString(int t); #ifdef __cplusplus } #endif #endif pcsc-cyberjack-3.99.5final.sp05/libcyberjack/libdialog/base/network.c000066400000000000000000000231261231776762100254450ustar00rootroot00000000000000/*************************************************************************** begin : Wed Jun 16 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #include "Platform.h" #include "network.h" #include "message.h" #include #include #include #include #include #include #include #include #include #include #include #include #include /* enable or disable error messages */ #define ENABLE_DEBUGPE /* enable or disable info messages */ /*#define ENABLE_DEBUGPI*/ /* enable or disable debug messages */ /*#define ENABLE_DEBUGPD*/ #ifdef ENABLE_DEBUGPE # define DEBUGPE(format, args...) \ fprintf(stderr, __FILE__":%5d:" format, __LINE__, ## args); #else # define DEBUGPE(format, args...) #endif #ifdef ENABLE_DEBUGPI # define DEBUGPI(format, args...) \ fprintf(stderr, __FILE__":%5d:" format, __LINE__, ## args); #else # define DEBUGPI(format, args...) #endif #ifdef ENABLE_DEBUGPD # define DEBUGPD(format, args...) \ fprintf(stderr, __FILE__":%5d:" format, __LINE__, ## args); #else # define DEBUGPD(format, args...) #endif int rsct_net_listen_by_ip(const char *ip, int port) { union { struct sockaddr raw; struct sockaddr_in in; } addr; int s; int fl; memset(&addr, 0, sizeof(addr)); #if defined(PF_INET) addr.raw.sa_family=PF_INET; #elif defined (AF_INET) addr.raw.sa_family=AF_INET; #endif if (!inet_aton(ip, &addr.in.sin_addr)) { DEBUGPE("ERROR: inet_aton(): %d=%s\n", errno, strerror(errno)); return -1; } addr.in.sin_port=htons(port); #if defined(PF_INET) s=socket(PF_INET, SOCK_STREAM,0); #elif defined (AF_INET) s=socket(AF_INET, SOCK_STREAM,0); #endif if (s==-1) { DEBUGPE("ERROR: socket(): %d=%s\n", errno, strerror(errno)); return -1; } fl=1; if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &fl, sizeof(fl))) { DEBUGPE("ERROR: setsockopt(): %s", strerror(errno)); return -1; } if (bind(s, &addr.raw, sizeof(struct sockaddr_in))) { DEBUGPE("ERROR: bind(): %d=%s\n", errno, strerror(errno)); close(s); return -1; } if (listen(s, 10)) { DEBUGPE("ERROR: listen(): %d=%s\n", errno, strerror(errno)); close(s); return -1; } return s; } int rsct_net_listen_by_path(const char *name) { union { struct sockaddr addr; struct sockaddr_un un; char bin[512]; } a; int s; memset(&a.bin, 0, sizeof(a.bin)); #if defined(PF_UNIX) a.addr.sa_family=PF_UNIX; #elif defined (AF_UNIX) a.addr.sa_family=AF_UNIX; #endif #ifdef PF_UNIX a.un.sun_family=PF_UNIX; #elif defined (AF_UNIX) a.un.sun_family=AF_UNIX; #else fprintf(stderr, "No unix domain sockets available for this system\n"); return -1; #endif a.un.sun_path[0]=0; if (name) { /* ok, address to be set */ if ((strlen(name)+1)>sizeof(a.un.sun_path)) { /* bad address */ fprintf(stderr, "Path too long (%d>%d)\n", (int)(strlen(name)+1),(int)(sizeof(a.un.sun_path))); return -1; } strcpy(a.un.sun_path, name); } /* create socket */ #if defined(PF_UNIX) s=socket(PF_UNIX, SOCK_STREAM, 0); #elif defined (AF_UNIX) s=socket(AF_UNIX, SOCK_STREAM, 0); #endif if (s==-1) { fprintf(stderr, "ERROR: socket(): %d=%s\n", errno, strerror(errno)); return -1; } if (bind(s, &a.addr, sizeof(struct sockaddr_un))) { fprintf(stderr, "ERROR: bind(): %d=%s\n", errno, strerror(errno)); close(s); return -1; } if (listen(s, 10)) { fprintf(stderr, "ERROR: listen(): %d=%s\n", errno, strerror(errno)); close(s); return -1; } return s; } int rsct_net_accept(int sk) { socklen_t addrLen; int newS; struct sockaddr peerAddr; addrLen=sizeof(peerAddr); newS=accept(sk, &peerAddr, &addrLen); if (newS!=-1) return newS; else { if (errno!=EINTR) { DEBUGPE("ERROR: accept(): %d=%s\n", errno, strerror(errno)); } return -1; } } int rsct_net_connect_by_ip(const char *ip, int port) { union { struct sockaddr raw; struct sockaddr_in in; } addr; int s; memset(&addr, 0, sizeof(addr)); #if defined(PF_INET) addr.raw.sa_family=PF_INET; #elif defined (AF_INET) addr.raw.sa_family=AF_INET; #endif if (!inet_aton(ip, &addr.in.sin_addr)) { struct hostent *he; he=gethostbyname(ip); if (!he) { DEBUGPE("ERROR: gethostbyname(%s): %d=%s\n", ip, errno, strerror(errno)); return -1; } memcpy(&(addr.in.sin_addr), he->h_addr_list[0], sizeof(struct in_addr)); } addr.in.sin_port=htons(port); #if defined(PF_INET) s=socket(PF_INET, SOCK_STREAM,0); #elif defined (AF_INET) s=socket(AF_INET, SOCK_STREAM,0); #endif if (s==-1) { DEBUGPE("ERROR: socket(): %d=%s\n", errno, strerror(errno)); return -1; } if (connect(s, &addr.raw, sizeof(struct sockaddr_in))) { DEBUGPE("ERROR: connect(): %d=%s\n", errno, strerror(errno)); close(s); return -1; } return s; } int rsct_net_connect_by_path(const char *name) { union { struct sockaddr addr; struct sockaddr_un un; char bin[512]; } a; int s; memset(&a.bin, 0, sizeof(a.bin)); #if defined(PF_UNIX) a.addr.sa_family=PF_UNIX; #elif defined (AF_UNIX) a.addr.sa_family=AF_UNIX; #endif #ifdef PF_UNIX a.un.sun_family=PF_UNIX; #elif defined (AF_UNIX) a.un.sun_family=AF_UNIX; #else fprintf(stderr, "No unix domain sockets available for this system\n"); return -1; #endif a.un.sun_path[0]=0; if (name) { /* ok, address to be set */ if ((strlen(name)+1)>sizeof(a.un.sun_path)) { /* bad address */ fprintf(stderr, "Path too long (%d>%d)\n", (int)(strlen(name)+1),(int)(sizeof(a.un.sun_path))); return -1; } strcpy(a.un.sun_path,name); } /* create socket */ #if defined(PF_UNIX) s=socket(PF_UNIX, SOCK_STREAM, 0); #elif defined (AF_UNIX) s=socket(AF_UNIX, SOCK_STREAM, 0); #endif if (s==-1) { fprintf(stderr, "ERROR: socket(): %d=%s\n", errno, strerror(errno)); return -1; } if (connect(s, &a.addr, sizeof(struct sockaddr_un))) { fprintf(stderr, "ERROR: connect(): %d=%s\n", errno, strerror(errno)); close(s); return -1; } return s; } int rsct_net_recv(int sk, RSCT_MESSAGE *msg) { char *p; int bytesRead; assert(msg); bytesRead=0; p=(char*) msg; /* read header */ while(bytesReadheader.len>=RSCT_MAX_MESSAGE_LEN) { DEBUGPE("ERROR: Request too long (%d bytes)\n", msg->header.len); return -1; } DEBUGPI("INFO: Message has %d bytes (type: %s)\n", msg->header.len, RSCT_MessageTypeToString(msg->header.type)); /* read payload */ while(bytesReadheader.len) { ssize_t i; i=msg->header.len-bytesRead; i=read(sk, p, i); if (i<0) { DEBUGPE("ERROR: read(): %d=%s\n", errno, strerror(errno)); return -1; } else if (i==0) { DEBUGPE("ERROR: eof met prematurely (payload, %d bytes)\n", bytesRead); return -1; } bytesRead+=i; p+=i; DEBUGPI("INFO: Received %d bytes (payload)\n", bytesRead); } return bytesRead; } int rsct_net_send(int sk, const RSCT_MESSAGE *msg) { int bytesLeft; const uint8_t *p; /* send */ DEBUGPI("INFO: Sending %d bytes (type %s)\n", msg->header.len, RSCT_MessageTypeToString(msg->header.type)); bytesLeft=msg->header.len; p=(const uint8_t*) msg; while(bytesLeft) { ssize_t i; i=send(sk, (const void*)p, bytesLeft, 0); /* evaluate */ if (i<0) { if (errno!=EINTR) { DEBUGPE("ERROR: send(): %d=%s\n", errno, strerror(errno)); return -1; } } else if (i==0) { } else { bytesLeft-=(int) i; p+=i; } } return 0; } pcsc-cyberjack-3.99.5final.sp05/libcyberjack/libdialog/base/network.h000066400000000000000000000040401231776762100254440ustar00rootroot00000000000000/*************************************************************************** begin : Wed Jun 16 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef RSCT_NET_NETWORK_H #define RSCT_NET_NETWORK_H #include "message.h" #ifdef __cplusplus extern "C" { #endif int rsct_net_listen_by_ip(const char *ip, int port); int rsct_net_listen_by_path(const char *name); int rsct_net_accept(int sk); int rsct_net_connect_by_ip(const char *ip, int port); int rsct_net_connect_by_path(const char *name); int rsct_net_recv(int sk, RSCT_MESSAGE *msg); int rsct_net_send(int sk, const RSCT_MESSAGE *msg); #ifdef __cplusplus } #endif #endif pcsc-cyberjack-3.99.5final.sp05/libcyberjack/libdialog/dialog.c000066400000000000000000000247001231776762100243000ustar00rootroot00000000000000/*************************************************************************** begin : Wed Jun 16 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #include "Platform.h" #include "dialog_p.h" #include "network.h" #include #include #include #include #include #include #include #include #ifdef OS_DARWIN # include #endif #ifdef ENABLE_DEBUGPE # define DEBUGPE(format, args...) \ fprintf(stderr, __FILE__":%5d:" format, __LINE__, ## args); #else # define DEBUGPE(format, args...) #endif #ifdef ENABLE_DEBUGPI # define DEBUGPI(format, args...) \ fprintf(stderr, __FILE__":%5d:" format, __LINE__, ## args); #else # define DEBUGPI(format, args...) #endif #ifdef ENABLE_DEBUGPD # define DEBUGPD(format, args...) \ fprintf(stderr, __FILE__":%5d:" format, __LINE__, ## args); #else # define DEBUGPD(format, args...) #endif #ifdef OS_DARWIN static int rsct_dialog_mk_socket() { char buffer[256]; CFStringRef socketPath=NULL; CFStringRef currentUser=SCDynamicStoreCopyConsoleUser(NULL, NULL, NULL); if (currentUser==NULL ) return -1; if ( CFStringGetLength(currentUser) == 0 ) { CFRelease(currentUser); return -1; } if (CFStringGetCString(currentUser, buffer, sizeof(buffer)-1, kCFStringEncodingUTF8)) { struct passwd * pw = getpwnam(buffer); if (pw && pw->pw_dir) { socketPath=CFStringCreateWithFormat(NULL, NULL, CFSTR("/%s/.cyberJack_gui_sock"), pw->pw_dir); } } if (socketPath==NULL ) socketPath=CFStringCreateWithFormat(NULL, NULL, CFSTR("/Users/%@//.cyberJack_gui_sock"), currentUser); if (currentUser) CFRelease(currentUser); if (socketPath==NULL) return -1; if (CFStringGetFileSystemRepresentation(socketPath, buffer, sizeof(buffer))) { int sk; CFRelease(socketPath); sk=rsct_net_connect_by_path(buffer); if (sk==-1) { DEBUGPE("RSCT: Could not connect to [%s]: %s (%d)\n", buffer, strerror(errno), errno); return -1; } return sk; } else { CFRelease(socketPath); return -1; } } #else static int rsct_dialog_mk_socket() { char buffer[256]; struct utmp *u_tmp_p; struct passwd *pw; int sk; while ((u_tmp_p = getutent()) != NULL) { DEBUGPI("RSCT: ut_type=%d, ut_line=[%s]\n", u_tmp_p->ut_type, u_tmp_p->ut_line); if (u_tmp_p->ut_type==USER_PROCESS && (u_tmp_p->ut_line[0]!=0 && strcasecmp(u_tmp_p->ut_line, ":0")==0) && u_tmp_p->ut_user[0]!=0) break; } if (u_tmp_p==NULL) { DEBUGPE("RSCT: No user logged in at XServer :0 (%s (%d))\n", strerror(errno), errno); endutent(); return -1; } pw=getpwnam(u_tmp_p->ut_user); if (pw==NULL) { DEBUGPE("RSCT: Could not get home folder for user [%s]: %s (%d)\n", u_tmp_p->ut_user, strerror(errno), errno); endutent(); return -1; } if (pw->pw_dir==NULL || *(pw->pw_dir)==0) { DEBUGPE("RSCT: User [%s] has no home folder\n", u_tmp_p->ut_user); endutent(); return -1; } strncpy(buffer, pw->pw_dir, sizeof(buffer)-1); strncat(buffer, "/.cyberJack_gui_sock", sizeof(buffer)-1); endutent(); sk=rsct_net_connect_by_path(buffer); if (sk==-1) { DEBUGPE("RSCT: Could not connect to [%s]: %s (%d)\n", buffer, strerror(errno), errno); return -1; } return sk; } #endif RSCT_DIALOG *rsct_dialog_new(const char *title, int stages, uint8_t cla, uint8_t ins, int keyTimeout, const char *textStage0, const char *textStage1, const char *textStage2){ RSCT_DIALOG *dlg; dlg=(RSCT_DIALOG*) malloc(sizeof(RSCT_DIALOG)); if (dlg) { memset(dlg, 0, sizeof(RSCT_DIALOG)); dlg->socket=-1; if (title && *title) dlg->title=strdup(title); else dlg->title=strdup("Reiner SCT cyberJack"); if (textStage0 && *textStage0) dlg->textStage0=strdup(textStage0); else dlg->textStage0=NULL; if (stages>1) { if (textStage1 && *textStage1) dlg->textStage1=strdup(textStage1); else dlg->textStage1=NULL; } if (stages>2) { if (textStage2 && *textStage2) dlg->textStage2=strdup(textStage2); else dlg->textStage2=NULL; } dlg->cla=cla; dlg->ins=ins; dlg->stages=stages; dlg->keyTimeout=keyTimeout; } return dlg; } void rsct_dialog_free(RSCT_DIALOG *dlg) { if (dlg) { free(dlg->title); free(dlg->textStage2); free(dlg->textStage1); free(dlg->textStage0); if (dlg->socket!=-1) close(dlg->socket); free(dlg); } } int rsct_dialog_get_socket(const RSCT_DIALOG *dlg) { return dlg->socket; } int rsct_dialog_get_char_num(const RSCT_DIALOG *dlg) { return dlg->numChars; } int rsct_dialog_set_stage(RSCT_DIALOG *dlg, int stage) { if (dlg && dlg->socket!=-1 && stagedialogId; m.msg.setStage.stage=stage; rv=rsct_net_send(dlg->socket, &m.msg); if (rv<0) { close(dlg->socket); dlg->socket=-1; return rv; } /* receive response */ memset(m.buffer, 0, RSCT_MAX_MESSAGE_LEN); rv=rsct_net_recv(dlg->socket, &m.msg); if (rv<0) { close(dlg->socket); dlg->socket=-1; return rv; } if (m.msg.setStage.result<0) { close(dlg->socket); dlg->socket=-1; return m.msg.setStage.result; } } dlg->currentStage=stage; return 0; } int rsct_dialog_get_stage(const RSCT_DIALOG *dlg) { if (dlg) return dlg->currentStage; return 0; } int rsct_dialog_get_stages(const RSCT_DIALOG *dlg) { if (dlg) return dlg->stages; return 0; } uint8_t rsct_dialog_get_cla(const RSCT_DIALOG *dlg) { if (dlg) return dlg->cla; return 0; } uint8_t rsct_dialog_get_ins(const RSCT_DIALOG *dlg) { if (dlg) return dlg->ins; return 0; } int rsct_dialog_open(RSCT_DIALOG *dlg) { if (dlg) { int rv; union { char buffer[RSCT_MAX_MESSAGE_LEN]; RSCT_MESSAGE msg; } m; dlg->socket=rsct_dialog_mk_socket(); if (dlg->socket==-1) return -1; /* send OPEN_DIALOG */ memset(m.buffer, 0, RSCT_MAX_MESSAGE_LEN); m.msg.header.type=RSCT_Message_Command_OpenDialog; m.msg.header.len=RSCT_MSG_SIZE(RSCT_MESSAGE_OPENDIALOG); m.msg.openDialog.stages=dlg->stages; m.msg.openDialog.keyTimeout=dlg->keyTimeout; if (dlg->title) strncpy(m.msg.openDialog.title, dlg->title, sizeof(m.msg.openDialog.title)-1); if (dlg->stages>0 && dlg->textStage0) strncpy(m.msg.openDialog.textStage0, dlg->textStage0, sizeof(m.msg.openDialog.textStage0)-1); if (dlg->stages>1 && dlg->textStage1) strncpy(m.msg.openDialog.textStage1, dlg->textStage1, sizeof(m.msg.openDialog.textStage1)-1); if (dlg->stages>2 && dlg->textStage2) strncpy(m.msg.openDialog.textStage2, dlg->textStage2, sizeof(m.msg.openDialog.textStage2)-1); /* send message */ rv=rsct_net_send(dlg->socket, &m.msg); if (rv<0) { close(dlg->socket); dlg->socket=-1; return rv; } /* receive response */ memset(m.buffer, 0, RSCT_MAX_MESSAGE_LEN); rv=rsct_net_recv(dlg->socket, &m.msg); if (rv<0) { close(dlg->socket); dlg->socket=-1; return rv; } if (m.msg.openDialog.result<0) { close(dlg->socket); dlg->socket=-1; return m.msg.openDialog.result; } dlg->dialogId=m.msg.openDialog.dialogId; return 0; } return -1; } void rsct_dialog_close(RSCT_DIALOG *dlg) { if (dlg && dlg->socket!=-1) { union { char buffer[RSCT_MAX_MESSAGE_LEN]; RSCT_MESSAGE msg; } m; memset(m.buffer, 0, RSCT_MAX_MESSAGE_LEN); m.msg.header.type=RSCT_Message_Command_CloseDialog; m.msg.header.len=RSCT_MSG_SIZE(RSCT_MESSAGE_CLOSEDIALOG); m.msg.closeDialog.dialogId=dlg->dialogId; rsct_net_send(dlg->socket, &m.msg); close(dlg->socket); dlg->socket=-1; } } int rsct_dialog_set_char_num(RSCT_DIALOG *dlg, int charNum, int beep) { if (dlg && dlg->socket!=-1) { int rv; union { char buffer[RSCT_MAX_MESSAGE_LEN]; RSCT_MESSAGE msg; } m; memset(m.buffer, 0, RSCT_MAX_MESSAGE_LEN); m.msg.header.type=RSCT_Message_Command_SetCharNum; m.msg.header.len=RSCT_MSG_SIZE(RSCT_MESSAGE_SETCHARNUM); m.msg.setCharNum.dialogId=dlg->dialogId; m.msg.setCharNum.charNum=charNum; m.msg.setCharNum.beep=beep; rv=rsct_net_send(dlg->socket, &m.msg); if (rv<0) { close(dlg->socket); dlg->socket=-1; } /* receive response */ memset(m.buffer, 0, RSCT_MAX_MESSAGE_LEN); rv=rsct_net_recv(dlg->socket, &m.msg); if (rv<0) { close(dlg->socket); dlg->socket=-1; return rv; } if (m.msg.setCharNum.result<0) { close(dlg->socket); dlg->socket=-1; return m.msg.setCharNum.result; } } dlg->numChars=charNum; return 0; } pcsc-cyberjack-3.99.5final.sp05/libcyberjack/libdialog/dialog.h000066400000000000000000000050521231776762100243040ustar00rootroot00000000000000/*************************************************************************** begin : Wed Jun 16 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef RSCT_DIALOG_H #define RSCT_DIALOG_H #include "message.h" #ifdef __cplusplus extern "C" { #endif typedef struct RSCT_DIALOG RSCT_DIALOG; #define RSCT_DIALOG_MAX_STAGES 3 RSCT_DIALOG *rsct_dialog_new(const char *title, int stages, uint8_t cla, uint8_t ins, int keyTimeout, const char *textStage0, const char *textStage1, const char *textStage2); void rsct_dialog_free(RSCT_DIALOG *dlg); uint8_t rsct_dialog_get_cla(const RSCT_DIALOG *dlg); uint8_t rsct_dialog_get_ins(const RSCT_DIALOG *dlg); int rsct_dialog_open(RSCT_DIALOG *dlg); void rsct_dialog_close(RSCT_DIALOG *dlg); int rsct_dialog_set_stage(RSCT_DIALOG *dlg, int stage); int rsct_dialog_get_stage(const RSCT_DIALOG *dlg); int rsct_dialog_get_stages(const RSCT_DIALOG *dlg); int rsct_dialog_set_char_num(RSCT_DIALOG *dlg, int charNum, int beep); int rsct_dialog_get_char_num(const RSCT_DIALOG *dlg); int rsct_dialog_get_socket(const RSCT_DIALOG *dlg); #ifdef __cplusplus } #endif #endif pcsc-cyberjack-3.99.5final.sp05/libcyberjack/libdialog/dialog_p.h000066400000000000000000000035751231776762100246330ustar00rootroot00000000000000/*************************************************************************** begin : Wed Jun 16 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef RSCT_DIALOG_P_H #define RSCT_DIALOG_P_H #include "dialog.h" struct RSCT_DIALOG { uint32_t dialogId; int socket; int stages; int currentStage; unsigned int keyTimeout; char *title; char *textStage0; char *textStage1; char *textStage2; uint8_t cla; uint8_t ins; int numChars; }; #endif pcsc-cyberjack-3.99.5final.sp05/libcyberjack/libdialog/libtest.cpp000066400000000000000000000016351231776762100250510ustar00rootroot00000000000000 #include "dialog.h" #include #include int main(int argc, char **argv) { RSCT_DIALOG *dlg; int rv; int stage; dlg=rsct_dialog_new("Sichere PIN-Eingabe", 3, 0x20, 0x18, 15, "Bitte geben Sie Ihre bisherige PIN ein", "Bitte geben Sie die neue PIN ein", "Bitte wiederholen Sie die neue PIN"); rv=rsct_dialog_open(dlg); if (rv<0) { fprintf(stderr, "rsct_dialog_open: %d\n", rv); return 2; } for(stage=0; stage<3; stage++) { int i; rv=rsct_dialog_set_stage(dlg, stage); if (rv<0) { fprintf(stderr, "rsct_dialog_set_stage(%d): %d\n", stage, rv); return 2; } for (i=1; i<6; i++) { sleep(3); rv=rsct_dialog_set_char_num(dlg, i, 1); if (rv<0) { fprintf(stderr, "rsct_dialog_set_char_num(%d): %d\n", i, rv); return 2; } } } rsct_dialog_close(dlg); return 0; } pcsc-cyberjack-3.99.5final.sp05/libcyberjack/libtest.cpp000066400000000000000000000202311231776762100231140ustar00rootroot00000000000000 #ifdef HAVE_CONFIG_H # include #endif #include "driver_pcsc.hpp" #include "cyberjack_l.h" #include #include #include using namespace Cyberjack; int getNumberOfModules(Reader *r) { unsigned char dad, sad, rsp[512]; unsigned short lr; unsigned char apdu[256]; unsigned int alen; char ret; //int i; /* get module count */ dad=CT_API_AD_DRIVER; sad=CT_API_AD_HOST; alen=0; apdu[alen++]=CJ_SPECIAL_CLA; apdu[alen++]=CJ_SPECIAL_INS_GETMODCOUNT; apdu[alen++]=0x00; apdu[alen++]=0x00; lr=sizeof(rsp); ret=r->sendApdu(&dad, &sad, alen, apdu, &lr, rsp ); #if 0 printf( "CT_data: %d\n", ret ); #endif if(ret!=CT_API_RV_OK) return -1; #if 0 printf(" sad: %d, dad: %d, rsp:", sad, dad ); for( i=0; isendApdu(&dad, &sad, alen, apdu, &lr, rsp ); if(ret!=CT_API_RV_OK) return -1; if (rsp[lr-2]!=0x90) { return -1; } if (lr<3) { fprintf(stderr, "Too few bytes returned (%d)\n", lr); return -1; } lr-=2; l=sizeof(cj_ModuleInfo); if (l>lr) l=lr; memmove(modInfo, rsp, l); return ErrorCode_Ok; } int getReaderInfo(Reader *r, cj_ReaderInfo *readerInfo) { unsigned char dad, sad, rsp[1024]; unsigned short lr; unsigned char apdu[256]; unsigned int alen; char ret; unsigned int l; /* get module count */ dad=CT_API_AD_DRIVER; sad=CT_API_AD_HOST; alen=0; apdu[alen++]=CJ_SPECIAL_CLA; apdu[alen++]=CJ_SPECIAL_INS_GETREADERINFO; apdu[alen++]=0x00; apdu[alen++]=0x00; lr=sizeof(rsp); ret=r->sendApdu(&dad, &sad, alen, apdu, &lr, rsp ); if(ret!=CT_API_RV_OK) return -1; if (rsp[lr-2]!=0x90) { return -1; } if (lr<3) { fprintf(stderr, "Too few bytes returned (%d)\n", lr); return -1; } lr-=2; l=sizeof(cj_ReaderInfo); if (l>lr) l=lr; memmove(readerInfo, rsp, l); return ErrorCode_Ok; } int main(int argc, char **argv) { #ifdef HAVE_PCSC Driver *dr=NewDriverPcsc(); #else Driver *dr=new DriverCtapi(); #endif int rv; std::list::const_iterator it; rv=dr->open(); if (rv<0) { fprintf(stderr, "Error in open: %d\n", rv); return 2; } rv=dr->enumReaders(); if (rv<0) { fprintf(stderr, "Error in enumReaders: %d\n", rv); return 2; } for (it=dr->getReaders().begin(); it!=dr->getReaders().end(); it++) { int rv; fprintf(stderr, " - %s (%04x, %04x: %s)\n", (*it)->getName().c_str(), (*it)->getVendorId(), (*it)->getProductId(), (*it)->getSerial().c_str()); rv=(*it)->gatherInfo(true); if (rv!=ErrorCode_Ok) { fprintf(stderr, "Error gathering info: %d\n", rv); return 2; } if (1 /*(*it)->getProductId()>=0x400 ||*/) { const cj_ReaderInfo &ri=(*it)->getReaderInfo(); if (ri.ContentsMask & RSCT_READER_MASK_PID) fprintf(stderr, " PID : %x\n", ri.PID); if (ri.ContentsMask & RSCT_READER_MASK_HARDWARE) { fprintf(stderr, " Hardware-Mask : %x\n",ri.HardwareMask); fprintf(stderr, " Reader supports :"); if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC1) fprintf(stderr, " ICC1"); if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC2) fprintf(stderr, " ICC2"); if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC3) fprintf(stderr, " ICC3"); if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC4) fprintf(stderr, " ICC4"); if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC5) fprintf(stderr, " ICC5"); if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC6) fprintf(stderr, " ICC6"); if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC7) fprintf(stderr, " ICC7"); if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC8) fprintf(stderr, " ICC8"); if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_KEYPAD) fprintf(stderr, " Keypad"); if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_DISPLAY) fprintf(stderr, " Display"); if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_BIOMETRIC) fprintf(stderr, " Fingersensor"); if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_UPDATEABLE) fprintf(stderr, " Firmwareupdate"); if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_MODULES) fprintf(stderr, " Sicherheitsmodule"); } fprintf(stderr, "\n"); if (ri.ContentsMask & RSCT_READER_MASK_VERSION) fprintf(stderr, " Version : %x\n", ri.Version); if (ri.ContentsMask & RSCT_READER_MASK_HARDWARE_VERSION) fprintf(stderr, " Hardware-Version : %x\n", ri.HardwareVersion); if (ri.ContentsMask & RSCT_READER_MASK_FLASH_SIZE) fprintf(stderr, " Flashgroesse : %d\n", ri.FlashSize); if (ri.ContentsMask & RSCT_READER_MASK_HEAP_SIZE) fprintf(stderr, " Heapgroesse : %d\n", ri.HeapSize); if (ri.ContentsMask & RSCT_READER_MASK_SERIALNUMBER) fprintf(stderr, " Seriennummer : %s\n", ri.SeriaNumber); if (ri.ContentsMask & RSCT_READER_MASK_VENDOR_STRING) fprintf(stderr, " Hersteller : %s\n", ri.VendorString); if (ri.ContentsMask & RSCT_READER_MASK_PRODUCT_STRING) fprintf(stderr, " Produkt : %s\n", ri.ProductString); if (ri.ContentsMask & RSCT_READER_MASK_PRODUCTION_DATE) fprintf(stderr, " Herstellungsdatum : %s %s\n", ri.ProductionDate, ri.ProductionTime); if (ri.ContentsMask & RSCT_READER_MASK_TEST_DATE) fprintf(stderr, " Testdatum : %s %s\n", ri.TestDate, ri.TestTime); if (ri.ContentsMask & RSCT_READER_MASK_COMMISSIONING_DATE) fprintf(stderr, " Ausgabedatum : %s %s\n", ri.CommissioningDate, ri.CommissioningTime); if (ri.ContentsMask & RSCT_READER_MASK_COM_TYPE) fprintf(stderr, " Anschlussart : %s\n", ri.CommunicationString); if (ri.ContentsMask & RSCT_READER_MASK_PORT_ID) fprintf(stderr, " Anschlussnummer : %d\n", ri.PortID); if (ri.ContentsMask & RSCT_READER_MASK_IFD_BRIDGE) fprintf(stderr, " IFD-Bridge : %s\n", ri.IFDNameOfIfdBridgeDevice); if (ri.ContentsMask & RSCT_READER_MASK_HW_STRING) fprintf(stderr, " Hardwarestring : %s\n", ri.HardwareString); } /* if newer reader */ if ((*it)->getProductId()>=0x400) { const std::list &modules=(*it)->getModuleInfos(); std::list::const_iterator mit; for (mit=modules.begin(); mit!=modules.end(); mit++) { const cj_ModuleInfo &mi=*mit; fprintf(stderr, " Module information\n"); if (mi.ContentsMask & RSCT_MODULE_MASK_ID) fprintf(stderr, " ID: %08x\n", mi.ID); if (mi.ContentsMask & RSCT_MODULE_MASK_VERSION) fprintf(stderr, " Version: %08x\n", mi.Version); if (mi.ContentsMask & RSCT_MODULE_MASK_REVISION) fprintf(stderr, " Revision: %08x\n", mi.Revision); if (mi.ContentsMask & RSCT_MODULE_MASK_VARIANT) fprintf(stderr, " Variant: %08x\n", mi.Variant); if (mi.ContentsMask & RSCT_MODULE_MASK_DESCRIPTION) fprintf(stderr, " Description: %17s\n", mi.Description); if (mi.ContentsMask & RSCT_MODULE_MASK_DATE) fprintf(stderr, " Date: %12s %6s\n", mi.Date, mi.Time); } } /* if newer reader */ } rv=dr->close(); if (rv<0) { fprintf(stderr, "Error in close: %d\n", rv); return 2; } return 1; } pcsc-cyberjack-3.99.5final.sp05/libcyberjack/module.cpp000066400000000000000000000117201231776762100227360ustar00rootroot00000000000000/*************************************************************************** begin : Tue Apr 06 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #ifdef HAVE_LIBXML2 #include "module.hpp" #include #include #include #include #include namespace Cyberjack { Module::Module(const char *path) :m_path(std::string(path)) ,m_force(false) { } Module::~Module(){ } std::string Module::getDescr() const { if (!m_descrDe.empty()) return m_descrDe; else if (!m_descrAny.empty()) return m_descrAny; else return "Unbenanntes Modul"; } void Module::readXml(xmlNodePtr n) { xmlNodePtr nn; xmlNodePtr nnn; const char *s; s=(const char*) xmlGetProp(n, BAD_CAST "type"); if (s && *s) m_readerType=std::string(s); s=(const char*) xmlGetProp(n, BAD_CAST "fname"); if (s && *s) m_moduleName=std::string(s); s=(const char*) xmlGetProp(n, BAD_CAST "force"); if (s && *s && strcasecmp(s, "1")==0) m_force=true; nn=n->children; while(nn) { if (nn->type==XML_ELEMENT_NODE) { if (nn->name) { if (strcasecmp((const char*)nn->name, "binary")==0) { nnn=nn->children; while(nnn) { if (nnn->type==XML_TEXT_NODE) { s=(const char*)nnn->content; if (s && *s) m_binFileName=std::string(s); break; } nnn=nnn->next; } } else if (strcasecmp((const char*)nn->name, "signature")==0) { nnn=nn->children; while(nnn) { if (nnn->type==XML_TEXT_NODE) { s=(const char*)nnn->content; if (s && *s) m_sigFileName=std::string(s); break; } nnn=nnn->next; } } else if (strcasecmp((const char*)nn->name, "desc")==0) { s=(const char*) xmlGetProp(nn, BAD_CAST "langid"); if (s && *s) { if (strcasecmp(s, "de")==0) { nnn=nn->children; while(nnn) { if (nnn->type==XML_TEXT_NODE) { s=(const char*)nnn->content; if (s && *s) m_descrDe=std::string(s); break; } nnn=nnn->next; } } else if (strcasecmp(s, "*")==0) { nnn=nn->children; while(nnn) { if (nnn->type==XML_TEXT_NODE) { s=(const char*)nnn->content; if (s && *s) m_descrAny=std::string(s); break; } nnn=nnn->next; } } } } } } nn=nn->next; } } static int readFile(const char *fname, uint8_t *buffer, uint32_t size) { FILE *f; uint8_t *p; int len; f=fopen(fname, "r"); if (f==NULL) return -1; p=buffer; len=0; while(!feof(f)) { int rv; int l; l=size; if (l<1) { fprintf(stderr, "ERROR: Buffer too small\n"); return -1; } if (l>1024) l=1024; rv=fread(p, 1, l, f); if (rv==0) break; p+=rv; len+=rv; size-=rv; } fclose(f); return len; } bool Module::readModuleBinaries() { uint8_t buffer[64*1024]; std::string fname; int rv; /* read binary */ fname=m_path; fname+="/"; fname+=m_binFileName; rv=readFile(fname.c_str(), buffer, sizeof(buffer)-1); if (rv<1) { fprintf(stderr, "ERROR: Could not read binary [%s]\n", fname.c_str()); return false; } m_binFileData=std::string((const char*)buffer, rv); /* read signature file */ fname=m_path; fname+="/"; fname+=m_sigFileName; rv=readFile(fname.c_str(), buffer, sizeof(buffer)-1); if (rv<1) { fprintf(stderr, "ERROR: Could not signature binary [%s]\n", fname.c_str()); return false; } m_sigFileData=std::string((const char*)buffer, rv); return true; } } /* namespace */ #endif /* if XML2 */ pcsc-cyberjack-3.99.5final.sp05/libcyberjack/module.hpp000066400000000000000000000055611231776762100227510ustar00rootroot00000000000000/*************************************************************************** begin : Tue Apr 06 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef LIBCYBERJACK_MODULE_HPP #define LIBCYBERJACK_MODULE_HPP #include #include #include namespace Cyberjack { class Module { public: Module(const char *path); ~Module(); const std::string &getReaderType() const { return m_readerType;}; const std::string &getModuleName() const { return m_moduleName;}; const std::string &getDescrAny() const { return m_descrAny;}; const std::string &getDescrDe() const { return m_descrDe;}; std::string getDescr() const; const std::string &getBinFileName() const { return m_binFileName;}; const std::string &getSigFileName() const { return m_sigFileName;}; const std::string &getBinFileData() const { return m_binFileData;}; const std::string &getSigFileData() const { return m_sigFileData;}; /** read the module description from the given XML node (pointing to a "" * node). */ void readXml(xmlNodePtr n); bool readModuleBinaries(); protected: std::string m_path; std::string m_readerType; std::string m_moduleName; std::string m_descrDe; std::string m_descrAny; std::string m_binFileName; std::string m_sigFileName; std::string m_binFileData; std::string m_sigFileData; bool m_force; }; } /* namespace */ #endif pcsc-cyberjack-3.99.5final.sp05/libcyberjack/modulestore.cpp000066400000000000000000000153131231776762100240150ustar00rootroot00000000000000/*************************************************************************** begin : Tue Apr 06 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #ifdef HAVE_LIBXML2 #include "modulestore.hpp" #include #include #include #include #include #include #include namespace Cyberjack { ModuleStore::ModuleStore(const char *s) { if (s && *s) m_path=std::string(s); } ModuleStore::~ModuleStore() { } void ModuleStore::readXmlModules(xmlNodePtr n) { xmlNodePtr nn; const char *s; s=(const char*) xmlGetProp(n, BAD_CAST "keyfile"); if (s && *s) m_keyFileName=std::string(s); nn=n->children; while(nn) { if (nn->type==XML_ELEMENT_NODE) { if (nn->name && strcasecmp((const char*)nn->name, "module")==0) { Module m(m_path.c_str()); m.readXml(nn); m_modules.push_back(m); } } nn=nn->next; } } void ModuleStore::readXmlTemplates(xmlNodePtr n) { xmlNodePtr nn; nn=n->children; while(nn) { if (nn->type==XML_ELEMENT_NODE) { if (nn->name && strcasecmp((const char*)nn->name, "template")==0) { MTemplate t; t.readXml(nn); m_templates.push_back(t); } } nn=nn->next; } } void ModuleStore::readXmlSetup(xmlNodePtr n) { xmlNodePtr nn; xmlNodePtr nnn; const char *s; s=(const char*) xmlGetProp(n, BAD_CAST "type"); if (s && *s) m_readerType=std::string(s); nn=n->children; while(nn) { if (nn->type==XML_ELEMENT_NODE) { if (nn->name) { if (strcasecmp((const char*)nn->name, "templates")==0) readXmlTemplates(nn); else if (strcasecmp((const char*)nn->name, "modules")==0) readXmlModules(nn); else if (strcasecmp((const char*)nn->name, "version")==0) { nnn=nn->children; while(nnn) { if (nnn->type==XML_TEXT_NODE) { s=(const char*)nnn->content; if (s && *s) m_version=std::string(s); break; } nnn=nnn->next; } } else if (strcasecmp((const char*)nn->name, "hw_string")==0) { nnn=nn->children; while(nnn) { if (nnn->type==XML_TEXT_NODE) { s=(const char*)nnn->content; if (s && *s) m_hwString=std::string(s); break; } nnn=nnn->next; } } } } nn=nn->next; } } bool ModuleStore::readXmlFile() { xmlDocPtr doc; xmlNodePtr n; std::string fname; bool setupLoaded=false; fname=m_path+"/version.xml"; doc=xmlParseFile(fname.c_str()); if (doc==NULL) { fprintf(stderr, "ERROR: Could not load xml file [%s]\n", fname.c_str()); xmlFreeDoc(doc); return false; } n=xmlDocGetRootElement(doc); if (n==NULL) { fprintf(stderr, "ERROR: No root element in xml file [%s]\n", fname.c_str()); xmlFreeDoc(doc); return false; } if (n->name && strcasecmp((const char*)(n->name), "setup")==0) { readXmlSetup(n); setupLoaded=true; } xmlFreeDoc(doc); if (!setupLoaded) { fprintf(stderr, "ERROR: No setup element in xml file [%s]\n", fname.c_str()); return false; } return true; } bool ModuleStore::readModuleStoresFrom(const char *path, std::list &slist) { DIR *d; int loaded=0; d=opendir(path); if (d==NULL) { fprintf(stderr, "No module store found at [%s]\n", path); return false; } else { struct dirent *de; while( (de=readdir(d)) ) { if (de->d_name[0]!='.') { std::string str; str=std::string(path); str+="/"; str+=std::string(de->d_name); fprintf(stderr, "Trying [%s]\n", str.c_str()); ModuleStore ms(str.c_str()); if (ms.readXmlFile()) { loaded++; slist.push_back(ms); } } } closedir(d); if (loaded>0) return true; else { fprintf(stderr, "No module store found in [%s]\n", path); return false; } } } bool ModuleStore::readModuleStores(std::list &slist) { int okCounter=0; int errorCounter=0; bool rv; rv=readModuleStoresFrom("/usr/local/lib/cyberjack/firmware", slist); if (rv) okCounter++; else errorCounter++; rv=readModuleStoresFrom("/usr/lib/cyberjack/firmware", slist); if (rv) okCounter++; else errorCounter++; rv=readModuleStoresFrom("/lib/cyberjack/firmware", slist); if (rv) okCounter++; else errorCounter++; if (okCounter==0) { fprintf(stderr, "ERROR: Could not load any module store\n"); return false; } return true; } static int readFile(const char *fname, uint8_t *buffer, uint32_t size) { FILE *f; uint8_t *p; int len; f=fopen(fname, "r"); if (f==NULL) return -1; p=buffer; len=0; while(!feof(f)) { int rv; int l; l=size; if (l<1) { fprintf(stderr, "ERROR: Buffer too small\n"); return -1; } if (l>1024) l=1024; rv=fread(p, 1, l, f); if (rv==0) break; p+=rv; len+=rv; size-=rv; } fclose(f); return len; } bool ModuleStore::readKeyFile() { uint8_t buffer[64*1024]; std::string fname; int rv; /* read binary */ fname=m_path; fname+="/"; fname+=m_keyFileName; rv=readFile(fname.c_str(), buffer, sizeof(buffer)-1); if (rv<1) { fprintf(stderr, "ERROR: Could not read keyfile [%s]\n", fname.c_str()); return false; } m_keyFileData=std::string((const char*)buffer, rv); return true; } } /* namespace */ #endif /* if xml2 */ pcsc-cyberjack-3.99.5final.sp05/libcyberjack/modulestore.hpp000066400000000000000000000060621231776762100240230ustar00rootroot00000000000000/*************************************************************************** begin : Tue Apr 06 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef LIBCYBERJACK_MODULESTORE_HPP #define LIBCYBERJACK_MODULESTORE_HPP #include "module.hpp" #include "mtemplate.hpp" #include #include namespace Cyberjack { class ModuleStore { public: ModuleStore(const char *path); ~ModuleStore(); const std::string &getPath() const { return m_path;}; const std::string &getReaderType() const { return m_readerType;}; const std::string &getKeyFileName() const { return m_keyFileName;}; const std::string &getVersionString() const { return m_version;}; const std::string &getHwString() const { return m_hwString;}; const std::string &getKeyFileData() const { return m_keyFileData;}; /** read the module description from the given XML node (pointing to a "" * node). */ bool readXmlFile(); bool readKeyFile(); static bool readModuleStores(std::list &slist); std::list &getModules() { return m_modules;}; std::list &getTemplates() { return m_templates;}; protected: std::string m_path; std::string m_readerType; std::string m_keyFileName; std::string m_version; std::string m_hwString; std::list m_modules; std::list m_templates; std::string m_keyFileData; void readXmlModules(xmlNodePtr n); void readXmlTemplates(xmlNodePtr n); void readXmlSetup(xmlNodePtr n); static bool readModuleStoresFrom(const char *path, std::list &slist); }; } /* namespace */ #endif pcsc-cyberjack-3.99.5final.sp05/libcyberjack/mtemplate.cpp000066400000000000000000000052671231776762100234520ustar00rootroot00000000000000/*************************************************************************** begin : Tue Apr 06 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #ifdef HAVE_LIBXML2 #include "mtemplate.hpp" #include #include namespace Cyberjack { MTemplate::MTemplate() { } MTemplate::~MTemplate(){ } void MTemplate::readXml(xmlNodePtr n) { xmlNodePtr nn; xmlNodePtr nnn; const char *s; m_moduleNames.clear(); s=(const char*) xmlGetProp(n, BAD_CAST "id"); if (s && *s) m_id=std::string(s); nn=n->children; while(nn) { if (nn->type==XML_ELEMENT_NODE) { if (nn->name) { if (strcasecmp((const char*)nn->name, "activate_module")==0) { s=(const char*) xmlGetProp(nn, BAD_CAST "fname"); if (s && *s) m_moduleNames.push_back(std::string(s)); } else if (strcasecmp((const char*)nn->name, "desc")==0) { s=(const char*) xmlGetProp(nn, BAD_CAST "langid"); if (s && *s && strcasecmp(s, "de")==0) { nnn=nn->children; while(nnn) { if (nnn->type==XML_TEXT_NODE) { s=(const char*)nnn->content; if (s && *s) m_descr=std::string(s); break; } nnn=nnn->next; } } } } } nn=nn->next; } } } /* namespace */ #endif /* if xml2 */ pcsc-cyberjack-3.99.5final.sp05/libcyberjack/mtemplate.hpp000066400000000000000000000044331231776762100234510ustar00rootroot00000000000000/*************************************************************************** begin : Tue Apr 06 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef LIBCYBERJACK_MTEMPLATE_HPP #define LIBCYBERJACK_MTEMPLATE_HPP #include #include #include #include namespace Cyberjack { class MTemplate { public: MTemplate(); ~MTemplate(); const std::string &getDescr() const { return m_descr;}; const std::list &getModuleNames() const { return m_moduleNames;}; const std::string &getTemplateName() const { return m_id;}; /** read the module description from the given XML node (pointing to a "" * node). */ void readXml(xmlNodePtr n); protected: std::string m_id; std::string m_descr; std::list m_moduleNames; }; } /* namespace */ #endif pcsc-cyberjack-3.99.5final.sp05/m4/000077500000000000000000000000001231776762100166405ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/m4/Makefile.am000066400000000000000000000002011231776762100206650ustar00rootroot00000000000000 EXTRA_DIST= \ acx_compile_warn.m4 \ as-scrub-include.m4 \ libusb.m4 \ libsysfs.m4 \ os.m4 \ searchfiles.m4 \ windoze.m4 pcsc-cyberjack-3.99.5final.sp05/m4/README000066400000000000000000000003461231776762100175230ustar00rootroot00000000000000# $Id: README 284 2004-03-29 14:56:51Z aquamaniac $ # (c) 2002 Martin Preuss This folder includes some usefull macros for the automake/autoconf tools. This dramatically simplifies the "configure.in" file. pcsc-cyberjack-3.99.5final.sp05/m4/acx_compile_warn.m4000066400000000000000000000044501231776762100224170ustar00rootroot00000000000000# Compile warning arguments to ./configure # by Christian Stimming 2003-11-19 dnl ACX_COMPILE_WARN() dnl Add arguments for compile warnings and debug options to ./configure. dnl AC_DEFUN([ACX_COMPILE_WARN], [ dnl For enabling of debugging flags/code AC_ARG_ENABLE(debug, [ --enable-debug compile with debugging code enabled, default=no], [case "${enableval}" in yes) CXXFLAGS="${CXXFLAGS} -g" CFLAGS="${CFLAGS} -g" LDFLAGS="${LDFLAGS} -g" AC_DEFINE(DEBUG,1,[Define if you want debugging code enabled.]) ;; no) ;; *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;; esac ], [ # Default value if the argument was not given CXXFLAGS="${CXXFLAGS}" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" ]) dnl If this is gcc, then ... if test ${GCC}x = yesx; then dnl Enable all warnings AC_ARG_ENABLE(warnings, [ --enable-warnings enable compilation warnings, default=yes], [case "${enableval}" in yes) CXXFLAGS="${CXXFLAGS} -Wall" CFLAGS="${CFLAGS} -Wall" ;; all) CXXFLAGS="${CXXFLAGS} -Wall -pedantic -ansi" CFLAGS="${CFLAGS} -Wall -pedantic -ansi" ;; no) ;; *) AC_MSG_ERROR(bad value ${enableval} for --enable-warnings) ;; esac ], [ # Default value if the argument was not given CXXFLAGS="${CXXFLAGS} -Wall" CFLAGS="${CFLAGS} -Wall" ]) dnl For gcc >= 3.4.x, specifically enable the new warning switch dnl -Wdeclaration-after-statement in order to preserve source code dnl compatibility to gcc 2.95 and other compilers. GCC_VERSION=`${CC} -dumpversion` if test `echo ${GCC_VERSION} | cut -d. -f1` -ge 3; then # This is gcc >= 3.x.x if test `echo ${GCC_VERSION} | cut -d. -f2` -ge 4; then # This is gcc >= 3.4.x CFLAGS="${CFLAGS} -Wdeclaration-after-statement" fi fi dnl For enabling error on warnings AC_ARG_ENABLE(error-on-warning, [ --enable-error-on-warning treat all compile warnings as errors, default=no], [case "${enableval}" in yes) CXXFLAGS="${CXXFLAGS} -Werror" CFLAGS="${CFLAGS} -Werror" ;; no) ;; *) AC_MSG_ERROR(bad value ${enableval} for --enable-error-on-warning) ;; esac ], [ # Default value if the argument was not given CXXFLAGS="${CXXFLAGS}" CFLAGS="${CFLAGS}" ]) fi ]) pcsc-cyberjack-3.99.5final.sp05/m4/as-scrub-include.m4000066400000000000000000000020141231776762100222370ustar00rootroot00000000000000dnl as-scrub-include.m4 0.0.1 dnl autostars m4 macro for scrubbing CFLAGS of system include dirs dnl because gcc 3.x complains about including system including dirs dnl dnl thomas@apestaart.org dnl dnl This macro uses output of cpp -v and expects it to contain text that dnl looks a little bit like this: dnl #include <...> search starts here: dnl /usr/local/include dnl /usr/lib/gcc-lib/i386-redhat-linux/3.2/include dnl /usr/include dnl End of search list. dnl AS_SCRUB_INCLUDE(VAR) dnl example dnl AS_SCRUB_INCLUDE(CFLAGS) dnl will remove all system include dirs from the given CFLAGS AC_DEFUN([AS_SCRUB_INCLUDE], [ GIVEN_CFLAGS=$[$1] INCLUDE_DIRS=`echo | cpp -v 2>&1` dnl remove everything from this output between the "starts here" and "End of" dnl line INCLUDE_DIRS=`echo $INCLUDE_DIRS | sed -e 's/.*<...> search starts here://' | sed -e 's/End of search list.*//'` for dir in $INCLUDE_DIRS; do GIVEN_CFLAGS=$(echo $GIVEN_CFLAGS | sed -e "s;-I$dir ;;" | sed -e "s;-I$dir$;;") done [$1]=$GIVEN_CFLAGS ]) pcsc-cyberjack-3.99.5final.sp05/m4/fox.m4000066400000000000000000000053731231776762100177060ustar00rootroot00000000000000# $Id: fox.m4,v 1.4 2006/01/18 09:44:19 cstim Exp $ # (c) 2009 Martin Preuss # These functions search for FOX AC_DEFUN([AQ_CHECK_FOX],[ dnl PREREQUISITES: dnl AQ_CHECK_OS must be called before this dnl IN: dnl All variables which already have a value will not be altered dnl OUT: dnl Variables: dnl have_fox - set to "yes" if FOX exists dnl fox_includes - path to includes dnl fox_libs - path to libraries dnl Defines: dnl HAVE_FOX AC_MSG_CHECKING(if FOX is allowed) AC_ARG_ENABLE(fox, [ --enable-fox enable fox (default=yes)], enable_fox="$enableval", enable_fox="yes") AC_MSG_RESULT($enable_fox) if test "$enable_fox" = "no"; then fox_libs="" fox_includes="" have_fox="no" else dnl paths for fox includes AC_MSG_CHECKING(for fox includes) AC_ARG_WITH(fox-includes, [ --with-fox-includes=DIR uses fox includes from given dir], [local_fox_includes="$withval"], [local_fox_includes="\ /usr/include/fox-1.6 \ /usr/local/include/fox-1.6 \ /opt/fox-1.6/include \ " ] ) if test -z "$fox_includes"; then for i in $local_fox_includes; do if test -z "$fox_includes"; then if test -f "$i/fxver.h"; then fox_includes="-I$i" break; fi fi done fi if test -n "$fox_includes"; then AC_MSG_RESULT($fox_includes) else AC_MSG_RESULT(not found) fi # Check for x86_64 architecture; potentially set lib-directory suffix if test "$target_cpu" = "x86_64"; then libdirsuffix="64" else libdirsuffix="" fi dnl paths for fox libs AC_MSG_CHECKING(for fox libraries) AC_ARG_WITH(fox-libs, [ --with-fox-libs=SPEC uses given fox libs ], [fox_libs="$withval"], [ AC_LANG(C++) SAVED_LDFLAGS=$LDFLAGS SAVED_CXXFLAGS=$CXXFLAGS LDFLAGS="$LDFLAGS -lFOX-1.6" CXXFLAGS="$CXXFLAGS $fox_includes" AC_LINK_IFELSE( [AC_LANG_PROGRAM([#include ], [FX::FXDate dummy])], [fox_libs="-lFOX-1.6"]) LDFLAGS=$SAVED_LDFLAGS CXXFLAGS=$SAVED_CXXFLAGS ] ) if test -z "$fox_libs"; then AQ_SEARCH_FOR_PATH([$qt_searchname],[$local_fox_libs]) if test -n "$found_dir" ; then fox_libs="-L$found_dir -lFOX-1.6" test "$OSYSTEM" = "freebsd" && \ fox_libs="$fox_libs" fi fi if test -n "$fox_libs"; then AC_MSG_RESULT($fox_libs) else AC_MSG_RESULT(not found) fi # check if all necessary fox components where found if test -z "$fox_includes" || \ test -z "$fox_libs"; then fox_libs="" fox_includes="" have_fox="no" else have_fox="yes" AC_DEFINE(HAVE_FOX, 1, [whether FOX is available]) fi dnl end of if "$enable_fox" fi AS_SCRUB_INCLUDE(fox_includes) AC_SUBST(fox_libs) AC_SUBST(fox_includes) ]) pcsc-cyberjack-3.99.5final.sp05/m4/libsysfs.m4000066400000000000000000000017171231776762100207460ustar00rootroot00000000000000AC_DEFUN([AC_LIBSYSFS], [ dnl searches for libusysfs dnl IN: dnl nothing dnl OUT: dnl Variables: dnl libsysfs_libs : stuff for LDFLAGS (or LIBADD) dnl libsysfs_includes : includes (for CFLAGS) dnl have_libsysfs : "yes" if libsysfs is supported have_libsysfs="no" libsysfs_libs="" libsysfs_includes="" AC_CHECK_HEADER([sysfs/libsysfs.h], [ AC_CHECK_LIB(sysfs,sysfs_get_mnt_path,[ have_libsysfs="yes" libsysfs_libs="-lsysfs" AC_SUBST(libsysfs_libs) AC_SUBST(libsysfs_includes) ],AC_MSG_RESULT([libsysfs not found.])) ], [AC_MSG_RESULT([sysfs/libsysfs.h not found.])]) if test "x$have_libsysfs" = "xyes"; then AC_CHECK_MEMBERS([struct sysfs_driver.attrlist], [HAVE_SYSFS2="yes"], [], [#include ]) if test "x$HAVE_SYSFS2" = "xyes"; then AC_DEFINE_UNQUOTED(HAVE_SYSFS2, 1, [whether sysfs2 is available]) fi fi ]) pcsc-cyberjack-3.99.5final.sp05/m4/libusb.m4000066400000000000000000000034631231776762100203700ustar00rootroot00000000000000# $Id: libusb.m4 31 2005-01-26 00:54:58Z aquamaniac $ # (c) 2002 Martin Preuss # This function checks for libusb AC_DEFUN([AC_LIBUSB], [ dnl searches for libusb dnl Arguments: none dnl Returns: libusb_dir dnl libusb_libs dnl libusb_includes dnl have_libusb AC_MSG_CHECKING(if libusb support desired) AC_ARG_ENABLE(libusb, [ --enable-libusb enable libusb support (default=yes)], enable_libusb="$enableval", enable_libusb="yes") AC_MSG_RESULT($enable_libusb) have_libusb="no" libusb_dir="" libusb_libs="" libusb_includes="" if test "$enable_libusb" != "no"; then AC_MSG_CHECKING(for libusb) AC_ARG_WITH(libusb-dir, [ --with-libusb-dir=DIR uses libusb from given dir], [lcc_dir="$withval"], [lcc_dir="${prefix} \ /usr/local \ /usr \ /"]) for li in $lcc_dir; do if test -x "$li/bin/libusb-config"; then libusb_dir="$li"; break fi done if test -z "$libusb_dir"; then AC_MSG_RESULT([not found ]) else AC_MSG_RESULT($libusb_dir) AC_MSG_CHECKING(for USB libs) if test -n "${LIBUSB_LIBS}"; then libusb_libs="${LIBUSB_LIBS}" else libusb_libs="`$libusb_dir/bin/libusb-config --libs`" fi AC_MSG_RESULT($libusb_libs) AC_MSG_CHECKING(for USB includes) if test -n "${LIBUSB_INCLUDES}"; then libusb_includes="${LIBUSB_INCLUDES}" else libusb_includes="`$libusb_dir/bin/libusb-config --cflags`" fi if test -z "$libusb_includes"; then AC_MSG_RESULT([]) else AC_MSG_RESULT($libusb_includes) fi have_libusb="yes" fi dnl end of "if enable-libusb" fi AC_SUBST(libusb_dir) AC_SUBST(libusb_libs) AC_SUBST(libusb_includes) ]) pcsc-cyberjack-3.99.5final.sp05/m4/libxml2.m4000066400000000000000000000045741231776762100204650ustar00rootroot00000000000000# $Id: xml2.m4,v 1.4 2006/01/18 09:44:19 cstim Exp $ # (c) 2009 Martin Preuss # These functions search for FOX AC_DEFUN([AQ_CHECK_XML2],[ dnl PREREQUISITES: dnl AQ_CHECK_OS must be called before this dnl IN: dnl All variables which already have a value will not be altered dnl OUT: dnl Variables: dnl have_xml2 - set to "yes" if XML2 exists dnl libxml2_includes - path to includes dnl libxml2_libs - path to libraries dnl Defines: dnl HAVE_XML2 AC_MSG_CHECKING(if XML2 is allowed) AC_ARG_ENABLE(xml2, [ --enable-xml2 enable xml2 (default=yes)], enable_xml2="$enableval", enable_xml2="yes") AC_MSG_RESULT($enable_xml2) if test "$enable_xml2" = "no"; then libxml2_libs="" libxml2_includes="" have_xml2="no" else dnl paths for xml2 includes AC_MSG_CHECKING(for xml2 includes) AC_ARG_WITH(xml2-includes, [ --with-xml2-includes=DIR uses xml2 includes from given dir], [local_libxml2_includes="$withval"], [local_libxml2_includes="\ /usr/include/libxml2 \ /usr/local/include/libxml2 \ /opt/libxml2/include \ " ] ) if test -z "$libxml2_includes"; then for i in $local_libxml2_includes; do if test -z "$libxml2_includes"; then if test -f "$i/libxml/tree.h"; then libxml2_includes="-I$i" break; fi fi done fi if test -n "$libxml2_includes"; then AC_MSG_RESULT($libxml2_includes) else AC_MSG_RESULT(not found) fi # Check for x86_64 architecture; potentially set lib-directory suffix if test "$target_cpu" = "x86_64"; then libdirsuffix="64" else libdirsuffix="" fi dnl paths for xml2 libs AC_MSG_CHECKING(for xml2 libraries) AC_ARG_WITH(xml2-libs, [ --with-xml2-libs=SPEC uses given xml2 libs ], [libxml2_libs="$withval"], [libxml2_libs=""] ) if test -z "$libxml2_libs"; then libxml2_libs="-lxml2" fi if test -n "$libxml2_libs"; then AC_MSG_RESULT($libxml2_libs) else AC_MSG_RESULT(not found) fi # check if all necessary xml2 components where found if test -z "$libxml2_includes" || \ test -z "$libxml2_libs"; then libxml2_libs="" libxml2_includes="" have_xml2="no" else have_xml2="yes" AC_DEFINE(HAVE_LIBXML2, 1, [whether XML2 is available]) fi dnl end of if "$enable_xml2" fi AS_SCRUB_INCLUDE(libxml2_includes) AC_SUBST(libxml2_libs) AC_SUBST(libxml2_includes) ]) pcsc-cyberjack-3.99.5final.sp05/m4/ltsugar.m4000066400000000000000000000104241231776762100205640ustar00rootroot00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) pcsc-cyberjack-3.99.5final.sp05/m4/os.m4000066400000000000000000000057641231776762100175370ustar00rootroot00000000000000# $Id: os.m4 601 2004-11-19 22:27:24Z aquamaniac $ # (c) 2002 Martin Preuss # These functions guess your operation system AC_DEFUN([AQ_CHECK_OS],[ dnl IN: dnl - AC_CANONICAL_SYSTEM muste be called before dnl OUT: dnl Variables: dnl OSYSTEM: Short name of your system (subst) dnl OS_TYPE: either "posix" or "windows" (subst) dnl MAKE_DLL_TARGET: under windows this is set to "dll" (subst) dnl INSTALL_DLL_TARGET: under Windows this is set to "dll-install" (subst) dnl Defines: dnl OS_NAME: full name of your system dnl OS_SHORTNAME: short name of your system dnl Depending on your system one of the following is defined in addition: dnl OS_LINUX, OS_OPENBSD, OS_FREEBSD, OS_BEOS, OS_WIN32 # check for OS AC_MSG_CHECKING([target system type]) OSYSTEM="" OS_TYPE="" MAKE_DLL_TARGET="" INSTALL_DLL_TARGET="" AC_DEFINE_UNQUOTED(OS_NAME,"$target", [target system]) case "$target" in *-linux*) OSYSTEM="linux" AC_DEFINE(OS_LINUX,1,[if linux is used]) AC_DEFINE(OS_POSIX,1,[if this is a POSIX system]) OS_TYPE="posix" ;; *-solaris*) OSYSTEM="solaris" AC_DEFINE(OS_SOLARIS,1,[if Solaris is used]) AC_DEFINE(OS_POSIX,1,[if this is a POSIX system]) OS_TYPE="posix" ;; *-darwin*) OSYSTEM="osx" AC_DEFINE(OS_DARWIN,1,[if Apple Darwin is used]) AC_DEFINE(OS_POSIX,1,[if this is a POSIX system]) OS_TYPE="posix" ;; *-openbsd*) OSYSTEM="openbsd" AC_DEFINE(OS_OPENBSD,1,[if OpenBSD is used]) AC_DEFINE(OS_POSIX,1,[if this is a POSIX system]) OS_TYPE="posix" ;; *-freebsd*) OSYSTEM="freebsd" AC_DEFINE(OS_FREEBSD,1,[if FreeBSD is used]) AC_DEFINE(OS_POSIX,1,[if this is a POSIX system]) OS_TYPE="posix" ;; *-netbsd*) OSYSTEM="netbsd" AC_DEFINE(OS_NETBSD,1,[if NetBSD is used]) AC_DEFINE(OS_POSIX,1,[if this is a POSIX system]) OS_TYPE="posix" ;; *-beos*) OSYSTEM="beos" AC_DEFINE(OS_BEOS,1,[if BeOS is used]) AC_DEFINE(OS_POSIX,1,[if this is a POSIX system]) OS_TYPE="posix" ;; *-win32*) OSYSTEM="windows" AC_DEFINE(OS_WIN32,1,[if WIN32 is used]) OS_TYPE="windows" AC_DEFINE_UNQUOTED(BUILDING_DLL,1,[if DLL is to be built]) MAKE_DLL_TARGET="dll" INSTALL_DLL_TARGET="dll-install" ;; *-mingw32*) OSYSTEM="windows" AC_DEFINE(OS_WIN32,1,[if WIN32 is used]) OS_TYPE="windows" AC_DEFINE_UNQUOTED(BUILDING_DLL,1,[if DLL is to be built]) MAKE_DLL_TARGET="dll" INSTALL_DLL_TARGET="dll-install" ;; *-palmos*) OSYSTEM="palmos" AC_DEFINE(OS_PALMOS,1,[if PalmOS is used]) OS_TYPE="palmos" ;; *) AC_MSG_WARN([Sorry, but target $target is not supported. Please report if it works anyway. We will assume that your system is a posix system and continue.]) OSYSTEM="unknown" OS_TYPE="posix" AC_DEFINE(OS_POSIX,1,[if this is a POSIX system]) ;; esac AC_SUBST(OSYSTEM) AC_DEFINE_UNQUOTED(OS_SHORTNAME,"$OSYSTEM",[target system]) AC_SUBST(OS_TYPE) AC_DEFINE_UNQUOTED(OS_TYPE,"$OS_TYPE",[system type]) AC_SUBST(MAKE_DLL_TARGET) AC_SUBST(INSTALL_DLL_TARGET) AC_MSG_RESULT($OS_TYPE) ]) pcsc-cyberjack-3.99.5final.sp05/m4/pcsc.m4000066400000000000000000000061431231776762100200360ustar00rootroot00000000000000# pcsc.m4 # (c) 2010 Martin Preuss # This function checks if PC/SC is wanted AC_DEFUN([AQ_CHECK_PCSC],[ dnl PREREQUISITES: dnl - AQ_CHECK_OS must becalled before dnl IN: dnl nothing dnl OUT: dnl Variables: dnl pcsc_libraries: Path to the PC/SC libraries dnl pcsc_lib: PC/SC libraries to link against dnl pcsc_includes: Path to the PC/SC includes dnl have_pcsc: "yes" if pc/sc is available dnl Defines: if test "$OSYSTEM" = "windows" ; then pcsc_libraries="" pcsc_lib="-lwinscard" have_pcsc="yes" elif test "$OSYSTEM" = "osx" ; then AC_MSG_CHECKING(for pcsc includes) pcsc_includes="-I/System/Library/Frameworks/PCSC.framework/Headers" AC_MSG_RESULT($pcsc_includes) AC_MSG_CHECKING(for pcsc libs) pcsc_libraries="" pcsc_lib="-framework PCSC" AC_MSG_RESULT($pcsc_libraries ${pcsc_lib}) have_pcsc="yes" else AC_MSG_CHECKING(if PC/SC should be used) AC_ARG_ENABLE(pcsc, [ --enable-pcsc enable PC/SC driver (default=yes)], enable_pcsc="$enableval", enable_pcsc="yes") AC_MSG_RESULT($enable_pcsc) if test "$enable_pcsc" != "no"; then dnl ******* pcsc includes *********** AC_MSG_CHECKING(for pcsc includes) AC_ARG_WITH(pcsc-includes, [ --with-pcsc-includes=DIR adds pcsc include path], [pcsc_search_inc_dirs="$withval"], [pcsc_search_inc_dirs="/usr/include\ /usr/local/include\ /usr/local/pcsc/include\ /usr/pcsc/include\ "]) dnl search for pcsc AQ_SEARCH_FOR_PATH([PCSC/winscard.h],[$pcsc_search_inc_dirs]) if test -n "$found_dir" ; then pcsc_includes="-I$found_dir -I$found_dir/PCSC" fi AC_MSG_RESULT($pcsc_includes) dnl ******* pcsc lib *********** AC_MSG_CHECKING(for pcsc libs) AC_ARG_WITH(pcsc-libname, [ --with-pcsc-libname=NAME specify the name of the pcsc library], [pcsc_search_lib_names="$withval"], [pcsc_search_lib_names="libpcsclite.so \ libpcsclite.so.* \ libpcsc.a"]) AC_ARG_WITH(pcsc-libs, [ --with-pcsc-libs=DIR adds pcsc library path], [pcsc_search_lib_dirs="$withval"], [pcsc_search_lib_dirs="/usr/lib64 \ /usr/lib \ /usr/local/lib \ /usr/lib/pcsc/lib \ /usr/local/pcsc/lib \ /lib"]) dnl search for pcsc libs for d in $pcsc_search_lib_dirs; do AQ_SEARCH_FILES("$d",$pcsc_search_lib_names) if test -n "$found_file" ; then pcsc_libraries="-L$d" pcsc_lib="-l`echo $found_file | sed 's/lib//;s/\.so*//;s/\.a//'`" break fi done if test -z "$pcsc_libraries" -o -z "$pcsc_lib" -o -z "$pcsc_includes"; then AC_MSG_WARN([No pcsc libraries found using GNU m4, try pkg-config instead]) have_pcsc="no" else AC_MSG_RESULT($pcsc_libraries ${pcsc_lib}) have_pcsc="yes" fi # end of "if enable-pcsc" fi # end of "if linux" fi AC_SUBST(pcsc_includes) AC_SUBST(pcsc_libraries) AC_SUBST(pcsc_lib) ]) pcsc-cyberjack-3.99.5final.sp05/m4/searchfiles.m4000066400000000000000000000016611231776762100213760ustar00rootroot00000000000000# $Id: searchfiles.m4 945 2005-12-01 19:57:10Z aquamaniac $ # (c) 2002 Martin Preuss # These functions search for files AC_DEFUN([AQ_SEARCH_FOR_PATH],[ dnl searches for a file in a path dnl $1 = file to search dnl $2 = paths to search in dnl returns the directory where the file is found (found_dir) found_dir="" ls=$1 ld="$2" for li in $ld; do case "$OS_TYPE" in windows) fname="$li\\$ls" ;; *) fname="$li/$ls" ;; esac if test -r "$fname"; then found_dir="$li" break fi done ]) AC_DEFUN([AQ_SEARCH_FILES],[ dnl searches a dir for some files dnl $1 = path where to search dnl $2 = files to find dnl returns the name of the file found (found_file) found_file="" ls="$1" ld="$2" lf="" for li in $ld; do lf2="`ls -d ${ls}/${li} 2>/dev/null`" lf="$lf $lf2" done for li in $lf; do if test -r "$li"; then found_file=`basename "$li"` break fi done ]) pcsc-cyberjack-3.99.5final.sp05/m4/windoze.m4000066400000000000000000000231021231776762100205570ustar00rootroot00000000000000# $Id: windoze.m4 321 2004-04-28 14:49:36Z cstim $ # (c) 2004 Martin Preuss # These functions retrieve some important paths AC_DEFUN([AQ_WINDOZE_GETPATH], [ dnl IN: dnl - $1: type of path to get: dnl - windows: windows path dnl - system: windows/system directory dnl - home: users home directory dnl - $2: default value dnl OUT: dnl - aq_windoze_path: path retrieved dnl rm -f conf.winpath save_LIBS="${LIBS}" LIBS="${LIBS} -lshfolder" AC_TRY_RUN([ #include #include #include #include #include int main (){ char buffer[260]; const char *choice = "$1"; FILE *f; buffer[0]=0; if (strlen("$2")) { if (strlen("$2")>=sizeof(buffer)) { printf("path is too long ($2)\n"); exit(1); } strcpy(buffer, "$2"); } else { if (strcasecmp(choice, "windows")==0) { GetWindowsDirectory(buffer, sizeof(buffer)); } else if (strcasecmp(choice, "system")==0) { GetSystemDirectory(buffer, sizeof(buffer)); } else if (strcasecmp(choice, "home")==0) { GetWindowsDirectory(buffer, sizeof(buffer)); } else if (strcasecmp(choice, "program_files") == 0) { SHGetFolderPath(NULL, CSIDL_PROGRAM_FILES, NULL, 0, buffer); } else if (strcasecmp(choice, "common_appdata") == 0) { SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, buffer); } else { printf("Unknown type \"$1\"\n"); exit(1); } } f=fopen("conf.winpath", "w+"); if (!f) { printf("Could not create file conf.winpath\n"); exit(1); } fprintf(f, "%s", buffer); if (fclose(f)) { printf("Could not close file.\n"); exit(1); } exit(0); } ], [aq_windoze_path="`cat conf.winpath`"], [AC_MSG_ERROR(Could not determine path for $1)], [aq_windoze_path="$2"; AC_MSG_RESULT([Crosscompiling, assuming $2])] ) LIBS="${save_LIBS}" rm -f conf.winpath ]) AC_DEFUN([AQ_WINDOZE_GETPATH_MINGW], [ dnl IN: dnl - $1: type of path to get: dnl - windows: windows path dnl - system: windows/system directory dnl - home: users home directory dnl - $2: default value dnl OUT: dnl - aq_windoze_path: path retrieved dnl rm -f conf.winpath LIBS="${LIBS} -lshfolder" AC_TRY_RUN([ #include #include #include #include #include int main (){ char buffer[260]; char buffer2[260+2]; const char *choice = "$1"; char *p; char *tp; FILE *f; int lastWasSlash; buffer[0]=0; if (strlen("$2")) { if (strlen("$2")>=sizeof(buffer)) { printf("path is too long ($2)\n"); exit(1); } strcpy(buffer, "$2"); } else { if (strcasecmp(choice, "windows")==0) { GetWindowsDirectory(buffer, sizeof(buffer)); } else if (strcasecmp(choice, "system")==0) { GetSystemDirectory(buffer, sizeof(buffer)); } else if (strcasecmp(choice, "home")==0) { GetWindowsDirectory(buffer, sizeof(buffer)); } else if (strcasecmp(choice, "program_files") == 0) { SHGetFolderPath(NULL, CSIDL_PROGRAM_FILES, NULL, 0, buffer); } else if (strcasecmp(choice, "common_appdata") == 0) { SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, buffer); } else { printf("Unknown type \"$1\"\n"); exit(1); } } /* create mingw path */ tp=buffer2; p=buffer; if (strlen(buffer)>1) { if (buffer[1]==':') { *tp='/'; tp++; *tp=buffer[0]; tp++; p+=2; } } lastWasSlash=0; while(*p) { if (*p=='\\\\' || *p=='/') { if (!lastWasSlash) { *tp='/'; tp++; lastWasSlash=1; } } else { lastWasSlash=0; *tp=*p; tp++; } p++; } /* while */ *tp=0; f=fopen("conf.winpath", "w+"); if (!f) { printf("Could not create file conf.winpath\n"); exit(1); } fprintf(f, "%s", buffer2); if (fclose(f)) { printf("Could not close file.\n"); exit(1); } exit(0); } ], [aq_windoze_path=`cat conf.winpath`], [AC_MSG_ERROR(Could not determine path for $1)], [aq_windoze_path="$2"; AC_MSG_RESULT([Crosscompiling, assuming $2])] ) LIBS="${save_LIBS}" rm -f conf.winpath ]) AC_DEFUN([ACX_WINDOWS_PATHS],[ dnl IN: dnl - AC_CANONICAL_SYSTEM muste be called before dnl OUT: dnl Variables (subst): dnl WIN_PATH_HOME : path and name of the Windoze home folder dnl WIN_PATH_HOME_MINGW : path and name of the Windoze home folder dnl WIN_PATH_WINDOWS : path and name of the Windoze system folder dnl WIN_PATH_WINDOWS_MINGW : path and name of the Windoze system folder dnl WIN_PATH_SYSTEM : path and name of the Windoze folder dnl WIN_PATH_SYSTEM_MINGW : path and name of the Windoze folder dnl WIN_PATH_PROGRAM_FILES dnl WIN_PATH_PROGRAM_FILES_MINGW dnl WIN_PATH_COMMON_APPDATA dnl WIN_PATH_COMMON_APPDATA_MINGW dnl Defines: dnl WIN_PATH_HOME : path and name of the Windoze home folder dnl WIN_PATH_WINDOWS : path and name of the Windoze system folder dnl WIN_PATH_SYSTEM : path and name of the Windoze folder dnl WIN_PATH_PROGRAM_FILES : path of the program files folder dnl WIN_PATH_COMMON_APPDATA : The directory containing application data for all users # presets AC_ARG_WITH(home-path, [ --with-home-path=DIR specify the home directory for a user], [aq_windoze_path_home="$withval"]) AC_ARG_WITH(system-path, [ --with-system-path=DIR specify the system directory], [aq_windoze_path_system="$withval"]) AC_ARG_WITH(windows-path, [ --with-windows-path=DIR specify the windows directory], [aq_windoze_path_windows="$withval"]) # home directory AC_MSG_CHECKING([for windoze home path (program)]) AC_CACHE_VAL(gwenhywfar_cv_path_home, [ AQ_WINDOZE_GETPATH(home, [$aq_windoze_path_home]) gwenhywfar_cv_path_home="$aq_windoze_path" ]) WIN_PATH_HOME="$gwenhywfar_cv_path_home" AC_MSG_RESULT([$WIN_PATH_HOME]) AC_MSG_CHECKING([for windoze home path (mingw)]) AC_CACHE_VAL(gwenhywfar_cv_path_home_mingw, [ AQ_WINDOZE_GETPATH_MINGW(home, [$aq_windoze_path_home]) gwenhywfar_cv_path_home_mingw="$aq_windoze_path" ]) WIN_PATH_HOME_MINGW="$gwenhywfar_cv_path_home_mingw" AC_MSG_RESULT([$WIN_PATH_HOME_MINGW]) # windows directory AC_MSG_CHECKING([for windoze windows path (program)]) AC_CACHE_VAL(gwenhywfar_cv_path_windows, [ AQ_WINDOZE_GETPATH(windows, [$aq_windoze_path_windows]) gwenhywfar_cv_path_windows="$aq_windoze_path" ]) WIN_PATH_WINDOWS="$gwenhywfar_cv_path_windows" AC_MSG_RESULT([$WIN_PATH_WINDOWS]) AC_MSG_CHECKING([for windoze windows path (mingw)]) AC_CACHE_VAL(gwenhywfar_cv_path_windows_mingw, [ AQ_WINDOZE_GETPATH_MINGW(windows, [$aq_windoze_path_windows]) gwenhywfar_cv_path_windows_mingw="$aq_windoze_path" ]) WIN_PATH_WINDOWS_MINGW="$gwenhywfar_cv_path_windows_mingw" AC_MSG_RESULT([$WIN_PATH_WINDOWS_MINGW]) # windows system directory AC_MSG_CHECKING([for windoze system path (program)]) AC_CACHE_VAL(gwenhywfar_cv_path_system, [ AQ_WINDOZE_GETPATH(system, [$aq_windoze_path_system]) gwenhywfar_cv_path_system="$aq_windoze_path" ]) WIN_PATH_SYSTEM="$gwenhywfar_cv_path_system" AC_MSG_RESULT([$WIN_PATH_SYSTEM]) AC_MSG_CHECKING([for windoze system path (mingw)]) AC_CACHE_VAL(gwenhywfar_cv_path_system_mingw, [ AQ_WINDOZE_GETPATH_MINGW(system, [$aq_windoze_path_system]) gwenhywfar_cv_path_system_mingw="$aq_windoze_path" ]) WIN_PATH_SYSTEM_MINGW="$gwenhywfar_cv_path_system_mingw" AC_MSG_RESULT([$WIN_PATH_SYSTEM_MINGW]) # program files directory AC_MSG_CHECKING([for program files path (program)]) AC_CACHE_VAL(gwenhywfar_cv_path_programfiles, [ AQ_WINDOZE_GETPATH(program_files, [$aq_windoze_path_system]) gwenhywfar_cv_path_programfiles="$aq_windoze_path" ]) WIN_PATH_PROGRAM_FILES="$gwenhywfar_cv_path_programfiles" AC_MSG_RESULT([$WIN_PATH_PROGRAM_FILES]) AC_MSG_CHECKING([for program files path (mingw)]) AC_CACHE_VAL(gwenhywfar_cv_path_programfiles_mingw, [ AQ_WINDOZE_GETPATH_MINGW(program_files, [$aq_windoze_path_system]) gwenhywfar_cv_path_programfiles_mingw="$aq_windoze_path" ]) WIN_PATH_PROGRAM_FILES_MINGW="$gwenhywfar_cv_path_programfiles_mingw" AC_MSG_RESULT([$WIN_PATH_PROGRAM_FILES_MINGW]) # common application data directory AC_MSG_CHECKING([for common app data path (program)]) AC_CACHE_VAL(gwenhywfar_cv_path_commonappdata, [ AQ_WINDOZE_GETPATH(common_appdata, [$aq_windoze_path_system]) gwenhywfar_cv_path_commonappdata="$aq_windoze_path" ]) WIN_PATH_COMMON_APPDATA="$gwenhywfar_cv_path_commonappdata" AC_MSG_RESULT([$WIN_PATH_COMMON_APPDATA]) AC_MSG_CHECKING([for common app data path (mingw)]) AC_CACHE_VAL(gwenhywfar_cv_path_commonappdata_mingw, [ AQ_WINDOZE_GETPATH_MINGW(common_appdata, [$aq_windoze_path_system]) gwenhywfar_cv_path_commonappdata_mingw="$aq_windoze_path" ]) WIN_PATH_COMMON_APPDATA_MINGW="$gwenhywfar_cv_path_commonappdata_mingw" AC_MSG_RESULT([$WIN_PATH_COMMON_APPDATA_MINGW]) # finish variables AC_SUBST(WIN_PATH_HOME) AC_DEFINE_UNQUOTED(WIN_PATH_HOME, "$WIN_PATH_HOME", [home path]) AC_SUBST(WIN_PATH_HOME_MINGW) AC_SUBST(WIN_PATH_WINDOWS) AC_DEFINE_UNQUOTED(WIN_PATH_WINDOWS, "$WIN_PATH_WINDOWS", [windows path]) AC_SUBST(WIN_PATH_WINDOWS_MINGW) AC_SUBST(WIN_PATH_SYSTEM) AC_DEFINE_UNQUOTED(WIN_PATH_SYSTEM, "$WIN_PATH_SYSTEM", [system path]) AC_SUBST(WIN_PATH_SYSTEM_MINGW) AC_SUBST(WIN_PATH_PROGRAM_FILES) AC_DEFINE_UNQUOTED(WIN_PATH_PROGRAM_FILES, "$WIN_PATH_PROGRAM_FILES", [program files path]) AC_SUBST(WIN_PATH_PROGRAM_FILES_MINGW) AC_SUBST(WIN_PATH_COMMON_APPDATA) AC_DEFINE_UNQUOTED(WIN_PATH_COMMON_APPDATA, "$WIN_PATH_COMMON_APPDATA", [common app data path]) AC_SUBST(WIN_PATH_COMMON_APPDATA_MINGW) ]) pcsc-cyberjack-3.99.5final.sp05/missing000077500000000000000000000241521231776762100177230ustar00rootroot00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2012-01-06.13; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # 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 2, 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 . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: pcsc-cyberjack-3.99.5final.sp05/tools/000077500000000000000000000000001231776762100174605ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/tools/Makefile.am000066400000000000000000000003421231776762100215130ustar00rootroot00000000000000DIST_SUBDIRS=cjflash cjgeldkarte cyberjack cjBingo fxcyberjack fox-dialog mac-ui-helper if WITH_FOX fox_subdirs=fxcyberjack endif if ENABLE_NONSERIAL SUBDIRS=cyberjack $(fox_subdirs) else SUBDIRS=$(fox_subdirs) endif pcsc-cyberjack-3.99.5final.sp05/tools/cjBingo/000077500000000000000000000000001231776762100210335ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/tools/cjBingo/Makefile.am000066400000000000000000000003411231776762100230650ustar00rootroot00000000000000INCLUDES=-I../../include -I../../cjeca32 DEFS+=@cyberjack_platform_def@ bin_PROGRAMS=cjBingoTest cjBingoTest_SOURCES=\ cjBingoTest.cpp \ cjBingo.cpp cjBingoTest_LDADD=../../cjeca32/libeca.la @libusb_libs@ @THREAD_LIBS@ pcsc-cyberjack-3.99.5final.sp05/tools/cjBingo/cjBingo.cpp000066400000000000000000000077451231776762100231270ustar00rootroot00000000000000 #include "stdafx.h" #include "Reader.h" #include "eca_defines.h" #include #include "BingoError.h" #include "cjBingo.h" static uint32_t m_ulLastError=0; static CReader *m_pReader=NULL; RNDG_RESULT RNDGeneratorInit(uint16_t port) { char *devName; int rv; m_ulLastError=0; devName=CUSBLinux::createDeviceName(port); if (devName==NULL) return RNDG_READER_NOT_FOUND; m_pReader=new CReader(devName); rv=m_pReader->Connect(); if (rv!=CJ_SUCCESS) { delete m_pReader; m_pReader=NULL; return RNDG_READER_BUSY; } return RNDG_SUCCESS; } RNDG_RESULT RNDGeneratorClose(void) { m_ulLastError=0; if(m_pReader) { m_pReader->Disonnect(); delete m_pReader; m_pReader=NULL; } return RNDG_SUCCESS; } uint32_t RNDGetLastError(void) { return m_ulLastError; } static bool IsLittleEndian(void) { if(htons(0x1234)!=0x1234) return true; return false; } static uint16_t InversByteOrderShort(uint16_t Value) { return (Value << 8) | (Value >> 8); } static uint32_t InversByteOrderLong(uint32_t Value) { return (((uint32_t)InversByteOrderShort((uint16_t)Value)) << 16) | ((uint32_t)InversByteOrderShort((uint16_t)(Value >> 16))); } static uint64_t InversByteOrderLongLong(uint64_t Value) { return (((uint64_t)InversByteOrderLong((uint32_t)Value)) << 32) | ((uint64_t)InversByteOrderShort((uint32_t)(Value >> 32))); } static uint16_t HostToReaderShort(uint16_t Value) { return InversByteOrderShort(htons(Value)); } static uint32_t HostToReaderLong(uint32_t Value) { return InversByteOrderLong(htonl(Value)); } static uint64_t HostToReaderLongLong(uint64_t Value) { if(IsLittleEndian()) return Value; return InversByteOrderLongLong(Value); } static uint16_t ReaderToHostShort(uint16_t Value) { return HostToReaderShort(Value); } static uint32_t ReaderToHostLong(uint32_t Value) { return HostToReaderLong(Value); } static uint64_t ReaderToHostLongLong(uint64_t Value) { return HostToReaderLongLong(Value); } static RNDG_RESULT ExecuteReaderFunction(uint16_t Function,uint8_t *InputData, uint32_t InputLen,uint8_t *ResponseData, uint32_t *ResponseLen) { uint32_t Result=0; uint8_t InternalErrorData[4]; uint32_t InternalErrorLen=sizeof(InternalErrorData); if(m_pReader==NULL) return RNDG_READER_NOT_CONNECTED; if(m_pReader->CtApplicationDataEx(MODULE_ID_BINGO_VOTING,Function,InputData,InputLen,&Result, ResponseData,ResponseLen,InternalErrorData, &InternalErrorLen)!=CJ_SUCCESS) { RNDGeneratorClose(); return RNDG_COMMUNICATION_ERROR; } if(InternalErrorLen!=0 && InternalErrorLen!=4) { if(ResponseLen) *ResponseLen=0; RNDGeneratorClose(); return RNDG_PROTOCOL_ERROR; } if(InternalErrorLen==4) { if(ResponseLen) { if(*ResponseLen!=0) { *ResponseLen=0; return RNDG_PROTOCOL_ERROR; } } } if(InternalErrorLen==4) { if(ResponseLen) *ResponseLen=0; memcpy(&m_ulLastError,InternalErrorData,sizeof(m_ulLastError)); m_ulLastError=ReaderToHostLong(m_ulLastError); return RNDG_EXT_ERROR; } return RNDG_SUCCESS; } RNDG_RESULT RNDGeneratorInternalAutheticate(uint64_t RND_IFD, uint8_t *Signuture) { uint32_t ResponseLen=128; m_ulLastError=0; return ExecuteReaderFunction(0,(uint8_t *)&RND_IFD, sizeof(RND_IFD),Signuture,&ResponseLen); } RNDG_RESULT RNDGeneratorGenerateRND(int count,uint64_t *RNDs) { RNDG_RESULT Result; uint32_t ResponseLen=count*8; uint8_t Input=(uint8_t) count; m_ulLastError=0; Result=ExecuteReaderFunction(1,&Input,sizeof(Input),(uint8_t *)RNDs,&ResponseLen); if(Result==RNDG_SUCCESS) { while(count) { count--; RNDs[count]=ReaderToHostLongLong(RNDs[count]); } } return Result; } RNDG_RESULT RNDGeneratorShowLastRNDs(void) { RNDG_RESULT Result; m_ulLastError=0; Result=ExecuteReaderFunction(2,NULL,0,NULL,NULL); if(Result==RNDG_EXT_ERROR) { if(m_ulLastError==ERROR_USER_TIMEOUT) { m_ulLastError=0; return RNDG_TIMEOUT; } if(m_ulLastError==ERROR_USER_ABORT) { m_ulLastError=0; return RNDG_ABORT; } } return Result; } pcsc-cyberjack-3.99.5final.sp05/tools/cjBingo/cjBingo.h000066400000000000000000000025171231776762100225640ustar00rootroot00000000000000#ifndef CJBINGO_H #define CJBINGO_H typedef enum { RNDG_SUCCESS, RNDG_TIMEOUT, RNDG_ABORT, RNDG_COMMUNICATION_ERROR, RNDG_EXT_ERROR, RNDG_PROTOCOL_ERROR, RNDG_READER_NOT_FOUND, RNDG_READER_BUSY, RNDG_READER_NOT_CONNECTED }RNDG_RESULT; /*Initialisation of the RND-Generator API and connecting the Device*/ RNDG_RESULT RNDGeneratorInit(uint16_t port); /*Disconnecting the Device and closing the API */ RNDG_RESULT RNDGeneratorClose(void); /*Getting extended error information, if a function returns with RNDG_EXT_ERROR*/ uint32_t RNDGetLastError(void); /*Checking the authentication of the random generator In the first release the signature will be a cryptogram calculated by the device as 3DES_ENC(RND_IFD). The synchrones 3DES - key has to be stored in a secure environment. In later releases the signature can be calculated with RSA2048 by the security - module (the signature card).*/ RNDG_RESULT RNDGeneratorInternalAutheticate(uint64_t RND_IFD, uint8_t *Signuture); /*Generation of the random numbers. In future releases the numbers can be secured by a cryptogram or a signature and additionally encrypted*/ RNDG_RESULT RNDGeneratorGenerateRND(int count,uint64_t *RNDs); /*Showing the last generated numbers on the display of the device*/ RNDG_RESULT RNDGeneratorShowLastRNDs(void); #endif pcsc-cyberjack-3.99.5final.sp05/tools/cjBingo/cjBingoTest.cpp000066400000000000000000000035231231776762100237550ustar00rootroot00000000000000 #include "stdafx.h" #include "Reader.h" #include "eca_defines.h" #include #include #include "cjBingo.h" static RNDG_RESULT CheckResult(RNDG_RESULT Value) { switch(Value) { case RNDG_TIMEOUT: printf("User timeout\n"); break; case RNDG_ABORT: printf("Abort by user\n"); break; case RNDG_COMMUNICATION_ERROR: printf("Communication error\n"); exit(1); break; case RNDG_EXT_ERROR: printf("Error code: %08X\n",(unsigned int)RNDGetLastError()); break; case RNDG_PROTOCOL_ERROR: printf("Protocol error\n"); exit(2); break; case RNDG_READER_NOT_FOUND: printf("Reader not found\n"); exit(3); break; case RNDG_READER_BUSY: printf("Reader busy\n"); exit(4); break; case RNDG_READER_NOT_CONNECTED: printf("Reader is not connected\n"); exit(5); break; default:; } return Value; } int main(int argc, char **argv) { int idx; uint8_t Signature[128]; time_t t; int input; int i; uint64_t RNDs[64]; if (argc<2) { fprintf(stderr, "Usage:\n %s READERNR\n", argv[0]); return 1; } idx=atoi(argv[1]); CheckResult(RNDGeneratorInit((uint16_t)idx)); t=time(NULL); if(CheckResult(RNDGeneratorInternalAutheticate((uint64_t)t,Signature))!=RNDG_SUCCESS) { printf("Error internal authentication\n"); exit(6); } for(;;) { printf("[Count] Generate --- [-1] Show last --- [-2] Exit ? "); scanf("%d",&input); if(input==-2) break; else if(input==-1) CheckResult(RNDGeneratorShowLastRNDs()); else { if(CheckResult(RNDGeneratorGenerateRND(input,RNDs))==RNDG_SUCCESS) { printf("\n"); for(i=0;i>20) & 0x000fffff),(unsigned int)(RNDs[i] & 0x000fffff)); if(((i+1)%4)==0) printf("\n"); } printf("\n"); } } } return 0; } pcsc-cyberjack-3.99.5final.sp05/tools/cjflash/000077500000000000000000000000001231776762100210725ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/tools/cjflash/Makefile.am000066400000000000000000000004251231776762100231270ustar00rootroot00000000000000INCLUDES=-I../../include -I../../cjeca32 -I../../include/driver -I../../include/firmware $(pcsc_includes) DEFS+=@cyberjack_platform_def@ bin_PROGRAMS=cjflash cjflash_SOURCES=cjflash.cpp cjflash_LDADD=../../cjeca32/libeca.la @libusb_libs@ $(hal_libs) @THREAD_LIBS@ -lstdc++ pcsc-cyberjack-3.99.5final.sp05/tools/cjflash/cjflash.cpp000066400000000000000000000071231231776762100232130ustar00rootroot00000000000000 #include "Platform.h" #include "Reader.h" #include "USBUnix.h" #include "eca_defines.h" #include int readFile(const char *fname, uint8_t *buffer) { FILE *f; uint8_t *p; int len; f=fopen(fname, "r"); if (f==NULL) return -1; p=buffer; len=0; while(!feof(f)) { int rv; rv=fread(p, 1, 1024, f); if (rv==0) break; p+=rv; len+=rv; } fclose(f); return len; } int main(int argc, char **argv) { CReader *r; int idx; char *devName; const char *fname1; const char *fname2; const char *fname3; uint8_t buffer1[64*1024]; uint8_t buffer2[64*1024]; uint8_t buffer3[64*1024]; int len1; int len2; int len3; int rv; uint32_t result; cj_ModuleInfo ModuleInfo; uint32_t EstimatedUpdateTime; if (argc<5) { fprintf(stderr, "Usage:\n %s READERNR IMAGEFILE SIGNATUREFILE KEYFILE\n", argv[0]); return 1; } idx=atoi(argv[1]); fname1=argv[2]; fname2=argv[3]; fname3=argv[4]; fprintf(stderr, "Reading image file\n"); len1=readFile(fname1, buffer1); if (len1<1) { fprintf(stderr, "Error reading file \"%s\"\n", fname1); return 2; } fprintf(stderr, "Reading signature file\n"); len2=readFile(fname2, buffer2); if (len2<1) { fprintf(stderr, "Error reading file \"%s\"\n", fname2); return 2; } fprintf(stderr, "Reading key file\n"); len3=readFile(fname3, buffer3); if (len3<1) { fprintf(stderr, "Error reading file \"%s\"\n", fname3); return 2; } fprintf(stderr, "Opening reader\n"); devName=CUSBUnix::createDeviceName(idx); if (devName==NULL) { fprintf(stderr, "Device %d not found\n", idx); return 2; } if (getenv("CJFLASH_DEBUG")) Debug.setLevelMask(0xffffffff); r=new CReader(devName); rv=r->Connect(); if (rv!=CJ_SUCCESS) { fprintf(stderr, "Could not connect to reader (%d)\n", rv); return 2; } fprintf(stderr, "Updating the keys\n"); rv=r->CtKeyUpdate(buffer3, len3,&result); if (rv!=CJ_SUCCESS) { fprintf(stderr, "Unable to update the keys (%d / %d)\n", rv,result); return 2; } ModuleInfo.SizeOfStruct=sizeof(ModuleInfo); rv=r->CtGetModuleInfoFromFile(buffer1, len1, &ModuleInfo, &EstimatedUpdateTime); if (rv!=CJ_SUCCESS) { fprintf(stderr, "Unable to get module info (%d)\n", rv); return 2; } if(ModuleInfo.ID==MODULE_ID_KERNEL){ /* for kernel updates we need the entire flash */ fprintf(stderr, "Updating the kernel module requires there is no " "other module on the reader.\n" "(please look at the display of " "the reader and press \"OK\")\n"); rv=r->CtDeleteALLModules(&result); if (rv!=CJ_SUCCESS) { fprintf(stderr, "Unable to flash reader (%d / %d)\n", rv,result); return 2; } } fprintf(stderr, "Flashing image (please look at the " "display of the reader and press \"OK\")\n"); rv=r->CtLoadModule(buffer1, len1, buffer2, len2, &result); if (rv!=CJ_SUCCESS) { fprintf(stderr, "Unable to flash reader (%d / %d)\n", rv,result); return 2; } fprintf(stderr, "Now the reader authentication is running.\n" "Please look at the reader for checking all " "versions and variants off the active modules\n"); rv=r->CtShowAuth(); if (rv!=CJ_SUCCESS) { fprintf(stderr, "Unable to show reader authentication (%d)\n", rv); return 2; } fprintf(stderr, "==========================================\n" "Reader sucessfully flashed!\n" "\n" "You might need to unplug and replug the reader.\n" "==========================================\n"); r->Disonnect(); delete r; free(devName); return 0; } pcsc-cyberjack-3.99.5final.sp05/tools/cjgeldkarte/000077500000000000000000000000001231776762100217375ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/tools/cjgeldkarte/Makefile.am000066400000000000000000000003461231776762100237760ustar00rootroot00000000000000INCLUDES=-I../../include -I../../ctapi DEFS+=@cyberjack_platform_def@ DEFS+=-DLIBRARY_NAME=\"libctapi-cyberjack.so.@CYBERJACK_SO_EFFECTIVE@\" bin_PROGRAMS=cjgeldkarte cjgeldkarte_SOURCES=cjgeldkarte.c cjgeldkarte_LDADD=-ldl pcsc-cyberjack-3.99.5final.sp05/tools/cjgeldkarte/cjgeldkarte.c000066400000000000000000000251351231776762100243700ustar00rootroot00000000000000/*************************************************************************** * CT-API library for the REINER SCT cyberJack pinpad/e-com USB. * Copyright (C) 2001 REINER SCT * Author: Matthias Bruestle * Support: support@reiner-sct.com * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * File: cjgeldkarte.c * CVS: $Id: cjgeldkarte.c 49 2007-01-09 19:55:23Z martin $ ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #define CT_API_AD_HOST 2 #define CT_API_RV_OK 0 #define CT_API_RV_ERR_INVALID -1 #define CT_API_RV_ERR_CT -8 #define CT_API_RV_ERR_TRANS -10 #define CT_API_RV_ERR_MEMORY -11 #define CT_API_RV_ERR_HOST -127 #define CT_API_RV_ERR_HTSI -128 #define CT_API_AD_CT 1 #define CT_API_AD_ICC1 0 /* Global function pointers. */ typedef signed char (*CT_INIT)( uint16_t ctn, uint16_t pn ); typedef signed char (*CT_DATA)( uint16_t ctn, uint8_t *dad, uint8_t *sad, uint16_t lenc, uint8_t *command, uint16_t *lenr, uint8_t *response ); typedef signed char (*CT_CLOSE)( uint16_t ctn ); static CT_INIT pCT_init = NULL; static CT_DATA pCT_data = NULL; static CT_CLOSE pCT_close = NULL; #define CT_init pCT_init #define CT_data pCT_data #define CT_close pCT_close static void *LibHandle = NULL; static void usage( char *argv0 ) { printf("Usage: %s [-l lib] [-p num]\n",argv0); printf(" -l lib CT-API library, default is %s.\n", LIBRARY_NAME); printf(" -p num Port number (1-n), default is 1.\n"); printf(" -c count Number of consecutive reads, default is 1.\n"); exit(1); } #define SENDCMD(dadv,cmdv,cmdlenv) \ memcpy( cmd, cmdv, cmdlenv ); \ lenc=cmdlenv; lenr=sizeof(rsp); sad=2; dad=dadv; \ ret = CT_data( ctn, &dad, &sad, lenc, cmd, &lenr, rsp ); \ if( ret!=CT_API_RV_OK ) goto err_return; static int read_geldkarte(uint16_t ctn) { uint8_t cmd[5+255+1], rsp[256+2]; uint8_t sad, dad; uint16_t lenc, lenr=256+2; int8_t ret; /* Reset ICC */ SENDCMD(CT_API_AD_CT, "\x20\x11\x01\x01\x00", 5 ); if( (ret!=CT_API_RV_OK) || (sad!=CT_API_AD_CT) ) { printf( "Error sending command to reader. (Return code:%d)\n", ret ); SENDCMD( CT_API_AD_CT, "\x20\x15\x01\x00", 5 ); sleep(2); return 3; } if( lenr==24+2 ) { /* Geldkarte v2? */ if( memcmp( rsp+7, "\x45\x65\x63", 3 ) ) { printf( "Unknown card.\n"); goto err_icccmd; } /* Select AID */ SENDCMD( CT_API_AD_ICC1, "\x00\xA4\x04\x0C\x09\xD2\x76\x00\x00\x25\x45\x50\x01\x00", 14 ); if( sad!=CT_API_AD_ICC1 ) goto err_sad; if( (lenr!=2) || (rsp[0]!=0x90) || (rsp[1]!=0x00) ) { printf("Error selecting GeldKarte application.\n"); goto err_icccmd; } /* Read Record */ SENDCMD( CT_API_AD_ICC1, "\x00\xB2\x01\xC4\x09", 5 ); if( sad!=CT_API_AD_ICC1 ) goto err_sad; if( (lenr<5) || (rsp[lenr-2]!=0x90) || (rsp[lenr-1]!=0x00) ) { printf("Error reading account balance.\n"); goto err_icccmd; } } else if( lenr==25+2 ) { /* Geldkarte v3? */ if( memcmp( rsp+8, "\x45\x65\x63", 3 ) ) { printf( "Unknown card.\n"); goto err_icccmd; } /* Select AID */ SENDCMD( CT_API_AD_ICC1, "\x00\xA4\x04\x0C\x09\xD2\x76\x00\x00\x25\x45\x50\x02\x00", 14 ); if( sad!=CT_API_AD_ICC1 ) goto err_sad; if( (lenr!=2) || (rsp[0]!=0x90) || (rsp[1]!=0x00) ) { printf("Error selecting GeldKarte application.\n"); goto err_icccmd; } /* Read Record */ SENDCMD( CT_API_AD_ICC1, "\x00\xB2\x01\xC4\x00", 5 ); if( sad!=CT_API_AD_ICC1 ) goto err_sad; if( (lenr<5) || (rsp[lenr-2]!=0x90) || (rsp[lenr-1]!=0x00) ) { printf("Error reading account balance.\n"); goto err_icccmd; } } else if( (lenr>2) && (rsp[lenr-2]==0x90) ) { printf( "Unknown card.\n" ); goto err_icccmd; } else { printf( "No card.\n" ); sleep(2); return 0; } printf("Current account balance: %.2X%.2X.%.2X\n", rsp[0], rsp[1], rsp[2] ); err_icccmd: SENDCMD( CT_API_AD_CT, "\x20\x15\x01\x00", 5 ); sleep(2); return 0; err_return: printf( "Error sending command to card. (Return code:%d)\n", ret ); sleep(2); return 3; err_sad: printf( "Error sending command to card. (sad:%d)\n", sad ); sleep(2); return 3; } #if 0 static int test_ctapi( char *argv0, int pn, int count ) { uint16_t ctn=1; int8_t ret; int i; /* Open */ ret = CT_init( ctn, pn ); if( ret!=CT_API_RV_OK ) { printf("Error doing CT_init. (Return code:%d)\n",ret); return 3; } for (i = 0; i < count; i++) { ret = read_geldkarte(ctn); if (ret) { CT_close(ctn); return ret; } } CT_close(ctn); return 0; } #endif static int test_ctapi2( char *argv0, int pn, int count ) { uint16_t ctn=1; int i; /* Open */ for (i = 0; i < count; i++) { int8_t ret; ret = CT_init( ctn, pn ); if( ret!=CT_API_RV_OK ) { printf("Error doing CT_init. (Return code:%d)\n",ret); return 3; } ret = read_geldkarte(ctn); if (ret) { CT_close(ctn); return ret; } ret=CT_close(ctn); if (ret) { return ret; } } return 0; } static int test_geldkarte(uint16_t ctn){ uint8_t cmd[5+255+1], rsp[256+2]; uint8_t sad, dad; uint16_t lenc, lenr=256+2; int8_t ret; /* Reset ICC */ SENDCMD( CT_API_AD_CT, "\x20\x11\x01\x01\x00", 5 ); if( (ret!=CT_API_RV_OK) || (sad!=CT_API_AD_CT) ) { printf( " Error sending command to reader. (Return code:%d)\n", ret ); SENDCMD( CT_API_AD_CT, "\x20\x15\x01\x00", 5 ); sleep(2); return 3; } if( lenr==24+2 ) { /* Geldkarte v2? */ if( memcmp( rsp+7, "\x45\x65\x63", 3 ) ) { printf( " Unknown card.\n"); goto err_icccmd; } /* Select AID */ SENDCMD( CT_API_AD_ICC1, "\x00\xA4\x04\x0C\x09\xD2\x76\x00\x00\x25\x45\x50\x01\x00", 14 ); if( sad!=CT_API_AD_ICC1 ) goto err_sad; if( (lenr!=2) || (rsp[0]!=0x90) || (rsp[1]!=0x00) ) { printf(" Error selecting GeldKarte application.\n"); goto err_icccmd; } /* Read Record */ SENDCMD( CT_API_AD_ICC1, "\x00\xB2\x01\xC4\x09", 5 ); if( sad!=CT_API_AD_ICC1 ) goto err_sad; if( (lenr<5) || (rsp[lenr-2]!=0x90) || (rsp[lenr-1]!=0x00) ) { printf(" Error reading account balance.\n"); goto err_icccmd; } } else if( lenr==25+2 ) { /* Geldkarte v3? */ if( memcmp( rsp+8, "\x45\x65\x63", 3 ) ) { printf( " Unknown card.\n"); goto err_icccmd; } /* Select AID */ SENDCMD( CT_API_AD_ICC1, "\x00\xA4\x04\x0C\x09\xD2\x76\x00\x00\x25\x45\x50\x02\x00", 14 ); if( sad!=CT_API_AD_ICC1 ) goto err_sad; if( (lenr!=2) || (rsp[0]!=0x90) || (rsp[1]!=0x00) ) { printf(" Error selecting GeldKarte application.\n"); goto err_icccmd; } /* Read Record */ SENDCMD( CT_API_AD_ICC1, "\x00\xB2\x01\xC4\x00", 5 ); if( sad!=CT_API_AD_ICC1 ) goto err_sad; if( (lenr<5) || (rsp[lenr-2]!=0x90) || (rsp[lenr-1]!=0x00) ) { printf(" Error reading account balance.\n"); goto err_icccmd; } } else if( (lenr>2) && (rsp[lenr-2]==0x90) ) { printf( " Unknown card.\n" ); goto err_icccmd; } else { printf( " No card.\n" ); sleep(2); return 0; } err_icccmd: SENDCMD( CT_API_AD_CT, "\x20\x15\x01\x00", 5 ); sleep(2); return 0; err_return: printf( "Error sending command to card. (Return code:%d)\n", ret ); sleep(2); return 3; err_sad: printf( "Error sending command to card. (sad:%d)\n", sad ); sleep(2); return 3; } static int multi_test(char *argv0, int pn, int readers, int count ) { int i; uint16_t ctn=1; int errs=0; for (i=1; i<=readers; i++) { int8_t ret; int err=0; ret=CT_init(ctn, i); if( ret!=CT_API_RV_OK ) { printf(" Error doing CT_init. (Return code:%d)\n",ret); err=1; } else { int j; for (j = 0; j < count; j++) { ret = test_geldkarte(ctn); if (ret) { err=1; break; } } ret=CT_close(ctn); if( ret!=CT_API_RV_OK ) { printf(" Error doing CT_init. (Return code:%d)\n",ret); err=1; } } if (err) { fprintf(stderr, "-> Reader %d: FAILED\n", i); errs++; } else { fprintf(stderr, "-> Reader %d: Success\n", i); } } if (errs) { if (errs==readers) { fprintf(stderr, "FAILED: All tests failed.\n"); } else { fprintf(stderr, "FAILED: Some tests failed.\n"); } return 2; } fprintf(stderr, "SUCCESS: All tests ok.\n"); return 0; } int main(int argc, char **argv){ uint16_t pn=1; int c; int ret; int count = 1; char *buffer=NULL; char *ctlib=LIBRARY_NAME; int readers=1; while ((c = getopt(argc, argv, "l:p:c:r:")) != -1) { switch (c) { case 'l': buffer=strdup(optarg); ctlib=buffer; break; case 'p': pn = atoi(optarg); break; case 'c': count = atoi(optarg); break; case 'r': readers = atoi(optarg); break; default: printf("invalid option `%c' (%d)\n", c, c); usage( argv[0] ); if (buffer) free(buffer); return 1; } } LibHandle = dlopen( ctlib, RTLD_LAZY ); if( !LibHandle ) { printf("Error loading CT-API library.\n"); if (buffer) free(buffer); return 1; } pCT_init = (CT_INIT) dlsym( LibHandle, "CT_init" ); if( dlerror()!=NULL ) { dlclose( LibHandle ); if (buffer) free(buffer); printf("Error getting function handle.\n"); return 1; } pCT_data = (CT_DATA) dlsym( LibHandle, "CT_data" ); if( dlerror()!=NULL ) { dlclose( LibHandle ); if (buffer) free(buffer); printf("Error getting function handle.\n"); return 1; } pCT_close = (CT_CLOSE) dlsym( LibHandle, "CT_close" ); if( dlerror()!=NULL ) { dlclose( LibHandle ); if (buffer) free(buffer); printf("Error getting function handle.\n"); return 1; } if (readers>1) ret=multi_test(argv[0], pn, readers, count); else ret = test_ctapi2(argv[0], pn, count); dlclose( LibHandle ); if (buffer) free(buffer); return ret; } pcsc-cyberjack-3.99.5final.sp05/tools/cyberjack/000077500000000000000000000000001231776762100214155ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/tools/cyberjack/Makefile.am000066400000000000000000000007761231776762100234630ustar00rootroot00000000000000SUBDIRS=scripts DEFS+=@cyberjack_platform_def@ \ -DCYBERJACK_CONFIG_FILE=\"@cyberjack_config_file@\" $(PTHREAD_CFLAGS) INCLUDES=$(pcsc_includes) \ -I../../include -I../../cjeca32 -I../../libcyberjack/checksuite -I../../include/driver -I../../include/firmware bin_PROGRAMS=cyberjack cyberjack_SOURCES=cyberjack.cpp cyberjack_LDADD=\ ../../libcyberjack/checksuite/libchecksuite.la -ldl @libusb_libs@ $(PTHREAD_LIBS) \ ../../cjeca32/libeca.la \ ../../libcyberjack/libcyberjack.la -lstdc++ pcsc-cyberjack-3.99.5final.sp05/tools/cyberjack/cyberjack.cpp000066400000000000000000000235511231776762100240640ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #include "Platform.h" #include "config_l.h" #include "checksuite.h" #include #include #include #ifdef OS_LINUX # include # include #endif #include #include #include typedef void* (*XOPENDISPLAY_FN)(char *display_name); typedef int (*XCLOSEDISPLAY_FN)(void *display); typedef int (*XBELL_FN)(void *display, int percent); typedef int (*XFLUSH_FN)(void *display); /* forward declarations */ int mtTest(int tc); int check() { CheckSuite *cs; std::string xmlString; std::string reportString; std::string hintString; bool b; FILE *f; cs=new CheckSuite(); cs->addStandardModules(true); b=cs->performChecks(xmlString, reportString, hintString); f=fopen("cyberjack.xml", "w+"); if (f) { fprintf(f, "%s", xmlString.c_str()); fclose(f); } else { fprintf(stderr, "fopen(\"cyberjack.xml\"): %s\n", strerror(errno)); } f=fopen("cyberjack-report.log", "w+"); if (f) { fprintf(f, "%s", reportString.c_str()); fclose(f); } else { fprintf(stderr, "fopen(\"cyberjack-report.log\"): %s\n", strerror(errno)); } f=fopen("cyberjack-hints.log", "w+"); if (f) { fprintf(f, "%s", hintString.c_str()); fclose(f); } else { fprintf(stderr, "fopen(\"cyberjack-hints.log\"): %s\n", strerror(errno)); } fprintf(stderr, "\n" "Es wurden 3 Dateien im aktuellen Verzeichnis angelegt:\n" "- cyberjack-report.log: Enthaelt die Ergebnisse der Tests\n" "- cyberjack-hints.log : Enthaelt moeglicherweise Hinweise\n" " zu gefundenen Problemen und deren\n" " Behebung.\n" "- cyberjack.xml : Enthaelt die Testergebnisse in fuer\n" " den Support aufbereiteter Form.\n" "Bitte senden Sie bei Problemen die Datei \"cyberjack.xml\"\n" "an den Linux-Support von Reiner SCT.\n" "\n"); return 0; } int addFlags(unsigned int fl) { unsigned int oldFlags; if (rsct_config_init()) { fprintf(stderr, "ERROR: Could not init configuration.\n"); return 2; } if (fl & CT_FLAGS_ECOM_KERNEL_OLD) { /* this flag is now ignored by the driver in order to turn off the use of * the kernel module for new drivers. However, if this flag is given here * (some documentation will refer to that old flag) we use the correct one. */ fl|=CT_FLAGS_ECOM_KERNEL; } oldFlags=rsct_config_get_flags(); oldFlags|=fl; rsct_config_set_flags(oldFlags); if (rsct_config_save()) { fprintf(stderr, "ERROR: Could not save configuration, " "maybe you need to be root?\n"); rsct_config_fini(); return 3; } rsct_config_fini(); fprintf(stderr, "INFO: Added flags %08x (now: %08x)\n", fl, oldFlags); return 0; } int delFlags(unsigned int fl) { unsigned int oldFlags; if (rsct_config_init()) { fprintf(stderr, "ERROR: Could not init configuration.\n"); return 2; } if (fl & CT_FLAGS_ECOM_KERNEL_OLD) { /* this flag is now ignored by the driver in order to turn off the use of * the kernel module for new drivers. However, if this flag is given here * (some documentation will refer to that old flag) we use the correct one. */ fl|=CT_FLAGS_ECOM_KERNEL; } oldFlags=rsct_config_get_flags(); oldFlags&=~fl; rsct_config_set_flags(oldFlags); if (rsct_config_save()) { fprintf(stderr, "ERROR: Could not save configuration, " "maybe you need to be root?\n"); rsct_config_fini(); return 3; } rsct_config_fini(); fprintf(stderr, "INFO: Cleared flags %08x (now: %08x)\n", fl, oldFlags); return 0; } int getFlags() { unsigned int fl; if (rsct_config_init()) { fprintf(stderr, "ERROR: Could not init configuration.\n"); return 2; } fl=rsct_config_get_flags(); fprintf(stderr, "INFO: Flags: %08x\n", fl); rsct_config_fini(); return 0; } int beepConsole1() { #ifdef OS_LINUX int fd; fd=open("/dev/console", O_WRONLY); if (fd!=-1) { int arg; int rv; arg=(150<<16)+440; /* "A" for 150ms */ rv=ioctl(fd, KDMKTONE, arg); close(fd); if (rv) { fprintf(stderr, "Error on IOCTL(KDMTONE) with /dev/console: %d [%s]\n", errno, strerror(errno)); return 2; } } else { fprintf(stderr, "Error opening /dev/console: %d [%s]\n", errno, strerror(errno)); return 2; } return 0; #else fprintf(stderr, "Beep using Linux IOCTL not supported\n"); return 2; #endif } int beepConsole2() { printf("\a"); fflush(stdout); return 0; } int beepX11() { void *xhdl; void *display; void *fn; XOPENDISPLAY_FN xOpenDisplay; XCLOSEDISPLAY_FN xCloseDisplay; XBELL_FN xBell; XFLUSH_FN xFlush; int rv; xhdl = dlopen("libX11.so", RTLD_NOW); if (xhdl==NULL) { fprintf(stderr, "Error loading LibX11.so: %d [%s]\n", errno, strerror(errno)); return 2; } fn=dlsym(xhdl, "XOpenDisplay"); if (fn==NULL) { fprintf(stderr, "Symbol XOpenDisplay not found: %d [%s]\n", errno, strerror(errno)); return 2; } xOpenDisplay=(XOPENDISPLAY_FN) fn; fn=dlsym(xhdl, "XCloseDisplay"); if (fn==NULL) { fprintf(stderr, "Symbol XCloseDisplay not found: %d [%s]\n", errno, strerror(errno)); return 2; } xCloseDisplay=(XCLOSEDISPLAY_FN) fn; fn=dlsym(xhdl, "XBell"); if (fn==NULL) { fprintf(stderr, "Symbol XBell not found: %d [%s]\n", errno, strerror(errno)); return 2; } xBell=(XBELL_FN) fn; fn=dlsym(xhdl, "XFlush"); if (fn==NULL) { fprintf(stderr, "Symbol XFlush not found: %d [%s]\n", errno, strerror(errno)); return 2; } xFlush=(XFLUSH_FN) fn; /* connect to X11 server */ display = (void *) xOpenDisplay(NULL); if (display==NULL) { fprintf(stderr, "Error connecting to X11 server\n"); return 2; } xBell(display, 100); xFlush(display); rv=xCloseDisplay(display); if (rv) { fprintf(stderr, "XCloseDisplay returned: %d\n", rv); return 2; } display=NULL; dlclose(xhdl); return 0; } int setVar(const char *name, const char *val) { if (rsct_config_init()) { fprintf(stderr, "ERROR: Could not init configuration.\n"); return 2; } rsct_config_set_var(name, val); if (rsct_config_save()) { fprintf(stderr, "ERROR: Could not save configuration, " "maybe you need to be root?\n"); rsct_config_fini(); return 3; } rsct_config_fini(); fprintf(stderr, "INFO: Variable \"%s\" set to \"%s\"\n", name, val); return 0; } int getVar(const char *name) { const char *s; if (rsct_config_init()) { fprintf(stderr, "ERROR: Could not init configuration.\n"); return 2; } s=rsct_config_get_var(name); if (s && *s) fprintf(stderr, "Value of variable \"%s\": \"%s\"\n", name, s); else fprintf(stderr, "Value of variable \"%s\" is empty\n", name); rsct_config_fini(); return 0; } int main(int argc, char **argv) { if (argc>1) { if (strcmp(argv[1], "check")==0) return check(); else if (strcmp(argv[1], "addflags")==0) { if (argc>2) { int fl; if (sscanf(argv[2], "%i", &fl)!=1) { fprintf(stderr, "ERROR: Not an integer\n"); return 1; } return addFlags(fl); } else { fprintf(stderr, "ERROR: Flags missing.\n"); return 1; } } else if (strcmp(argv[1], "delflags")==0) { if (argc>2) { int fl; if (sscanf(argv[2], "%i", &fl)!=1) { fprintf(stderr, "ERROR: Not an integer\n"); return 1; } return delFlags(fl); } else { fprintf(stderr, "ERROR: Flags missing.\n"); return 1; } } else if (strcmp(argv[1], "getflags")==0) { return getFlags(); } else if (strcmp(argv[1], "setvar")==0) { if (argc>3) { /* set variable */ return setVar(argv[2], argv[3]); } else { fprintf(stderr, "ERROR: Name and/or value missing.\n"); return 1; } } else if (strcmp(argv[1], "getvar")==0) { if (argc>2) { /* set variable */ return getVar(argv[2]); } else { fprintf(stderr, "ERROR: Name missing.\n"); return 1; } } else if (strcmp(argv[1], "beep1")==0) { return beepConsole1(); } else if (strcmp(argv[1], "beep2")==0) { return beepConsole2(); } else if (strcmp(argv[1], "beep3")==0) { return beepX11(); } else if (strcmp(argv[1], "mttest")==0) { fprintf(stderr, "This test has been removed.\n"); return 1; } else { fprintf(stderr, "Usage: %s [COMMAND] [ARGUMENTS]\n" "\n" "COMMAND can be:\n" " check: performs system checks\n" " addflags: adds flags in the CTAPI configuration file\n" " (on this system %s)\n" " This command needs an argument (the flags to add)\n" " delflags: clears flags in the CTAPI configuration file\n" " This command needs an argument (the flags to clear)\n" " beep1: Beeps using /dev/console\n" " beep2: Beeps by outputting sending a control character to stdout\n" " beep3: Beeps using a running X11 server\n" "\n" "Examples:\n" " %s check\n" " %s addflags 0xffff\n" " %s delflags 0xff00\n", argv[0], CYBERJACK_CONFIG_FILE, argv[0], argv[0], argv[0]); return 1; } } else { return check(); } } pcsc-cyberjack-3.99.5final.sp05/tools/cyberjack/scripts/000077500000000000000000000000001231776762100231045ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/tools/cyberjack/scripts/Makefile.am000066400000000000000000000001561231776762100251420ustar00rootroot00000000000000 cdscriptdir=$(libdir)/cyberjack cdscript_SCRIPTS=getdist.sh pcscd_init.diff EXTRA_DIST=$(cdscript_SCRIPTS) pcsc-cyberjack-3.99.5final.sp05/tools/cyberjack/scripts/getdist.sh000077500000000000000000000030061231776762100251050ustar00rootroot00000000000000#!/bin/sh RPM_COMMAND="`which rpm`" DIST_NAME="" DIST_VER="" # check for DEB if test -z "${DIST_NAME}"; then if test -f "/etc/debian_version"; then debtype=["` gcc --version | head -1`"] case $debtype in *\(Debian\ *) DIST_NAME="Debian" DIST_VER="`cat /etc/debian_version`" ;; *\(Ubuntu\ * | *\(KUbuntu\ *) DIST_NAME="Ubuntu" DIST_VER="`cat /etc/debian_version`" ;; *) DIST_NAME="Debian or derivate" DIST_VER="`cat /etc/debian_version`" ;; esac fi fi # check for RPM if test -z "${DIST_NAME}"; then if test -n "${RPM_COMMAND}"; then if test -x "${RPM_COMMAND}"; then if test -e "/etc/mandriva-release"; then DIST_NAME="Mandriva" #DIST_VER="`rpm -q --queryformat='%{VERSION}' mandriva-release 2>/dev/null`" read v1 v2 v3 v4 v5 distname echo "${DIST_VER}" >distver pcsc-cyberjack-3.99.5final.sp05/tools/cyberjack/scripts/pcscd_init.diff000066400000000000000000000005171231776762100260600ustar00rootroot00000000000000--- /etc/init.d/pcscd.orig 2011-05-12 10:43:06.657681780 +0200 +++ /etc/init.d/pcscd 2011-05-12 10:43:32.637681699 +0200 @@ -40,7 +40,7 @@ # DO NOT start the daemon on startup # comment the line to have the same behavior as in version < 1.6.0 -exit 0 +# exit 0 # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 pcsc-cyberjack-3.99.5final.sp05/tools/fox-dialog/000077500000000000000000000000001231776762100215115ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/tools/fox-dialog/Makefile.am000066400000000000000000000010251231776762100235430ustar00rootroot00000000000000 INCLUDES=$(pcsc_includes) $(fox_includes) \ -I../../include \ -I../../cjeca32 \ -I../../ifd \ -I../../libcyberjack \ -I../../libcyberjack/checksuite \ -I../../libcyberjack/libdialog \ -I../../include/driver \ -I../../include/firmware \ -I../fxcyberjack DEFS+=@cyberjack_platform_def@ bin_PROGRAMS=cyberjack-gui cyberjack_gui_LDADD=\ ../../libcyberjack/libdialog/base/libdialog_base.la \ @THREAD_LIBS@ $(fox_libs) -lstdc++ cyberjack_gui_SOURCES=\ dlg.cpp \ main.cpp noinst_HEADERS= \ dlg.hpp pcsc-cyberjack-3.99.5final.sp05/tools/fox-dialog/dlg.cpp000066400000000000000000000251711231776762100227710ustar00rootroot00000000000000/*************************************************************************** begin : Fri Jul 01 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "dlg.hpp" #include "libdialog/base/network.h" #include #include #include #include "icons/icons.cpp" #define I18N(msg) msg #ifdef ENABLE_DEBUGPE # define DEBUGPE(format, args...) \ fprintf(stderr, __FILE__":%5d:" format, __LINE__, ## args); #else # define DEBUGPE(format, args...) #endif #ifdef ENABLE_DEBUGPI # define DEBUGPI(format, args...) \ fprintf(stderr, __FILE__":%5d:" format, __LINE__, ## args); #else # define DEBUGPI(format, args...) #endif #ifdef ENABLE_DEBUGPD # define DEBUGPD(format, args...) \ fprintf(stderr, __FILE__":%5d:" format, __LINE__, ## args); #else # define DEBUGPD(format, args...) #endif int CyberJackDialog::m_lastDialogId=0; FXDEFMAP(CyberJackDialog) CyberJackDialogMap[]={ FXMAPFUNC(SEL_IO_READ, CyberJackDialog::ID_SOCKET, CyberJackDialog::onIoRead), FXMAPFUNC(SEL_TIMEOUT, CyberJackDialog::ID_TIMER, CyberJackDialog::onTimeout), FXMAPFUNC(SEL_TIMEOUT, CyberJackDialog::ID_TIMER, CyberJackDialog::onTimeout), FXMAPFUNC(SEL_KEYPRESS, 0, CyberJackDialog::onSelKeyPress), FXMAPFUNC(SEL_KEYRELEASE, 0, CyberJackDialog::onSelKeyRelease) }; FXIMPLEMENT(CyberJackDialog, FXDialogBox, CyberJackDialogMap, ARRAYNUMBER(CyberJackDialogMap)) CyberJackDialog::CyberJackDialog() :FXDialogBox() ,m_currentStage(-1) ,m_stages(-1) ,m_numChars(0) { } CyberJackDialog::CyberJackDialog(int sock, FXApp* a, FXuint opts, FXint x, FXint y, FXint w, FXint h, FXint pl, FXint pr, FXint pt, FXint pb, FXint hs, FXint vs) :FXDialogBox(a, "Reiner SCT cyberJack", opts, x, y, w, h, pl, pr, pt, pb, hs, vs) ,m_socket(sock) ,m_currentStage(-1) ,m_stages(0) ,m_numChars(0) ,m_keyTimeout(15) ,m_stageLabel(NULL) ,m_progressBar(NULL) ,m_image(NULL) ,m_fontSmall(NULL) ,m_fontBig(NULL) { FXVerticalFrame *vf; FXHorizontalFrame *hf; FXVerticalFrame *vf2; FXIconSource iconSource(a); FXLabel *label; FXFont *fnt; m_image=iconSource.loadIconData(fxcj_icon_cy_ecom_plus_n, "jpg"); fnt=getApp()->getNormalFont(); if (fnt) { int fsize; int nsize; fsize=fnt->getSize(); nsize=(fsize-(fsize/3))/10; m_fontSmall=new FXFont(getApp(), fnt->getName(), nsize, fnt->getWeight(), fnt->getSlant(), fnt->getEncoding()); nsize=(fsize*2)/10; m_fontBig=new FXFont(getApp(), fnt->getName(), nsize, fnt->getWeight(), fnt->getSlant(), fnt->getEncoding()); } vf=new FXVerticalFrame(this, LAYOUT_FILL_X | LAYOUT_FILL_Y); hf=new FXHorizontalFrame(vf, LAYOUT_FILL_X); label=new FXLabel(hf, "Reiner SCT cyberJack", NULL, LAYOUT_LEFT); if (m_fontSmall) label->setFont(m_fontSmall); m_stageLabel=new FXLabel(hf, "", NULL, LAYOUT_RIGHT); if (m_fontSmall) m_stageLabel->setFont(m_fontSmall); new FXHorizontalSeparator(vf, LAYOUT_FILL_X | SEPARATOR_GROOVE); hf=new FXHorizontalFrame(vf, LAYOUT_FILL_X | LAYOUT_FILL_Y); new FXImageFrame(hf, m_image, FRAME_SUNKEN|FRAME_THICK); vf2=new FXVerticalFrame(hf, LAYOUT_FILL_X | LAYOUT_FILL_Y); m_textLabel=new FXLabel(vf2, "", NULL, LABEL_NORMAL); m_enteredLabel=new FXLabel(vf2, "", NULL, LABEL_NORMAL|LAYOUT_CENTER_X); if (m_fontBig) m_enteredLabel->setFont(m_fontBig); m_progressBar=new FXProgressBar(vf, NULL, 0, PROGRESSBAR_NORMAL|PROGRESSBAR_HORIZONTAL|LAYOUT_FILL_X); m_progressBar->setTotal(m_keyTimeout); m_progressBar->setProgress(m_keyTimeout); } CyberJackDialog::~CyberJackDialog() { } void CyberJackDialog::create() { FXDialogBox::create(); if (m_image) m_image->create(); if (m_fontSmall) m_fontSmall->create(); if (m_fontBig) m_fontBig->create(); } void CyberJackDialog::setStage(int stage) { FXString str; switch(stage) { case 0: m_textLabel->setText(m_textStage0); break; case 1: m_textLabel->setText(m_textStage1); break; case 2: m_textLabel->setText(m_textStage2); break; default: break; } m_currentStage=stage; if (m_stages>1) str=FXStringVal(m_currentStage+1, 10)+"/"+FXStringVal(m_stages, 10); m_stageLabel->setText(str); setNumDigits(0); m_progressBar->setTotal(m_keyTimeout); m_progressBar->setProgress(m_keyTimeout); m_startTime=time(NULL); getApp()->addTimeout(this, ID_TIMER, 1000); } void CyberJackDialog::setNumDigits(int num) { FXString str; int i; for (i=0; isetText(str); } int CyberJackDialog::handleOpenDialog(RSCT_MESSAGE *msg) { int rv; setTitle(msg->openDialog.title); m_stages=msg->openDialog.stages; m_keyTimeout=msg->openDialog.keyTimeout; m_progressBar->setTotal(m_keyTimeout); m_progressBar->setProgress(m_keyTimeout); m_startTime=time(NULL); getApp()->addTimeout(this, ID_TIMER, 1000); /* prepare response */ msg->openDialog.result=0; msg->openDialog.dialogId=++m_lastDialogId; switch(m_stages) { case 1: /* text 1 */ if (msg->openDialog.textStage0[0]) m_textStage0=FXString(msg->openDialog.textStage0); else m_textStage0=FXString(I18N("Please enter your PIN into the reader's keypad")); break; case 2: /* text 1 */ if (msg->openDialog.textStage0[0]) m_textStage0=FXString(msg->openDialog.textStage0); else m_textStage0=FXString(I18N("Please enter the new PIN into the reader's keypad")); /* text 3 */ if (msg->openDialog.textStage1[0]) m_textStage1=FXString(msg->openDialog.textStage1); else m_textStage1=FXString(I18N("Please repeat entering the new PIN into the reader's keypad")); break; case 3: /* text 1 */ if (msg->openDialog.textStage0[0]) m_textStage0=FXString(msg->openDialog.textStage0); else m_textStage0=FXString(I18N("Please enter the current PIN into the reader's keypad")); /* text 2 */ if (msg->openDialog.textStage1[0]) m_textStage1=FXString(msg->openDialog.textStage1); else m_textStage1=FXString(I18N("Please enter the new PIN into the reader's keypad")); /* text 3 */ if (msg->openDialog.textStage2[0]) m_textStage2=FXString(msg->openDialog.textStage2); else m_textStage2=FXString(I18N("Please repeat entering the new PIN into the reader's keypad")); break; } setStage(0); msg->header.type=RSCT_Message_Command_OpenDialog; msg->header.len=RSCT_MSG_SIZE(RSCT_MESSAGE_OPENDIALOG); /* send response */ rv=rsct_net_send(m_socket, msg); if (rv<0) { fprintf(stderr, "Error sending response (%d)\n", rv); return rv; } return 0; } int CyberJackDialog::handleCloseDialog(RSCT_MESSAGE *msg) { getApp()->removeTimeout(this, ID_TIMER); m_socket=-1; getApp()->stopModal(this, FALSE); hide(); return 0; } int CyberJackDialog::handleSetStage(RSCT_MESSAGE *msg) { int rv; setStage(msg->setStage.stage); /* prepare response */ msg->setStage.result=0; msg->header.type=RSCT_Message_Command_SetStage; msg->header.len=RSCT_MSG_SIZE(RSCT_MESSAGE_SETSTAGE); /* send response */ rv=rsct_net_send(m_socket, msg); if (rv<0) { fprintf(stderr, "Error sending response (%d)\n", rv); return rv; } return 0; } int CyberJackDialog::handleSetNumChars(RSCT_MESSAGE *msg) { int rv; setNumDigits(msg->setCharNum.charNum); if (msg->setCharNum.beep>0) { getApp()->beep(); } /* prepare response */ msg->setCharNum.result=0; msg->header.type=RSCT_Message_Command_SetCharNum; msg->header.len=RSCT_MSG_SIZE(RSCT_MESSAGE_SETCHARNUM); /* send response */ rv=rsct_net_send(m_socket, msg); if (rv<0) { fprintf(stderr, "RSCT: Error sending response (%d)\n", rv); return rv; } return 0; } int CyberJackDialog::handleMessage(RSCT_MESSAGE *msg) { assert(msg); fprintf(stderr, "Received message %d\n", msg->header.type); switch(msg->header.type) { case RSCT_Message_Command_OpenDialog: return handleOpenDialog(msg); case RSCT_Message_Command_CloseDialog: return handleCloseDialog(msg); case RSCT_Message_Command_SetStage: return handleSetStage(msg); case RSCT_Message_Command_SetCharNum: return handleSetNumChars(msg); default: break; } return 0; } int CyberJackDialog::getAndHandleMessage() { int rv; union { char buffer[RSCT_MAX_MESSAGE_LEN]; RSCT_MESSAGE msg; } m; /* readable, read message */ memset(m.buffer, 0, RSCT_MAX_MESSAGE_LEN); rv=rsct_net_recv(m_socket, &m.msg); if (rv<0) { return rv; } else { /* handle message */ rv=handleMessage(&(m.msg)); if (rv<0) { return rv; } } return m.msg.header.type; } long CyberJackDialog::onIoRead(FXObject*, FXSelector, void *ptr) { int rv; rv=getAndHandleMessage(); if (rv<0) { m_socket=-1; getApp()->stopModal(this,FALSE); hide(); } return 1; } long CyberJackDialog::onTimeout(FXObject*, FXSelector, void *ptr) { time_t now; int diff; int newVal=0; now=time(NULL); diff=(int)difftime(now, m_startTime); if (diff<(int)m_keyTimeout) newVal=m_keyTimeout-diff; m_progressBar->setProgress(newVal); getApp()->addTimeout(this, ID_TIMER, 1000); return 1; } long CyberJackDialog::onSelKeyPress(FXObject*, FXSelector, void *ptr) { return 1; } long CyberJackDialog::onSelKeyRelease(FXObject*, FXSelector, void *ptr) { return 1; } pcsc-cyberjack-3.99.5final.sp05/tools/fox-dialog/dlg.hpp000066400000000000000000000060551231776762100227760ustar00rootroot00000000000000/*************************************************************************** begin : Fri Jul 01 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef DLG_HPP #define DLG_HPP #include #include #include "base/message.h" class CyberJackDialog: public FXDialogBox { FXDECLARE(CyberJackDialog) public: enum { ID_SOCKET=FXDialogBox::ID_LAST, ID_TIMER, ID_LAST }; CyberJackDialog(int sock, FXApp* a, FXuint opts=DECOR_TITLE|DECOR_BORDER, FXint x=0, FXint y=0, FXint w=0, FXint h=0, FXint pl=0, FXint pr=0, FXint pt=0, FXint pb=0, FXint hs=0, FXint vs=0); virtual ~CyberJackDialog(); void setStage(int stage); void setNumDigits(int num); int getAndHandleMessage(); void addSocketToInput(); long onIoRead(FXObject*, FXSelector, void *ptr); long onTimeout(FXObject*, FXSelector, void *ptr); long onSelKeyPress(FXObject*, FXSelector, void *ptr); long onSelKeyRelease(FXObject*, FXSelector, void *ptr); void create(); protected: CyberJackDialog(); int handleMessage(RSCT_MESSAGE *msg); int handleOpenDialog(RSCT_MESSAGE *msg); int handleSetStage(RSCT_MESSAGE *msg); int handleSetNumChars(RSCT_MESSAGE *msg); int handleCloseDialog(RSCT_MESSAGE *msg); static int m_lastDialogId; int m_socket; int m_currentStage; int m_stages; int m_numChars; unsigned int m_keyTimeout; time_t m_startTime; FXString m_textStage0; FXString m_textStage1; FXString m_textStage2; FXLabel *m_textLabel; FXLabel *m_enteredLabel; FXLabel *m_stageLabel; FXProgressBar *m_progressBar; FXImage *m_image; FXFont *m_fontSmall; FXFont *m_fontBig; }; #endif pcsc-cyberjack-3.99.5final.sp05/tools/fox-dialog/main.cpp000066400000000000000000000114361231776762100231460ustar00rootroot00000000000000 #define ENABLE_DEBUGPI #include "Platform.h" #include "libdialog/base/network.h" #include "dlg.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #ifdef ENABLE_DEBUGPE # define DEBUGPE(format, args...) \ fprintf(stderr, __FILE__":%5d:" format, __LINE__, ## args); #else # define DEBUGPE(format, args...) #endif #ifdef ENABLE_DEBUGPI # define DEBUGPI(format, args...) \ fprintf(stderr, __FILE__":%5d:" format, __LINE__, ## args); #else # define DEBUGPI(format, args...) #endif #ifdef ENABLE_DEBUGPD # define DEBUGPD(format, args...) \ fprintf(stderr, __FILE__":%5d:" format, __LINE__, ## args); #else # define DEBUGPD(format, args...) #endif static int daemon_abort=0; static char daemon_sock_buf[512]; /* Signal handler */ struct sigaction saINT,saTERM, saINFO, saHUP, saCHLD; void signalHandler(int s) { switch(s) { case SIGINT: case SIGTERM: #ifdef SIGHUP case SIGHUP: #endif daemon_abort=1; DEBUGPI("INFO: Terminating daemon.\n"); break; #ifdef SIGCHLD case SIGCHLD: for (;;) { pid_t pid; int stat_loc; pid=waitpid((pid_t)-1, &stat_loc, WNOHANG); if (pid==-1 || pid==0) break; else { DEBUGPI("INFO: Service %d finished.\n", (int)pid); } } break; #endif default: DEBUGPI("INFO: Unhandled signal %d\n", s); break; } /* switch */ } int setSingleSignalHandler(struct sigaction *sa, int sig) { sa->sa_handler=signalHandler; sigemptyset(&sa->sa_mask); sa->sa_flags=0; if (sigaction(sig, sa,0)) { DEBUGPE("ERROR: sigaction(%d): %d=%s", sig, errno, strerror(errno)); return -1; } return 0; } int setSignalHandler() { int rv; rv=setSingleSignalHandler(&saINT, SIGINT); if (rv) return rv; #ifdef SIGCHLD rv=setSingleSignalHandler(&saCHLD, SIGCHLD); if (rv) return rv; #endif rv=setSingleSignalHandler(&saTERM, SIGTERM); if (rv) return rv; #ifdef SIGHUP rv=setSingleSignalHandler(&saHUP, SIGHUP); if (rv) return rv; #endif return 0; } int mkSockName() { struct passwd *p; p=getpwuid(geteuid()); if (!p) { fprintf(stderr, "ERROR: %s at getpwuid\n", strerror(errno)); endpwent(); return -1; } if (sizeof(daemon_sock_buf)pw_dir)+1) { fprintf(stderr, "Internal: Buffer too small (need %d bytes)\n", (int)(strlen(p->pw_dir)+1)); endpwent(); return -1; } strcpy(daemon_sock_buf, p->pw_dir); endpwent(); strncat(daemon_sock_buf, "/.cyberJack_gui_sock", sizeof(daemon_sock_buf)-1); daemon_sock_buf[sizeof(daemon_sock_buf)-1]=0; return 0; } int prepareListen() { int sock; sock=rsct_net_listen_by_path(daemon_sock_buf); if (sock==-1) { fprintf(stderr, "Error on rsct_net_listen_by_path(%s): %s\n", daemon_sock_buf, strerror(errno)); return -1; } return sock; } int handleConnection(int argc, char **argv, int sock) { FXApp a("cyberJackDialog", "ReinerSCT"); int rv; a.init(argc,argv); a.create(); CyberJackDialog dlg(sock, &a); dlg.create(); dlg.layout(); rv=dlg.getAndHandleMessage(); if (rv<0) return rv; else if (rv!=RSCT_Message_Command_OpenDialog) { fprintf(stderr, "ERROR: First message is not OpenDialog\n"); return -1; } a.addInput(sock, INPUT_READ, &dlg, CyberJackDialog::ID_SOCKET); dlg.show(PLACEMENT_SCREEN); dlg.execute(); a.removeInput(sock, INPUT_READ); close(sock); return 0; } int main(int argc, char **argv) { int rv; int sk; rv=setSignalHandler(); if (rv) { DEBUGPE("ERROR: Could not setup signal handler\n"); return 2; } rv=mkSockName(); if (rv<0) { fprintf(stderr, "RSCT: Could not determine sockat path\n"); return 2; } unlink(daemon_sock_buf); sk=rsct_net_listen_by_path(daemon_sock_buf); if (sk==-1) { fprintf(stderr, "Error on rsct_net_listen_by_path(%s): %s\n", daemon_sock_buf, strerror(errno)); return 2; } DEBUGPI("INFO: cyberJack GUI started\n"); while(!daemon_abort) { int newS; newS=rsct_net_accept(sk); if (newS!=-1) { pid_t pid; pid=fork(); if (pid<0) { /* error */ } else if (pid==0) { int rv; /* child */ close(sk); rv=setSignalHandler(); if (rv) { DEBUGPE("ERROR: Could not setup child's signal handler\n"); exit(2); } fprintf(stderr, "Received a connection.\n"); rv=handleConnection(argc, argv, newS); fprintf(stderr, "Connection closed.\n"); if (rv) exit(3); exit(0); } else { /* parent */ DEBUGPI("INFO: cyberJack GUI service spawned (%d)\n", (int)pid); close(newS); } } } DEBUGPI("INFO: cyberJack GUI going down\n"); unlink(daemon_sock_buf); return 0; } pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/000077500000000000000000000000001231776762100217535ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/Makefile.am000066400000000000000000000016651231776762100240170ustar00rootroot00000000000000SUBDIRS=icons diag INCLUDES=$(pcsc_includes) $(fox_includes) $(libxml2_includes) \ -I../../include \ -I../../cjeca32 \ -I../../ifd \ -I../../libcyberjack \ -I../../libcyberjack/checksuite \ -I../../include/driver \ -I../../include/firmware DEFS+=@cyberjack_platform_def@ bin_PROGRAMS=fxcyberjack fxcyberjack_LDADD=\ ../../libcyberjack/libcyberjack.la \ diag/libfxdiag.la \ ../../libcyberjack/checksuite/libchecksuite.la @THREAD_LIBS@ $(fox_libs) \ ../../cjeca32/libeca.la $(libxml2_libs) -lstdc++ fxcyberjack_SOURCES=\ fxcy_readerlist.cpp \ fxcy_readerview.cpp \ fxcy_mainwindow.cpp \ fxcy_app.cpp \ fxcy_readerdetails.cpp \ fxcy_readerflash.cpp \ fxcy_readerflash2.cpp \ fxcy_readerkeys.cpp \ main.cpp noinst_HEADERS=\ fxcy_readerlist.hpp \ fxcy_readerview.hpp \ fxcy_mainwindow.hpp \ fxcy_readerdetails.hpp \ fxcy_readerflash.hpp \ fxcy_readerflash2.hpp \ fxcy_readerkeys.hpp \ fxcy_app.hpp pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/diag/000077500000000000000000000000001231776762100226575ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/diag/Makefile.am000066400000000000000000000006421231776762100247150ustar00rootroot00000000000000INCLUDES=$(fox_includes) \ -I../../../include \ -I../../../libcyberjack \ -I../../../libcyberjack/checksuite DEFS+=@cyberjack_platform_def@ noinst_LTLIBRARIES=libfxdiag.la libfxdiag_la_SOURCES=\ checkthread.cpp \ checkwidget.cpp \ foxchecksuite.cpp \ fxcy_diag.cpp \ msgqueue.cpp noinst_HEADERS=\ checkthread.h \ checkwidget.h \ foxchecksuite.h \ fxcy_diag.h \ msgqueue.h pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/diag/checkthread.cpp000066400000000000000000000025611231776762100256340ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #include "checkthread.h" #include "foxchecksuite.h" CheckThread::CheckThread(MessageQueue *mq, bool withReaders) :FXThread() ,m_withReaders(withReaders) ,_messageQueue(mq) { } CheckThread::~CheckThread() { } FXint CheckThread::run() { FoxCheckSuite *cs; bool b; fprintf(stderr, "Check thread started.\n"); cs=new FoxCheckSuite(_messageQueue); cs->addStandardModules(m_withReaders); b=cs->performChecks(_xmlString, _reportString, _hintString); fprintf(stderr, "Check thread ending.\n"); return 0; } std::string CheckThread::getXmlString() { if (running()) return ""; return _xmlString; } std::string CheckThread::getHintString() { if (running()) return ""; return _hintString; } std::string CheckThread::getReportString() { if (running()) return ""; return _reportString; } pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/diag/checkthread.h000066400000000000000000000017461231776762100253050ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #include #include "msgqueue.h" #include class CheckThread: public FXThread { private: bool m_withReaders; MessageQueue *_messageQueue; std::string _xmlString; std::string _hintString; std::string _reportString; protected: FXint run(); public: CheckThread(MessageQueue *mq, bool withReaders); ~CheckThread(); std::string getXmlString(); std::string getHintString(); std::string getReportString(); }; pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/diag/checkwidget.cpp000066400000000000000000000075201231776762100256500ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #include "checkwidget.h" #include "checkthread.h" #include "msgqueue.h" #include #include FXDEFMAP(CheckWidget) CheckWidgetMap[]= { FXMAPFUNC(SEL_COMMAND, CheckWidget::ID_ABORT_BUTTON, CheckWidget::onAbortClicked), }; FXIMPLEMENT(CheckWidget, FXTopWindow, CheckWidgetMap, ARRAYNUMBER(CheckWidgetMap)); CheckWidget::CheckWidget() :FXTopWindow() ,progressBar(NULL) ,messageLabel(NULL) ,abortButton(NULL) ,aborted(false) ,errors(0) { } CheckWidget::CheckWidget(FXApp *app, FXint x, FXint y, FXint w, FXint h) :FXTopWindow(app, "System wird ueberprueft", NULL, NULL, DECOR_TITLE| DECOR_BORDER | LAYOUT_CENTER_X | LAYOUT_CENTER_Y, x, y, w, h, 0, 0, 0, 0, 0, 0) ,progressBar(NULL) ,messageLabel(NULL) ,abortButton(NULL) ,aborted(false) ,errors(0) { FXVerticalFrame *vf; FXLabel *l; FXHorizontalFrame *hf; FXSpring *sp; vf=new FXVerticalFrame(this, LAYOUT_FILL_Y); l=new FXLabel(vf, "Ihr System wird ueberprueft, bitte warten...", NULL, LABEL_NORMAL | LAYOUT_CENTER_X | LAYOUT_FILL_X); progressBar=new FXProgressBar(vf, this, ID_PROGRESS_BAR, PROGRESSBAR_PERCENTAGE | PROGRESSBAR_NORMAL | PROGRESSBAR_HORIZONTAL | LAYOUT_FILL_X | LAYOUT_FILL_Y); progressBar->setBarSize(32); progressBar->setTotal(0); progressBar->setProgress(0); progressBar->show(); messageLabel=new FXLabel(vf, "", NULL, LABEL_NORMAL | LAYOUT_CENTER_X | LAYOUT_FILL_X); hf=new FXHorizontalFrame(vf, LAYOUT_FILL_X); sp=new FXSpring(hf, LAYOUT_FILL_X); abortButton=new FXButton(hf, "Abbrechen", NULL, this, ID_ABORT_BUTTON, BUTTON_NORMAL | LAYOUT_RIGHT); } CheckWidget::~CheckWidget() { } long CheckWidget::onAbortClicked(FXObject*,FXSelector,void*) { aborted=true; return 1; } bool CheckWidget::performChecks(bool withReaders, std::string &xmlString, std::string &hintString, std::string &reportString) { MessageQueue *mq; Message *m; CheckThread *ct; bool b=true; mq=new MessageQueue(); ct=new CheckThread(mq, withReaders); if (!ct->start()) { reportString+="*FEHLER* (Konnte Tests nicht starten)\n"; fprintf(stderr, "ERROR: %s\n", strerror(errno)); return false; } while(ct->running()) { while( (m=mq->pullMessage()) ) { messageLabel->setText(m->getTitle().c_str()); progressBar->setTotal(m->getTotalChecks()); progressBar->setProgress(m->getDoneChecks()); if (!m->getResult()) { b=false; } delete m; } getApp()->runModalWhileEvents(this); if (aborted) { ct->cancel(); b=false; break; } } /* read all remaining messages */ while( (m=mq->pullMessage()) ) { fprintf(stderr, "Got message: %d %s %d %d %s\n", m->getMessageType(), m->getTitle().c_str(), m->getDoneChecks(), m->getTotalChecks(), (m->getResult())?"OK":"ERROR"); messageLabel->setText(m->getTitle().c_str()); progressBar->setTotal(m->getTotalChecks()); progressBar->setProgress(m->getDoneChecks()); if (!m->getResult()) { b=false; fprintf(stderr, "Got a bad result\n"); } delete m; } xmlString=ct->getXmlString(); hintString=ct->getHintString(); reportString=ct->getReportString(); delete ct; delete mq; return b; } pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/diag/checkwidget.h000066400000000000000000000022171231776762100253130ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #include #include class CheckWidget: public FXTopWindow { FXDECLARE(CheckWidget) protected: CheckWidget(); FXProgressBar *progressBar; FXLabel *messageLabel; FXButton *abortButton; bool aborted; int errors; public: enum { ID_ABORT_BUTTON=FXVerticalFrame::ID_LAST, ID_PROGRESS_BAR }; CheckWidget(FXApp *app, FXint x=0, FXint y=0, FXint w=0, FXint h=0); ~CheckWidget(); long onAbortClicked(FXObject*,FXSelector,void*); bool performChecks(bool withReaders, std::string &xmlString, std::string &hintString, std::string &reportString); }; pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/diag/foxchecksuite.cpp000066400000000000000000000023261231776762100262320ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #include "foxchecksuite.h" FoxCheckSuite::FoxCheckSuite(MessageQueue *mq) :CheckSuite() ,messageQueue(mq) { } FoxCheckSuite::~FoxCheckSuite() { } bool FoxCheckSuite::beginCheck(const char *title, int doneChecks, int totalChecks) { Message *m; m=new Message(Message::MessageType_Begin, title, doneChecks, totalChecks, true); messageQueue->pushMessage(m); return true; } bool FoxCheckSuite::endCheck(const char *title, int doneChecks, int totalChecks, bool result) { Message *m; m=new Message(Message::MessageType_End, title, doneChecks, totalChecks, result); messageQueue->pushMessage(m); return true; } pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/diag/foxchecksuite.h000066400000000000000000000017301231776762100256750ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #ifndef FOXCHECKSUITE_H #define FOXCHECKSUITE_H #include "checksuite.h" #include "msgqueue.h" class FoxCheckSuite: public CheckSuite { protected: MessageQueue *messageQueue; public: FoxCheckSuite(MessageQueue *mq); virtual ~FoxCheckSuite(); bool beginCheck(const char *title, int doneChecks, int totalChecks); bool endCheck(const char *title, int doneChecks, int totalChecks, bool result); }; #endif pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/diag/fxcy_diag.cpp000066400000000000000000000143651231776762100253310ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #include "fxcy_diag.h" #include "checkwidget.h" #include FXDEFMAP(FXCY_Diagnosis) FXCY_DiagnosisMap[]= { FXMAPFUNC(SEL_COMMAND, FXDialogBox::ID_ACCEPT, FXCY_Diagnosis::onCmdAccept), FXMAPFUNC(SEL_COMMAND, FXDialogBox::ID_CANCEL, FXCY_Diagnosis::onCmdCancel), FXMAPFUNC(SEL_COMMAND, FXCY_Diagnosis::ID_MENU_NEWTEST, FXCY_Diagnosis::onCmdNewTest), }; FXIMPLEMENT(FXCY_Diagnosis, FXDialogBox, FXCY_DiagnosisMap, ARRAYNUMBER(FXCY_DiagnosisMap)); FXCY_Diagnosis::FXCY_Diagnosis() :FXDialogBox() ,m_withReaders(false) ,tabbook(NULL) ,tab1(NULL) ,tab2(NULL) ,tab3(NULL) ,tab4(NULL) ,reportWidget(NULL) ,hintWidget(NULL) ,xmlWidget(NULL) { } FXCY_Diagnosis::FXCY_Diagnosis(FXWindow *owner, const FXString& name, bool withReaders, FXuint opt, FXint x,FXint y, FXint w,FXint h) :FXDialogBox(owner, name, opt, x, y, w, h) ,m_withReaders(withReaders) ,tabbook(NULL) ,tab1(NULL) ,tab2(NULL) ,tab3(NULL) ,tab4(NULL) ,reportWidget(NULL) ,hintWidget(NULL) ,xmlWidget(NULL) { FXVerticalFrame *vf; FXHorizontalFrame *hf; // Tooltip new FXToolTip(getApp()); // Separator new FXHorizontalSeparator(this,LAYOUT_SIDE_TOP|LAYOUT_FILL_X|SEPARATOR_GROOVE); vf=new FXVerticalFrame(this, LAYOUT_FILL_X|LAYOUT_FILL_Y); tabbook=new FXTabBook(vf,this,ID_TABBOOK, PACK_UNIFORM_WIDTH|PACK_UNIFORM_HEIGHT| LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_LEFT); tab1=new FXTabItem(tabbook,"&Einleitung",NULL); introWidget=new FXText(tabbook, this, ID_REPORT_TEXT, LAYOUT_FILL_X|LAYOUT_FILL_Y| TEXT_READONLY|TEXT_WORDWRAP); tab2=new FXTabItem(tabbook,"&Bericht",NULL); reportWidget=new FXText(tabbook, this, ID_REPORT_TEXT, LAYOUT_FILL_X|LAYOUT_FILL_Y| TEXT_READONLY|TEXT_WORDWRAP); tab3=new FXTabItem(tabbook,"&Hinweise",NULL); hintWidget=new FXText(tabbook, this, ID_HINT_TEXT, LAYOUT_FILL_X|LAYOUT_FILL_Y| TEXT_READONLY|TEXT_WORDWRAP); tab4=new FXTabItem(tabbook,"&XML",NULL); xmlWidget=new FXText(tabbook, this, ID_XML_TEXT, LAYOUT_FILL_X|LAYOUT_FILL_Y|TEXT_READONLY); introWidget->setText ( "Cyberjack Diagnose Programm\n" "\n" "Dieses Programm ist in der Lage Ihr System auf die haeufigsten " "Konfigurationsprobleme hin zu ueberpruefen.\n" "\n" "Es dient ausserdem dazu fuer den Support benoetigte Informationen " "ueber Ihr System und den eventuell angeschlossenen Leser " "zusammenzutragen.\n" "\n" "Bei Problemen bekommen Sie Hinweise, die Ihnen helfen sollen diese " "Probleme selbst zu loesen.\n" "\n" "Sollten Sie dabei nicht weiterkommen, wenden Sie sich bitte an den " "Support von Reiner SCT (entweder per Email an support@reiner-sct.de " "oder ueber die Support-Seite auf http://www.reiner-sct.de/).\n" "\n" "Bitte fuegen Sie Ihrer Support-Anfrage die gesammelten Daten der " "\"XML\"-Seite bei.\n" ); new FXHorizontalSeparator(vf, LAYOUT_FILL_X | SEPARATOR_GROOVE); hf=new FXHorizontalFrame(vf, LAYOUT_FILL_X | PACK_UNIFORM_WIDTH); new FXButton(hf, "Schliessen", NULL, this, ID_ACCEPT, BUTTON_NORMAL | BUTTON_DEFAULT | BUTTON_INITIAL | LAYOUT_RIGHT); } FXCY_Diagnosis::~FXCY_Diagnosis() { } bool FXCY_Diagnosis::performTest() { CheckWidget w(getApp(), getX()+100, getY()+100); std::string xmlString; std::string reportString; std::string hintString; bool b; w.create(); w.layout(); w.show(); b=w.performChecks(m_withReaders, xmlString, hintString, reportString); fprintf(stderr, "Result of tests: %s\n", b?"OK":"ERROR"); if (!b) { std::string s; s="Es sind Probleme aufgetreten.\n" "\n" "Auf der \"Hinweise\"-Seite finden Sie Tips, wie Sie diese " "Probleme eventuell selbst loesen koennen.\n" "\n" "Sollten die Hinweise Ihnen nicht weiterhelfen, wenden Sie sich " "bitte an den Support von Reiner SCT.\n" "\n" "Um Ihnen helfen zu koennen, benoetigt der Support einige " "Informationen ueber Ihr System, die dieses Programm bereits fuer " "Sie zusammengestellt hat.\n" "\n" "Bitte oeffnen Sie die \"XML\"-Seite, markieren mit der Maus den " "gesamten Text auf der Seite und kopieren Sie ihn in Ihre Email an " "den Support von Reiner SCT (support@reiner-sct.de).\n" "\n" "Die Tastenkombination \"STRG-C\" kopiert dabei den markierten " "Text in die Zwischenablage. In Ihrem Email-Programm (oder auf der " "Support-Seite) koennen Sie dann den so markierten Text mit der " "Kombination \"STRG-V\" aus der Zwischenablage abrufen.\n" "\n" "Test-Bericht folgt:\n" "-------------------\n"; reportString=s+reportString; } else { std::string s; s="Auf Ihrem System scheint alles in Ordnung zu sein.\n"; if (!hintString.empty()) s+="Schauen Sie sich bitte dennoch die \"Hinweise\"-Seite an um " "zu erfahren, wie Sie den Zugriff auf den Leser verbessern " "koennen.\n"; s+= "\n" "Test-Bericht folgt:\n" "-------------------\n"; reportString=s+reportString; } if (hintString.empty()) hintString+="Es liegen keine Hinweise vor.\n"; reportWidget->setText(reportString.c_str()); hintWidget->setText(hintString.c_str()); xmlWidget->setText(xmlString.c_str()); w.hide(); tabbook->setCurrent(1); return b; } long FXCY_Diagnosis::onCmdNewTest(FXObject*,FXSelector sel,void*){ performTest(); return 1; } long FXCY_Diagnosis::onCmdAccept(FXObject*, FXSelector, void *ptr) { getApp()->stopModal(this,TRUE); hide(); return 1; } long FXCY_Diagnosis::onCmdReject(FXObject*, FXSelector, void *ptr) { getApp()->stopModal(this,FALSE); hide(); return 1; } pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/diag/fxcy_diag.h000066400000000000000000000030361231776762100247670ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #ifndef FXCY_DIAG_H #define FXCY_DIAG_H #include class FXCY_Diagnosis: public FXDialogBox { FXDECLARE(FXCY_Diagnosis) protected: bool m_withReaders; FXTabBook *tabbook; FXTabItem *tab1; FXTabItem *tab2; FXTabItem *tab3; FXTabItem *tab4; FXText *introWidget; FXText *reportWidget; FXText *hintWidget; FXText *xmlWidget; FXCY_Diagnosis(); public: enum { ID_TABBOOK=FXDialogBox::ID_LAST, ID_REPORT_TEXT, ID_HINT_TEXT, ID_XML_TEXT, ID_MENU_NEWTEST, ID_QUIT }; long onCmdAccept(FXObject*, FXSelector, void *ptr); long onCmdReject(FXObject*, FXSelector, void *ptr); public: FXCY_Diagnosis(FXWindow *owner, const FXString& name, bool withReaders, FXuint opts=DECOR_ALL, FXint x=0, FXint y=0, FXint w=0, FXint h=0); ~FXCY_Diagnosis(); bool performTest(); long onCmdNewTest(FXObject*,FXSelector sel,void*); long onCmdQuit(FXObject*,FXSelector sel,void*); }; #endif pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/diag/msgqueue.cpp000066400000000000000000000023471231776762100252240ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #include "msgqueue.h" #include #include Message::Message(MessageType t, const char *title, int doneChecks, int totalChecks, bool result) :_messageType(t) ,_doneChecks(doneChecks) ,_totalChecks(totalChecks) ,_result(result) { assert(title); _title=title; } Message::~Message() { } MessageQueue::MessageQueue() { } MessageQueue::~MessageQueue() { } void MessageQueue::pushMessage(Message *m) { FXMutexLock mlock(_mutex); _messages.push_back(m); } Message *MessageQueue::pullMessage() { FXMutexLock mlock(_mutex); Message *m; if (_messages.empty()) return NULL; m=_messages.front(); _messages.pop_front(); return m; } pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/diag/msgqueue.h000066400000000000000000000027521231776762100246710ustar00rootroot00000000000000/*************************************************************************** * project : Cyberjack Diagnoses Tool begin : Fri Jan 26 2007 copyright : (C) 2007 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * This file is licensed under the GPL version 2. * * Please see toplevel file COPYING for license details * ***************************************************************************/ #ifndef MSGQUEUE_H #define MSGQUEUE_H #include #include #include //class FXMutex; class Message { public: typedef enum { MessageType_Unknown=0, MessageType_Begin, MessageType_End } MessageType; private: MessageType _messageType; std::string _title; int _doneChecks; int _totalChecks; bool _result; public: Message(MessageType t, const char *title, int doneChecks, int totalChecks, bool result); ~Message(); MessageType getMessageType() const { return _messageType;}; const std::string &getTitle() const { return _title;}; int getDoneChecks() const { return _doneChecks;}; int getTotalChecks() const { return _totalChecks;}; bool getResult() const { return _result;}; }; class MessageQueue { private: std::list _messages; FXMutex _mutex; public: MessageQueue(); ~MessageQueue(); void pushMessage(Message *m); Message *pullMessage(); }; #endif pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/fxcy_app.cpp000066400000000000000000000072121231776762100242720ustar00rootroot00000000000000/*************************************************************************** begin : Wed Mar 25 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "fxcy_app.hpp" #include "icons/icons.cpp" FXCY_App::FXCY_App(const FXString& name, const FXString& vendor) :FXApp(name, vendor) ,m_iconSource(NULL){ m_iconSource=new FXIconSource(this); } FXCY_App::~FXCY_App() { } FXIcon *FXCY_App::getIcon(FXCY_App::IconId id) { switch(id) { case IconId_PinpadSmall: return m_iconSource->loadIconData(fxcj_icon_cy_pinpad_s, "jpg"); case IconId_PinpadNormal: return m_iconSource->loadIconData(fxcj_icon_cy_pinpad_n, "jpg"); case IconId_PinpadBig: return m_iconSource->loadIconData(fxcj_icon_cy_pinpad_b, "jpg"); case IconId_PinpadASmall: return m_iconSource->loadIconData(fxcj_icon_cy_pinpad_s, "jpg"); case IconId_PinpadANormal: return m_iconSource->loadIconData(fxcj_icon_cy_pinpad_n, "jpg"); case IconId_PinpadABig: return m_iconSource->loadIconData(fxcj_icon_cy_pinpad_b, "jpg"); case IconId_EcomSmall: return m_iconSource->loadIconData(fxcj_icon_cy_ecom_s, "jpg"); case IconId_EcomNormal: return m_iconSource->loadIconData(fxcj_icon_cy_ecom_n, "jpg"); case IconId_EcomBig: return m_iconSource->loadIconData(fxcj_icon_cy_ecom_b, "jpg"); case IconId_EcomASmall: return m_iconSource->loadIconData(fxcj_icon_cy_ecom_s, "jpg"); case IconId_EcomANormal: return m_iconSource->loadIconData(fxcj_icon_cy_ecom_n, "jpg"); case IconId_EcomABig: return m_iconSource->loadIconData(fxcj_icon_cy_ecom_b, "jpg"); case IconId_EcomPlusSmall: return m_iconSource->loadIconData(fxcj_icon_cy_ecom_plus_s, "jpg"); case IconId_EcomPlusNormal: return m_iconSource->loadIconData(fxcj_icon_cy_ecom_plus_n, "jpg"); case IconId_EcomPlusBig: return m_iconSource->loadIconData(fxcj_icon_cy_ecom_plus_b, "jpg"); case IconId_SecoderSmall: return m_iconSource->loadIconData(fxcj_icon_cy_secoder_s, "jpg"); case IconId_SecoderNormal: return m_iconSource->loadIconData(fxcj_icon_cy_secoder_n, "jpg"); case IconId_SecoderBig: return m_iconSource->loadIconData(fxcj_icon_cy_secoder_b, "jpg"); case IconId_Unknown: default: return NULL; } } pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/fxcy_app.hpp000066400000000000000000000044721231776762100243040ustar00rootroot00000000000000/*************************************************************************** begin : Wed Mar 25 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef FXCY_APP_HPP #define FXCY_APP_HPP #include class FXCY_App: public FXApp { public: typedef enum { IconId_Unknown=0, IconId_PinpadSmall=1, IconId_PinpadNormal, IconId_PinpadBig, IconId_PinpadASmall, IconId_PinpadANormal, IconId_PinpadABig, IconId_EcomSmall, IconId_EcomNormal, IconId_EcomBig, IconId_EcomASmall, IconId_EcomANormal, IconId_EcomABig, IconId_EcomPlusSmall, IconId_EcomPlusNormal, IconId_EcomPlusBig, IconId_SecoderSmall, IconId_SecoderNormal, IconId_SecoderBig } IconId; FXCY_App(const FXString& name="Application",const FXString& vendor="FoxDefault"); virtual ~FXCY_App(); FXIcon *getIcon(IconId id); protected: FXIconSource *m_iconSource; }; #endif pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/fxcy_mainwindow.cpp000066400000000000000000000157731231776762100257010ustar00rootroot00000000000000/*************************************************************************** begin : Wed Mar 25 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "fxcy_mainwindow.hpp" #include "fxcy_readerview.hpp" #include "diag/fxcy_diag.h" #include "libcyberjack/driver_pcsc.hpp" FXDEFMAP(FXCY_MainWindow) FXCY_MainWindowMap[]={ FXMAPFUNC(SEL_COMMAND, FXCY_MainWindow::ID_CMD_REFRESH, FXCY_MainWindow::onCmdRefresh), FXMAPFUNC(SEL_COMMAND, FXCY_MainWindow::ID_CMD_CHECK, FXCY_MainWindow::onCmdDiag), FXMAPFUNC(SEL_COMMAND, FXCY_MainWindow::ID_CMD_CHECK2, FXCY_MainWindow::onCmdDiagWithReaders), }; FXIMPLEMENT(FXCY_MainWindow, FXMainWindow, FXCY_MainWindowMap, ARRAYNUMBER(FXCY_MainWindowMap)) FXCY_MainWindow::FXCY_MainWindow(FXApp* a, const FXString& name, FXIcon *ic, FXIcon *mi, FXuint opts, FXint x, FXint y, FXint w, FXint h, FXint pl, FXint pr, FXint pt, FXint pb, FXint hs, FXint vs) :FXMainWindow(a, name, ic, mi, opts, x, y, w, h, pl, pr, pt, pb, hs, vs) ,m_readerView(NULL) ,m_driver(NULL) ,m_menubar(NULL) ,m_filemenu(NULL) ,m_viewmenu(NULL) ,m_diagmenu(NULL) { FXCY_ReaderList *rl; /* Menu bar */ m_menubar=new FXMenuBar(this, LAYOUT_SIDE_TOP | LAYOUT_FILL_X); /* File menu */ m_filemenu=new FXMenuPane(this); new FXMenuCommand(m_filemenu, "&Beenden\tCtl-Q", NULL, getApp(), FXApp::ID_QUIT); new FXMenuTitle(m_menubar, "&Datei", NULL, m_filemenu); #if 0 /* Status bar */ m_statusbar=new FXStatusBar(this, LAYOUT_SIDE_BOTTOM | LAYOUT_FILL_X | STATUSBAR_WITH_DRAGCORNER); #endif /* main view */ m_readerView=new FXCY_ReaderView(this, LAYOUT_FILL_X | LAYOUT_FILL_Y); rl=m_readerView->getReaderList(); /* diagnostic menu */ m_diagmenu=new FXMenuPane(this); new FXMenuCommand(m_diagmenu, "&System pruefen", NULL, this, ID_CMD_CHECK); new FXMenuCommand(m_diagmenu, "&System und Leser pruefen", NULL, this, ID_CMD_CHECK2); new FXMenuTitle(m_menubar, "&Diagnose", NULL, m_diagmenu); /* Arrange menu */ m_viewmenu=new FXMenuPane(this); new FXMenuCommand(m_viewmenu,"Auff&rischen\tF5", NULL, this, ID_CMD_REFRESH); new FXMenuSeparator(m_viewmenu); new FXMenuRadio(m_viewmenu,"&Details",rl, FXIconList::ID_SHOW_DETAILS); new FXMenuRadio(m_viewmenu,"&Kleine Icons",rl, FXIconList::ID_SHOW_MINI_ICONS); new FXMenuRadio(m_viewmenu,"&Grosse Icons",rl, FXIconList::ID_SHOW_BIG_ICONS); new FXMenuSeparator(m_viewmenu); new FXMenuRadio(m_viewmenu,"&Zeilenweise",rl, FXIconList::ID_ARRANGE_BY_ROWS); new FXMenuRadio(m_viewmenu,"&Spaltenweise",rl, FXIconList::ID_ARRANGE_BY_COLUMNS); new FXMenuTitle(m_menubar,"&Ansicht", NULL, m_viewmenu); } FXCY_MainWindow::FXCY_MainWindow() :FXMainWindow() ,m_readerView(NULL) ,m_menubar(NULL) ,m_filemenu(NULL) ,m_viewmenu(NULL) ,m_diagmenu(NULL) { } FXCY_MainWindow::~FXCY_MainWindow() { fprintf(stderr, "Destroying MainWindow\n"); if (m_driver) { m_readerView->clearReaderList(); m_driver->clearReaderList(); m_driver->close(); delete m_driver; m_driver=NULL; } delete m_filemenu; delete m_diagmenu; delete m_viewmenu; delete m_menubar; } void FXCY_MainWindow::create() { FXMainWindow::create(); m_readerView->create(); } int FXCY_MainWindow::updateReaderList(bool force) { if (m_driver) { int rv; if (force) { m_readerView->clearReaderList(); m_driver->clearReaderList(); } rv=m_driver->enumReaders(); if (rv<0) { fprintf(stderr, "Error in enumReaders: %d\n", rv); m_readerView->clearReaderList(); m_driver->clearReaderList(); return rv; } #if 0 /* get extended reader info */ std::list::const_iterator it; for (it=m_driver->getReaders().begin(); it!=m_driver->getReaders().end(); it++) { if ((*it)->getUpdateCounter()==0) { rv=(*it)->gatherInfo(true); if (rv!=Cyberjack::ErrorCode_Ok) { fprintf(stderr, "Error gathering info: %d\n", rv); } } } #endif m_readerView->applyReaderList(m_driver->getUpdateCounter(), m_driver->getReaders()); m_driver->removeOldReaders(); return Cyberjack::ErrorCode_Ok; } else { return Cyberjack::ErrorCode_Invalid; } } int FXCY_MainWindow::openDriverPcsc() { Cyberjack::Driver *dr; int rv; dr=Cyberjack::NewDriverPcsc(); rv=dr->open(); if (rv<0) { fprintf(stderr, "Error in open: %d\n", rv); delete dr; return rv; } m_driver=dr; return Cyberjack::ErrorCode_Ok; } int FXCY_MainWindow::closeDriver() { if (m_driver) { int rv; m_readerView->clearReaderList(); m_driver->clearReaderList(); rv=m_driver->close(); delete m_driver; m_driver=NULL; if (rv<0) { fprintf(stderr, "Error in close: %d\n", rv); return rv; } } return Cyberjack::ErrorCode_Ok; } long FXCY_MainWindow::onCmdRefresh(FXObject*, FXSelector, void *ptr) { if (m_driver) { fprintf(stderr, "Refresh\n"); updateReaderList(true); } return 1; } long FXCY_MainWindow::onCmdDiag(FXObject*, FXSelector, void *ptr) { FXCY_Diagnosis dlg(this, "System ueberpruefen", false, DECOR_ALL); dlg.create(); dlg.resize(500, 400); dlg.show(); dlg.performTest(); dlg.execute(); return 1; } long FXCY_MainWindow::onCmdDiagWithReaders(FXObject*, FXSelector, void *ptr) { FXCY_Diagnosis dlg(this, "System ueberpruefen", true, DECOR_ALL); dlg.create(); dlg.resize(500, 400); dlg.show(); dlg.performTest(); dlg.execute(); return 1; } pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/fxcy_mainwindow.hpp000066400000000000000000000053601231776762100256750ustar00rootroot00000000000000/*************************************************************************** begin : Wed Mar 25 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef FXCY_MAINWINDOW_HPP #define FXCY_MAINWINDOW_HPP #include #include "libcyberjack/driver.hpp" #include "fxcy_readerview.hpp" class FXCY_MainWindow: public FXMainWindow { FXDECLARE(FXCY_MainWindow) protected: FXCY_MainWindow(); public: enum { ID_CMD_REFRESH=FXMainWindow::ID_LAST, ID_CMD_CHECK, ID_CMD_CHECK2, ID_LAST }; long onCmdRefresh(FXObject*, FXSelector, void *ptr); long onCmdDiag(FXObject*, FXSelector, void *ptr); long onCmdDiagWithReaders(FXObject*, FXSelector, void *ptr); FXCY_MainWindow(FXApp* a, const FXString& name, FXIcon *ic=NULL, FXIcon *mi=NULL, FXuint opts=DECOR_ALL, FXint x=0, FXint y=0, FXint w=0, FXint h=0, FXint pl=0, FXint pr=0, FXint pt=0, FXint pb=0, FXint hs=0, FXint vs=0); ~FXCY_MainWindow(); void create(); int openDriverPcsc(); int updateReaderList(bool force); int closeDriver(); protected: FXCY_ReaderView *m_readerView; Cyberjack::Driver *m_driver; FXMenuBar *m_menubar; FXMenuPane *m_filemenu; FXMenuPane *m_viewmenu; FXMenuPane *m_diagmenu; FXStatusBar *m_statusbar; }; #endif pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/fxcy_readerdetails.cpp000066400000000000000000000255271231776762100263330ustar00rootroot00000000000000/*************************************************************************** begin : Wed Mar 25 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "fxcy_readerdetails.hpp" #include "fxcy_app.hpp" #define RDETAILS_TEXTFIELD_WIDTH 40 FXDEFMAP(FXCY_ReaderDetails) FXCY_ReaderDetailsMap[]={ FXMAPFUNC(SEL_COMMAND, FXDialogBox::ID_ACCEPT, FXCY_ReaderDetails::onCmdAccept), FXMAPFUNC(SEL_COMMAND, FXDialogBox::ID_CANCEL, FXCY_ReaderDetails::onCmdCancel) }; FXIMPLEMENT(FXCY_ReaderDetails, FXDialogBox, FXCY_ReaderDetailsMap, ARRAYNUMBER(FXCY_ReaderDetailsMap)) FXCY_ReaderDetails::FXCY_ReaderDetails(Cyberjack::Reader *r, FXWindow *owner, const FXString& name, FXuint opts, FXint x, FXint y, FXint w, FXint h) :FXDialogBox(owner, name, opts, x, y, w, h) ,m_reader(r) ,m_readerIcon(NULL) { FXCY_App *a; FXVerticalFrame *vf; FXHorizontalFrame *hf; FXIcon *ic=NULL; const char *s; FXLabel *ll; FXString str; const cj_ReaderInfo &ri=r->getReaderInfo(); a=dynamic_cast(getApp()); vf=new FXVerticalFrame(this, LAYOUT_FILL_X | LAYOUT_FILL_Y); /* title (name) */ new FXLabel(vf, FXString(r->getName().c_str()).trim(), NULL, LAYOUT_TOP | LAYOUT_CENTER_X); hf=new FXHorizontalFrame(vf, LAYOUT_FILL_X | LAYOUT_FILL_Y); /* big icon and product string */ s=r->getProductString().c_str(); if (strcasecmp(s, "cyberJack e-com(a)")==0) ic=a->getIcon(FXCY_App::IconId_EcomABig); else if (strcasecmp(s, "cyberJack pinpad(a)")==0) ic=a->getIcon(FXCY_App::IconId_PinpadABig); else if (strcasecmp(s, "cyberJack e-com/pinpad")==0) ic=a->getIcon(FXCY_App::IconId_PinpadBig); else if (strcasecmp(s, "cyberJack e-com plus")==0) ic=a->getIcon(FXCY_App::IconId_EcomPlusBig); else if (strcasecmp(s, "cyberJack e-com plus RFID")==0) ic=a->getIcon(FXCY_App::IconId_EcomPlusBig); else if (strcasecmp(s, "cyberJack Secoder")==0) ic=a->getIcon(FXCY_App::IconId_SecoderBig); if (ic==NULL) ic=a->getIcon(FXCY_App::IconId_EcomABig); m_readerIcon=ic; new FXLabel(hf, FXString(r->getProductString().c_str()).trim(), ic, TEXT_BELOW_ICON); /* reader info */ if (ri.ContentsMask==0) { new FXLabel(hf, "Keine Details verfuegbar.\n" "Aeltere Leser (wie cyberJack Pinpad und cyberJack e-com) stellen\n" "keine Informationen ueber installierte Module etc zur Verfuegung.", NULL, LAYOUT_FILL_X | LAYOUT_FILL_Y); } else { FXMatrix *m; m=new FXMatrix(hf, 2, MATRIX_BY_COLUMNS | LAYOUT_FILL_X | LAYOUT_FILL_Y); if (ri.ContentsMask & RSCT_READER_MASK_PID) { new FXLabel(m, "PID", NULL, LABEL_NORMAL); ll=new FXLabel(m, FXStringVal(ri.PID, 16), NULL, LABEL_NORMAL | JUSTIFY_LEFT | FRAME_SUNKEN | LAYOUT_FILL_X); ll->setBackColor(getApp()->getBackColor()); } if (ri.ContentsMask & RSCT_READER_MASK_VENDOR_STRING) { new FXLabel(m, "Hersteller", NULL, LABEL_NORMAL); ll=new FXLabel(m, "", NULL, LABEL_NORMAL | JUSTIFY_LEFT | FRAME_SUNKEN | LAYOUT_FILL_X); ll->setBackColor(getApp()->getBackColor()); ll->setText(FXString((const char*)ri.VendorString).trim()); } if (ri.ContentsMask & RSCT_READER_MASK_PRODUCT_STRING) { new FXLabel(m, "Produkt", NULL, LABEL_NORMAL); ll=new FXLabel(m, "", NULL, LABEL_NORMAL | JUSTIFY_LEFT | FRAME_SUNKEN | LAYOUT_FILL_X); ll->setBackColor(getApp()->getBackColor()); ll->setText(FXString((const char*)ri.ProductString).trim()); } if (ri.ContentsMask & RSCT_READER_MASK_SERIALNUMBER) { new FXLabel(m, "Seriennummer", NULL, LABEL_NORMAL); ll=new FXLabel(m, "", NULL, LABEL_NORMAL | JUSTIFY_LEFT | FRAME_SUNKEN | LAYOUT_FILL_X); ll->setBackColor(getApp()->getBackColor()); ll->setText(FXString((const char*)ri.SeriaNumber).trim()); } if (ri.ContentsMask & RSCT_READER_MASK_PRODUCTION_DATE) { new FXLabel(m, "Herstellungsdatum", NULL, LABEL_NORMAL); ll=new FXLabel(m, "", NULL, LABEL_NORMAL | JUSTIFY_LEFT | FRAME_SUNKEN | LAYOUT_FILL_X); ll->setBackColor(getApp()->getBackColor()); ll->setText(FXString((const char*)ri.ProductionDate).trim()); } if (ri.ContentsMask & RSCT_READER_MASK_TEST_DATE) { new FXLabel(m, "Testdatum", NULL, LABEL_NORMAL); ll=new FXLabel(m, "", NULL, LABEL_NORMAL | JUSTIFY_LEFT | FRAME_SUNKEN | LAYOUT_FILL_X); ll->setBackColor(getApp()->getBackColor()); ll->setText(FXString((const char*)ri.TestDate).trim()); } if (ri.ContentsMask & RSCT_READER_MASK_COMMISSIONING_DATE) { new FXLabel(m, "Freigabedatum", NULL, LABEL_NORMAL); ll=new FXLabel(m, "", NULL, LABEL_NORMAL | JUSTIFY_LEFT | FRAME_SUNKEN | LAYOUT_FILL_X); ll->setBackColor(getApp()->getBackColor()); ll->setText(FXString((const char*)ri.CommissioningDate).trim()); } if (ri.ContentsMask & RSCT_READER_MASK_COM_TYPE) { new FXLabel(m, "Anschlussart", NULL, LABEL_NORMAL); ll=new FXLabel(m, "", NULL, LABEL_NORMAL | JUSTIFY_LEFT | FRAME_SUNKEN | LAYOUT_FILL_X); ll->setBackColor(getApp()->getBackColor()); ll->setText(FXString((const char*)ri.CommunicationString).trim()); } if (ri.ContentsMask & RSCT_READER_MASK_HARDWARE) { new FXLabel(m, "Eigenschaften", NULL, LABEL_NORMAL); ll=new FXLabel(m, "", NULL, LABEL_NORMAL | JUSTIFY_LEFT | FRAME_SUNKEN | LAYOUT_FILL_X); ll->setBackColor(getApp()->getBackColor()); str=""; if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC1) str+=" ICC1"; if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC2) str+=" ICC2"; if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC3) str+=" ICC3"; if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC4) str+=" ICC4"; if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC5) str+=" ICC5"; if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC6) str+=" ICC6"; if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC7) str+=" ICC7"; if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_ICC8) str+=" ICC8"; if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_KEYPAD) str+=" Keypad"; if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_DISPLAY) str+=" Display"; if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_BIOMETRIC) str+=" Fingersensor"; if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_UPDATEABLE) str+=" Firmwareupdate"; if (ri.HardwareMask & RSCT_READER_HARDWARE_MASK_MODULES) str+=" Sicherheitsmodule"; str.trim(); ll->setText(str); } if (ri.ContentsMask & RSCT_READER_MASK_VERSION) { new FXLabel(m, "Version", NULL, LABEL_NORMAL); ll=new FXLabel(m, "", NULL, LABEL_NORMAL | JUSTIFY_LEFT | FRAME_SUNKEN | LAYOUT_FILL_X); ll->setBackColor(getApp()->getBackColor()); ll->setText(FXStringVal(ri.Version, 16)); } if (ri.ContentsMask & RSCT_READER_MASK_HARDWARE_VERSION) { new FXLabel(m, "Hardware-Version", NULL, LABEL_NORMAL); ll=new FXLabel(m, "", NULL, LABEL_NORMAL | JUSTIFY_LEFT | FRAME_SUNKEN | LAYOUT_FILL_X); ll->setBackColor(getApp()->getBackColor()); ll->setText(FXStringVal(ri.HardwareVersion, 16)); } if (ri.ContentsMask & RSCT_READER_MASK_IFD_BRIDGE) { new FXLabel(m, "IFD-Bridge", NULL, LABEL_NORMAL); ll=new FXLabel(m, "", NULL, LABEL_NORMAL | JUSTIFY_LEFT | FRAME_SUNKEN | LAYOUT_FILL_X); ll->setBackColor(getApp()->getBackColor()); ll->setText(FXString((const char*)ri.IFDNameOfIfdBridgeDevice).trim()); } if (ri.ContentsMask & RSCT_READER_MASK_HW_STRING) { new FXLabel(m, "Hardware-String", NULL, LABEL_NORMAL); ll=new FXLabel(m, "", NULL, LABEL_NORMAL | JUSTIFY_LEFT | FRAME_SUNKEN | LAYOUT_FILL_X); ll->setBackColor(getApp()->getBackColor()); ll->setText(FXString((const char*)ri.HardwareString).trim()); } if (ri.ContentsMask & RSCT_READER_MASK_FLASH_SIZE) { new FXLabel(m, "Flashgroesse", NULL, LABEL_NORMAL); ll=new FXLabel(m, "", NULL, LABEL_NORMAL | JUSTIFY_LEFT | FRAME_SUNKEN | LAYOUT_FILL_X); ll->setBackColor(getApp()->getBackColor()); ll->setText(FXStringVal(ri.FlashSize, 10)); } if (ri.ContentsMask & RSCT_READER_MASK_HEAP_SIZE) { new FXLabel(m, "Heapgroesse", NULL, LABEL_NORMAL); ll=new FXLabel(m, "", NULL, LABEL_NORMAL | JUSTIFY_LEFT | FRAME_SUNKEN | LAYOUT_FILL_X); ll->setBackColor(getApp()->getBackColor()); ll->setText(FXStringVal(ri.HeapSize, 10)); } } new FXHorizontalSeparator(vf, LAYOUT_FILL_X | SEPARATOR_GROOVE); hf=new FXHorizontalFrame(vf, LAYOUT_FILL_X | PACK_UNIFORM_WIDTH); new FXButton(hf, "Schliessen", NULL, this, ID_ACCEPT, BUTTON_NORMAL | BUTTON_DEFAULT | BUTTON_INITIAL | LAYOUT_RIGHT); } FXCY_ReaderDetails::FXCY_ReaderDetails() :FXDialogBox() ,m_reader(NULL) ,m_readerIcon(NULL) { } FXCY_ReaderDetails::~FXCY_ReaderDetails() { } void FXCY_ReaderDetails::create() { FXDialogBox::create(); if (m_readerIcon) m_readerIcon->create(); } long FXCY_ReaderDetails::onCmdAccept(FXObject*, FXSelector, void *ptr) { getApp()->stopModal(this,TRUE); hide(); return 1; } long FXCY_ReaderDetails::onCmdReject(FXObject*, FXSelector, void *ptr) { getApp()->stopModal(this,FALSE); hide(); return 1; } pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/fxcy_readerdetails.hpp000066400000000000000000000044021231776762100263250ustar00rootroot00000000000000/*************************************************************************** begin : Wed Mar 25 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef FXCY_READERDETAILS_HPP #define FXCY_READERDETAILS_HPP #include #include "libcyberjack/driver.hpp" class FXCY_App; class FXCY_ReaderDetails: public FXDialogBox { FXDECLARE(FXCY_ReaderDetails) protected: FXCY_ReaderDetails(); public: long onCmdAccept(FXObject*, FXSelector, void *ptr); long onCmdReject(FXObject*, FXSelector, void *ptr); FXCY_ReaderDetails(Cyberjack::Reader *r, FXWindow *owner, const FXString& name, FXuint opts=0, FXint x=0, FXint y=0, FXint w=0, FXint h=0); ~FXCY_ReaderDetails(); void create(); protected: Cyberjack::Reader *m_reader; FXIcon *m_readerIcon; }; #endif pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/fxcy_readerflash.cpp000066400000000000000000000125531231776762100257760ustar00rootroot00000000000000/*************************************************************************** begin : Thu Mar 26 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "fxcy_readerflash.hpp" #include "fxcy_app.hpp" FXDEFMAP(FXCY_ReaderFlash) FXCY_ReaderFlashMap[]={ FXMAPFUNC(SEL_COMMAND, FXDialogBox::ID_ACCEPT, FXCY_ReaderFlash::onCmdAccept), FXMAPFUNC(SEL_COMMAND, FXDialogBox::ID_CANCEL, FXCY_ReaderFlash::onCmdCancel), FXMAPFUNC(SEL_COMMAND, FXCY_ReaderFlash::ID_BUTTON_MODUL, FXCY_ReaderFlash::onCmdButtonModule), FXMAPFUNC(SEL_COMMAND, FXCY_ReaderFlash::ID_BUTTON_SIGNATURE, FXCY_ReaderFlash::onCmdButtonSignature), }; FXIMPLEMENT(FXCY_ReaderFlash, FXDialogBox, FXCY_ReaderFlashMap, ARRAYNUMBER(FXCY_ReaderFlashMap)) FXCY_ReaderFlash::FXCY_ReaderFlash(Cyberjack::Reader *r, FXWindow *owner, const FXString& name, FXuint opts, FXint x, FXint y, FXint w, FXint h) :FXDialogBox(owner, name, opts, x, y, w, h) ,m_reader(r) ,m_editModuleFile(NULL) ,m_editSignatureFile(NULL) { FXVerticalFrame *vf; FXHorizontalFrame *hf; FXMatrix *m; vf=new FXVerticalFrame(this, LAYOUT_FILL_X | LAYOUT_FILL_Y); m=new FXMatrix(vf, 3, MATRIX_BY_COLUMNS | LAYOUT_FILL_X | LAYOUT_FILL_Y); new FXLabel(m, "Moduldatei", NULL, LABEL_NORMAL); m_editModuleFile=new FXTextField(m, 40, this, ID_EDIT_MODULE, TEXTFIELD_NORMAL); new FXButton(m, "...", NULL, this, ID_BUTTON_MODUL, BUTTON_NORMAL); new FXLabel(m, "Signaturdatei", NULL, LABEL_NORMAL); m_editSignatureFile=new FXTextField(m, 40, this, ID_EDIT_SIGNATURE, TEXTFIELD_NORMAL); new FXButton(m, "...", NULL, this, ID_BUTTON_SIGNATURE, BUTTON_NORMAL); new FXHorizontalSeparator(vf, LAYOUT_FILL_X | SEPARATOR_GROOVE); hf=new FXHorizontalFrame(vf, LAYOUT_FILL_X | PACK_UNIFORM_WIDTH); new FXButton(hf, "Abbrechen", NULL, this, ID_CANCEL, BUTTON_NORMAL | BUTTON_DEFAULT | BUTTON_INITIAL | LAYOUT_RIGHT); new FXButton(hf, "Ausfuehren", NULL, this, ID_ACCEPT, BUTTON_NORMAL | BUTTON_DEFAULT | BUTTON_INITIAL | LAYOUT_RIGHT); } FXCY_ReaderFlash::FXCY_ReaderFlash() :FXDialogBox() ,m_reader(NULL) ,m_editModuleFile(NULL) ,m_editSignatureFile(NULL) { } FXCY_ReaderFlash::~FXCY_ReaderFlash() { } void FXCY_ReaderFlash::create() { FXDialogBox::create(); } long FXCY_ReaderFlash::onCmdAccept(FXObject*, FXSelector, void *ptr) { getApp()->stopModal(this,TRUE); return 1; } long FXCY_ReaderFlash::onCmdReject(FXObject*, FXSelector, void *ptr) { getApp()->stopModal(this,FALSE); return 1; } long FXCY_ReaderFlash::onCmdButtonModule(FXObject*, FXSelector, void *ptr) { FXString path=m_editModuleFile->getText(); if (path.empty()) path=m_lastPath; FXString s=FXFileDialog::getOpenFilename(this, "Moduldatei auswaehlen", path, "Moduldateien (*.bin)\nAlle Dateien (*)"); if (!s.empty()) { int lpos=s.rfind('/'); if (lpos!=-1) m_lastPath=s.left(lpos+1); if (s.right(4).lower()==".bin") m_editSignatureFile->setText(s+".ecoma.sgn"); m_editModuleFile->setText(s); } return 1; } long FXCY_ReaderFlash::onCmdButtonSignature(FXObject*, FXSelector, void *ptr) { FXString path=m_editSignatureFile->getText(); if (path.empty()) path=m_lastPath; FXString s=FXFileDialog::getOpenFilename(this, "Signaturdatei auswaehlen", path, "Signaturdateien (*.sgn)\nAlle Dateien (*)"); if (!s.empty()) { int lpos=s.rfind('/'); if (lpos!=-1) m_lastPath=s.left(lpos+1); m_editSignatureFile->setText(s); } return 1; } FXString FXCY_ReaderFlash::getModuleFile() const { return m_editModuleFile->getText(); } FXString FXCY_ReaderFlash::getSignatureFile() const { return m_editSignatureFile->getText(); } pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/fxcy_readerflash.hpp000066400000000000000000000051751231776762100260050ustar00rootroot00000000000000/*************************************************************************** begin : Thu Mar 26 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef FXCY_READERFLASH_HPP #define FXCY_READERFLASH_HPP #include #include "libcyberjack/driver.hpp" class FXCY_App; class FXCY_ReaderFlash: public FXDialogBox { FXDECLARE(FXCY_ReaderFlash) protected: FXCY_ReaderFlash(); public: enum { ID_EDIT_MODULE=FXDialogBox::ID_LAST, ID_BUTTON_MODUL, ID_EDIT_SIGNATURE, ID_BUTTON_SIGNATURE, ID_LAST }; long onCmdAccept(FXObject*, FXSelector, void *ptr); long onCmdReject(FXObject*, FXSelector, void *ptr); long onCmdButtonModule(FXObject*, FXSelector, void *ptr); long onCmdButtonSignature(FXObject*, FXSelector, void *ptr); FXCY_ReaderFlash(Cyberjack::Reader *r, FXWindow *owner, const FXString& name, FXuint opts=0, FXint x=0, FXint y=0, FXint w=0, FXint h=0); ~FXCY_ReaderFlash(); void create(); FXString getModuleFile() const; FXString getSignatureFile() const; protected: Cyberjack::Reader *m_reader; FXTextField *m_editModuleFile; FXTextField *m_editSignatureFile; FXString m_lastPath; }; #endif pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/fxcy_readerflash2.cpp000066400000000000000000000261751231776762100260650ustar00rootroot00000000000000/*************************************************************************** begin : Tue Apr 06 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "fxcy_readerflash2.hpp" #include "fxcy_app.hpp" FXDEFMAP(FXCY_ReaderFlash2) FXCY_ReaderFlash2Map[]={ FXMAPFUNC(SEL_COMMAND, FXDialogBox::ID_CANCEL, FXCY_ReaderFlash2::onCmdCancel), FXMAPFUNC(SEL_COMMAND, FXCY_ReaderFlash2::ID_BUTTON_FLASH, FXCY_ReaderFlash2::onCmdButtonFlash), FXMAPFUNC(SEL_COMMAND, FXCY_ReaderFlash2::ID_LISTBOX, FXCY_ReaderFlash2::onCmdListBox), }; FXIMPLEMENT(FXCY_ReaderFlash2, FXDialogBox, FXCY_ReaderFlash2Map, ARRAYNUMBER(FXCY_ReaderFlash2Map)) FXCY_ReaderFlash2::FXCY_ReaderFlash2(Cyberjack::Reader *r, FXWindow *owner, const FXString& name, FXuint opts, FXint x, FXint y, FXint w, FXint h) :FXDialogBox(owner, name, opts, x, y, w, h) ,m_reader(r) ,m_moduleStore(NULL) ,m_listBox(NULL) ,m_moduleList(NULL) { FXVerticalFrame *vf; FXHorizontalFrame *hf; vf=new FXVerticalFrame(this, LAYOUT_FILL_X | LAYOUT_FILL_Y); hf=new FXHorizontalFrame(vf, LAYOUT_FILL_X); new FXLabel(hf, "Modul-Auswahl", NULL, LABEL_NORMAL); m_listBox=new FXListBox(hf, this, ID_LISTBOX, LAYOUT_FILL_COLUMN | FRAME_SUNKEN | FRAME_THICK | LISTBOX_NORMAL); m_moduleList=new FXFoldingList(vf, this, ID_MODULE_LIST, FOLDINGLIST_NORMAL | FOLDINGLIST_BROWSESELECT | LAYOUT_FILL_X | LAYOUT_FILL_Y); m_moduleList->appendHeader("Name", NULL, 100); m_moduleList->appendHeader("Beschreibung", NULL, 320); new FXHorizontalSeparator(vf, LAYOUT_FILL_X | SEPARATOR_GROOVE); hf=new FXHorizontalFrame(vf, LAYOUT_FILL_X | PACK_UNIFORM_WIDTH); new FXButton(hf, "Abbrechen", NULL, this, ID_CANCEL, BUTTON_NORMAL | BUTTON_DEFAULT | BUTTON_INITIAL | LAYOUT_RIGHT); m_flashButton=new FXButton(hf, "Ausfuehren", NULL, this, ID_BUTTON_FLASH, BUTTON_NORMAL | BUTTON_DEFAULT | BUTTON_INITIAL | LAYOUT_RIGHT); } FXint FXCY_ReaderFlash2::getDefaultWidth() { return 480; } FXint FXCY_ReaderFlash2::getDefaultHeight() { return FXDialogBox::getDefaultHeight()+100; } FXCY_ReaderFlash2::FXCY_ReaderFlash2() :FXDialogBox() ,m_reader(NULL) ,m_moduleStore(NULL) ,m_listBox(NULL) ,m_moduleList(NULL) { } FXCY_ReaderFlash2::~FXCY_ReaderFlash2() { } long FXCY_ReaderFlash2::onCmdReject(FXObject*, FXSelector, void *ptr) { getApp()->stopModal(this,FALSE); return 1; } Cyberjack::Module *FXCY_ReaderFlash2::findModuleByName(const char *s) { std::list &ml=m_moduleStore->getModules(); std::list::iterator it; /* add entries to combo box */ for (it=ml.begin(); it!=ml.end(); it++) { if (strcasecmp(it->getModuleName().c_str(), s)==0) return &(*it); } return NULL; } long FXCY_ReaderFlash2::onCmdListBox(FXObject*, FXSelector, void *ptr) { FXint i=(FXint)(FXival)ptr; selectedTemplate(i); return 1; } void FXCY_ReaderFlash2::selectedTemplate(int idx) { Cyberjack::MTemplate *tmpl; int nv; m_moduleList->clearItems(); tmpl=(Cyberjack::MTemplate*) m_listBox->getItemData(idx); if (m_moduleStore && tmpl) { const std::list &modNames=tmpl->getModuleNames(); if (!modNames.empty()) { std::list::const_iterator it; for (it=modNames.begin(); it!=modNames.end(); it++) { Cyberjack::Module *m=findModuleByName(it->c_str()); if (m) { FXString str; str=FXString(m->getModuleName().c_str()); str+="\t"; str+=FXString(m->getDescr().c_str()); FXFoldingItem *item=new FXFoldingItem(str); m_moduleList->appendItem(NULL, item, FALSE); } } } } nv=m_listBox->getNumItems(); if (nv>10) nv=10; m_listBox->setNumVisible(nv); if (m_moduleList->getNumItems()) m_flashButton->enable(); else m_flashButton->disable(); } long FXCY_ReaderFlash2::onCmdButtonFlash(FXObject*, FXSelector, void *ptr) { Cyberjack::MTemplate *tmpl; tmpl=(Cyberjack::MTemplate*) m_listBox->getItemData(m_listBox->getCurrentItem()); if (m_moduleStore && tmpl) { const std::list &modNames=tmpl->getModuleNames(); if (!modNames.empty()) { std::list::const_iterator it; int rv; /* read keyfile (not really necessary, may we should omit that) */ if (!m_moduleStore->readKeyFile()) { FXMessageBox::error(this, MBOX_OK, "Fehler", "Die Schluesseldatei \"%s\" konnte nicht geladen werden.\n", m_moduleStore->getKeyFileName().c_str()); return 1; } /* read binaries */ for (it=modNames.begin(); it!=modNames.end(); it++) { Cyberjack::Module *m=findModuleByName(it->c_str()); if (m) { if (!m->readModuleBinaries()) { FXMessageBox::error(this, MBOX_OK, "Fehler", "Die Firmware-Dateien fuer das Modul \"%s\" konnten nicht geladen werden.\n", it->c_str()); return 1; } } } if (MBOX_CLICKED_YES==FXMessageBox::question(this, MBOX_YES_NO, "Firmware aktualisieren", "Diese Aktion entfernt alle Module vom Leser \n" "und fuegt die ausgewaehlten Module neu hinzu.\n" "\n" "Wenn Sie \"Ja\" anklicken wird die Firmware auf dem\n" "Leser aktualisiert.\n" "Sie muessen das in diesem Fall auf der Tastatur des Lesers\n" "mit \"Ok\" bestaetigen.\n" "Sie werden fuer jedes zu aktualisierende Modul auf dem\n" "Display des Leser um Bestaetigung gebeten.\n" "\n" "Moechten Sie die Aktualisierung durchfuehren?")) { /* ok, now we have all needed binaries */ rv=m_reader->connect(Cyberjack::Object_Reader); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(this, MBOX_OK, "Leserfehler", "Beim Ansprechen des Lesers ist ein Fehler aufgetreten\n" "(Fehlercode: %d)\n", rv); return 1; } /* delete all modules */ rv=m_reader->deleteAllModules(false); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(this, MBOX_OK, "Fehler", "Beim Loeschen aller Module des Lesers ist ein Fehler aufgetreten.\n" "(Fehlercode: %d)\n", rv); m_reader->disconnect(); return 1; } /* flash the given modules */ for (it=modNames.begin(); it!=modNames.end(); it++) { Cyberjack::Module *m=findModuleByName(it->c_str()); if (m) { std::string data; /* send module */ data=m->getBinFileData(); fprintf(stderr, "Found binfile with %d bytes length\n", int(data.length())); rv=m_reader->sendModuleToFlash((const uint8_t*) (data.data()), data.length()); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(this, MBOX_OK, "Fehler", "Beim Senden des Modules [%s] an den Treiber ist ein Fehler aufgetreten.\n" "(Fehlercode: %d)\n", it->c_str(), rv); m_reader->disconnect(); return 1; } /* send signature */ data=m->getSigFileData(); fprintf(stderr, "Found sigfile with %d bytes length\n", int(data.length())); rv=m_reader->sendSignatureToFlash((const uint8_t*) (data.data()), data.length()); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(this, MBOX_OK, "Fehler", "Beim Senden der Signatur des Modules [%s] an den Treiber ist ein Fehler " "aufgetreten.\n" "(Fehlercode: %d)\n", it->c_str(), rv); m_reader->disconnect(); return 1; } /* now flash */ rv=m_reader->flash(); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(this, MBOX_OK, "Fehler", "Beim Hochladen des Modules ist ein Fehler aufgetreten.\n" "(Fehlercode: %d)\n", rv); m_reader->disconnect(); return 1; } } } /* disconnect */ rv=m_reader->disconnect(); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(this, MBOX_OK, "Leserfehler", "Beim Schliessen der Verbindung zum Lesers ist ein Fehler aufgetreten\n" "(Fehlercode: %d)\n", rv); return 1; } FXMessageBox::information(this, MBOX_OK, "Update erfolgreich", "Die Module wurden erfolgreich installiert.\n" "Eventuell muessen Sie nun den Leser kurz abziehen und\n" "erneut anschliessen."); } getApp()->stopModal(this,TRUE); } } return 1; } bool FXCY_ReaderFlash2::selectModuleStore() { /* get reader type */ const cj_ReaderInfo &ri=m_reader->getReaderInfo(); FXString hwstring=FXString((const char*)ri.HardwareString).trim().lower(); std::list::iterator it; m_moduleStoreList.clear(); m_moduleStore=NULL; if (!Cyberjack::ModuleStore::readModuleStores(m_moduleStoreList)) { FXMessageBox::error(this, MBOX_OK, "Fehler", "%s", "Es konnten keine Firmware-Dateien auf Ihrem System gefunden werden.\n" "Bitte laden Sie die entsprechenden Dateien von\n" " http://www.reiner-sct.de/\n" "herunter und starten Sie diese Anwendung erneut."); return false; } for (it=m_moduleStoreList.begin(); it!=m_moduleStoreList.end(); it++) { FXString fs; fs=FXString(it->getHwString().c_str()).lower(); if (!fs.empty()) { if (strstr(fs.text(), hwstring.text())!=NULL) { m_moduleStore=&(*it); return true; } } } return false; } void FXCY_ReaderFlash2::toGui() { if (selectModuleStore()) { std::list &tl=m_moduleStore->getTemplates(); std::list::iterator it; /* add entries to combo box */ for (it=tl.begin(); it!=tl.end(); it++) { FXString str=FXString(it->getDescr().c_str()).trim(); Cyberjack::MTemplate &tmpl=*it; if (!str.empty()) m_listBox->appendItem(str, NULL, &tmpl); } } if (m_listBox->getNumItems()) { m_listBox->setCurrentItem(0, FALSE); selectedTemplate(0); } } pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/fxcy_readerflash2.hpp000066400000000000000000000053771231776762100260730ustar00rootroot00000000000000/*************************************************************************** begin : Tue Apr 06 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef FXCY_READERFLASH2_HPP #define FXCY_READERFLASH2_HPP #include "libcyberjack/driver.hpp" #include "libcyberjack/modulestore.hpp" #include #include class FXCY_App; class FXCY_ReaderFlash2: public FXDialogBox { FXDECLARE(FXCY_ReaderFlash2) protected: FXCY_ReaderFlash2(); public: enum { ID_LISTBOX=FXDialogBox::ID_LAST, ID_MODULE_LIST, ID_BUTTON_FLASH, ID_LAST }; long onCmdReject(FXObject*, FXSelector, void *ptr); long onCmdButtonFlash(FXObject*, FXSelector, void *ptr); long onCmdListBox(FXObject*, FXSelector, void *ptr); FXCY_ReaderFlash2(Cyberjack::Reader *r, FXWindow *owner, const FXString& name, FXuint opts=0, FXint x=0, FXint y=0, FXint w=0, FXint h=0); ~FXCY_ReaderFlash2(); void toGui(); FXint getDefaultWidth(); FXint getDefaultHeight(); protected: Cyberjack::Reader *m_reader; std::list m_moduleStoreList; Cyberjack::ModuleStore *m_moduleStore; FXListBox *m_listBox; FXFoldingList *m_moduleList; FXButton *m_flashButton; FXString m_lastPath; bool selectModuleStore(); void selectedTemplate(int idx); Cyberjack::Module *findModuleByName(const char *s); }; #endif pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/fxcy_readerkeys.cpp000066400000000000000000000103701231776762100256470ustar00rootroot00000000000000/*************************************************************************** begin : Thu Mar 26 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "fxcy_readerkeys.hpp" #include "fxcy_app.hpp" FXDEFMAP(FXCY_ReaderKeys) FXCY_ReaderKeysMap[]={ FXMAPFUNC(SEL_COMMAND, FXDialogBox::ID_ACCEPT, FXCY_ReaderKeys::onCmdAccept), FXMAPFUNC(SEL_COMMAND, FXDialogBox::ID_CANCEL, FXCY_ReaderKeys::onCmdCancel), FXMAPFUNC(SEL_COMMAND, FXCY_ReaderKeys::ID_BUTTON_MODUL, FXCY_ReaderKeys::onCmdButtonModule), }; FXIMPLEMENT(FXCY_ReaderKeys, FXDialogBox, FXCY_ReaderKeysMap, ARRAYNUMBER(FXCY_ReaderKeysMap)) FXCY_ReaderKeys::FXCY_ReaderKeys(Cyberjack::Reader *r, FXWindow *owner, const FXString& name, FXuint opts, FXint x, FXint y, FXint w, FXint h) :FXDialogBox(owner, name, opts, x, y, w, h) ,m_reader(r) ,m_editKeyFile(NULL) { FXVerticalFrame *vf; FXHorizontalFrame *hf; FXMatrix *m; vf=new FXVerticalFrame(this, LAYOUT_FILL_X | LAYOUT_FILL_Y); m=new FXMatrix(vf, 3, MATRIX_BY_COLUMNS | LAYOUT_FILL_X | LAYOUT_FILL_Y); new FXLabel(m, "Schluesseldatei", NULL, LABEL_NORMAL); m_editKeyFile=new FXTextField(m, 40, this, ID_EDIT_MODULE, TEXTFIELD_NORMAL); new FXButton(m, "...", NULL, this, ID_BUTTON_MODUL, BUTTON_NORMAL); new FXHorizontalSeparator(vf, LAYOUT_FILL_X | SEPARATOR_GROOVE); hf=new FXHorizontalFrame(vf, LAYOUT_FILL_X | PACK_UNIFORM_WIDTH); new FXButton(hf, "Abbrechen", NULL, this, ID_CANCEL, BUTTON_NORMAL | BUTTON_DEFAULT | BUTTON_INITIAL | LAYOUT_RIGHT); new FXButton(hf, "Ausfuehren", NULL, this, ID_ACCEPT, BUTTON_NORMAL | BUTTON_DEFAULT | BUTTON_INITIAL | LAYOUT_RIGHT); } FXCY_ReaderKeys::FXCY_ReaderKeys() :FXDialogBox() ,m_reader(NULL) ,m_editKeyFile(NULL) { } FXCY_ReaderKeys::~FXCY_ReaderKeys() { } void FXCY_ReaderKeys::create() { FXDialogBox::create(); } long FXCY_ReaderKeys::onCmdAccept(FXObject*, FXSelector, void *ptr) { getApp()->stopModal(this,TRUE); return 1; } long FXCY_ReaderKeys::onCmdReject(FXObject*, FXSelector, void *ptr) { getApp()->stopModal(this,FALSE); return 1; } long FXCY_ReaderKeys::onCmdButtonModule(FXObject*, FXSelector, void *ptr) { FXString path=m_editKeyFile->getText(); if (path.empty()) path=m_lastPath; FXString s=FXFileDialog::getOpenFilename(this, "Schluesseldatei auswaehlen", path, "Schluesseldateien (*.bky)\nAlle Dateien (*)"); if (!s.empty()) { int lpos=s.rfind('/'); if (lpos!=-1) m_lastPath=s.left(lpos+1); m_editKeyFile->setText(s); } return 1; } FXString FXCY_ReaderKeys::getKeyFile() const { return m_editKeyFile->getText(); } pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/fxcy_readerkeys.hpp000066400000000000000000000047631231776762100256650ustar00rootroot00000000000000/*************************************************************************** begin : Thu Mar 26 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef FXCY_READERKEYS_HPP #define FXCY_READERKEYS_HPP #include #include "libcyberjack/driver.hpp" class FXCY_App; class FXCY_ReaderKeys: public FXDialogBox { FXDECLARE(FXCY_ReaderKeys) protected: FXCY_ReaderKeys(); public: enum { ID_EDIT_MODULE=FXDialogBox::ID_LAST, ID_BUTTON_MODUL, ID_LAST }; long onCmdAccept(FXObject*, FXSelector, void *ptr); long onCmdReject(FXObject*, FXSelector, void *ptr); long onCmdButtonModule(FXObject*, FXSelector, void *ptr); long onCmdButtonSignature(FXObject*, FXSelector, void *ptr); FXCY_ReaderKeys(Cyberjack::Reader *r, FXWindow *owner, const FXString& name, FXuint opts=0, FXint x=0, FXint y=0, FXint w=0, FXint h=0); ~FXCY_ReaderKeys(); void create(); FXString getKeyFile() const; protected: Cyberjack::Reader *m_reader; FXTextField *m_editKeyFile; FXString m_lastPath; }; #endif pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/fxcy_readerlist.cpp000066400000000000000000000154411231776762100256530ustar00rootroot00000000000000/*************************************************************************** begin : Tue Mar 24 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "fxcy_readerlist.hpp" #include "fxcy_app.hpp" FXIMPLEMENT(FXCY_ReaderList, FXIconList,NULL,0) FXCY_ReaderList::FXCY_ReaderList(FXComposite *p, FXObject* tgt, FXSelector sel, FXuint opts, FXint x, FXint y, FXint w, FXint h) :FXIconList(p, tgt, sel, opts, x, y, w, h) ,m_iconSmallPinpad(NULL) ,m_iconSmallPinpadA(NULL) ,m_iconSmallEcom(NULL) ,m_iconSmallEcomA(NULL) ,m_iconSmallEcomPlus(NULL) ,m_iconSmallSecoder(NULL) ,m_iconBigPinpad(NULL) ,m_iconBigPinpadA(NULL) ,m_iconBigEcom(NULL) ,m_iconBigEcomA(NULL) ,m_iconBigEcomPlus(NULL) ,m_iconBigSecoder(NULL) { FXCY_App *a=dynamic_cast(getApp()); appendHeader("Name", NULL, 200); appendHeader("Anschluss", NULL, 200); appendHeader("Seriennummer", NULL, 200); /* big icons */ m_iconBigPinpad=a->getIcon(FXCY_App::IconId_PinpadNormal); m_iconBigPinpadA=a->getIcon(FXCY_App::IconId_PinpadANormal); m_iconBigEcom=a->getIcon(FXCY_App::IconId_EcomNormal); m_iconBigEcomA=a->getIcon(FXCY_App::IconId_EcomANormal); m_iconBigEcomPlus=a->getIcon(FXCY_App::IconId_EcomPlusNormal); m_iconBigSecoder=a->getIcon(FXCY_App::IconId_SecoderNormal); m_iconSmallPinpad=a->getIcon(FXCY_App::IconId_PinpadSmall); m_iconSmallPinpadA=a->getIcon(FXCY_App::IconId_PinpadASmall); m_iconSmallEcom=a->getIcon(FXCY_App::IconId_EcomSmall); m_iconSmallEcomA=a->getIcon(FXCY_App::IconId_EcomASmall); m_iconSmallEcomPlus=a->getIcon(FXCY_App::IconId_EcomPlusSmall); m_iconSmallSecoder=a->getIcon(FXCY_App::IconId_SecoderSmall); } FXCY_ReaderList::FXCY_ReaderList() :FXIconList() ,m_iconSmallPinpad(NULL) ,m_iconSmallPinpadA(NULL) ,m_iconSmallEcom(NULL) ,m_iconSmallEcomA(NULL) ,m_iconSmallEcomPlus(NULL) ,m_iconSmallSecoder(NULL) ,m_iconBigPinpad(NULL) ,m_iconBigPinpadA(NULL) ,m_iconBigEcom(NULL) ,m_iconBigEcomA(NULL) ,m_iconBigEcomPlus(NULL) ,m_iconBigSecoder(NULL) { } FXCY_ReaderList::~FXCY_ReaderList() { } void FXCY_ReaderList::create() { FXIconList::create(); /* realize small icons */ if (m_iconSmallPinpad) m_iconSmallPinpad->create(); if (m_iconSmallPinpadA) m_iconSmallPinpadA->create(); if (m_iconSmallEcom) m_iconSmallEcom->create(); if (m_iconSmallEcomA) m_iconSmallEcomA->create(); if (m_iconSmallEcomPlus) m_iconSmallEcomPlus->create(); if (m_iconSmallSecoder) m_iconSmallSecoder->create(); /* realize big icons */ if (m_iconBigPinpad) m_iconBigPinpad->create(); if (m_iconBigPinpadA) m_iconBigPinpadA->create(); if (m_iconBigEcom) m_iconBigEcom->create(); if (m_iconBigEcomA) m_iconBigEcomA->create(); if (m_iconBigEcomPlus) m_iconBigEcomPlus->create(); if (m_iconBigSecoder) m_iconBigSecoder->create(); } void FXCY_ReaderList::addReader(Cyberjack::Reader *r) { FXIcon *icBig=NULL; FXIcon *icSmall=NULL; FXString t; FXString name; if (r->getBusType()==Cyberjack::BusType_Pcsc) { name=FXString(r->getName().c_str()).lower(); if (name.contains("pp_a")) { icBig=m_iconBigPinpadA; icSmall=m_iconSmallPinpadA; } else if (name.contains("ecom_a")) { icBig=m_iconBigEcomA; icSmall=m_iconSmallEcomA; } else { icBig=m_iconBigPinpad; icSmall=m_iconSmallPinpad; } } else { name=FXString(r->getProductString().c_str()).lower(); if (name.contains("e-com/pinpad")) { icBig=m_iconBigPinpad; icSmall=m_iconSmallPinpad; } else if (name.contains("pinpad(a)")) { icBig=m_iconBigPinpadA; icSmall=m_iconSmallPinpadA; } else if (name.contains("e-com(a)")) { icBig=m_iconBigEcomA; icSmall=m_iconSmallEcomA; } else if (name.contains("e-com plus")) { icBig=m_iconBigEcomPlus; icSmall=m_iconSmallEcomPlus; } else if (name.contains("secoder")) { icBig=m_iconBigSecoder; icSmall=m_iconSmallSecoder; } } /* reader name */ t=r->getName().c_str(); if (t.left(10)=="cyberJack ") t.erase(0, 10); t+="\t"; /* COM type */ switch(r->getBusType()) { case Cyberjack::BusType_None: t+="keiner"; break; case Cyberjack::BusType_UsbRaw: t+="USB"; break; case Cyberjack::BusType_UsbTty: t+="USBTTY"; break; case Cyberjack::BusType_Serial: t+="seriell"; break; case Cyberjack::BusType_Pcsc: t+="PC/SC"; break; default: t+="unbekannt"; break; } t+="\t"; /* serial number */ t+=r->getSerial().c_str(); t+="\t"; /* append item */ appendItem(t, icBig, icSmall, (void*) r, false); } void FXCY_ReaderList::applyReaderList(uint32_t currentCounter, std::list &rl) { std::list::iterator rit; for (rit=rl.begin(); rit!=rl.end(); rit++) { Cyberjack::Reader *r=*rit; if (r->getUpdateCounter()==0) { /* add reader */ r->setUpdateCounter(currentCounter); addReader(r); } else if (r->getUpdateCounter()getData()); } return NULL; } pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/fxcy_readerlist.hpp000066400000000000000000000052701231776762100256570ustar00rootroot00000000000000/*************************************************************************** begin : Tue Mar 24 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef FXCY_READERLIST_HPP #define FXCY_READERLIST_HPP #include #include "libcyberjack/driver.hpp" class FXCY_ReaderList: public FXIconList { FXDECLARE(FXCY_ReaderList) protected: FXCY_ReaderList(); public: FXCY_ReaderList(FXComposite *p, FXObject* tgt=NULL, FXSelector sel=0, FXuint opts=ICONLIST_NORMAL, FXint x=0, FXint y=0, FXint w=0, FXint h=0); ~FXCY_ReaderList(); void addReader(Cyberjack::Reader *r); void applyReaderList(uint32_t currentCounter, std::list &rl); Cyberjack::Reader *getCurrentReader(); void create(); protected: FXIcon *m_iconSmallPinpad; /* 0x100 */ FXIcon *m_iconSmallPinpadA; /* 0x300 */ FXIcon *m_iconSmallEcom; /* 0x100 */ FXIcon *m_iconSmallEcomA; /* 0x400 */ FXIcon *m_iconSmallEcomPlus; /* 0x400 */ FXIcon *m_iconSmallSecoder; /* 0x400 */ FXIcon *m_iconBigPinpad; /* 0x100 */ FXIcon *m_iconBigPinpadA; /* 0x300 */ FXIcon *m_iconBigEcom; /* 0x100 */ FXIcon *m_iconBigEcomA; /* 0x400 */ FXIcon *m_iconBigEcomPlus; /* 0x400 */ FXIcon *m_iconBigSecoder; /* 0x400 */ }; #endif pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/fxcy_readerview.cpp000066400000000000000000000374261231776762100256610ustar00rootroot00000000000000/*************************************************************************** begin : Wed Mar 25 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "fxcy_readerview.hpp" #include "fxcy_readerdetails.hpp" #include "fxcy_readerflash.hpp" #include "fxcy_readerkeys.hpp" #include "fxcy_app.hpp" #ifdef HAVE_LIBXML2 # include "fxcy_readerflash2.hpp" #endif #include #include #define DISABLE_FLASHING FXDEFMAP(FXCY_ReaderView) FXCY_ReaderViewMap[]={ FXMAPFUNC(SEL_COMMAND, FXCY_ReaderView::ID_BUTTON_DETAILS, FXCY_ReaderView::onCmdDetails), FXMAPFUNC(SEL_COMMAND, FXCY_ReaderView::ID_BUTTON_TEST, FXCY_ReaderView::onCmdTest), FXMAPFUNC(SEL_COMMAND, FXCY_ReaderView::ID_BUTTON_FIRMWARE, FXCY_ReaderView::onCmdFirmware), FXMAPFUNC(SEL_COMMAND, FXCY_ReaderView::ID_BUTTON_UPD_KEYS, FXCY_ReaderView::onCmdUpdateKeys), FXMAPFUNC(SEL_COMMAND, FXCY_ReaderView::ID_BUTTON_DEL_MODS, FXCY_ReaderView::onCmdDelModules), FXMAPFUNC(SEL_COMMAND, FXCY_ReaderView::ID_BUTTON_FLASH, FXCY_ReaderView::onCmdFlash), }; FXIMPLEMENT(FXCY_ReaderView, FXHorizontalFrame, FXCY_ReaderViewMap, ARRAYNUMBER(FXCY_ReaderViewMap)) FXCY_ReaderView::FXCY_ReaderView(FXComposite *p, FXuint opts, FXint x, FXint y, FXint w, FXint h) :FXHorizontalFrame(p, opts, x, y, w, h) ,m_readerList(NULL){ FXVerticalFrame *vf; #ifndef DISABLE_FLASHING FXButton *btn; #endif m_readerList=new FXCY_ReaderList(this, this, ID_READER_LIST, LAYOUT_FILL_X | LAYOUT_FILL_Y | ICONLIST_BROWSESELECT | /*ICONLIST_DETAILED |*/ ICONLIST_BIG_ICONS | ICONLIST_COLUMNS); vf=new FXVerticalFrame(this, LAYOUT_FILL_Y | PACK_UNIFORM_WIDTH | PACK_UNIFORM_HEIGHT); new FXButton(vf, "Details", NULL, this, ID_BUTTON_DETAILS, BUTTON_NORMAL); new FXButton(vf, "Test", NULL, this, ID_BUTTON_TEST, BUTTON_NORMAL); #ifdef HAVE_LIBXML2 new FXButton(vf, "Firmware\naktualisieren", NULL, this, ID_BUTTON_FIRMWARE, BUTTON_NORMAL); #endif #ifndef DISABLE_FLASHING btn=new FXButton(vf, "Schluessel\naktualisieren", NULL, this, ID_BUTTON_UPD_KEYS, BUTTON_NORMAL); btn->setTipText("Aktualisiert die Schluessel im Leser (nur neuere cyberJacks)"); btn=new FXButton(vf, "Alle Module\nentfernen", NULL, this, ID_BUTTON_DEL_MODS, BUTTON_NORMAL); btn->setTipText("Entfernt alle Module (nur neuere cyberJacks)"); btn=new FXButton(vf, "Modul\ninstallieren", NULL, this, ID_BUTTON_FLASH, BUTTON_NORMAL); btn->setTipText("Installiert ein neues Modul auf dem Leser (nur neuere cyberJacks)"); #endif } FXCY_ReaderView::FXCY_ReaderView() :FXHorizontalFrame() ,m_readerList(NULL){ } FXCY_ReaderView::~FXCY_ReaderView() { } void FXCY_ReaderView::applyReaderList(uint32_t currentCounter, std::list &rl) { if (m_readerList) m_readerList->applyReaderList(currentCounter, rl); } void FXCY_ReaderView::clearReaderList() { if (m_readerList) m_readerList->clearItems(); } void FXCY_ReaderView::create() { FXHorizontalFrame::create(); if (m_readerList) m_readerList->create(); } long FXCY_ReaderView::onCmdDetails(FXObject*, FXSelector, void *ptr) { Cyberjack::Reader *r=m_readerList->getCurrentReader(); if (r) { int rv; rv=r->gatherInfo(true); if (rv!=Cyberjack::ErrorCode_Ok) { fprintf(stderr, "Error gathering info: %d\n", rv); FXMessageBox::error(this, MBOX_OK, "Ein-/Ausgabe-Fehler", "Beim Abrufen der Leser-Details ist ein Fehler aufgetreten.\n" "Sie sollten mit diesem Leser einen Test ausfuehren um Probleme\n" "in der Einrichtung des Lesers auszuschliessen bzw. zu beheben.\n" "(Fehlercode: %d)", rv); return 1; } FXCY_ReaderDetails dlg(r, this, "Details zum Leser", DECOR_ALL); dlg.create(); dlg.show(); dlg.execute(); } return 1; } long FXCY_ReaderView::onCmdTest(FXObject*, FXSelector, void *ptr) { Cyberjack::Reader *r=m_readerList->getCurrentReader(); if (r) { int rv; std::string msg; rv=r->test(msg); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(this, MBOX_OK, "Test fehlgeschlagen", "Bei der Ausfuehrung des Lesertests ist ein Fehler aufgetreten.\n" "(Fehlercode: %d)\n" "\n" "Der Bericht folgt:\n" "==================================================\n" "%s\n" "==================================================\n", rv, msg.c_str()); return 1; } else { FXMessageBox::information(this, MBOX_OK, "Test erfolgreich", "Der Lesertest war erfolgreich.\n" "\n" "Der Bericht folgt:\n" "==================================================\n" "%s\n" "==================================================\n", msg.c_str()); } } return 1; } long FXCY_ReaderView::onCmdFirmware(FXObject*, FXSelector, void *ptr) { #ifdef HAVE_LIBXML2 Cyberjack::Reader *r=m_readerList->getCurrentReader(); if (r) { int rv; rv=r->gatherInfo(true); if (rv!=Cyberjack::ErrorCode_Ok) { fprintf(stderr, "Error gathering info: %d\n", rv); FXMessageBox::error(this, MBOX_OK, "Ein-/Ausgabe-Fehler", "Beim Abrufen der Leser-Details ist ein Fehler aufgetreten.\n" "Sie sollten mit diesem Leser einen Test ausfuehren um Probleme\n" "in der Einrichtung des Lesers auszuschliessen bzw. zu beheben.\n" "(Fehlercode: %d)", rv); return 1; } FXCY_ReaderFlash2 dlg(r, this, "Firmware Aktualisieren", DECOR_ALL); dlg.create(); dlg.toGui(); dlg.show(); dlg.execute(); } #endif return 1; } static int readFile(const char *fname, uint8_t *buffer, uint32_t size) { FILE *f; uint8_t *p; int len; f=fopen(fname, "r"); if (f==NULL) return -1; p=buffer; len=0; while(!feof(f)) { int rv; int l; l=size; if (l<1) { fprintf(stderr, "ERROR: Buffer too small\n"); return -1; } if (l>1024) l=1024; rv=fread(p, 1, l, f); if (rv==0) break; p+=rv; len+=rv; size-=rv; } fclose(f); return len; } long FXCY_ReaderView::onCmdUpdateKeys(FXObject*, FXSelector, void *ptr) { Cyberjack::Reader *r=m_readerList->getCurrentReader(); if (r) { FXCY_ReaderKeys dlg(r, this, "Schluessel aktualisieren", DECOR_ALL); dlg.create(); dlg.show(); for (;;) { if (dlg.execute()) { FXString keyFileName; uint8_t buffer1[64*1024]; int len1; int rv; fprintf(stderr, "Accepted\n"); keyFileName=dlg.getKeyFile(); len1=readFile(keyFileName.text(), buffer1, sizeof(buffer1)); if (len1<1) { FXMessageBox::error(&dlg, MBOX_OK, "Lesefehler", "Beim Einlesen der Schluesseldatei ist ein Fehler aufgetreten\n" "Meldung vom System: %s\n", strerror(errno)); continue; } rv=r->connect(Cyberjack::Object_Reader); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(&dlg, MBOX_OK, "Leserfehler", "Beim Ansprechen des Lesers ist ein Fehler aufgetreten\n" "(Fehlercode: %d)\n", rv); continue; } /* got both module and signature, flash it */ rv=r->updateKeys(buffer1, len1); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(&dlg, MBOX_OK, "Fehler", "Beim Senden des Schluessels an den Treiber ist ein Fehler aufgetreten.\n" "(Fehlercode: %d)\n", rv); r->disconnect(); continue; } rv=r->disconnect(); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(&dlg, MBOX_OK, "Leserfehler", "Beim Schliessen der Verbindung zum Lesers ist ein Fehler aufgetreten\n" "(Fehlercode: %d)\n", rv); continue; } FXMessageBox::information(&dlg, MBOX_OK, "Update erfolgreich", "Der Schluessel wurde erfolgreich aktualisiert.\n" "Eventuell muessen Sie nun den Leser kurz abziehen und\n" "erneut anschliessen."); break; } else { fprintf(stderr, "Rejected\n"); break; } } dlg.hide(); } return 1; } long FXCY_ReaderView::onCmdDelModules(FXObject*, FXSelector, void *ptr) { Cyberjack::Reader *r=m_readerList->getCurrentReader(); if (r) { if (MBOX_CLICKED_YES==FXMessageBox::question(this, MBOX_YES_NO, "Alle Module entfernen", "Diese Aktion entfernt alle Module vom Leser.\n" "Dies funktioniert nur mit neueren cyberJacks\n" "\n" "Wenn Sie \"Ja\" anklicken, werden alle Module ausser dem\n" "Kernel entfernt.\n" "Sie muessen das in diesem Fall auf der Tastatur des Lesers\n" "mit \"Ok\" bestaetigen.\n" "\n" "Moechten Sie alle Module entfernen?")) { int rv; rv=r->deleteAllModules(true); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(this, MBOX_OK, "Fehler", "Beim Loeschen aller Module des Lesers ist ein Fehler aufgetreten.\n" "(Fehlercode: %d)\n", rv); } } } return 1; } long FXCY_ReaderView::onCmdFlash(FXObject*, FXSelector, void *ptr) { Cyberjack::Reader *r=m_readerList->getCurrentReader(); if (r) { FXCY_ReaderFlash dlg(r, this, "Modul installieren", DECOR_ALL); dlg.create(); dlg.show(); for (;;) { if (dlg.execute()) { FXString modulFileName; FXString signatureFileName; uint8_t buffer1[64*1024]; uint8_t buffer2[64*1024]; int len1; int len2; int rv; fprintf(stderr, "Accepted\n"); modulFileName=dlg.getModuleFile(); signatureFileName=dlg.getSignatureFile(); len1=readFile(modulFileName.text(), buffer1, sizeof(buffer1)); if (len1<1) { FXMessageBox::error(&dlg, MBOX_OK, "Lesefehler", "Beim Einlesen der Moduldatei ist ein Fehler aufgetreten\n" "Meldung vom System: %s\n", strerror(errno)); continue; } len2=readFile(signatureFileName.text(), buffer2, sizeof(buffer2)); if (len2<1) { FXMessageBox::error(&dlg, MBOX_OK, "Lesefehler", "Beim Einlesen der Signaturdatei ist ein Fehler aufgetreten\n" "Meldung vom System: %s\n", strerror(errno)); continue; } rv=r->connect(Cyberjack::Object_Reader); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(&dlg, MBOX_OK, "Leserfehler", "Beim Ansprechen des Lesers ist ein Fehler aufgetreten\n" "(Fehlercode: %d)\n", rv); continue; } /* got both module and signature, flash it */ rv=r->sendModuleToFlash(buffer1, len1); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(&dlg, MBOX_OK, "Fehler", "Beim Senden des Modules an den Treiber ist ein Fehler aufgetreten.\n" "(Fehlercode: %d)\n", rv); r->disconnect(); continue; } rv=r->sendSignatureToFlash(buffer2, len2); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(&dlg, MBOX_OK, "Fehler", "Beim Senden der Signatur an den Treiber ist ein Fehler aufgetreten.\n" "(Fehlercode: %d)\n", rv); r->disconnect(); continue; } rv=r->flash(); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(&dlg, MBOX_OK, "Fehler", "Beim Hochladen des Modules ist ein Fehler aufgetreten.\n" "(Fehlercode: %d)\n", rv); r->disconnect(); continue; } rv=r->gatherInfo(false); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(&dlg, MBOX_OK, "Fehler", "Beim Abrufen der Modulinformationen des Lesers ist ein Fehler aufgetreten.\n" "(Fehlercode: %d)\n", rv); r->disconnect(); continue; } rv=r->disconnect(); if (rv!=Cyberjack::ErrorCode_Ok) { FXMessageBox::error(&dlg, MBOX_OK, "Leserfehler", "Beim Schliessen der Verbindung zum Lesers ist ein Fehler aufgetreten\n" "(Fehlercode: %d)\n", rv); continue; } FXMessageBox::information(&dlg, MBOX_OK, "Update erfolgreich", "Das Modul wurde erfolgreich installiert.\n" "Eventuell muessen Sie nun den Leser kurz abziehen und\n" "erneut anschliessen."); break; } else { fprintf(stderr, "Rejected\n"); break; } } dlg.hide(); } return 1; } pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/fxcy_readerview.hpp000066400000000000000000000053521231776762100256570ustar00rootroot00000000000000/*************************************************************************** begin : Wed Mar 25 2009 copyright : (C) 2009 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef FXCY_READERVIEW_HPP #define FXCY_READERVIEW_HPP #include #include "libcyberjack/driver.hpp" #include "fxcy_readerlist.hpp" class FXCY_ReaderView: public FXHorizontalFrame { FXDECLARE(FXCY_ReaderView) protected: FXCY_ReaderView(); public: enum { ID_READER_LIST=FXHorizontalFrame::ID_LAST, ID_BUTTON_DETAILS, ID_BUTTON_TEST, ID_BUTTON_FIRMWARE, ID_BUTTON_UPD_KEYS, ID_BUTTON_DEL_MODS, ID_BUTTON_FLASH, ID_LAST }; long onCmdDetails(FXObject*, FXSelector, void *ptr); long onCmdTest(FXObject*, FXSelector, void *ptr); long onCmdFirmware(FXObject*, FXSelector, void *ptr); long onCmdUpdateKeys(FXObject*, FXSelector, void *ptr); long onCmdDelModules(FXObject*, FXSelector, void *ptr); long onCmdFlash(FXObject*, FXSelector, void *ptr); FXCY_ReaderView(FXComposite *p, FXuint opts=0, FXint x=0, FXint y=0, FXint w=0, FXint h=0); ~FXCY_ReaderView(); void applyReaderList(uint32_t currentCounter, std::list &rl); void clearReaderList(); void create(); FXCY_ReaderList *getReaderList() { return m_readerList;}; protected: FXCY_ReaderList *m_readerList; }; #endif pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/000077500000000000000000000000001231776762100230665ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/Makefile.am000066400000000000000000000006711231776762100251260ustar00rootroot00000000000000 RESWRAP = reswrap ICONS= \ cy_ecom_s.jpg \ cy_ecom_n.jpg \ cy_ecom_b.jpg \ cy_ecom_plus_s.jpg \ cy_ecom_plus_n.jpg \ cy_ecom_plus_b.jpg \ cy_pinpad_s.jpg \ cy_pinpad_n.jpg \ cy_pinpad_b.jpg \ cy_secoder_s.jpg \ cy_secoder_n.jpg \ cy_secoder_b.jpg EXTRA_DIST=\ $(ICONS) icons.cpp \ cy_ecom_0.jpg \ cy_pinpad_0.jpg \ cy_secoder_0.jpg \ cy_ecom_plus_0.jpg icons.cpp: $(ICONS) $(RESWRAP) -p "fxcj_icon_" -o icons.cpp $^ pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_bio_b.jpg000066400000000000000000000045731231776762100253460ustar00rootroot00000000000000ÿØÿàJFIFddÿáTExifII*nv(1)~2¨i‡¾ddPaint Shop Pro Photo 11,202008:12:19 10:45:510220‘ 0100  7 < 6ÿí$Photoshop 3.08BIMÿÀ<7ÿÛ„       ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýS =ø›ñóÁnlí¼w¬­•ÕÙU‚Ú8ÚY$,p "‚I'ÚšM‰»4oÚ_ᆹ¨O§ÚøÏFƒP·;f´½ÛIôe QÊÐ&™ÞéÞ!Òõ{?IÔ¬/`Æ|ÛyÒEÇÔC/«PT‚B;Ðæ€ kºÆŒÎBªŒ’{ üðø©ñÁZ‡Å øÊÞ)µ'–uÒn&2²D€m §nÞHÏ&·Z+òŸs¡ðßÄ/êÓ]ÜÙÉ¢ÅwxWíÑ—Ÿ -¸xã•ȺèÍ=À~°×N¹ iÚ}Ž¢à†¸·ˆ 9êHBWñÅ;Žï¸ßˆòüP¸Ò4ôøãtbÞämwz‰ ÄD©Y\çãךM.¥A³Ôf kö€½ñ­cûGézu¶—¢µ¥åºÃºi‹`ѱmÉè;VrQèn¯Ôú:¤g;ñßP»øâh<<é©.™r–¯!ÀYLlŸÇ?;µß‚øÆÇIŠmN[)´è+û¡*·A »] êqN<Ç-¨þËúäy:mö}í&øŸõýjne줶f$Ÿ¼má©K+]aTr „û€ÿ¾h¸(Ê'{ðÎ÷Ä~¾o\jSN·!aKíÛÐ=yÆj’º6…Ù÷·Â߈W^%Òì#× ‚ æˆmxr:zqÓšÅÆÇR‘è•%ÿÄ ÿìÏkWà­³¨>ì1ýi¢dì‚þ0ëÞ*ð§†m&ømiayªÏvù7r*îR ¨'8ïÓ$VÇ<|Í›OøŠ/‰–¿ðÇö|šxº¸ÕaÞÈ’l,Àm 0ÙŒî$Ž1KB”Mƒ¿ôßZF«}¤i÷Úji÷_eu»ÀÜqAŽ£¨<M¤W-Ëž.Ó`ÓçIõA›XÏ(né3‘úRœù"åØ)ÓçšvIû |aÖþ7JûW°µÓ­4û„†·fecÁþ.G³\¸jò«Ìz8ì$pÓQ‹ÝmVÇ!çÿ/M·%‰æxâãÓ9?ÊšÜΦÇÁß,4üFøyá½{Jñ Ã\Üù±^iͶ5Ë®U¾SŸº¬H ÐóZ^æP.øWTÑ®~ üYñ>‘ãÍONm:ÂKv‹P€ù’嬃“¸,‘«´O\Š[¤‹;?ø çÅôXüYâØµ‹»¹omõ]8£$€Ž]T»rH¥|þ™ÑÂ(ª×Õô>“†ñup•¥VœT´Ùþ‡~Ú\Õ<5¦<ÒjÅk"´×#- )€Z½¼:Nš¶ªÇ‡‹Ä:ÕåRÖmÞ˧¡éŸmFFœC aÚ¹¿SUɯuÍ)»ÉÜöjC<«ãêÈÚF’f!pÅŽ:¼ZhÊ©à? |Q}ñMñM‰üŸ[ÚŸF`Ä;í`8ÎÜU‰ëòàRsKBbrÓø/ânðcÇ_ð—xCÃ^,×u}J5ûœ º{cÒ8‹ar£;€äž)ó«”^×´h·?t†šŸ†g‹¤×GͺD?}‰Îß÷GëZó‘V={JÒ-t[4¶ÓâX¢A€CÔ¢íP@T’GzZ( ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_bio_x.jpg000066400000000000000000000767061231776762100254030ustar00rootroot00000000000000ÿØÿàJFIFddÿá)ŽExifII*nv(1~2œi‡±.ddAdobe Photoshop CS2 Macintosh2008:04:08 16:19:160220‘ 0100  ´ Ã  )ˆ(˜Þ'HHÿØÿÀ ”ÿÛ„      ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?þý¹Èàtõ çŽSÞ€œ?ó ç'ÓÖ€gåàtõ œt}}è9Ãð?:^r8=hpœ΀qÐuõ÷ çæàtõ ç#ÓÖ€ž8Oz9çÔw ç'ÓÖ€gåàtõ œt}}è9Ãð?:w>ƒó ÷ž´žœ§½£ð:£©êv5Þ©ª\­ŽŸfIe‘ðæ“i+°>Yñ?íÅû0xMþØñŸÅ+/ iaŠ ï˜Æ¤ûV|ë±*Iìt¿ÿkßÙ‹â½½­ÇÃïŽ>ñ"ÎG”°êˆ¾€kUµÇu±ô5­íô&{+¨ï!nCÅ(`hk¸àôõ ƒùÐÛ¡ëëï@þ.OZ^ãƒÓÖ€ÓƒÔ÷ ׃Ôw îx==hððzzÐÛ¡ëëï@èü΀ø΀¸äôô ôäõ=¨=“ùPáüöµ¿øY§i 4Å¡é¦Áµ_L¤oDÆOlàœ}+¦•8ÍóKda95¢?†KÏ~ÐßðSOÚ7Aø'áÝf{¯ CxóHÑ.Øí-•°Ó?Ðt÷5Ü¡ èqÊ\ªçô yÿÙø#¤þÏÞ+ðGÃ2öÃâ†`ði~#MFE¹k¨×å|‚†1Œ`Òs¾cÎJWgæ7ìOaÿ„ÖüS>•à_‹þ+øSàý/P{;½O\ºc º6R7ÉÀcÞ´téÚò:}¢Ž·?|ŸâïüáöŠ’ø/ö­ð§ÅJ5Á´ñ„ã]øôuÆÖ¹Ý:/D5ZïSÀ5ø.×ü;ö{g½ý£¿bkøVÚO&mSC¶FçûÁ‘˜qÜ ‡A="ÍãU6}ðSþŸý–üq¨hÞø“ð{Å> ñ-Ì¢ŠÆØÝ!8ÀUåY:5»4ç‹v?]o¿à¡Z°¾×¼á‹ËŸ ßZ å‹U²’ •$ç1‘Ǩ¨T¦Ñ„«$ì¤>þÖ_¾!G*Çá½R!ûëmA¼½§Ùœ¡8«ÉF¤e±ïºG‰<=¯ÁÎ…¯Zk6í–Wµ¸YPMgtlmzòzŽÔÀ^ç“ÓÒ€'§¥ºž¾žôÉü¨߉ü¨3Èù‡JLôù‡S@ºÖ«m¡èúƵ{"¥´—S18¢–? 4? ?’/Œv¾ýªõoˆ^4øÇá‰|Y§øŽðÈ"[é!KxWˆãB¿ìàóë^¬T¡y2¨Ü®Vý’fOÙöLÖ!_Y|2ЬüH¯æ-äZdK oP@àÓr“Vcr“Ñž—u§½ÈAoîv‰m_ v4•ÓÐJû£ÞÎ(b½9vw(æc–`8ç=iËAÍ·ü¿Å?´'ìñ£Âÿgo~'ðƒ¼V%ôØïŸìÖ— ~dŒgOÞÇjnê+É´êJÖd¿¿àâßø('mìmµ¿iŸí#o™5{L³BA¡áàþ¥T}OÑ ÁÔìM¿Šg? x‚I%Twµ¿ž+ß‘š—†ihÊU5ÔþÂÿg‹Ñüzø%ðÃãZ¾OèÐêƒO¸l´Ô¤÷úל›½™ÐµÔö\ñ÷‡_ëLžæìÿ´(ç#ÓÖ€ž8OzøSþ Añ¾ÛàOì‘ñ?_v#TÕ ÓÕ[Ësû¿äZª1æ’Š&NÑlþqtV¿Ðìô»ƒ©ý³Ih°lQûzJö›IÜð›»>ðïüŸÀ¿Úúµ–µðTðô—³Y}£OºYVM’Ý´ã®3\üÍêÅ7ìTðŸíû"x·Nñoâ]CÁkQ¼/¡QòX…1¸“øÖ)FqZ³ojæÕúkü&øðÒZéú/Ä]+]PÄÆ`‘PÐ(\ŸJQ®)ÍN\Éý§êÒ# ´ÝH£ãïA6æ*­u©’vØôÍ+âÇÄR8|Kq< `ErÂEü›4¬­dZ”‘ѧÆv½Úž#ðN‘­ƒþ²EƒÊsÿZ´ÚCæOtC?>^©gðž§¡ÎGd¾Y?FÖ•ÛÜŸu£žü ¨\£7‹n´¤ÿ§½?wꬕ6ôÑIž=ûQÁ=¾þß~ ð×Ãÿˆ?“Á¶ú]Ѿ°½ÒâV›Í+´«$˜ùqïSÌÒ²7¦¢¥v~zÍÿŸkú´rë¿m 'QÒƒ”HõJ¬£ÜÒ«ÛÛI#µAKTyF¿ÿÃ~Ýž Ö4ë¯ øÿÁ¬#l¹†öh ú:U{xZì9Ïîƒà§_áÂ…ß\£Í¡ø~ÓK•ü¥ã‰QˆöÈ5æ7ws¥lzo8è:úûÒáø;ŸAùÐ{ŽOZONSÞ€?•ÿø8'ö‡‘þ5þÇŸ²^ ›PÔŠ5[e?+Ư²=ßB¬EuPW©ÍÙÕ[PÐøóXÕô Dñ¿¦^É,vV2KtÒFWk"ÀÏ}+º£´.yóËaáöÔotíF98ätÑ—Ã1vÜOãšÁZÖ•æUJ59QéÑmÆÌý{îx==jÑððzzÐÛ¡ëëï@èü΀ø΀¸äôô ôäõ=¨ø‹ÿ‚¢øOÆ=ÿ‚ò­[J¸ŸÁþøg§]i®c;¸rH?ï³»¨4“gvÒ±éÿðƒøSâW„dÏ5¼ÿ‚yþÓ°‹Ùlþ_ø‚äÄ!Yì®"qœ’9<ý)ók©ÈðÕ±?|;»¼'øy­éqÂG6"ì\pKÇ^´%¬Ì'Ñz£ÊÖ×Å—‚x5m -Õ÷+ÉÁì3C²~é‚u>Ò7µ?Xê+1½¹QƒåžJõ"’“JÆÎ »˜ößô]>q4ÒBYC989ëIɵf5th^èñ4nZ @àT„Zjæ'…ükâ/xcGû—íѦ6äãp¦•Ý‘¢M»#úÌz^‹ccÙ ¼ ©\WlU•Žõ¦‡uû4~Òþø°Ûx ÄGMÓõ;ô¸%µIQ†x 0ã§c\„\ù™ÕNRŽÛº k¯éÐ ŒšZ\øUãéåÚú‹˜†Y?Þ_\W#„“ÐïUÒ>ø°¾´Ô¬¬µ>éo,.!Y š3•t``}"³7ßTZíÔõô÷ ô~Oå@üOå@ žGÌ:Pg§Ì:šü<ÿ‚‘ü9ÐÇ_ üBÒv/Ž®<>,寧lI!+ÏSÉ"–Ïlv—×ÜkÓ¶íÉo„aÜœpµÔÒz£ƒ©ÞYÙT²Ž@©¡³Iaq$242•d8#ñ¦˜kÐím!“¨˜iþL™ÿz2(·BbÝš>hñìGû:k®eÓtMgÁr3nΟ«yоÁdR1øÑäÌmœÿüáN¡lë£ühÕ´kÖ"êš,r >íúP­}Iú¼ZºgxÓþ ŸñZÉ&“ÀÞ:ðÏ-Â’±­÷Ùdã¶Ù;þ4ˆT\v hßjñv“´’©ÉÏ&¹$šZªÉ·.›G°‰Rx^=’Å"å]HÁzVEYþÍZÞ³ Þ_ü,Ô/?µ¼5Ô¼={!ùÄðÖÍëå’ î‘\’MjtBNü¬úï<}á×úÖG@Ãü€Ÿö…äp:zÐsÇ©ï@†_ðP»Wøßw§êÚ¨Óâ¶Ò­íÐ#s6[hÇ®EuÓJ×<ªÎó±ñº¬Ò´O§%¬QÂe“—öǵm¥ŽM,s_~/|2øAacñÆ^µ¸.º—ir:€)¤Þˆ¥ö=Á~+ðÏŽ´-;Ä^Õà×tK¤ó ¹·“r¸ö45gf'¡Ý%†î:`sBZÙ‰&ö-<Œ†8ÏJJÝM¹Wû9˜=M.1kr¼ºSp'£A87©u¤>8àSNĺnÇŸë:N#b@È'ÑsYŸ;|C³g²ŽÌà .ùþ•ФڸGüøC¬éz—ãô{iæVh-Þ`ŒBœw®9Ô„ei;±§Q®h«¤}"Ÿá ‹¼#wa¦ä+^ÛH²Æ£ÔãUÚûäÖ’GÞ¿u|ø‹á¾¥g/›oqvÑ£÷£–,ÿì Ö3Õ4Έ»4ÏÐ^qÐuõ÷®C´pü΀Ï üè½Ç§­'L=èùóý© ñoÇ÷Æ_³ãÚÈ–V #˜‰òÈڲვ=j›iZ']6­©÷ü˜|e½øiã}WÅðÞAðÊK¼è]9 İ@yÚÛº»2›MØñÏÚ‹öÀý¬üqûK~ѾøMñfoƒŸþé­yµ3J.È­ñ¿ÄŸø.ŸÂ üGñ7†|/ðÏXñ_‚t+Ãi¬ë)Ñy{€Ï [€OZ[66“Ôýªø+ñÂ>ø3â¿‚¤’çÃÝ’ÞÚ4«µ°xÁ ‚+6Ôt`z5߇°¶G"£™7d›ëú6Õ$'=jÎiÆÚ£æ/iKs®øwJÚ<Ùî‰#>œZ â“vgäßü;ã׎þüWøðsá޵? Ã)ª\f]¼?¾™Ž ÚFx­~eš¥Wã=RHýç‡éF8v·gÌßðOÚsö«ø½ñWTðÇ>5ëÞ.ðE¾–þ}õÀ•^YHÆHÏ\÷®|%JË äÕßàug8|,ëÊšæé§sûñø%á1i/»D‹+g÷ÉèR¿Í«ô¹;ÜüB DÙ÷?n‡¯¯½btèü΀ø΀¸äôô  ?j‘è¾ÖµydòÒÚÚI‹0àaI£ÔOEsù¹ñ5ö­«ø£QÔµi ´Ñn'’èKå1‹19Ï ®ô’‘à¶Û»2ôk]"ÊÞòîÊõ®ì$Íö‰þ§žqLW]çÏöÿ‚œ|6ñ_‹0ÕšS®5ÂKqqç"±, à…Ï8÷®—$õc¿Cú°ý–þèß±ìwð¿Á¼C á½-õ ¶91%˜ ê~f óë×…8º•]‘ìeùv74ÅG€ƒ”ÞÉt_Û¿öoñF¸š ¯ˆž‘Äi+ ÆO¨ê+çá›à'>HÏSö,W†œ]…Ãýft.­Ñ¦Ï¡u+M?Z°·Ô´Ë„¾ÓæO2)¢`U—Ôú¸ÍI]Ÿ„Ô§:stê+4|§y£6·ñÏÂZ jÎ*£‘“Ÿé]7M]Q,ÿø,Gì_û\ühý±|gñ3Á_õø=2ÏNÓî,䌒‘Gƒò’Þ&¿'ÅGíçR¬Z\Ý´±ý”â°4ðt誊öÚýMoø#·ì«ñ?Â_µ];âÃíKÁ:Ρnâ=FÜÆd‚ ÎÄzÛk·(„jâÝe´cø³Æâ|D~­ š|Ò»ùÝßÂ8âÿ„‚+5CºÏI±£Hãøê×Þµ¥ÏÊ"ô±ôon§¯§½A¨Éü¨߉ü¨3Èù‡JðOÚk]:Áݬª’In-“Ž]‚ÿZi]ØÊ£´?g‰l.¯î~Ñ'ˆ”ÆÅ€ª>è­v+¥©â= Qa%Þš#™>dyhÁÎ2:S³KAhå£âßü/ö¢¾ñ|.øƒi©üñº5«Øg˜/”êìPºrK(r2:Ô©Ys3­MXþtŸÙ‹ÆàúÇìïà=f][ƶ^ ¸Ó,ï6´· ¬Ç2XøVNIÏ™–¯¹ü{Gào\iß >hµÍö‡±ñ„·–²té|É£wQ ]3…#9àrkÒM§Írô±ý³~Ø¿~%þȰµ÷ÄíHÄ¿´Ý.ÖÆF•¤S2iXH&¼è(Êv`:ÿ mÚcöxøÇû0üCÕþ#Æ·Z¿‡c"YyÎË 1!×>‚»,“¶VGõwûY|#ñWÆoVþ<]kåêös.RyŸ)þ¹#ë_˜áç‰Â¸SßsõîΰÙ{F7ørN-õIõ^‡óÕ¬hµtxOÄ_²Yx‡›h5 :ÂhöHN™ÁõùÃã'?g::÷?ÒY¿ á°ÿ]¡™ÞÙ´ïåmõ? Ù÷á·‹| ðc¾ñÍѸñ Q.F[Ÿ…~Ñ„¥RŽ4ê;´òã‰3 .iVÇ`ãË KDyo€VÞÚ˜Šé¢_¨JúðŸŸ'iÙŸ_xþ[iµ+ó(R«÷‰ö¡++ÌóÿÙ·Ã1øïâ‰üu°ŠÃLA¤X²§1ùïØR²WhÍ7'v~·|ÓÝ“Å~#”m7wŸfƒ#þYÄ6>§5Ë.Ç|µÙî™ãï¿Ö³5x˜P³þРœŽOZøÏöçÖ Ó~ 5µÈ%.u8P…ä¹cüª£fìÎJíªvGãVÚ…Æ™wá{1§ÚHÅ[íPàœ zÖíÙÝžJM£åÏÛÓâÿ>~Ëÿ<à #wâK[a2¨ÏàÉøUEÞÜÆ\Ò?—ÿÙ§ö°ñ—Ã/Œ_Eñ{Å›Äz½ÓGi§iQÈË;Œá˜ô½y‘‚”¬4¬¬Œd¯ø*ºüAý£¼=ðã÷ìö~|L×¢‚ëI¹Y•÷Å2o‡vFpËÓšÚT“4 ·söö®ø‹û>|/ø9¯ÜþÒÚÕ†•ðÛQ‰´ûˆoWp¹Ü¼¢¯Rq\ñŒ¤íðMŸø'ÿüKÄ_Oí û>|@ºøªir½Ýމ©8ÆžÍÑü¾§nx'¥oQÔK–C?}<}âmSL¼AÑ”@Â#:‘½ýsÒ¿šø»ŒñY&'û;/¥Í>[ݽ>^gèYFMOOÛÖ•ì`èž!Ö¬×[·›ìàíVº!·û\wö"¾&ñ 2XˆÐΨÙJI&¶»=¼wÐ'S;´®ÑÚk‘Ä–²ÌpT±çÐWö}Qù Ðü½ðf¸cø×ˆ|³ªI! ÿ b?•zw•Ñö_Ä”Ÿ]Ô.t ±©j, †N¡XûšGaõ·Â/ i_ |gÓ팮øÁ’LuüM'µ‹Š»²>›øGã>óDÓtØÀFŠ»žç“úšåšiÜìJÊǾFþdjê Èæ²óœ?ó sè?:oqÁéë@›_ðPÞÁeàßi¶«¨\+IzðHØSÆÑ“øÕ&¯©Á]è¢~gÛÄ—/¦E}ª›Kéy±·œ…b99À­Úi^;qã?µÆïÙËàwÃù×öŒÔ`O êѽ§ö{Ûšéqóƒ¨ç­gÊnȸ©7t|?ÿêýŸ¿à—þ%k??g_ oÆZS-òÚêé'ú-ÃÆŒH[ÛÇmâ¿é¾ ñ6ÚÍqz±¸9ãŒæ¿"â^Áñ% ÍrÔKI.‡Ôe¹µ|º~î±ìy„>ø‡_û¡sñ.øN9D±ýŠçÍc¶s_e<.*5³Zî¤a+¨ëk®çÖc8–Ui¸a¡ÊÚ³g¦|^Ö£ðÿüA¨o1”¶eB=HÀ¯ëx%{”½Ío„ÚTºŸŠ­”·%Û'ñ®ÛX抴µ?O|á{%½µÔÞ3> pªîrT{T¶–çO¡¥û@xþ/èžð€™¢ºÔI¹™PóåŽ?Žjbï©Ñws£øª^ÜÜÂÑHæ2€ãuLþ¤ý$Ò µ„ ù,TÍr¨z?ó ~ó î9==(ñ÷öÝÔõÿ‹"ÊßQ}6[$BÀ•<3Ç5¬SJèò+6êXùGJ¶Ó_RI-ôÉ~×9{©#ùN{JMÚÇ7™ø}ÿŸý˜¾5|VÖ~|QøuðÖ÷âÿ†ü>³Å¬è6nÀÈ «©!~b§Vœb­#¢›KC;þ}û5|zÐÿj?üeðsUø!ð×RÒÙl´ÛèŒhòÉ % zq(X¨ò£¡¤ÝÎOþ ûJühöÝðïìë㟉ÚÁ/Ù YGt5ÜyÄÂ\¿™üGÌqÚ´¤Òã¸ÒMÙŸzÿÁ¼Ÿ´Æ_‹Ÿ ¾1ø/ÇÕïþxoYxt võ y·ÜÞy?.³QUÆé½Äe~ÝðXŸ‹þøûãÏ€²GÃ7ÇãÁлøª÷Tµ2©aÁ#¾@뚨Â<¼ÒMì~°ÿÁ6?l~Ú¿³Å‡Ä/ èvþñ%“ oM¶‹jAq·'hÇÝ<‘XÎ’²ü–þÒ÷7Ú—í÷ûPZ~Þž:ñ'ÃÍ Ùæð¹‚Y ·™C~ëË`¤òöã±=kÑS|‰SŒ[¼®ÿà‚¿´í⯌¾Gq¨x¯àt+%Ó_]@X[H‹çè†8ïQ_•¤å¸Ïè{öª×dƒÁÖ+_jöJÏ¥BÂÖÍTp#ŠÖ*ÊÌëJÊÇéÇìñàw´´¶–X™H‰I$V3}Ϲí¢Ác#+œ ÏGäþTïÄþT™ä|Ã¥~PþÞÞ·ŸÆ>ñ Í»OguF¥Ðð Rm=2¼m.cäMâöY%[ËXm@!"Hó’¸ê}èm7¡Äzæ“d—‚HÕÇAšÅ¸µftŤ¬{†´ø¬,1r@År7wsTûžûO~Ã_³Ïí¡Øèßü ˆ~ÊÛ­/#;.!ç$+Ž@öªŒ¥x”{ìÍû2ü ý”þZü)ø1áxü+áX¥{†ŒÏ,÷ØòIÅ7)Ió°?ÿmø"ÏÄßürøñÇöQø»gà-cǶígâ› bÇz‚e·uåX•ü2py®¨ÖiZHiØý(ýƒ?c†ŸðKŸÙ{Vðî©ãyø|n¿fÿ i^ð½Ìî Ó`Tmàt|sœzÖ›êÏÑðØšºJ¶Ý3Ç¿hýbSľÑá‘_ÈI®ØgžÊ?™®ªkFλÞG£þÏ>{û‹uXËœ ؽz¿´ÅËÃ;üð]Ò>–¥snù2¹ä¦GaÅGT#evZýŸ¾Í<‰sq ,ÊRm%vl~ÁxÃqhštôm€ŠánîìCÏxuþ´€ áþa@ÏûB€r8=hæÚÏáî£ãß„z¡Ñ-üýwM“ûBÝeœ(;”{‘ü¨½µ9êÅÊGós¯~Ѿ¸º²i® ìR0™®X ýÜvÇJèTå%sÇõ8¦ý²ÖÉ­Ãc¸ó+EAÛQ%Øêt_Ûª8C]6@ÀýídðíêÁi±ï>ý»meû8k–$œæŠÅжũ5¡õŸ‚?lRŽ5¼U”±Á˃\Λ[*-O©¼9ñ_ÁÞ$-æû4„u ¬ZksXÎ2v9ÿÿ -¾:|ñ—ÃSª [}V×ÉŽåFï-ÁÊ’;ŒŠIØóñØXãp²ÃK©üãx¿öhý»~é¾ ø! |9¶ñ¿‚î­N•©§BErÍʰ ¥u±ù\ò¼Îœ~­œmkŸ¦_°ßÀOˆ³ÁŸÚ|V¾¶ö§p·‹i»¾Ê‹Ý¬Ý ué[Á);3îò|ºynÒ›Õ»žK?ˆÄø‹Äzhi,civ„s¿iËí¸×´—,yO«K«>Ì…ÿÿ'„t ó|EÔ­”\×Ê6䂼F>”juB7weƒÿ³Æ±y}k©j`I;˹‹I¨rQÜé?T¾|3‡Ã–©½q€+’RrwÝcO-QTõ¨üã ëëï@Îùйô7¸àôõ • 6²–RH ž´ñ§Œ¿àŸ²7¼_¨øßÅ?,µné¼Ë'‘"‘»±E`2{ÖŠrвfNœ»F¦û~ÇWËcû9xb<A}<9üØš9åÜ ¶Fû~Ʋ´‘¬mðÂÁ1ÐiéKšO©\±ÞǬÁ>ÿd\JÏðBµ•Î7ÛÛ˜ˆ> ©sH‡Nt|Õñþ Sð£R[‹¿†ºÎ¥ðòü.bK{¶’ ݾV'ùÕ©Ë©”¨Áì|s¬þÇ?¶Áû‡¹Ñïí|£®Hk[Ÿ.\ö[þ‹ÂKS‘ÑšØ< ûOëþÕ×ÃÞ1Ž÷FÕ!>\¶÷‘• ŽZå•4õ‰ÏyEŸ]OñëÂøxêO([Áð@Æ~µÍÈÓ4U4³?8hŸÚ‹PñÅ·<q5Æ·©m pŒÜvî'Û5èS‚‚æ’”¤}gû<~Ï·𦟠¶œ—Þ,e]²Ê›–×¹eÏÉïÚºSkY”a}Y÷ŸÃßÙõMÐÖuËe¼¿˜™&šS–v=ɬ¥7´N”’VGÖº‚ô}Ò $VSÔ Å¶ÝØ‚F±ü¨…F:HÃÁéë@n‡¯¯½£ð:wà:Nã“ÓÒ€Ó“Ôö ô~Oå@ ÜòzzPáäôô ·S×ÓÞ€Ñù?•A=­½ÀÙ4~b‘È"€>døÅû*ü'ø¿dÑx—@j .­ÛË•³i¦Ö¨ÎPŒÕ¤~Mü^ÿ‚y~Ñ–>%m#á½m¬x â@±Ë}8Y­õ ýìzЏ¸­ÎAßCêÙ×þ Ÿà†7x·ÇW3xãÇ䫵Ì툡>ˆ¿^æ¦MÉݦ ¬Òáþ…£…Ú€@Ç"†ÛÜØí¡‚(U5*ÀÀ©o^OQÚ€¹äôô ÃÉéé@n§¯§½£ò*wâ*9Èätô çŽGSÚ€œ?#ò ç'‘ÓÒ€gåätô œu}=è9Ãò?*^r9=(…7Î?*`@ã}=èLcp”îr9=(9ã‘Ôö žyGj^ry=(~^GOJ9ÇQ×ÓÞ€œ?#ò sê?*ÿÙÿâmICC_PROFILE]LinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3descƒlwtptïbkptrXYZgXYZ+bXYZ?dmndSpdmddÈvuedK†viewÑ$lumiõmeas $tech- rTRC9 gTRC E bTRCQ textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿí$Photoshop 3.08BIMÿÀôÿÛ„      ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?þþ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( ÌïÛïöÙÓ?g¤Ñ¾xQøßS€ÝÝÍÉ´¶ÎÏfb=§rªíŒ¥$•åÃö¹ÿƒƒ¾,|$fðgÀ=xê$\4÷÷l^8ä|¹äž dq‚zâ«êÑN͘©´µ>¡ýà¤ðZo‰_ ´¯Š7:ƒ|Q¢]ÙÛHçèC©7ªf|òg|`ÿ‚v~È_ìîcñ'Á/DÕ$&¥ B,'C똰­ÿVÔ*’Z2”ÚÜü†ø¹ÿ]ø÷ðòî_~É´=䈄¼z^­}%•Êž $ñ|Ûï*}j¯NJÒFñ¨Ž?á‰ÿƒ„¾k¶ð7ñð·ÅO†^8.|ñ EñD ÷ZÃSŠ\ÿß,isFößÈ9¡@P@P@~hÿÁR>,Gà€š?Û{ƒ«ãf=Ñ ö8Çpzô*‹ÿ®µ­8óTQf] Ú?#í¼ã¯YiVðê—þÐ mì¬fò t!QNß®A>µèró>g©ä©J*Éž—áoÚ PóÛ@´´Ö|$$’g²Õô¨ˆyŽä ¨ŒIÚ>n ÀëŒÐÓŠº)ͱÞøÿðľ&ñN“ÂÔ]nÞù­µPº‚1s·{ iCÆ\Hƒ›råÒåò¥i#Ò4ï~Î~$½¾Ó´¿ëZ&±lÛ.mŠÛÞù'®c#ÄV‰¶¬Ñ–çBžð–¤7xâæ‹pOHõ¦´sÿ})_Ö‹Æöw{&h'ÂßȆ]&ÆÏÅúN§ Á?ðbߥ7É{&' Zç-ªh)ÐØ¦·á‹ý!€äÜٺ̊§•Èi§fa}¢98<`€k6šÜ D_lÌÜÃg9RQç'`#¦q@Öú•um*î të˨ì¡GÉ(²¹W@@àu-Üuô­œ]Á¦ž¦EÒÙjB]>æÊ-ZÂe0ÏoqøåCÃ+/B'"¡7t#øý´þÅû>~Öÿ¾èÖ§HÐ4ý~Y´È#sˆíeÄШ>‚9~ØÝŽèË™\_†_¾"xEíæð¿5]dÃ#Z_IüŠN1’´‘¢m;£ïÏÿÁV¿o†úa‡Â_´§‰íc µõ—cÙ¬ž•¯b¹äj?ðBßÛ_ö”ý´>|CÖÿh›« ~÷@Ômì4í^Ú×É–à^¡m=«tàe”¯ïQ)+ÝƒŠµÓ>UøÛÿ1ýˆÿmŸk?>(übñ‚þ._"Essá}ZÎæÌÅâc›;Tg‘øT¹ÉI8´Ô}ããoÿÁ¥Öé«üýµ­µ{9Ax]ðÑTeíûÈelýBÓUìí$n©§ªgÆŸ¿àÙø(ïƒpþ Ô<ñNÚ9AÃ_kweöΈ?ZÕVƒÜ— _CúÐÿ‚6~Çß?cOØçIð/ÅÝ/|UÕµ‹gY±Šá%û>HHã.„©ù ûÕçÔ’”ù‘ÑÒ³?W«"€ ( €î±£Hìf'€(zjðiðÿâÃþÔŸµ_í‰ñ²-E~Á­xâæ 2æYB¯ÙãvH9nsó:ãtÅMF¬”NdìîÏÁ½3Â×öÒøoO±¶’;-!Œ2·;¾lóŽ€uJÍmcèæêݑӢ¸Ñ’õ´ø¦fÔLeˆ®Ø÷ã8#=ëUerUI¨©.å[ÍÚUî®òÚ6”ÐL‘A-´›]É]Ù#8'©N¿,š‘èö>2ø£à­.-sÂßüE§Ø„W‰?´ZEà !+ÜT(ÝÙûuó3Ùü)ûk~Öþû'“ãè<@Œ…– [OŠŽ¤˜ÊñïSk;šF²nÌú@ÿ‚ |oÒv'‹þéÚü@|ÒXÞÉú)_ëLèöŠö=×ÃðUï†óyiã?‡ç†ß4‹‘ú©cúQ­ìiÏ~ðÏü+öYñ?—|F‡FÆLz‚˜?ð¸pGÚ<3â »B§Ô#´‘ÿ㸡·c7 r~ò["¥ƒEŒŒA¬egcŽÕ->öH!±ô_isu *CÑá˜rL¡Ê°á“JJÌ´ÚØûÓönøÅâýWPÕ~ üh¼·»ø½£Z­å¶­m•ˆ4òv¥ìKÑ\–Duúp¹eW¡Õ óh÷>»¬Í‚€ ( €1|Im¥x{^Õ/Qd³¶²–âeqUP’¶'°7esùWÕl|+¨j–—âKYñ¡”øÿà·‚|s+ñ$÷ž‚9Oýµˆ#çß9¦›Z¢ZƒÒHð_þɱï‰Ä­?ÁOÀ÷ 1çxkÅ3 _qÀ•hófNÛÕ6xÇþ µð;UI࿎þ$ð„’xƒÃÞ >òA$mø4—S7N;&vŸ ¾ÚüðŠøÃÄIâØáåmB+FffäŒI=2k¦6jÈÒ)EY¾8Þ¯¥Úà6íIì95m]XÑZúž™ðKK[ϵË) ¸ÆÏ;'dv¶¯cõçÁ‘›M>ѵAãšm4ìÄÓZ3ÛbµÜ€ã¯©©érlËÉb¤döç Qæk¦=¬Žr¾84ôtâ@ÈÀ##2ÔZÑ2tÓÉÛÆq“@œ[wflºV21Œqš.%MØæµ3©#8<’(3”lÏ3×tò»Èq×h¦›NèÌùçÄÖæïÅ:u¨'|P¼£#¹ù©­Ü½Û²’»±÷G‡>]x Aðæ£m®é¶ÚÍí°ºòoå*Üó‚:dW›SBE ²I¾žŒpõê'Rœ[^‡aoñ/âǃä¾ð­‡‹thùvÒç"P?Ý$溕ž¨ænqÒGØ_et}õû?Jò|ð"¹$EhÖèO÷QÙôQ\Ó·;hëƒn:žÇYš…P@þß^ Jø/e¥;íþÑÖ!…€=Q9ýBÖøŽZÎбø³a{£%Õï‚Dê±9Uyb+—æ Œ ÿ¾•Øy#í›Sr\kË©kKO:E°3g°ÿ'ÖŸ¨÷Üþ<ÿà¡^%Ž?ø)e‚~Ò6÷:ŸÁ(õÝ9u y%™´“ÌØbùøBvrXæ›m+Dì…¹UÏQÿ‚øÛÅ׿µÇŠ´ Z\Ú|6¼²¼¼žÌ;4VÐîýÐ%Žs’€ÉÁ÷«M¸êDÒjÌý”ÿ‚´~Ýž3ý‘¼ àŸ |0 e㟠ßûMÓq´‚- ”cs=€8ä‚¥»&1OSóƒà‡íëûUþÍ?´Âïü|øŽŸ¼âÝ:ÓZxšöyÌV× Ê¤‰ÕdŠAµˆ Ãk ÊÊÕk–kC¡«Õ'ŠüWᯇþ×üuãZø[L´{ÛûÛ†ÂEŒ³øtïX$Ák±ø¿üöXºøˆ<žÕ×íuödÕÞDŒà?•Óþþ}³ÅiÈí¸Y^ç퇂õ¯ü@ðæ‡âÿ jqë>Ô-’òÒê•’6~};VO° úàNÞ‡ b“}€æ5=hq· œôëM;nKZ]Q®i¥w¹ÏQAÄ÷<7Á¾_|p²Ð‰Y¸†'°ÎZ™½4·?ààOþ!¶_‚|á^èQøG°ƭaxñ4sO!våH9Ú‘þ•ù&a(b1uÕÒvû—ùÜþ†Èé:|ZÞZÿ_#áoÙöÁý¯ï¾8|$øweûBx’ë@Õx ÒD1Éý›¬îãyÿЫ|G\tއ§Ô–P@~]ÁDüOgm}ðßB¼Y$´†õ ’<ä‚UG@Oð·jÞšMÝžuw²?2-×^Õ´›­[ÂÏyᵑ $“@L–èO€ Æ:÷ê;WS²g ¾èص´Sh¢IþQ¹ØrOrhøëûeë?ðMŒÞ7±ø{ñÓÇ:eïŽ,d6ËsbÒù–Äžci£ëÛ'Þ­FM]EMl~ƒ~Ʋìíð Á±ÜüÑl—IÕ£[†Õ ˜Í%Úãå&RIaÏ8ñXÊ\»Šé¿xñïø)§ì}ûgx Â× ÕâðçÅM$ÚL÷ˆ¦GÆø˜€JòªCpGNiÆ¢µ™ºi#óWöuÿ‚CþÖÿi_üný´¼¿›sÍÔòj-w{ªyyq»íO”ÌKÆ;†êB*Ñ4?jÿà§¾ ü]ý†~9x;á¼2Þx¤éÑ]Áe%îR’W@êJ¡w8ë rjW` ­ã¯ [þ̳þΖÞÕ.~3]øòrãR¹°€‹xãŠh¼ ÏÌžd;ð 9îÚ»YÞã¾–?½?ø%ÿŸ|7ý‹>x[âm”úo‹ãÓ^ææÖäbKq,­"£ŽÌÆGc‘XTŸ3²÷mõLJ¬®O½Ölí/œ|KpŠçè Ís¶–ŒÙS©(óEhdjš:ís°Œ]’·+1ó4ðv³}ûW_ë¶#úÌë¾ÖÒÍ%Ýp€oS§i ̯¸2³ KnMÜôIÖŸü÷RñÞ§ûé7¾4[°.±q‘%ÎI{`¿ìù‚L{汬Ói£ ûÍŸÿµí¥û_~Òß¶ÇŠÿeßÙ»â¯Á_hwW¶ÒI¨µ±º–Øí#"´®òHG©ÜY@äÖ±Q„nÍTnî}ÿKÿ‚|Sý£µßüøÍ¬7‹¼C¥ií©éº´£2ÉH±º9À-÷Ô‚yëžØUc^xŠÚÜýrý³ÿm?‚±7€l|GñoQ–îÿSv‡KѬ€k‹¶P   ÈËQŒšæ„%7d3ó·ö-ýºÿ`/Úóã„6V¿tχ?î¥ß§ÞêòIu'eYÂ+=²9éœDéÎ1ºz–?W¿l/ø“à÷ìããïøZÖ8¡¦M¼o"£Èç€O#¥|Æa^¦*Ô·Gë\ ”à³¾'¡—f›ºïdÚ_;‰câ?Ïq¬øöÐ&ê³ÿŽ]/.­àb«nÌÐÆD^rIà £ ®çnç?u”ã«TªðxZGò_‰\+”árÚ|I”G’3•œtóèºè~ŠøÞØYi:óG…†”çÔ ×è°nögñKm+£Æÿb}*;¯ø‡Q¸‹Ì+dÎ Ù«¢Jê„®ùˆ¾.þÄß³'ÄíNOüðÞ³s<ŒòK>•ÈI<åKô5òsÈòùkI8?îɯÃoÀûJYþiKG>eæ“ÿƒøŸ#|:ýƒ¿gß‚ÿ´€-¾ø9<;®ê×ÑÍ©ÅòÈ‚Úóìdvµ<&S .%bG&“Jöëè‘8üû˜a¾¥R)+¦í~‡ôm i­{ðïÃÅ3öíh^Îÿ–VÈd?†â•ômêÚ>Z6zmÖ'PP@PóéûBø¶ïXø»ñ æÓB:¹ºÖ$·IÚ]«jÛwç=‚ôÁÏŽµÑ [SÅœ“›g”Iá‰VóFÔ®oå{t,a·I×al`–œàœqÎqZ&ùŒ-ØÌø‹ãOü3ðž­ã/ˆ^ µð¿…l£/swvà"ŽÀw$ö“T×7ºŠI·d~.xsÃ?ðH¯Úçã£Ïgea¨üD¼»Þb™&´†þ\ç;AÄŸP3èjÝ:Š:78­OèOÀð߃<1£ø_ºE¾‡¡Ù@¶ö¶Ö±„Ž4Q€@À óÛmÝšÆÉ\üý¶ÿà‘ŸcŸ¨EAø×4´ŽÈ-n})X@PV»¨¦‘¢k¬¤,v¶²\1'²©?Ò‡¢vWgó©êúÖ¯¬¼Iƒì½Ì÷²IûÀÄœ*×$óž+¥ZK•Ÿ>÷»$‡Ã–Zn¹5÷ÚÛPÔOøùÞ±¦r/E÷ã<j͹lÆÕÃÏø/‘ñóàíOÂâOÚk®uµƒ8Vhñ ¾?‡;Ç=ØWDd¢ùQ½4·?ž{‰SxÓÄÿ²÷‚>x=7Äþ±¶Ó¦Ôì´ˆmïõJYC>ö„1P•Ž2Ùr³±ª ÅÞGKI«3ûÉøùñƒWý˜dO|iÔtåÖ¼Káß -Ù…ó²K¢ªŠíógÛ5ç%NÌVV²?’KßÛþ #©| ¾ý¾'ý¡dÓüG†¡ÐF¡$r;•¾8òÌ#%zã*ÃWztïÈ‘IY]Ø·ü¿öŒ»ý­eO†ŸµkU²×o¡’×QX— g‰Ê;Û;sŽÙ® ‘P•„ÿnø-—ì¹û6|EÖ~\üp×,¥6zúC.ýš¼#§xìó¨Ö´K}:+i-ål•f€6 ìAÁ¬g AêÔŸ¯#SѬu+Õ°Ò"è&@Ñ3Á`~SŽÙ郎Mø•›fXJô°4+:T¥Û]^É_²Üýg†ðxjÐzæ’{6“gª°Šò{ýÄtH%•]’7‡åfÌn¿0 (R9`=kù›[>ÂÉc0ص$µw—“{¦û-{´Óq42Ú±ö¤âÞÖ^Ÿ×¢=[ÁÞ!‹ÄšuùŽá¯b¶¸û:ÌÄne1¬ƒwû@>®3Þ¿ÐÏ%Ä,qÕ7»OÎÇóîm‚ú†1ÐGËŸµ½ø·ðŽ“¥!Ã]ß#£'ù×ëTûŸ)7ecÆÿf[ÿìo[]Èqo*µ»ú`ŒfºzÓø¡8ÔáÓY †æ|^\ ÿWyǹè?^GQ÷ÏÃ/ éžѬ,-àKÆ@"(ÉýKÚÅE^FoÉøÔõ‹·p³jïw 'ÔáGà ¢qmhv%ecî Z‹T¶ŽD`r3œ×!GG@PŠ~ÑzÛh>!ßFÁ&}=­£$ãærúЭ}Lj;A´~ Ù¾»©j/iª¥–‘…¶hÇïXžIbàqÉë] •­7S–$ž0;cœ¹–ŒvIè|›û`þÔŸ²‡À½ O~К•¾´šÅ¹Y<>-Ráæ…¸%шP§ˆÎ3ЏBSÕF2z£Ï?àžÿ ¿à›^>Ön>*þ˾Ñàñ©ó&3]Ynã(®ÌFc8íšsH¯yèt&þ­¿¾ x[ãO¿|(ñ“]øS_ÒåÒ¯cS†ØëŒ©ìFAÔ Á;;£Må7]ÿƒvÿk›ŸÉð·Ã?´~˜ÿ³{ëUŠÞòöìßƒ˜!ÆàÃ>¢·U4»A{èX?²‡ìÅáÙ7àÿ€þi®´= ÏÉ7Wy—R³–fÇgf8 ãµbÛnìá£âÅŒà›Ÿ·Gí5{ñãáÏĸõëV×ó^…[kôºœKÉ‘”îBlNp]ŠîrSJÃM-ÏØoø6?öyø¿ám#ãoÆ¿h—zÃmbÒÛIÑî"Ÿo‘\¼“ =QFÕ 8%˜†¹êMJÑA},Q?tjZøÇW´Òm•Žâêå#û WÃçy?Â<&:7ìú£×Ác«àjûZÇËŸ³„šŒ©w |B·ºÐd9Žxcœ{Ø?Ÿá_ÌtüËãˆç«]¸_kk÷ÿÀ?HŸb¥O•A\ú+Ã^Òü E¢ifIQI’Y¥`^W?y˜úý8 þ®Ë2Ü&S‚†XEh~Y‰ÄUÅÖuë»¶|ûYj‹wâ¿ èÈw}žÕ®} 6?¥}T>ž\Ózþhf[˜®\n\‘Î+P‚I ^ðõŽžé%šbyY›“St™½´º:ÿŒÞ5·øwð®ä|­OV±À ó³«Ÿä?QÌîiv|íðßWkû‹y`cɯ5¡Ø~¢|-iÛO‡Ì'îŠá—ĶԀP@|yûnêòiÿÅŒ Åæ¥n„.XÿJk{œuÝ¡cñ÷O†÷Q7’øßUµŽ2v¡D Gn=XðN{ ÕµÓ~éåï¹Óøz×LµÑ-£Ð¢Ž=5ÐÉp¥[Ãëœþ5“½õù ÿ‚‚ áOüÏÅÞ8ý¨¼=©x¯á¤ÐE«xn×û<]Ú\°†4ˆM’=ð£+ïEl’ C냼,Žè5mOhÿ‚ húÖ¯ûrüNÕ~C©?Àë+{ùÍÔ^^-d­¬r $?»;A?êÛÒœçÖ[¤ÝÑúŸÿÝý»¾1þË^øMð‡àŽ©'„üI㸞÷X·m³G l‘¬Q·ð–i $rµ•%îÆ~T|ý¯ÿlŸø'çí»ðóá'Æ/÷¼7­yu«&½žx¼·¸’ÞE 0 ®¯›X˜l`J¶MÕHÚCqIÙÛ—ÅŠþøð³ÅŸ~&ëqøoÁ%“_ßÝʹڃŒ݉ :’yé9; ¶¶?œéÿààÙ_â/ŽtÍ+Ç_³ö§ð‘µf°¶ñ¤"¸ Á%chöo•Љ2ô®§G¥õ w?¥¯‡ž)ðoŒ~xcÆ_ î­õoê–ßi“Ú¨T’\®ÑÛƒŒcŽ•Æ×.‚?ƒüQý ÿoÿÛËâÿ¾(|jÕ>é:C_ÜÁ¦ÛÈâŽÞ@‰k ;*†ù†rq…bkÛröpJäRz| ý¶~4þÀŸ¶.¹ð’Ëâ…ÇÅiúÄzmÑ—(—¨UX¤‰’7 Åwu •/–¬/1ÚÚ#û¦]P^éP_WÎŒH Ž@#5ãùsñ‹Q>#ø©â¹ã`ðÛ:Y!Î~ê þ¦»¢’‘:3èºP†Î2P© vÅP$’²>þøáéu »hýîIaÀÏQô5Š»²>ý«|¾(ÿÂ?¡Ü›HQgߺXuoÄ’Ò (i[cØþxRæU³’HÎ ª›I]”~¯ø'I©\£Www`wÔ€( €>9ý·ti/þAª@ Ïa©E&HÈ ÙSŸÇJMlqWMÂèüx2ÙBˆúÕ­ø‘ÂÛÃ%¸eÇS’ēמHÀ­Sæzc}ÏWÓ"ˆ¥º  Š £€ÒmÙÅÙ{à‡í¦Yèßþé~?Óà2Ôm˜˜õ*ßysìk9]{ÈëK•]Ùðö}øIð ñøWá?Ãý/Ào1­´»E…]¿¼Øcîrk™É·sCåø)¯ü[ÂðP¿…ú‡îµÃைú Ò\xYyˆž`â‘r ¶§C@#<ƒ¬*Êà~`þÅ?ðoßüûDø_ãÏímñŠ¡^A}gak=ÅÌ—’C$M4À06¯ÈÈP2¢UïEî÷?cÿà­ß³¯ÿi¿Ø3ã_Â…É{ãw··Õ,,£lÃo2LÐVeBîÛk:UØà‹Å>%Ô¼_ðKàßì“á߀—ƒãî—¬Éoª”ðìqÝyLb!‰ÞiVXÒS&p-a Œµzi¤ù›.÷V?Ñþ Ãð?ÇŸb?€ ~(¸ÇºnˆT€0o³Ë,1‡<çg˜ŸPk‚sæ•ãÔ–î~~Ý¿ðH_Ùöªø—uñ6Ïâ ø ñÎáüÛKE¾‰M̃2HK)ßþÒO|šÒ*F;sÁK–úŸ=~Íðo¯Àß‚ÿtŸ‹_~)j¿5}:ðj6–wV‹2Êó|ÎÒ`Œã ùV“«RK—dh~éx‚â; 6Iƒ¨Pœúc­`’½„Ý•ÏÊoÎð°ŽçÇz±ŽYY²,âaÏÞ#òÍfà›»:`šÕŸ ü6ð÷‰5‘wºâYdó$v,IÉ&´7?]þ ø,­íY¢ \Õ¼ }—iÁ ÀÆ+-P@柼 |uðÏÆ>7ÜÜY±€ÓEù—õƒ9Çš-WšEµäZv [ûtÊV(;Š‘œ“ÝqƒÏÐw«²¶‡†’Z5‡|=fsqsó“‚Åfïmöw;½;â¿‚àÁg^±q›Ñ—ÌÕÒG¥èÿ| ì >ÜŽÒæ±q’v)TiÙž•¥üGðUÐ@—ì£âÒåkSUR-ö›®x~ñ—ìzš=7cühZ;³DÓØìE·ÚlÙ0ÆÿÒ/©G;màoXëoâ1á›8õöd¼ˆ&#Ó~3úÒ`|×û~üSñ—ŸÙwâ‹>™!ÖÐEl׺ݶ³OLöÍo ¸«#ä3ÚõèeÒžÙè¯ÙΧ‚|:ÿ4m\¶ý¦£Ð|[wf—³[^^Å"Ï+0V·Ža":»"~óBÙ(&¡ÊrÕ³ñ(e˜z±Söžóîõ¿çSîOø&¿íiâÏø¦_ƒÞ!½—W³kî-̼4"§*2v« ®pês¬fÚ¹ú c±U*KˆnI+¦÷ícôGöˆñCøSá÷‹®í¤>rYH±.y20Ú¿©ÓI9É&~±&í¡ñ—€to²[hZY`Ó[‘0=È?®k¹¶÷)++¤V%Ò¾ |6Ok*²ê³Gåi6O÷¦“ûØþè¤m¹3á-?Ä¿¼YyânG¼¾º˜É#¶OSÐ{Pu¤’²?Fþ ü#6éhZÛn0I"³œ¹Vƒ?Eü- Å¥ZFB1\~l€ ( € ü ÿ‚•ü8ñÏÁ=fo‹µš_†Ú´…¯ÚÚý†äõÜ@á¨>¹¤\­#Ì«M§ÌÆ+_‰_|Yt¶þð¦¯â{–<&Ÿ§Ë1$ÿº w:p‹÷ŽD›vG¢i ¿m slÚ/ìçã[˜Û͡ʃÿ›ömY²Õ9½‘ÙÛüý»¬PK7ìÛâõŒrH±ÉüÍgËG{•ìªv-I¨þÔ¾ ýçŠ~xÇEÌÒèS•ùU"²qƒÙá4õGAáÚÊ÷Iº[mZ[2ô47ÈÃð85õ‰‘öOÃßÚö)LÔ7) cC\²¢Óº)JQVGÚ^ý¡ô}r(’öhæ$pIï\ÎJçB¨ºž•­Úx7â/‡µOjpÁ«èwöíoygp7G"0äÎÖÑ„ãN¬9«¦~(|Wÿ‚(ø]ñMÞ¯ð÷â•÷ÃÝ6á̦ÆãO+NpŒ=É÷¢îçÀÕá¼,§ÍJM.ÛŸUþËŸ°ïÂÏØßMÖu­;\¹ñ—Žï`û=Þ·¨"Ƕ rcŠ1Â) É$“Ài·+ŸO‚Àa²è?dµ{¾§‡~Ð_¡ñ·Ä |6Ò¦óíímQÇO*" /ü MŸP {4×/¾Ïn÷zõð—À6¶6ƒâ?Ž"’ÓÂÐ9VÊ1.£0ÿ–qOVè+CD›vGg¨x'Æ|Pñ>WLU©É+Ò£±ðw¿c?ÚàŒ²ßxrâ/Šˆ“‹_Ý\ªXØá¿?J·(ÉêŽIQšWFWÃßÚ'WÑu£kÑÜhš¬-²{k¨Ú9ú<Šå”µG#M=µíh}2m uÍÄr8\®æÎ®*æp’4UÑŸ|}ýª`ÓtÛзos(%!†#óHÇ Ôšî§Mo!5w¡—ûüÔ¼Y}©|[ø‹¦É«Þj ’ÑrM¿r2Ý£\žœ’OLÖî\ÿÈô!k3õ»EøQ¬ø»TƒT×"VòÐEoG¶(# ­ÉEXìI%d}kàÿ…º~eí×#œ\®MîQëö¶Vö¨©ap1À©åP@P@P@P+­>Òò6ŽxUÁ9ò—ÆÙá_Æ YÄz fô!½·\ñUqÏàr=©¦ÖÆR„f½ãñßãWìûQøUûˆ×⇄çb ”]Gðîʬ@?ï.~‚´‹Š~ñÁ*OÝ=öxÿ‚Uj—ZŽÿhÝLjºª°’ÚLdz¸àû…ëÜö¥9s.U±ÓN’м·?cü+ðÃþµµ´³Ó¡²µ…EQ…TQÐ: „ÚVGYëZ=’ªÅ ® 08€ ( € ( € ( € ( € £ ô=B-"ÎYA=³@,H½~T&1Ò€ ( € ( € ( € ( € ( € ( € ( € ( €?ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_ecom_0.jpg000066400000000000000000000637171231776762100254430ustar00rootroot00000000000000ÿØÿàJFIF``ÿâmICC_PROFILE]LinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3descƒlwtptïbkptrXYZgXYZ+bXYZ?dmndSpdmddÈvuedK†viewÑ$lumiõmeas $tech- rTRC9 gTRC E bTRCQ textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÀ,,ÿÛ„       ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýM € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € (Ö4g‘‚ª‚K1À€<»Ä´» ç·ÑcK´Œá®áXÿ³ê=ëEM½ÌeVÛ—_´Ö‡¤Å¿[Ž8¸Î#“œzàÒq±Jdí…ðßÄ­em©OöÅò!Ïb;à&OéP>tvú/Æ¿ø‚Þ)ô¯érE( ŒîcŸx ®V>tu–:­–¨›´ËËKµõ‚Uqú’¯rÑR:Š1Ž´”P@P@P@P@P@P@P@PÏÿ´×ÆøGà_ è“s:î½t<¢‰øõ>Øõ«‚ÖæUÙ#xËâ¤Ó$¸º›Êp…²Üí¸õìs[¹Ûcä?ˆ_µ_j¸š~X7rÞïê}º ŶÍÒ±×ü<ðvµáo'Ä>"‡ìÖ7P°¶Ù*;³#•ì#9Ã`ûVÐ Þæ3ª–Ç/â?ê¾´mcÃ:½ô¶@³c–ì~îí§O@ÿ Œé*j"Œù´dzǯhŒ¦ÃÄÚ¢²²¿˜?ñìÖ|†š¥áÏÛ»âχ•UuÓr‹ÚBã#ð`?J^Ì.z‡?à©8±UMgK´¾Ç}éÏþ:ëRé"”ÏRðÏücJ˜"ø£Ã“Áx†èÍüª];;=[ÃðQÏ…:æÑ}su§³ÏA€?ÛKÙ±óù¥áÏÚáŠQN—â‹2[³dþ«‘K‘•ÎŽëMñLJup¿Ùšî“p[¢¥Ênü³š—‡t͵ùÔ!”ô äCÝcFyQYަ€34?hž'BþÖ4ÍQW©³¹IqõÚMROcTŒu bP@P@P@P@P@P'|Umà êZÞ¡ƒ¤EÕ Ç˜ýGÔ(v?6> øÊâú÷Vñ½4’JìóÊGV$ð«õ$>•Ò¢”L/s㿊>7½ñ6¨Öï1h¡lÉ´ü­/|²¿t~'½c{š%bo…¾7wͬ_DojvIJ ‡—×þÁú‘]!}LjÎÚ­ã;÷µÓ|9mì’Nã=rxý t/ˆçHÎÒ%·šim5Ž4ëøÚÖäáFãpªpÃÝE\£tvgÞxzþËÄW3@ÒßÃ;[˜ãÜÊq‘íÆséÍsØèæG è´Ý-RM{çS¹§·>ùÛ½j©™9¶ô:Ak¥F€G£hÁ@Æ>Çýqš§O33ï<)áýM‰’ÅìœÿË[) ãþÙ_ÀKÙö›9½[áú£IáËØµí ¸†_À´þ>Õ ªUõµö‹raÔ­®¬®øfBúÔ4Zšf¦—ñÄZ6—â bЋËíü³ŠžTShô? ~Õ?ü8êlvIe¡èšD¡¬tؼÐ~W¸s)Ø7¥R‚AÌË—­3‘·É'­=‰Hsj—ú^¡4º]Ô±°8dT8Ò(–-fÿVZ6Œ±’è‰ nRwÀ&àÕæ³•&¶•ã‘NC©ÁCUkâ¿Ü]ZÏ­øîtÝB2ÝÙX;F³(å¤Wî2Yz`1‚+ Óêi ôg£üpñƇ"›êŠ¡–A/þ…šÅÄÞÇ¡øköòø¯á²©ý´—h¥Þ8úô©p]†Ÿfz߆ਞ4³d]sHµ½PpYYyü6ƒúÔr"¹™ëÿ‚©hnxƒÃW‘çïsÕ|)ûT|.ñ}ävš_‹ôØîäX®[Ë =›îþµMÊRLõˆäIãI!u’7•Ðä0ìA bõ € ( € ( € Žêê+Y®ob‚i$vèªI?€ ʯuoxÓTk)äµk¹ÚæVV!•[î&ÙM«øZ3|Îç“Yø‹Y†ì-SPIœõ[‡‰æµ3±ÑKñOÅZ*@«®Ç©Ã&T Sx Üê  #V_h7m½á+ ¤È76ä³z3V§b\J÷¶×8?‘ÃcPøaâ½,“s¡^¼î…DƒðÒi4s·Z}Ý‹0¼´¹·aÔK.?1E†T ¸œsÞ‚äŠB€OÒ‚D ´äŠ(p'§j5¤Éç·9Ïz<ÒλØžô™FÛXx’Ò;˜ ÓLö7LÌÒ¤>oSU€=½¡ 3̶™‘ã<&Ïãôýiƒv#{³å¤äúzÐYðëÅ2xg]³¿wf¶ˆî"í$$bE#¾U&®„|ùã­9|=ã-sJ… QÚ_M !9Â+¼ý1Ís3{œÜ¥ËoSŒRÐÝ4m–éê{Ñb”¬Y7ÀŽ[Ì,wcw-ǽ&®Rg¹|ž};V±»Ón'³™%óXk/åXM\¦ÏÕÿÙGUÔuê3ê“™¡¥`\å°$ç¾k"¡±íZ ô  € ( € ( 2ý¢5ÖÒ¾ͧ۾Ëjá4Õ àùm–›ÿ!$ƒñªŽ¬Î£²?+|Qwmªø“YÔï’Y¡–öTQ Ðç¶0=«¶#èr6÷fÞñžÆe•cr#Ž$^œqE^à;OF»ñ-±¿siUV ¤*.A=y=(@i´s;Àiœ‘Ô“@¯sÓ4…ööƒQÕõF¹½»nMºÀ»!V8_9È9vÇ"¸v§ÈŽ¥F.<×<ïNÒ5{[³Ò¼=l——×NV4i5FI,x~µ×9ò+³ÙÙÞ0ðÿî’;Æò.3µÄ3‰¶3Ã.2?ÝúÒ…E=…:n;™Ö>6×´ßøóÖ5ýœÄ~DÖ×37-þ4x’êæÖö1Á[¨³ëÈŸ3 "cñ/MÔÉÿ„ƒÂZÑd…|²W;(¿jøw©®n´-OLcÔÛO¸Ã?ÒŽar²6ðOµ#ÿß^X9è—ä©Q̘ZD ð^k°Nâ?ê žÎØÇðæ­ ½CàÇ‹ì+¥¥þý´ªÿ×4íØG3yácKr5/P¶ÛÔÉùâŽV;”㺒Ù÷Dï ŽêJšV°ö©y¨²}¾æ{¼/šå°=³A%`J[Æ‚™©bqlžäœþŸÒ3е¯ØÆ?¬­üuàÙ!kmN‹!‘y‰£ðHêW?pÔ«iZÇ]:|ѹçšßì+ñcB'ÌÒšæ5ë²6þc"£Û!º,óÍwàŽô&a¨øsP{Ä»¿J¥V,^ÉœF£á_I®£§_Û€yó!eÇæ)¹ßa{6ŠÎ[i"•ÙIG|´Ïk?:Â>µ)Ÿ®ß³–ýƒð—E‚UÛ,ê×N1¾r?ñݵ‰¬U‘释P@P@PÊŸµ‡UÖ4M[ë\FêÅ—ŠÉöê?*akœ·ƒ>8]xâæ]?KÓ¼Cy—C€½º¿œjólºiÔ>ÂA¾±Õì°zÍjäÄ?ZÓšÛ™ò4t✷úGöLzä hí¹í‹÷7L‘ëïC’{‹•¢Ç„µÖðæ©¡lUU22œ« 0ÁÈ Œƒý*jF5+*pwEŸøÖoê?h‘ÚB †,=ýÏZ)RTÕTœ¦îÎPÉýáŠÔɆwhÊàu¢å"XäÚãÍ$“$•è{ÐMÄó0Fуõæš`^±ñ§§¶l5 »r;G3ëL.oY|Uñ=šý¯<«ÜNLþbØ­røøÅw2lÖômQC×Ͷ‘øSæakŒoxRÕü¶ÏÝì. þœSç¾âå#} ᦫŽÿˆt™œH‚EÎŽeØ,Ë6¿ ü?r4oéÎàaVê3?^i¦ƒSíŸto|7Ðü1¨ØK|lb(÷º}Är,ŒX’B±R>õÅRƒ”®™ÑNºŠ³GµxkÆþñ‹¤ZeÙ‚åþìKå³}!¿kžtÜw:#V2Ù›×¾·»R·0Å*Ÿá‘Ö³±¡Êêÿ×bφšé&óÃªÇø‘A?¨4îÅdfhÿ°¿ôZ Í9omÖ6ˆ7 éEî.Cé­+OM>Ö8`Qq¨UU("‹ÄäÐP@P@P“@š?|wÿ ^©ñ\…ËEu4ÉÓ5aš"ŸÆºéÆÐ^gGy3kZ³µŒPi~vf‰a’d|a¡‡|šÖý Îoâ]ÁÒ>ܰ`…m$o|¹(¿Íjfí]5y#köð²ÜÁ©ê3FI0PHìÿ\Öxu¹®!ÙpÝxZÆæY­ $ó–Psë]78œŽcXøCáÍJ6û^›e&ppP7;G «þÍ™‹ÛYý‘9¶s–*yPÕfŽSTý›$·éÞ©>èr%þú—)^Õ=ÑÍ_|ñŽ”Íö]NÊùp@[›ræ¥ u+ž ç¯<'ã=8ÿ¥è\€~ý´Ø?‘Qüè÷×+êeÏwbÄjºµmŒå–-àß$š9šÝ”ª¾0Òã!g¹kbxÅÊÿô,QΉäeû]RÖõKYÝ[̽2šjI“ÊÑkvåÊìú‚ P†±eêJ.;“ƒÖ€°›ËclQqXBÅqƒÀ§qîL‘–$QpîÎyõ§pر£=¼ˆðË$l ±QaŸOþ;-“ÅÚ6­a­Nd¼±Ù<21ùIÁÏ¸Èæ±›³îÏ„¾"›_ð°[ùk›GòšF<ºã*O¾8ü+Ž¢³;)JëS´*jƒA jG šEA»¥?·”P@P@P'ñkÅãÀ_ hö3.<=ã]- ’ËLÔî¬Ñ’?Ô>d?u™³kZÆž‡ûOÃ:Œxþ;fYGþ„éG3[ äO©Y|{¦)Û~—¶-ž~Õo"øã­ë¨{7ÐÒÓ5­;[•#ÒuK©r©lý¦¤˜œZ44LÉ *G Õ"@¸(¯z¦ºþËv.ÚÖ§t H‚:×<Þ¨ÐÏ€Ö†/&s‘-ÆõGø×5]Ϊ;—Y›.h( € ( € ( €>`ÿ‚ŠøßþÙÞ{Hä .¯¨AkTRdoÕó¡n„ö?:muY®|¡L²:I5ÍÅÚºž@R¨§óF®èêqÏFf­˜Õµ«y.]ÞE@Bª‚FHNÄ/ûMê q«i–êÙYžIöÜ€?öj»ÙìûÃörÒIøy¥E¬6÷ 醯ÙësÈTó»µG;)K+‡ã9'Ó­*MrÒ¶pOZ©$›[¾hd]çæ#é@nUgËIãÔPy8Àéƒ@dr à¶((¨Óî$ž `Ð2£9è(£Uf` ’Ѥ:t§nåÓéðLŒ5#ð§a™Þ°¸C¾`xåEKE)n»ð÷F€Ç{ ” wÉåÈ‹†ÝŸZ‡Z“1µ/y;Ã9"­Uû£ƒøS`}Iû0é†/ ^Ý•ÿ_.Ð@ì?ýU„ÕØ Ÿ l‡tÕÆ ¡¥?‰8ý1\“Ü줭uU&@P@P@P@Ÿ?ðWkÛ«oø "fû+Ý\£ûÛWŸÈ:”ýô¼…-”¼=cŸáßÚ\4Kq ¨'#fù ˜ƒ»ŒâNôõÅzÑRw(è×"ïÅBä$vð– ¿hD/ƒóc Ç>ÄÕ^äœÄÏ‚úŸ‰ü[a¨[ÏpÚìI¬î2$\9fÆ=OéÍeR›“º6§QEYŸdü9ñÇ„´ÒÆ÷Sk „@ ]Bè?-é—ý/Oe'©¶¸Gýi¥fEÄñׇîsulO{ˆøŒŠ5TZ·Ô´Ûøñ§ê¶1è©2ç?J..F>ki‚|ª¬3ÁZ.(\! ‘ô¡‚E9p‰Ðôè(¹V)ÊÙÇ¥;ŠÅgÀ$óÅ ¼¥P`tìiÜv –cÑIÇ^)GâÛ–’âAŸ–(ðõb?úôö9œŠhD–‘‹‹¸â^ °ñ4HП„š.aðÞœƒ–0¡õ#5ÈÝŠŠ»Gح׊ç;„ € ( € ( € ( €9?‹/iÃOOª¨kx,¤›ã £+úA3Øü€¼¼¸¼µ•Q¥yÖf'åÝ÷¸ïÓ=«¿[,‹MÒ€‚D’b#dÎ¥‰c“Ó¹8&­ êG¥ÏZâ6(æÕ$>b}Ó”ùHÏ» h&ÎÉ4É;mNKX¼-5¨3Oui¤ÚJÖ²DŠoÚæt|î$ËÇßäb©Ø…rKO›ÄºnŒ§G1‰má¹y©t˜@ÓÉ AÃòÇÒ¶¥-Œ=GðCák-NÊg’vˆÜ]Û°ÿSJéƒÜ˜>„¯÷… wvóÁ맬Òj­•šE,0ft”ƒ+Ä$+ò+ch8$àf‹îQ“×馋øc‚[o,ÌLs!,9Bå3¸.àFìb•ŠºØ©%­åŒÜÉmuýÉÙUþ‡¡ {‘6©pØÝ(zHÿ:³kâ+›EÄ%£ï˜ãÿÐHƒSVßâ&«n0··dÓB’ÕsúÑd;š|L¸PRå-'ÞhÚ<þDÒ°Ó-¯ÄK‚>Óe·ïC:ŸÑ¶š,SÅ]ë(f¹…A$G˜È¤= õŒûD7¶¬ßÝ.üä¾ÂM:’Œ CEÁAœ‰™Ök“.9(ǰ?â)Ä'£±Í¹Èç‘Tˆ7¼ §Oźm¸Ý2Ò›ÐÑÿ„6kŠ´ö»k?丩®J–HÖ’¼¡"ÕÕº°¬²ÂjHÝq@%Ôoß(!¾éÍP@P@P@=û\kgCýŸüS"¶â4¶P;—`1ùfª í7d~Zx‘aÓ,U’fTh&V?½,àt ò=Gá]ÉœD6÷sÛŲ̂bÄÀnYA#¡„dþf›W¥Y­•û†ggÚ¥Û©flŸÑ 5 0OSÏ·­2F…1©ï$@ÆÐŸ)Šå`¯Aºtô m‹â½_íqÜÜ]Çsr…ÈžkhŒ„226\(fáRyÁíEÅnäø†òÖçN¸1[Î,íÅíŽV;«|mxß®7y : iëv&®¬t><†üj^TšŽ’÷ZŒ÷¡Ö+¨¤GDT÷6A]¤giûÜQqÅ4îD|Wc.Œ4Û²Ú0Ñ£‚;ù +#H>y­ØžŠä¶åÉ Ný“Nãm"V–ÎæàÙͨÈ)éÿ„CTÔuXü^,-oÚ˜÷[þç/»•ùsžy¯ 7«„£õUumzúŽ ){g¯Cͤm®Û “€zãµ{q½•÷8¯ ÒøÕPw±Š`%zepx#­Jº…ÔmòM&?Û9­Zµ×'·ncÇq‚¿ú( ¾…}SP}B@]cDNƒÖ@(·HÅ4Àô€Wö‡Ä;6`XEó’EeSU`>õðȱº¸‰ÎÀƒñ9?ʹê½,oCvwðx„0õÒ_ƒ^Èá¹  msžZ€5ìõo3?•m[Ü —ž´-P@P@òçü#^þÏøK¥é¨Ä5þ¢¼¤ 'ù‘ZQW‘•o„üì½_³\"_Ã,R°-™H×þ•Ùc³w-¥¶€'‘`¸ÜJ§ElœÜq‚ëøQÍ`(i¯$~AuŸ6Y~lÿ²£ÿ‹5Ba ù¸ã”É'` òqžæ‚‘H2yÏ LŒË·ÔÐ ¹9<ç© h ß.3@Öƒ$…Y‘º‚3š{‹5íÓ¼>eÝÛù$4eæg(Ac$ã  dLä“‚yçñ dlÄS@Še ‚yë@ ’EvºÐ dgñí@ prï@ @Ç8‎@À怛hÀí@ßû+i†}{P»uÈŽ= úf²¨#ê˜uU±rˆq“žk–¦ç]dj[xƒv9ýk3c^×ZÜF4³g«€Mtšf Y—iÍvzMÁ Ü=h( € ( € (á¯ø(—‰–/ø+Kl¼VñIw$hpy8ãßâ¶ µ¹ÏYô>&½‰ç»ŒÆì,á%”¸Ã;tÉ8ãÞºÓ0cµ8ŸOg¸…D{‚n ¤©=2ÈϽ¹#¯& §iÊw#ÊG»9ÉE%•»L…ˆÚŠ9-Ú‰JÃQ» º…. sz1ÞˆÐ?βuY¢…¨ %‘üãujͰHFÖFìtç±}ißBe ¢d “œÕ“c^ØïŒdðGA@M¬ØÄÛîÜ7Lyƒ“H ä|a¿ `F× Næ€$FÓõ4 âHœ×Þ‘׿ëÞ€6“ž´0Èàr(ƒå.8 c•àÿ*@pÀ‘ߥ#Ió úöZÒü^ÞwK ûk »ßk:ðZ¹ˆØ'â5Ë7vvÓÒ(³§ëÅÈËT–u:n¨\Œë4»£!€;]sãèZ$gh €õ  € ( € (GZüÕý¸u1¯üzÔÒG³é6–öä'$ÎâÕÓCfrÖzŸ6¥ÊÉso"0åpF{ê+ Äo‰ëSî öhËùÓ*¶íÍ׎yÇ4•À“UƒÉ¼HH"Ž/Ä(õÍR/²ðó2 pªÇØ)#úþUVk¸ø[¥Yx+âêö,×K£í³¹»§Id–8€ˆÀ³±!K u°ž¨ÕnxŸ‹/E¦‹vdþ5 £Õ²6þ¸­#º"[iЗhÏ'ÚºŒN¶xRÂÊè,«¹U†B¯Nž¹±œÚvF‘SfçÁ'_'‰.m–] @ -q„!sf‡q`…ÁPÅ@ÏäVJzØ®C͵+TÓ. —OýݵÁ(ÐgåŠAÏËìAÎ;`ö®Šs¾ær‰àf’`?J²MÔ¶1A¸(bxË0PÔÿLš—$·ÊS%û6ð[ÜÏ—m6ç?E`¹ü3Bšer2•ž¯ë¹6àžãüúU[YÃŽ8>Ô"¸aŒõ º€21ì(Ž_—?…G¼m~(QŽM}Ÿð#Ng€,K y¹rk™=Þ¶×zÔìßëegêMsµs±+ZV¢Å†NsR4ÎûA¹.W&‚FÐp´éžµÈREz&“o²0MhP@P@P¨Éù1ûAxˆë?¼o¨Ãq±&¿–I(¤.0x#宺Q÷N*Þ<ãHÓR{±ª‚dÝ#2rÒ¤œ{œ`V«DA™s*Éâ[[A YÂïG`Û `8yãÚš-^Ü-î§q#s¾VoÌÒÌ‹k ±J4€®€à‚9 ¨Ïê}jg¢âìÌMGVµ³ +ÈO,îÿÖ°õ6¹ËÜY^xŸQ†[¨Í½„-¾8O-#…¿ ­)Ç©œ¥ÐèE—’¸‹;ÇJè36u<Íke8äü¦ÿe”ž?" rËFmŽë]ø…á¦øOiáŸi𦋍HñIªÌæ)WSuÉÜò`:ªžV06÷9#5Öåž«jBó^¶ÓíŽï$ùóü<Qõ;å[SÜÊlè4ëmÓ‚ã HÖÏC2ö²í.¦öð©ÛyQ¢ûqÓÔ×3wÔèJÇgñÀº7†¼ás÷š”’jé?›m{å–Fˆ¢³BeÙǖĺíýáQ;cʵöV×!¸ˆaï Ê£§š¬U›þ“ïŸZé¦î¬e4Inäýî~•¡™r2qÃPäs×ã4ÇRéÒ€!lçå?Khž}ÜQÉp?ZO`>âÑÐxáÊ•h, úí?â+•Ȩn·'§\V'aÒèŠÅ—5 zg† 'nh(õ ّٖր=göX ¸Pko•€$ € ( € (  zÖ ºN})-­ä˜“Ø*“ý(?uír9Röô8k©æ•愯Í.㑎ÄrF?Æ»"ùRGW8íÖâ;x•–O?ï„%“¾9âµ°¶,h¦)uŸ5ytó&’BrĪ3 žüJÃ+[Ò€94ìNŧsm°´ÏýÐBÄ’þu.I¢ÙÎê÷[3Mya"À9icu•T{í9\b’’ci¢]>þ)1ÈÏ•¥‰/ÛÈ$rAÉõ¦¦ó’7û;m ÷ƒ ©Ô“YN7)JÇ7ý©rZ(fŠÙOã\°údÔr2ùÐýÖúDNSsÍ!Ý$ŽrÎ}I­cqvñëžÕL¾ºó/~ÙhÆ9· )Ã#úŽýy¹Zi›©\½ñâîµã?²ÏãQ.M¢È!U†8@gmÎûQ@gv嘂Xõ4’ì3€ÓÚãU¸{Ù‘‘JˆâF„9üI?¥tSV2“¹³m@zgó­µËÊŠNزÄ‹É\t¬åR1Ý4°µj+Â-ú&"K”‘ÁäU)'³3©JTݦ¬üƳŒºjŒÚ± Èâþ ´:—Š4ø%æQÆ¢O@>ÍñíÀ°ð%ÌjBù‚8âF@kš[RZž=iæy¬Ž£´ðõ–÷\ô©z·†tòvqÖ‚^ð®™”êzžÔS΀7Oµ%P@P@yÏí¯Â7ðCÆŠÛ\ؼ(Ú”:¹3Øü Ö´Ëq?—…¼@Ê9éƒ×¦s^‚8Y¦§½¥È:9cÇ$c99S霃ŸjL ­ …—ZÔ/p¯$g œãs(ŽÏãL t‹µ^¢r<Ç ÓÔÐô{þÔ|}âÛ= ÃP ¯.æ1A$’{ ’}Zånú³¡hkühøiðÃűhÚUõÝø[ [—¸¹·0’XÜ!…äpÜõš˜»¶‹"%ž½yofÂ6Ȉ: a’¿@slWe7tc%fud^w ’ÄðSvD¼Q+3ÎíU™RO׊ÅÔ4Pîsú•å”R\Y\Íw`³Á8`^åY@„gê•Nâpa©ý¢5`FëZiÂÆ\àg=親¶e6ÝI2÷,*\Sv2`Ñôó •DRœðÙÝúÔ¨X¾s\yQÄ<{zUµ=CáÃÛ ÔõKsyN-­,ó4œd·û# c¹Îxó™ÖeR”• ;³ô®áœ>.Çã~ìºi»g° mgK„.™ha³WxÐéè¦&(¶Òœ¡Èþð¯–:­ÞWgìXzÙjŠ‚ih´z5{ÛGèÌV7Ä‘ýŸÆZ]½â:‚²ºys(=daü¾´èâ*ЕâÚ'0Ȱy…7EKñ<⇀%ø{«D-îMæ—z5Ó”28\Œã¨ ÷Àû|¯2X¸kñ#ð.*á×”×÷~·——ùzOžNEz§È³ÐþÙ GâœÈ·þUé‹w[t:ÕO2Ì\e_þʹjhèõ8M.Û{Œ É›îz7†´ï»ÇZEµám;•â€=Ã:vÕN(Ðl¡Â(z( € ( € (ç_Û»ZþÌømˆkýBˆÔeòtõ’2ªìͽu¤×izÊv–äJôÝù ã­u¤ÑÈ-Í·ÓþÐò¬%ã2FŒ„†PHäçŽAìzU ì/çÃ’NŠWí2 îI?ú a§»ÚȲÆHu!”Pr?•7¨lX½sÛÝéÅ–7mãËc˜‰ê§Œv=ë•èÍ÷Eˆoµû¹5êsß^˜Ò!$Ç,ʪªì:ê{šJùÂxfÖæéîu ô)-ËîÚGÝÑ Œ$îwZJì†ïoúÑ –LÓ¨ô7=ör°¶¾ø{-î“§ê飬·Vé‚ì±™@LrVg(Glö®gª68¯ˆicãí|i6V0ê,7Pˆ`–5r"HqŠ#¶£zžiá©ìƒÂ•¹„xþæNßÓ׎vv6(!´{™—vÌ(SбéøpMLçaÆ77|+àøâÚú X\^AfœbtŒC0UîB1¹bœqX9XÙ#ÏüE-Œ—ÖÉSÛòÀU–<òHÄ3œ÷ƒÚ´Œìõ"Q¹[OºyÑAlœb·3G½|ñcE¢®›ˆšžpn­ÑÀ"T8'õÁ#ÐûøüþŒ©ÖŽ";³øo˜PÄaªe•Þ®öóO·š=cJø¿©é1Á²ÓVâeŽ8aY.8ê éÛÁG1pIr«càz8™9ª’»µîï{m÷ ñ+I¾µ»¶½mJÜ\ɸý£7 Ûa”Y…[ŽA´X¸M4ï¯ÏúGž¸[Bp.Wʺ{­ê®öz´µw_qàÿüAmwáýD&ºŽy.‰˜€£þúÇþ;]|9J^ÒSé±áø£Z”)Ӥ߾ÝíäxêôñžµöâlöoÙŸOûO‹§¸#ˆb?5•GaÇñRs6»gn >LÇ¡b Í-ΚJÈ£ XïeÇ­djTðÆŸ-»ám7;2:P¬h;h¤hv € ( € ( € øëþ ¬Ç(ð^…4¢8ä–[™ 8«“Û'ŒûÖ´W½s ÏKëwV¯ ½´>Kª“:¡8¶rNk­;œÂj÷¶ÎæSön@@@'$g® íîiX\¶Ñ´È¡SŸ2\œ¶ßý’˜ Æ@ìzP^µ=¤2ìšòÞÞb>é”+<Ô¸¦R“F4:m´³ù³m•ó÷˜äþf’¦ƒ™›±l@^>•v±;–Rwµq$%w¯@GÔèE&®4ìÌ»ýVÚÝ›zÉ<”e,Ð÷¬,Ѳ’g1­êÞ"Ce¤Å-µ³ñ5Ôƒ W¸QïëN*ä¹úv–¶6±DUP1Ð+tdl«™4©a~7ãÕqƒùqYÔF”ÏOøcñ—GðÃ=sÃZæŸwt÷3ÍuCM˽³B‚Rÿ2؉U“œŒqÖ²q¹¡à2ÔE¾‘5ºÜ]©·¼[ƒù 𥍛°–0xâE$àuÅt˜ØÜ·¹’Õ¢šÞG†hÈd‘†R;‚+)Â3\²WFÔ+ÎŒÕJm¦º£ª‹â泩ZÚ_ÇœFÇ?R8?•xø~‹w¦ÚüOҲϱøx(WŠºìÿò(j5kü­¤pØüH 0üO¥U‚šøäÙÕ‹ñ_(Ú…(Å÷ÕÿÀ9Ù¼’Ku$“O)ÜòÈrÌ}I¯rRŠ„‘ù–?0¯ªëâeÍ'ÔB¸C’+s„ú#öYÓ?Ñ5 ·_¿" 5@:ï?Û¼azG"=±À ÿZå“Ô놑: iù*H¨4G¬ø_Må0:P3×ü/§aSŠô}6ÜCãµ[ € ( € ( € üðý¼õgÖ¾4A¦Û—ì|hQ{˧jè ºœµž§ËášXLf9cl:‚Òº H¼et$vºZÁ"™÷Å,*2±ìG=8!»ÐÁ’jÈck8[9†Ú5+èHÜV4øàX,v$m‹´à“ׯåQ9X¨Fæ·„þëÞ7°½—ÂZeµüV¹3ZÅ$+&Ð¥‹™ƒ2€ ,½båmMRèy–¿¦G¥m¿Ò@‚"Á&·„ލíÎŽsZÓ›ØÎjÚ“Ù]¼¥7gšÕo£m‹%SŽG'úîi6–à•ÌA®å9wš£øa™¿ïœóøf£™ÊÑOMÕ-¦cå¤#Hê<ƒZ%rM%¸·Œô£a˜;(6ÌË"œ†‘JQ¸Ó±‰qªn"ßìÈÇø¼²Lâ²öm)hQÓü8Òß}·UžK«œaYÀpAUÛRŽŠ 1,¨£HìÀ"¨É$öÖ­Ë•]‰]½«>þÄFóL‚ó⮯u¥Ë2‡þÉÓ• уÐI#ªÞªã×µ|eÆ<’pÂÆéug½…Ê.¹ª3³¾ý†þ_Û˜ôí[źmÁé;O ʺ˜Æ+ɇbÓ÷’híyU6´>~øÝû.x“ൟöªÍ¿á–p‹ªZ¡S=T9(Oc’=óÅ}vQÄt1ÏÙµË/Ìò1™|èêµGÕ×#ŸjúCÌ`®`t=©Ü“ë¿ÙïH];ÁVÒ0Á™šCô¬dîPFu ZæàóæÌÏŸ©®VîvÅá;îdEž»á]3îdf€=oÃÖUr(«EØ Ô´P@P@PŽH ÊßÚWÅcUøããy$ŒË]}•J7+åàôàä…tÑO–çGï-c§\Mw,“¶ùç?*Žˆ p2}I5º3nÃnc1jQØ¿–ÒLƃÉÇ}iØW,kn'ÕîÞ#•2¶ÞüúbÇÝ;GU% ”³öXæ¸üEeQS5ôAáÏkºn›É­jòE·à€#±PK§¨.û7zªc¹¬ºÔò¿ßi”'t÷r*…ÝJ¨n…7¡kN·&TQÇÓ¹‰ÐjìÂtàlWcýâF@kžNìÚ+CÑþ%|‡À?<=âÔ®¤¾Ô"{9áD´ùÄ.¸( ‚TÀ®A¨»½ŠÓ²SŽ” õï i»UéºM·•$t  ( € ( € ( î®ÒÒyä8X£g'КüyñµÔz®·«j÷’I›û»‰•£Æç<œõëÓŽ>µÙOEc†[œ†¬HbŽä pèÊÊz:°*~™­hȸÍ"ÇÎñL7×OÄ_2F½P?RqF „_ÎãÉîOZv ‹½¢}ѳ+à®z‚=Ç¥D£r“±•ª¼è ³/ûÝ¿ZÍÓìh¦Œ;- Ö¾¿•®.[ä,ÿ¾€vP‰›¹·n¨ã¡ËùÊ£‚ ¨=@èG¯¥a5fmtlø×ã¿âýÛOñEí¡³µ‘gyÞ8^y1É3¨F¨PÍ“I¤Qä¶7¯âi®à, S%ÉêßN8­`º™ÉÜëô„U»ÌBÀ1=1žjÞÆkScÚx×|s¦XÝÁ5Ò]jC%¼.¨ò+HU,@‚@É8®s ôÏÚ›Âz„ÓIº¹±’âêÊÖ XÏ ƒtrüé!ˆ&àq’293`½Ï›î.ÏŠ/ŠBǘG÷öàþk¢–ÆSÜݲ¹hö^¦€=wÚ~Õ^(³Š1` uP@P@Pñ‡^_ ü-ñF£#mò¬%û• :L™;#ñòþO:†yÊ‘²Ñî!Xý+ÐQèq\–ÆÞ²Ï,‘ R‰ä©*6~cŽqãLM\Éðý踛U–-Íȱ³sœ{ãqçÚ›$GqäÄЯ™åm,–ê;Dóõ,Lî:VN¥¶4Pm7:dò’Ö7“I/8†ëi}0~ ¥%S¹NŒ»MM§\I¹[Aàƒ[oª24윱ÆM 'ÔÍ´qböh£'‘½ÂçéšM'¸Ó±ÏM¤Z_HWûJg#so<‹ç4£†("Ù …°«3$†Ly Ð5 V5ÉpZ)z³HcëÇCYIYšÆWјú¿‹%»g6¢ãP»ã’ é–cS»+mŠº.‘%­»½Ë.fbò1þ&?Ó¥ocn[Ûùi¾bBpÞK@;Ÿj¦"Im®%\Åe7=’Ç?ƒ0#ñ›’E¨²„ð½±úÞæÛw e_”ŸfSøO`ÕjX·DUqøUr’ÝË Ø<`}(Ýü°:Ÿ´ýÃp¼Æü)0>¸¿Íµ¶@>ô¥à?úõÍXè º_†4Ü”ÀëX°x[MÀREzŽ‹h#Œ:P±æ€€ ( € ( € (Ã?m-Uô¿€zÒÂJµËÇ„óN:ÉÔvGå߉u'¿‰m4Ýÿg©1¶BÁŒgñô#®yï]Éœl©%´¢Õ¦òæh#’Djr: {‹R[è—EY$Š% ;ÌGè´lM%ƒ_@% +8= '°ÖçEð«ÃšwŠ|b#ñMÕ¬66ÑIy,qÛ5ë'+nŽä(gb$ð7£ÍföF÷³±£ñ÷HoŒíïÓOÓô«éÖÚƒéú{!†ÚR»%DÚH æFäsÑ…(«6˜ïsÃe¹ZΣ,äO«í¿ZéƒÐÆ[>‰ hI\±î9;!%vkøcÂú׌u9,|£Þj—¾[JñY@e“`êÍœr:úíXJ]Í”lrº®’²‰šÒµÔ¢Ë)v ŠõGQÆOcԨʔLû{ï´[$¨Ç Öº M[8Œˆ ƒ€94€/m§‘?udò{4±£ø 0?ž*Ò-E™±æ¡õ VÞtÖªGD,ÿÖ®JŽìꢽÓÑ|-¦gfflz÷†ôýª¼PumŠ!ÔP”P@P@P@|ñûv«7À‹’½ÜY>”ãñ#*»™úœ'M„É3ÂHßNô¿Lwg5ÞŽB–­¨Èú\qX«­È¢Î0€Nìçß‘ŽÔuŽeáëIÎæwÏ®0£ÿA4H\Ü‘ø‘Ö€#½Ôciæ&9,@ʱõéŸJç”Z6M:¦¯q$F &yß# *翽$6ì3KÒb#f,ä’ìÝØõ5¼U‘‹:2PÖ“B>ó!Ú=H ãùҚШnzÀoˆ>ð[kvþ3ŸP³·½’Âqqeœî¶×+;AÃfÕº£"²µÑ£<£Æ~)[­cUÖæQÚ.eºØ;3¹m£óÅ$¬¬6ÎoL…â°µ‰ÁÞnö5ÓÎu(~Ǧ#E‘$ŒWpíÎ?1YÔ} ºžƒàÿ‚úŸˆ¼ úŒ61jwÚµ»Ò×Q·IšHæÛ+4,áØI’JÉ»ìy¾êÚS5ÇúËV Ü) 2ý9ÏÔUÅÙ‘%tT´› ›¸>¹®“Z[¥‘9¼#7F•„ãÔÒ¡èÿ ¾8Þü4´kjn­ÊÞDÑ´k,‚‡#ÌŽD#1ÆpPP+ÎbÉî[Läþ$øàxçÄ·»Âl òãŠ+v‘XE( ªªªŽzPíЇªuw‚;v-kjcvfr7cÛ +J{™ÍÜÓ…Æ{ÖŒƒéOÙ£Nòtë£Ç›.Ð~• LúSJ²ónSºª?LÿZ㖬Õ|+¦}Ü ’ÏUЬ¶F¹¹@P@P@P@#ûeéGUø®„04scèqýi­dTøOÊ­PK¬ÜD/ ü¬¤…àÊGMÆ»­cˆnº‘iA'g”Kå:2`Óå9çî)‰’êd‹k8—ø-ÐñþÖ[ÿf fKÄHÎ3íí@HÏ8ô š%Q•ëE d‚Içµ0…¹ðAéIê B½Ô×eÎØãÿ{§æ+AßCU30è³j7K&«!håbN>¾ôãä¹\×Xconâµ ¶&Yù,B²ÑƒüG¸þUEÔÒ¡Ýh_O‡>ÝxrÎņ¸g¸K]\¾ ¥¥Â ¸fsÝ•äïTi¹Vlñm~ü^ËjÁ™Ü4Åy çSŠqئì¬ZŒà/n⺠‹N¥¢"B=óÞ“@fËi3-nf{ÙéšÏ‘æÈ°>ÔàÞÏ<ãÑØãò§È+¶n[ZEiHWh¢Vj†È˜^üÓ Ÿôõa‡™‹ŸÆ²“У<;§ù“î‚x®6w¥dzç†tíª£Ð3Ð,¡òa¦€' € ( € ( € ( Gâï‡á+øeâM-W{ÍdåWJÀ~”˜¤®Ç=Vͬ¯f·—!âvF±ßusèìdÜÂÚÜs\;ÜJ8Lã‚xϹ÷ëU`4õÄ ¨Ü"cdmåp¿/ô  ¢v’:õí@‰ ™xç ï@ȼ|¿'˜uïí@’pÊ3í@ /“€¼}i0®G?¥1ØŠhªU†A F]Þ”ò‚ ó…?üÔ8&_9®• Šl€1êÞµ¤cb[¹­¢hsk…µ• Y›±ÀQŒ’}€äӹϊÄGMÕžÈõÁ:UµÄvZVŒuýA¿Šh ìäuÛÈð'Þ¥Ùk#á«f˜Ìd­M´»"ÅÖ Ü;[k¾ÒÑ•q¿Ù¥CÐò›H4%ª8Ö+BWU×sñÏÃA£i®øByït„`.-æ ËhO’>ògŒõŒúÒ½ž»M“ç/cYZ_™ÃÇ&å`ŠÐúb{E3\F«Îæ õ¤Àû£á~˜mtÕG+q\ÓvV* òGÑÓ9N:W1ÜzÎc±Tâ€:<``v € ( € ( € ( € 0à õ½~W~ÓÿÃ?Œúµ»F±Ù]¹³w  Sø> ×E icެlϰ»›Sñ§ÚB²¤‹™J€\“õÀ}ë¢÷3)ÜÊn$.Ç’Iç½HìWÚ{÷ýhAb7…ÊäÚªá`6¬qÇZW…Kq‚?*W & éÖ‹…‡¶§ÔQ{Œ¯.–TdsíEì+šÝ£ê)Ü,1Z.I'‘L,Tš=½@Å;’oxT‹J×!{–TŽUxK±ÀBÃþx¡Vu‡•|,£÷ûdð'Š-¼16¿iªÍ©iëªY}Œjz†šÔùˆä…,¹VU€`p v{§©ò}xRæSººµÖèôËo‰þÖ,¯­äŠ6ÕîžF³ÔµØÃˆ$‚Ê8 –e £´¬²u$)`NzÔºZßsÛŽ:…DÓÝìßt¬›õ'ý§a½CÅÚûø‡á X¸b×lÒv1êPŸ”¯±Æ;d`8™Êö<‡Gÿ‚øì(ê:–;¢Hó¸ÿ¾F?Z¿hB¢uV±%µ‰ÚzýÜì:‹{uAù’hu^ɶ߲7†á–M^v™F%¥í%ܯgB?ÙK˜ÃZ_7Öå¿¥.fÎ!'ì›áI m¨§û·-ýhæaìâg]~ÇÞu?g»× ôÄÈÃõZØ{8œþ¥û€é~ ¹BG uj®?0E>r]$Î3\ý“¼]§‚údÚn¤;RC~L1úÕs¢}•:ñÃ_xYI×´]BÑGü´hËGø0ÊþµJwØÍÁ£™–ݨªR™Z]3#¥Zš±Zm4 8î„gÍe¸Vš`d]Ø?v¨V3¤€'^( ‹“LZÛͪßCif†I¥`ŠŠ:“S)Xi ³Â/ìí*Ê7‹6öøy\Ž$—©…rÎW6§Nîç×>ÑvÊÖGIÝY[#äs@( € ( € ( € ( € (##¡  ûÝ0\šÈ—ÃJç•ü(1á„TþTõðÒ÷Oå@ÿ„m1÷Jkxiû¿¥A'…”ƒ„ý(”þR>à?…eÝø5XSƒÆ1Ö€<ׯ?³—…|P]ïôxa¸oùy´KçÔíàþ Ó½„Òg„xÓö?Ô´ï2__%üc‘mvr~ >Søâ©O¹›¦xŸˆ| ªøjèÛxƒN»±›ñÝ=àMh¤Œ¥ ®¡£¼`ázÖŠW"Ìæ¯íYÈèj®;¨©ŒäqUrlcI1,@ä“ÐQpHú¯öJýœ¯¼My¿¬Á$0ºì¿êÔúz±íéÖ¹jÔ»²6;Ÿ¢^ð…¾“eµ”"("Pª VGJV;Ë =mÔ(ù怀 ( € ( € ( € ( € \㥠4dиГ@ç­4¢·ÞQ@½¤N9\PY´ˆäɽðÚ88Zå`(”ú2KÐ@¿‹~è^7Ó_Oñf•k©Z0 ,é’žêÝTû‚(W8þÆß |®¦¯¥øig¾FÝßL÷ õUcŒûâ†ï¸$‘íVÚLp; ]DXÆb€€ ( € ( € ( € ( € ( € ( € ( € ( € \КJ( € ( € ( € ( ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_ecom_b.jpg000066400000000000000000000417451231776762100255220ustar00rootroot00000000000000ÿØÿàJFIF``ÿâmICC_PROFILE]LinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3descƒlwtptïbkptrXYZgXYZ+bXYZ?dmndSpdmddÈvuedK†viewÑ$lumiõmeas $tech- rTRC9 gTRC E bTRCQ textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÀÈÈÿÛ„       ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýM € ( € ‚.ç!Tw'€;ÆP† æ€Œu  € ( € ( € ( € ( € ( ¯/ Ó­'º¾•!· ’HçT ’hâï‹´ÁÔ¯nïšéìô[bE¼%¶äâ>çö­â£©Í&äÏ’|Cûh|CñOˆ—Kø_u} f"µ¤”ŽàM¹ž…ì®ÎÂÿöØøÕàh"»³Õ­uk8-ãûlWkæIŽ{d€q¥iìWd*—vLèü+ÿcñ<ÅÒïÇñ=¼†6üºTû#Nvz·‡?à«^¼Ú¾%ðε§9êÑ2ÈáRé1©ž§á¯ø(OÁ_„xŽ].Fþ ûvKƒCçG©ø{ãçßþÁñžt[¢‹•SùRåcæGkg¨Új)»O»¶ºSÎa‘_ùTØ«–HÚ nä“Ú€!³½·Ô`i×]BzI‡SøŠ÷%éÖ€ ( € ( € ( € ùóö¹ø.—áÛ éu¨6ì©åaå_ø’ûÖ”áÌîeRVÐü§øéã;ísQ}/MyM„M†(Nâyúb‰5pŠê_øEáÿøF¡‚þùGÚ§SräŽR5Rʹ÷À'ê=+ª”9csš¬®ìI¥j¼rßèÆ3ßùÖjžºš:½ŽÊÚ×M±„Ei¦éè‹Ó0+ŸÌ‚MiȬgÌÊ—¾Ñ5 Þ}¶ÿË[Bc#ðè*—ÇÎÑËêomä2xPŠíODù2×ó›Eª·Üv“®|GðµÂ"óÅVL§"y þ„ŠŽO"ý¢=¯Âÿ´'ÅË êÏÄ4Õ¥Ì-²‘Ã9V%›·§Z¨ÑW»DʯDgøGâ_Šü}%Ï„µ¿ì¹!~j nHõ ¤}Mi()nf›[Sü.ÿ‚‚kÖvÛ|HÒíuFÇÉy¤ã³íÊœÿxb°–³5Ž!­Ï@±ÿ‚“|3Kæ²ñU¾·áû´ ›,ñ¼"+«2R-ÝBxŽ•¾–±“»fD_ .fF“®øoP\ùL©X›²+φ^)²MÇE»š!Îûm³/æ¤ÕX.s×––Eý­Õ»¢h™˜©±ET˜“í=„ljHaƒÅ…[¦EÀcƒÚ\hœ°PÇ9=I¤Æ‹ÖnntÛØæWbd•2Œ ãoXa%ÿ– ƒ÷púSÚYko/n—UÒÞ)`”îŸdˆG±daéÏ­gQMÙžqtÌÁ”gë®kÎÍ=ÅºŽ”Û´ûûë7 Ù?‘¥ÊR•÷;¿ þÒ¿|-" ÆÚýº¯D7%×òlÒpL¤Ï·¿doÚÏâ6½¨[[xËU“Äq]Í K¨+¹¶œ¹èsÖ¹§2ùµ?FÃRh!4”P@Á|qñðçÃ}H¬†)ï¶ØÄèó8cø søUE]‘QÙ~'Õ¡Ô/¯gŽóÜÜÉ&ñcùÎ=ˆÆ=ëº:#ˆ­›Ïqj×W0·`Z ä0èxäú Õ»á{K [Äv‘øŠâ[]<Ê^bå–œníÎ2zã53»^îã‹W÷-gJÓµ¿&Ÿ ]Åka,ë»#ÌT^íŽ3úsY©N0¼·-Æ2–Ã|gcÿoˆ¦²Ñu’±c2Få~Ž>™­)MÉ]¢*EEÙ2µ·ÄÙ®Øõk¹TuIÈ”~Mš×˜Ì°<%áÿ‰Ö‹áýC=ZK5F?Šâ«œ9MOÂWƒý?Ã2Ú“Õ¬/YqÿlŠ9×̴O^ŒAªkšk‹sn“(üTƒEЬW‡¶s¶tèwçeÇ™ãí=ÉßÁm Gx„Ì>ù#è4ì&ÎsP𖻤‚Ú–‘©Ûã©{vÀüqE…tu¿¼Åi^ Ô^X-µÀÖ2º™”’À{`³ªíÍ)«É#×üEÿ–{vøG¼i9á.­ðåšóý³;ygŠ?à˜ŸôÀçD½Ñõ0:æ6?5[È^Äò½wö&øËáÇ"ãÁ÷—Q¯Wµ`àÓöìÚ>±ý‡¾kÚÄ19|ÚV‰˜k[JU»)HÿA'ç[QW»9뽑ùÈí šŒ6Ÿ’I8# ƒÐçô®£œâ¾xcþwí#}§j2ÝÿgYúH¡™ÀëƒêOåX¯z¥Ž†Ï­¯ÿf$(:>§«Ù63>ð?ÍoÊŽ_iäs—ìñ¯X1m'^‚m§ƒsl3ù©rù‡´]QÈê¿ ¼i`ìÍc§ß÷&Ù üçF¥sEõ9»Ý]ÓIÞÕ£«F«(ÿÇNh»ì4“Ù™rkVÖ­‹ÆžÕû·0¼xüÅÈ9Y4½­ï·0Mì’E;¢Zd剜Õ\@'Àô¢áav÷DYHô8¢÷ZÃÆÚî™a«êü"vÇäM;ŽÆöŸñ‡Ä–7 3\ÛÜIÊ<Öè]O³üè½ô)ôOìçûIø£^×&ÒîïÙ."§$v’)Býå*ÄãCXU„{FRŽÌû¿Ã•¿Š4 =EbXÌÉóÆ9ÚÂ?:â’³±ÙÌ®h6•nßÀ? E‚Æc@(Á  € ( &€?2jïˆqø£ã?Ä(c¸ý͂å/9¢¿þoG£tmU¼»x³3]Çåਭîb;ö²¿èj i²_XžÂÞåÔ~YÅ.T5Qõ0®þêvŽ™â ƒŽ‰uH?4r¾Œ¥4úWž ñ…€PÒ/ÔzˆŸçE¤‡î³,¦³iqzÆ…u3iíåY3ÆHàãð¥ÌÖè|©ìË’ƒ¥çkH­«~Í6 yñ nvÛÛÈäƒëÇõ¬ª0?S>Ùi*ùÜèÒœÿ´ÄÓÅ7vvÓøQÕT–)9ë@ @P@ ŲÄqë@ˆ6½ß‹¼SãÍSVr²_k²$à–S#°û²×NÞ)œµž¶ Hg¿Ó5µÒÉ(M°ùœnÿŽzVæHë¿b?‡>¿·ñåž“©\]3nd# !ºžµ(¸­K­%-ªÊ_)km®”ÿ+ÐÖ×9¹ 7QÉ67ÔŠ..S2iÊ‚AÁ4\V*I3äôïšc±JâàÈë@%c>iÔ³ôæ”%”7u'­±Ji²k c)JÇhÚ)ÎxžQžä¯.ʸöÎ¥A¢<ÎgÞ廓ŸÆ˜¡ÿd­Ë.µzW$”Oêk)½@ý?Ò,ÆŸ¤YZ&OÈ âz³½+"Õ!…P@P޼ÐåíðÇJøañ;_Ñ´˜žÒÖK©µIPÜÌFøp ãÞºpêÑ9+=O¶v¤±±Œ°8t%N?Ÿ5Ñc—§•Ö;b^B K3dä’–(JÂfŠéz¥³@ð€L ²²¸pÎâz|¤ƪÖÍ+_x—EQåÞß$kýé¯R=HêäiXf¥·Æ½d·†œuD¤ŸÈEƒsFŒÉ/ü~i±œÿNÉúsJÁd^ƒâf‰s´H. oø æ?•0åEŸøIt‹°Dz„*OüõRŸÌR ‘ܨ6’Á0#¬nùQqò”§FA–VçÚ‹‡)NYX §p±ÉxÊè›t@Ý™ˆýó «Y6çÖ©û'ö7Ð<Ý O ¸7Úˆ$ÿ²þ€×5GfÙQWhý ܬr¬ rÂ  ( € (G&€?+ÿl au¯Ž^3¿šEh­'[4 ¹ËEÏnsŠë¢­Ž«¼¼¸yô¦¶…|·‘²ìHû¼võâ¶ÔÉ].ÉÚ.È~CBfœ-¼ŽU7kö€±´HCí1+(R!€(8#¹õ§rylH|WØ )­¦û#ˆãT©-‡;—ƒ9p8c¹¢ý®¦Î¿¤]Ý[°• ¢I;¼l˜gÁÆ 2`’`|ØçSºŠXéú…ÔíeKjÒ!Icn]J®€p®Nr¤nÀû´¬4cG ¬Ï(¹·¹´Ø±æïèËî{ö©“²l´®ì?ÅTÔÖßMÕ!Õ!1‰Å¿d‘Ž çŒþ5ÇÅKOžpqwÙ›â(Æ”¹c+™bþUlù“ÎO5Úa±nê6„y7RÁÆãË4¬‡rô^<¿”z?‹˜©¯ëÉ«B»c+!àœüù¢Ö+œñF<ñL“ôöh±_xsÆA´Ånf?ïƹ*½ h«ÈúJ×ÅÁ€Ã×9ÖjÚø 9n>´·gª¥È æ€/ý(( € (i%gáT$ö€?>'k‡Zñž¹«Ü:Èu Ji•Ny #`ŽÇ¥wA{¨á“»fÓ}²]6FÔÊÌIïƒ×Ÿz´É#iMÅÔ’K1?Zd‘Ý_Ãh™Šïvþ}(¸ÖÄ"þ7£iŠÄ¨ÛÔqšŒˆAÜÏ\Ž´#’y$sæK+äcærx¹ ,Dä@À\a0@â€ÍÇLPU²9ýh Àõ  ¬íÚòúÚë$ª¸æ“ï½2ý<7¥éð)VAø\U è-΋Nño˜F?dtV•¯4…pÙÍwÞÔV\ƒ@ƒnÅ BhôP@ËüR×G†>x§Uc´Úi·îãõÅ QKD~8ݯ“q 7lf B䇩àôëÔW ‘Áq³/™­‰¬”%´;gKqŸ§>ôî´¸B[]LFZ4ÈÜýjj;!Ájlßiü=´ÖRîåõkB[W¶}¾X‰#VÜI9.8z×=õ7±ævN²ÞÜÇkÄ)1E öü:~Õta%fv–ºEÅåͦŸ§Å=ÍõÎpB@bON¾ÜÔJ¥ŠPº0õûKÿßK àž)!—ɸ¶¸I~ÈÏ—\Ó„Ô‚QheŒ’]Ì@íZ[¹i"%c‚ip9Ø?–súTó!ò²œðÜ hßvj„N¬­é@@ÏŸzŒ¶·Ô|,Ó¯ñE·#p7 Ä{j'°Q|Fñ´×mm¢là ~¤ÿõ…qÔZ4•¾×^WPI¬Í“=sÂÓ4åsÍ=£ÂE‚dP¡¢lE_A@ @P@5û_ëIýŸ©(PXã<’FO=3ƒÅ¸‰ìæx”Ie!”ô`{º±IØÁÕ®/&v‚Íc·ÏRwúñ¬}›4sCtÝ-:Ñ €±nIv9$ž¤û×BVFOS¨Ò·7<ê[„¹Õ®ä·ÀVeÝ·¡}£wë“õ&ºi½ '¹¥%rAúвKƒÉÍA ç‚G½z§ìÕ§‹ÿˆñÌÃ+m ¾}ú Ê£ÐKñíÙ¼ñ®¢TäFËÇû çšä–¬ë§¤M¿Ú³È{T#èi¥Ú<ƒÚžûá})x_‡ºæ£¦ÝÉn5<+Jö¤ùnJ+Èàã8ê=*iÍ•(£+G•îöœ0=k¥»’j±4Èc‰m[Ã#+74ËPf]…ðŠI –"XÎ8ãñî=êãg±.ýMT²F)âô¦ÕÄŒ+Èî.äh⾊$èL@nÿëV^ÈÕL½¥h¨dµ±ÓÉ,®<³Çêj§%N.Od‡BŒëÔTà®Û²ùžå¦|°±±µhµ=JB¹g¶m‘ŽH8À$ŒƒÉÆq_#[>ÄMÞ”l¾óöŒ·Ã̶”yqµo>ºÙ'ØÈñ/ÁȦ±šOv/"S'öuéÊ dìlqØŽ}k|KC·êpçþÓ¥IÖÀJöèõüOû_˜~n+êÈd¬ìÏ¡?dÛ×úÍótDXÁ=³ÉþUBM’N©¬Ý\|éžOÀ“\m©­à}“GZ’Ï¢¼¢íXÈ_Jö(½²¨EM@P@|)ÿ ×¥“ÆÞÒ왉´ÓåÕ@8óo ñÑkz ÷9ë½Qñœ?d‡Nº™Y‹òêùŽr}Î@ãÞºv9ÈËHú~ž—*VC+¨ìIÇô%Ýð†Þ"åÕ¢ÎÉž:ãׯó¬ª&ÝѤFs~,ÖµOßÉö©®®^áƒ]_]9gÃ<ôdö©Œ]Ç)i¡±£Ä¶rÄT¨cÑI¶–¨Î;nƒâ½'GømâmþÚGÕõãxd[tÄaJã÷„åT ÿ(–S¸`ŠæµÍÏ(·½]SZº–Ó *°ùƒ£0$œ}3Šè§¢2›Ôì4Û o®4Í>É\_Ì‘+±À˜(ç°É©©'±PR~ O‡Ú棣É|u´gKÖI+¸`dü¤zž‡ 5›*I3’ð¶«=…íü ‰íäI7BAÎ kZš©³V+ ‰–´+Cx´þãéŸ üd˜Û¤žÕax&Îà&øÈÝÁÈ˹°G?…|4éâp/•­;ÛCúˆÉ8’š©'i½ÕìÓôùtâoŽ–v–‘ AmÚîÞ_6$µ³»dœ`çäu<>”ãJ¶1((õÜÓýFxЕӼmË£oµ­þGÍW¹¹šy«Èí#“ž}Õ8òÅG²?œñ5½µITµ®î}1û9Û+᮵¨‘µ¤2#Ùp?SYUz™A]£cºašTÈ=«•ˆ÷ßè¹1àzR(úÁÚP†%z ëþ””P@Pægí·âuŽž#Žamclàd&ÔóØåtÑZ•_¼|ëxéº {RÏ1m‘Ƨ<äuy9­Ì‰ncv½Š+qãß?­Y´ðΧâ«él<=åíÄHÎÐÚ*³:$ãÐV.¥;œT·7N °LË4rÑÊ ¨#ÔqùÖ°—2"JÆÍœæâ ¾qì2*{ÃÖR7l]ØmÛ ód!ö$túV|±l»´\ÓÒÚÒÙb²TD€£V©XÉï.å†Ù‘S•*pTÖs‹z¢ã+:ÕÞ­âë¦þÒyDr03Íq)’Y€ìIíÇ¿”]õ)Èì|ðãYøâ(4Ú5åôŠ[‚¤h:»±áTzÖ8Üu,'V³²C£FU¥É©îïûø’êÏsx³Ã yŒ‹vŽb úoÛý+䥯´­Èíò=˜äÓK}Oø‰ðŸÄ_µ¤Ó|o§ý’I”¼¸’…ÄŽ8?N£¸ôùvgCjÿš<¼Vtei£”Þ µèÜägÖ~Ó±> YÀ8{¥LûîlŸÐW5YRW‘×x#G,ÈHëŠç:ÑôO€´<É_N” öÍ.ÔZÚ¨€-Ð@P@ ½E~@ür×dñ_Ä\M!×ZµÁYÁ 1] û…ÙMZ(â›»g~‘ÛϧA 2ItÁJ¨È {çÛ¡­ É$¹Æ©%Ê þô¸SßœŠKcâIŸýˆüs¥øÆ:Æ—«¼÷š½¼Ig4ÇÞ6$ŞŲõ+Jù>/ÂÔ©F`®¡+´zyMXÆn2vº>ÒkØÏÚmܱ#<Œô=þ§5ñÅa§üHn{nEðÈð_ÛwZÑàåµ…ñûNMJ4ØÜæE §Îaè¸ ÙÅ{\.¯˜9PMAG_ëÔâÌåû”¦ýëŸ é°µÍÔ($Èê }M~”|ÙöÅí—Ùô-NŒ`&8ì¨Ö¹*›Ð]ODð&‹“ËY'Ñ^ ÒQ§ÝãÐP@P@fx£VMÃ:¶¥3lKKIg,{mRhbz#ñ^½“W¸G¹} 9”…þ2I#?‰®ø«#…êV.¶ ŽÝ[{Æ+¸Û´ÌpjˆØ‚7Â30$u RnȤ›2¯Úæá Ä–Òùç¸î?LŒf³çL¾FfÚê"dQÙŽ ã‘ZZÛÝÍYg)fKH‘)ùñƒJQ¸EØæï,%ÖO—yt¿dÎLpð$úŸOj… 2ÜîjZ²ÛJ¾VÌ­ ·Ÿnþ_êwz ÚG=í³Û¸BÍn¥pG#¶r:d Á«_˜óµ’]cQYÑ-mÔ¬{Æ ±ÆN? ÒšêLÙ¹l’$k÷ÃuP€“õâ´•ºŽÞÓãçÄ ÈZÚø¯[ŠÕFÕ7 $Ú=0$~uãUȰeÍ*jÿwävG^s¶­¯j~(¿kÿê7z­ëŒî¤.Øôè=«ÑÃa)áãÉJ)/#š¥YTw“¹³ðæÇû[ÆÚ5°\ƒr¤ãÐÿJÝìf}©ö?¶jVª™üÏÿZ¸êîuPVG³øCÉŒ•¬ÍuÐìÅ­¨8Ç£@P@柴µóéß|m<$«=Ó#¶âõ¡n‰žÇäÑ—UÔ¢.áFÔˆ=~ƒŽ•è#„­k4qO¨¬LÅMàc%±ý3@†G.ëIãSó÷ÁäŸJŠ› ΗÆ~,ðÅç€ôm?E‚âÎïMrò<ð"îƒÍf”1/™ «Ç× ksTyF”í9¹`Q.%gñò“Çç×ñ®˜ìbõg¥x#ÁrøïÅ‹£ÚÝ%Ф-,—-ª¨rI%@Ö±œb’8?Ø V–Ä·0]5¬­Ý—Œûò½} ]9 jÂéq™¼Çsò'$ž‚µ“HÍ+’ÞisÏkÚ(òHÑ$’BDnê*'{w+.sNK°Þ B†6VÚÊ{Ú¶V3fõ”6÷Ú¾isp-,ç–$–sш Çé“ùW<›lÖ;“ñ³À:ë=çÂWBk¦‘^9d«¢œÏ¿t!ºpjRcNçÞËö“›Xá’4Ľ#r>eÙä{[ÓwFSÜõ/ÙÛNûwĦa‘m ÉŸ~ƒùÓ‘'ÚžÒÍÆ ŽGé\3wgm5h£ßü £yqÇÅIg¤"Ð(í@ @P@ç´…ƒjÒG9+œóß’(w3äV“ \¤ìgÝiÉwÿE¦Ps±Ø‘ùT{4>vÇ:ì+å€ô®Ö$¹kâMKC½Ž÷EžöÎõªÜZHcpÁäGVR‹NèÒ2ÓSŸ·Z…ð¸½ÄqÇ‘ç$“üDÓ„^ìR•Í{R°ÚÍ–ÁîAéU=PAÙ—Œ|{¡Ýü4Ðt«k+dÔíÔ}²å­’/³ì,£c 2.Âå³÷ëjy-Ä—,÷ 3H\)ê¶k¢ ÈÆNìйº–4Ê2yÚý*e •4S’çTº#0D½`±Ú—#rõ³ˆ+;K!9gn¤Ö‘VD·sèÙkLóoµk¤±Â§êrj$Ä}¿à}̘6Þ§½p³½hzðÝ€¶¶ @é@Íš( € ( €3üE£§ˆ|?©ésã˽¶’Üçý¥#úÐ&®~2x«ÃW~×õm6óý[+‡¶“{l9Œ~8®è>hÜájÌÅ1Çm¤Ú$@ÛŸ ;üª›AÎT÷”^à@ໜP-•R}…aDSS¥†•`~pGá@Xd‘,€†è{PmÖ ŽT2`ä$IE\|ÌÐð¾±mi#ùi+€Ì;(äã߬ãÆâ>¯FUR½‘ï^øxÚ®fðݶ—2¼0[ÉndyÙY÷>Ò¸ÜFO¥´‰2Σ¥ÈÌ®ëjí廩ʶê##Š|Ö>R®Iˆ¢ÿÙÝ×­™K]ø·-û·ØÍÕÝÙ€[-ÜÀ/–vŒw$ÿZ“w.†GZ­HÏô_{±ÅZ@ÒK6à³¹Š;“À¦Ý‘õgèçìÕàÒ´K‘0-¢çÕÏ-ü늤®oF=O¯|/¦ hŠã²:N„œšJ( € ( € Éñg…4¿xvûCñ=ª^i·‘˜å‰¿Bb:ƒ@š¹òLŸðMÿé÷Ó\Mâ?ÝÛ-²¤Qí^À¶ ?¥W;#Ù#JÓö5ðV–q•qs⸸vÏäEì®DjÁû-xF1áÛþò±þf—3Hö?ì«àé—áÛ!î›”þ†Žf‹±‰©~Ç^¹Vòtë«RŠ —ü "Ÿ;‚g â؆܆ë¶íÚ;¸–E?ˆÁþtùÙ.’èy'‹¿eïxm]ÓOMVÝyó,yÇû‡ ùVªX‡I£Êï|5-¬ï ÜÁ24r©VÜ•¢ÌÜZ1ï´fˆËÅZdœÖ¡§ˆØí©14cJé< úUö¯Ùká ÿÄC¨rÖV•v)_ þx¬*Ô¶…ÆÎÇêO€<‹coo‘®2G$÷&¹NÈ«+“ BÂ/j:€ ( € ( € (e 0àï@›XIæ1@µˆtA@Ù¢þà k8[¬b€ —H¶”r ~ŸuáH'SµTПøãà~ƒã5ý*ÚóŽ$eïч#ó¡; «Ÿ4|IýŒ®­£šÎn”dýŠì€ÿE~‡ñÇÖ´Œìfé¦|ñÂwž¿šÏWµžÎê"CÃ:eü o\Á«>~Íþ&ø÷âEG¶–×A…À»Õ%R#AÝTÿ{ ‰Ö¶ˆ¸ÓlýUøEðKGøaá»]'@·à €Ò°ù¤#¹®6t%cÔ ·Kd éÞ’P@P@P@P@P@)9nEWšÂ Ç΀P)âïƒÞñìQÇãMJÖR#”ûdÊý_ÂXÝÐ|)¥xgN‚ÃB±µ°²vÅmm{Å5G 0=P@P@ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_ecom_n.jpg000066400000000000000000000252761231776762100255370ustar00rootroot00000000000000ÿØÿàJFIF``ÿáExifMM*ÿâmICC_PROFILE]LinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3descƒlwtptïbkptrXYZgXYZ+bXYZ?dmndSpdmddÈvuedK†viewÑ$lumiõmeas $tech- rTRC9 gTRC E bTRCQ textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÛC    ÿÛC   ÿÀddÿÄ ÿÄ@!1Aa"Qq‘ #2¡±$%BÁ&4‚²3RSb’ÑðÿÄÿÄ(!1AQ"2aqáÿÚ ?êmPÅâ·,¼%¶5&úâTûÜŶ9Â}Tþ%Ø ´ce%-¥{…ô—ðþJ渻§rÝ|‹¤º…‘º¹A çÈæ¬±·Ñ"]-5ô‚ð7R%âókZ¿¢å Ö°|Ï)OçQéȶäJšoŽ|;Õá³:ãJÜT¿Â†n-ôóf«µ“¹VŸmöÃŒ8‡=‚?‚OZu6—Z\mC)RNAF€ú      $$¢I 9Yé}ĸ߫î¬YïìÄӊÌêå  Pv'*=²ªÒ°½ªŒ¯*¾H½!2Ûß Â˜ò؉ÎG!µ©D”îSÍœž\ôïZá¸3ÊVíˆìéG4šüžT"¢IrC* Áí’:U”Û®›mÙ?ÅÄm+ÿªÇݫ߶Çâ  mú^ãrÑ®©v-C¨£¤¤§ÂnrÛA± ÆJªÆ‘oU²@á÷5¯ f—4­þ㱺¢©EL¯?ó6¡ŒöÏÊeÙ n=1õsúLx© .QÙ¼EÒúŠ#ì‰ )ÈËeÒ‚¥' (PÀ¤ô0q¾+,ð$ÍÌÚä|é¥î ‰ljì¥Û® V=ÉZë\ÞªÉeÍàOì|Ò_néh·HIÈó”©ç¤z{k“T];$š‚B€(5ƒz#…·Û‹Š Z™ú³c8%NS0’£ð«A[¢“tŽ6Ü®’]Ô˜q£µ>uÚàˆ-¤,¡DÎ1“Ö¶¹U#%y<1Õv{rbMÓlO@uø¯¤­ÄŽNbR@ëÐw©qæÈSK«wvùg¸Éz5ºõciK*KM6ï+cÙÌ=¹©‹irCI¾ôëWÝW‡.D9®žÒÚiåü5}ä8‚îÿ7e·“Ým)ÆÏÈ+—ò«n*‘‰Áb’”…µv‹Ž…/¡ärJSúÓrIsƒ6> ê°Îœâ¦žŸ¹É“ˆwUl¤¤ 9ƒ’ Ü÷®¢ß)qÉ.'»×ÑYÂ]M¹ºbã©--¾€ãe‰AÄàŒ–’:ÆòKÜÔ¡Ñd}8 €Z%Zz×=ë’TñtÈy #ìóª·eÒ¢O¨$(€§ÿH®¹~˧ôFšˆüæ\·ÜW@,€O™|~UÓärÍø”‡ö×'q»CIy¶ØŸ\˜¹ -%Ìr s³¹ÅjkîFtþÖ\©·¸ß3~³dl¡Óç],ÌÓ³e6W­ïÞ¤Š÷«m¶â•"á $„ž¡Ö¡h¶†-χZiÒKVæâ¨÷е3þÒ*Qu&4¯:‰ —…q¸²”o jK‰8í•:4];3ðbÚnüR°°€J#Ç÷¯íQ>ˆ;a…ömŽß,Gm³ï ¼öí›â©Õ…PT¾‘Öÿ݆\¨í;pjâ[aÅ–ÛSjS›õ(o? ë…}ÇÝølxHR[R”9S•cœŸì+e¹|hkRí—Ið–sÊ7Øàc8óÏÃU©äXý«¿0ൠ.('ágðówÏNžúP>x÷qr$±K()JÔ2… äW ž‡ 5Í䊒ƒí—XÝn5Ï£¿þbˆÿ¹ |±W+Öª‡p¶>ˆŽ8#ð­84äšC×ÑΛ—‘"H fr¢GNe¤~œÕL¯‚b­ÑÔxºº œa`gΰ…v$7%̨(P(€( ?ô’_‰wFY›P­È–¼ö*Rö®´`]³>wÒ)Fô…Œí΢UØ„¤n?:Ót¬ÏVèÔ¿ªEš\V^,¨Èm¥(9 )!C8>Â6íU„÷”(ög‹'ÖŽò˜ äS>¨V3Œûq¾*Êiº#k£Y/—Ù.zå9ëŒÔcKáä‚…¥Cb¤)\£z{ôm–4æžÔWÕúª[ìÆlùŒ“úÖ|ïŠ:bü‹5¡õË÷u¶µ|ë!°²º:«p[ÄœŽô–€(€ç§Íð]8âÌ4)Ë`ÇŽ¯ðä…:~?x>«âÌ™ŸÜVXHzC¦*[Äe-¥>±*QÀâ6®²i.NqVÄ™–÷`j9P¯ -ØZšRsááD)8ìr7÷Tcª´Zwîy{ºJ“·$`-òú’–÷ZñƒëyÓߌUTvš»·hiX‚Ôîxî0„8 *çþ¡Øù ™Å·Á0•#6Ð÷}T¹+‚ÛxAçu£Ȃ£œl3òŸW¯Å¥KÔíž×†ú{UåäÿÇJ—mº_ÃÍQ§çii ³vh : iÔ+™c®´mpwÑWÒkqj£»9yŸ«ñ9=Tjú}§ü&Åᤌ.ápvIÇp‘ÉS™òy˜W%’à~–[Î0T’zÌjE½µÃ`´ÒF07 6¨€(LzOj·¸ç­g‚ÛSd){à7÷C” |«f5Q1dw"/C2]RÙ‚ÓÒVBO2–G—Ã5iµ\‘öíòL‹¤‰Syë‚——KÇ|ÿ¹9ïšE$¸ ò}^oRuÖè¯ýYˆöÖ|~%Že¨d{ÖN}ÕXF–”½»­ÞÞÞ—@}û«®7õwÂÕÊ„¨)<½7QIæ=9vó5-Ħ¨8)câ*`I™Ãû%Æå*åqæ\ðG8²@'d öÛ¥xžk6’2«—d½¿éõ_Lyœþ?|V%—»OåtÓùœMÕ‡P]ÄmØ-êR 7Û(qµ?@9ÀºVߦǎ>¬%»rïØåõ/Ô2òN8£‰cŒ.•·ËîÛ,.ŒÓÊMm)?s¨{áÉ®ù]³ç°® ¡Á*˜PÛyhƲ¹Ér€(€Å2[p!¿&A i–ÔâÉì2h.j;¢¯wÉó䜮\ ¥<³¾V¢¢1ñ"·ÅR£Ÿ"S×W¡*Ô—ò¥!HI$0qÿÙöUf“& @µЙG&mòLÒ6âëëÚ‹(™>_†cN !Q¹T åc#¨ë¾jŽÉRBß`.óÄ‹"]l ýgÇSièž\«•t|.Nlêgô§)GSÍœVnŠ¥DäÐT@)qZèÒ’ËÈSkIî’0GÊ€ã4 žñù¦îÍ-.EqIaÅø­)YBÓäSº¶BvŒR…:ɀ쑖ÆÞb¯ehÊÞšyi*+åò¨ÜMrlΚ”Å ­Û£Ä˜ÛϰÈXS‰NÅ@ÇÊ¥~ŽyTœZ‹æ¸$»†«Ñ馨yœÈÙ*BTž^\ò£É^q‚0؃¹#ãqéuPšÙ)ßwÃù±_ÑKHÔÜKC¨mKDf°¥°*?ú ªe•#í ­ÑÖ]eM¢ÐÚyp¢b7     ‡ÄnèŽ+̇7]iøWIÐÒPć ’¤¤œàò‘Ì3¾@Þ¥6º!Å>ÆìoEý rÅÓÖFÒ:üñKcj<™è¿¡f¶Rîž²¨D@?0)lmDy«½ôuᥪÎÔ›SÇp¨®’3æ•d|±VSh£ÇVþ%úê½(ÓÏÙ[Eò*r‡O+¸óG'ʺG7ÉÎXŸ±WÜÐw«Æ«cOiÛT©·™øH†Ód¯›¾G`;“Ò»9¤­œ¶6èéÿ¢w¢ò81¤™7ß û䟽–âwG¢O°l3åYg7&iÇid’„€‘€6¨t=         >\iŒ:”¨yŠ2.”²Âº½s‰j·³ry!ÌC ¸‘Ð)XÉúV€(€(€ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_ecom_plus_0.jpg000066400000000000000000000527631231776762100265050ustar00rootroot00000000000000ÿØÿàJFIF,,ÿâmICC_PROFILE]LinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3descƒlwtptïbkptrXYZgXYZ+bXYZ?dmndSpdmddÈvuedK†viewÑ$lumiõmeas $tech- rTRC9 gTRC E bTRCQ textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÀ,,ÿÛ„       ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýS € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € (‚)g É'µ|ñsöÎÔìõ[½7á]…™¶ŒgU½S'šGS„ç#°§cEçÚËâôwψ¡eÏú£§[íüögõ§aòqþݼ?i-γ†ï-áRò<öޤ×î8¢Âp.èßðSæeS¬øRÂPzù2CüÑéXžS¹Ñÿà¤Þ ¼ ý­¡jV¹ëä]E&?ï­”X9NãFý»~êÛ|ËfÇ?óÞÐ>?ïÛ5Fv:gíMð¯VÇÙ¼aa=®¢– ßj)X9YÖi¼­cû'ž»cü0ê0±ü·fY4]F$¶–9PôhØ0?ˆ D”P@P@P@P@P@P@P@yçÇ zm3ÁWs¼Ôƒ[†SÊÇœÀãþíAQ>A¹øtG"0 U\ÒæUÇà+¦(Î[Æ?SÅZ4úmì—PA1ÚÜ€Nq’<öóöföFéo20ßËÅc ÷ö{ÕáÏÙ®íäôÞ…Æ€±‡wð_ĶÇ÷pÁ6?眘þx Vfl¾ñf—¶zŒxÿž/Ÿäh 2¬—Þ$Ó¿ãäj1ãþ{DOóÙ>ñ#Ä<¾e•ÓC þ$ÊÍH .vº?íWñD#ì~(ñ*ôu)Šÿß,Hý)X4;½þ ñCK*&×f¸Aü¶ógñ(õ¢Â²;íþ câÛ`««iþ»^æKIccø¤„~”X9QßhŸðS}>R©­xRë-¶¤Sÿxÿ­+âwú'ü;áΤj ²cÕ‘!™â²gô¢ÁÊwZGí‘ð—VÚ?á(û‡ø/,çVÙ·õ¢Â³;mãO€uâ“ã? \9éÔ"ÿ|–ô¤:ûk¸o!YlæŠx›£ÄÁüE% € ( € ( € ( € ( € (Æþ"ê1êÞ#š6ÃEj+ìGÞýI…2‘Ë6Ÿk"ýÅçØRº%³–8QŸn”Z_ [ÊÀ¤þ”î)Oà¨\`.ìÝh¸îQ¸ðNF" lQpæ2®~ÄàO¦(¸ùŒ{¿†jz õS¸ùŒk¿†C÷yíÒÜÀÔ~Á>EÅœ2ÿ¿4Ëê?4¹Ô–ÒíGû‰·ùb€ÐæuÙïMb|«Yâ>©#\ÐG5û>Gãosv˜ìÀ7ôÅc÷à^¡"ñýøÈÇëH9L;Ï„šå³¢ÞOM¬F1LV(?ƒ|I§ƒåÛ](âp‘ ,ΛAÒµÒcmKÏ3³1"\’úÔ;½OD˜Ë¤Ý]ÙH:=´­Ä@Ö‡¬ü0ý­þ"ü6Õí[QÖoüG£«?OÕe3Nû$l²tÁǨ4¬)Ÿ§µmâM NÕô¶f³¿¶Žêa‚cu ¹ü©1Ø¿@P@P@P@P@õR-H¾Ô.Î ´çsþÊ©'ùPÆçâQ¼¸’yeÝ$®YÎz“Ö¨ÒÅû#eÎ}è°XÒƒÆÐ°å”“E…bü~+·“ŠãÓ4¬è¼Cnãï~´X I«A ÊÈ?,ÑÝÂÙÜSžç½ ù.9ûŠcÙÁ)å@ÍDú5´„€Oc@Iá{wÚ¿ˆ§p¹ŸsàÈ›¢©Ïµ1“uà8ÜĹút¢ãæ1®¾Bäæ sÓŠ. F%ïÃH›8ûu¢ã¹ƒ{ðÁpBÇ×§î;˜—Ÿ YI؇òé@\Á½øtëœÇŸ¨ë@îrþ ðoö~Ÿ4ò&Ü êOõ4Ä~¡ü)±—Kø_á ;¤1Ío£ÚD脬*ý*Y‹Üê©( € ( € ( € ( € ñßÚÓÅÿð†ü ×fGòç¼h¬£>¥Ün÷Àzh¨î~vCã™ñ!ª5½Íoˆ²t÷ 45m¾":™:{е¯Ä†™?#@XÕµø“ÀSùÐ+Ô÷º®—¢¦©9·kfŠcZH’Q˜ÙÓ9»c‘ëHV4ï/uý Šêšmä$É ¼.ÐY³Œã} ZEñ ”Ç>èÜc(ùÆ€±§oñ OYôX,i[øî'.¦‹ Æ„^2†Le†~´¬Ø|Q¸ÜÃëš,˜õ¸€ãžÔXýºACH±†Sœ.}©^[+y(½¬šE»Œa.h°\͹𬧧ð¡ÎÅ>]ñÇ‚|/‚º®¦­:É‚?™ÿCúU!ÜûÅT*€£p¨3€ ( € ( € ( € ( €>;ÿ‚ø—ìÞð†„ÿWs^ºŽÞZSÿ‘[ò¦)Ÿ–9àš£BÖŸa©Èë¥ÚÝÝ4csy1–Ú=ñÒ®0”¾g*‘‡ÄÉf³ÔìÏúEµÌg¸d#œ$·BU"öd?ÚW0ŸÞo_L‚*J¹,^!™Éo€æ=æOÚCñS3\’çIÑmµ=:KV[e%”!b’9¶d¹U×$à†¨¤-K‰º©¯ø†ö]kÂb}VoÖ˜·0–77Q _9WbóI*ù&€¹«eñSFñÖ¹âÉugg©xy/¥†!Eõ®É×o«Æížå ÿtÐ=´:Fít¯iZ6µk©Zi:}¸’èjim"ZÚ%’;Œï3GÈgqç±B9x—EÓ€ö>¶¨ ( € ( € ( € ( € (óŸþ âOíOŒÖZdm˜ô½2(Ù}$vg'þù)T"ì—·Scé¯ÙCDøWÔ¥@MÅÀˆ; ÿ5ÕEYX—ªG¸j}›Û1¹µ·” :Œrku&ŽF“9ÛÏxgP öíO.HPT›>‡Šw¾ãZlÌ+ÿÞ Ô§’6ÓUd@ ØÄc9ÿ N{¢ÕY­¤sw³7…õÖ[ ®áG\®ÓÇ=ýj]vÄT]NvÿöS„“öY”z2sùæ§êð}YK5ºG7{û/ë3}ŽúÖQØœƒKê«£4XÞñ2.> xóJ£¶yÌ[YJE9 U†`„px¨xItf‹OªhÌ’ÛÇž‚î!–k{HŒ0Ãwn—Æ›‹áVE*>fb=Øã©©xj‹¡kIõ2×ÇúªÄÐøŽÂÏ\"W•N dóQÝ·>7W ±$‚HÉ'’Nn”ÖèµZÙ”âñõ¦¨Ú-·–—³E#J ª›þAìKÿ±¥Êðøâò;cmö™þÎNãó´Ÿ\t |ÄðøÒE8Þ:˜Ð·ñÓ¯ü´#èhÍ+oˆ.¸ýáù .iÚüGuÆeýh K‰lÌ=McéÙ'ÄqèñW5ŒÂúÿìãæÁòá¨àÿ|ÐÕÈ’>ŸðÄ;/ørßX³·¹²¶™ü´ûFÞNp0A=jZ± Xê©( € ( € ( € ( € ü’ý¦¼Kÿ WÇ^«oEÔÙwX±ý©yylx¦Û´ì†:B°ÃΆv÷,I¦+¶ ÑGŸYÞLô+ˆ¼ä6Ò9ÆjÌŠ’Ú01ªÉ.$*ÃÆ:ÔЈn4òïv@‡!²ò1§ü}ª„ÕÌË»K´Kx FЏÛbU³Ô•`G_q×ÚÉiš‘#¥¼kpáä 0ã'¹¤>¤-gYÈI®ƒJΉ6%\o`¥pF0ûf´±ìT¿ñ5䈑­¼ªÒMGHöäg,¿1Á;Tô4ìÍœî¿ã»h ‚î · ì•ã!œ¨?x{õôªŒ §VÛ˜w7ºmôÑo·… {fºi$‹,c¡Çlò*Òh‡$þã}ÂW‘=ËÁ§ÆŠi<½ œ çæ‹7¸)%ªv3›á(¼Ë¯8Ë.}1’*eJ=biD×Ã'÷™_ 4›‹™míndYQUÞ=«Àlãœg±ïY¼57ÐÑcj­9Œ‹„‘K$±XßÛ´‘½;—=3ó~U3U™TÛFP›á6¥í·pùèDœþXγx%ÑšG2}cøœ÷Û\II¿cÜ:Wžz—íi£Rwž9ë@î}Ïᨛ²‡ ånomä±Á&YSÿ|âŸQu>’ðÆÿÇÂ/ éñå¢Ï¨8ÝIjÅ»=?L¼†ŸÂÿËDûÿ­CV$µ@P@P@P@C^Õ¢Ð4-GSºÇ“em%Ëçû¨¥ò ÅVþ]ORº¼ºbó\JÒ»¥˜äŸÖ¬²Hîêci(äÓJì6?Aü3§.“¡ØÙ¦Á FÐ]Û\µw,ß$²2ùy*;_ÌSD•æ’h]öùÎÉ…;Y»bšÍÜöRl–U`UwHêÆIÆCÔÕ-Bö)6¹pŽñ¨Žä†!d‰i/a“Õ¿Jv%²%×¥2O4J-ãDaä±õ'x¢ÄÜ©yâÍ?Í•Xüˆ2¤ –Î{£µW(s£ž—VÓ.›ÊÒRPù£l{HÆáÀÏdUYäžÇ=}¡Z\H]D‘HY™ž' ±c“ŸQžÆ­3'gj>[¹nœ]MOlm¼«±õÛÆZjV%Âæ\þ¼µ’y´«»u–]Ã3Fx #3cÓjÿÀ*æ]Ipkfgjž¾“KŠÚ [ »ËÉ{X³x™ƒœœð½5$™ƒjÅ_êVº|÷µÀÔA" 'j¨,@ê/Á㪜•ÉPiyšZLŸhÖ5yä‚xKƒ‹»f•íØ±Óï.Ø‘öx$›þùR¥eUòÅ¿#¢„y¦—™òÓ6I'­x‡ÒòŽ‚/´ÜC òduOÌâÙ#ô[â>’m´ïøBCªÙÚ2ýÄ¿SM}ã"¶Í§ÙE€°@8»JQ7<,’hò >âJBÀJ[‰=H‚€ ( € ( € ( € ò_ڻğð‹þϾ2¹GÛ$öŸbNz™˜FF'ð¡v~L³dò³QVF !‡ ƒŒP+>ñ_Æ:@Qaâmez#ܳ¨ü‘MI®¤J1}—Oý¦<}b—U·»Aü7±þ!Aýj•Y.¦NŒC¤°ý¯üERÑ´[ ;Æ$ã¸Ò©W’!áâÍÈkË ÔTÖ<7{9/g}ŸÐ¨þukûð·ênØ~Òßï!Xo­µ{`ìÜZ¤ƒws•bJµˆFoÍÈ~0|;Õåó`×í’g9d¸Y¢ã¸`Õªñd<,ûu SÃÚ¬SE¤jöK0+ˆ."r€õÚ:ŽãèkhÕ‹êa:2]]­Ôd¼,Nø–  p O>ù•lÖ‡;Vz„’œÐ&V‘³Ö˜ˆ$n)Yߊd²&n( s’qÒš$æþ!ß ëdhÖ%÷ÜÁOèMsâåjlìÀÆõSì|è_ÓŠòOzìë¾hgÅ?ü)¥Ü·:”1°Çð–¡ý ˜~Òº˜ã²\··aü¨èKØõÜ}£]º ð˜Aø qØÜxJµÐ-%—y#ÔóP÷%›4€( € ( € ( € ( ”?ࢾ&þÍøS¡èèûdÔµ1!ÞH‘‰ÿÇ)¢à~u3dœþuE9 -Íf$ñ@ /ž½(Œäž8 “Ű…°9Í¢_è 2xíé@‹6šÍîžÛ¬nîmÛÖ) ŸÒ€ÜÙ´ø›â‹,y:æ¢àtY¤2ɳVªIlÌÝ(=Ñ«oñ»ÅŒOqit¾’Û ýTV±Rœº–ÿu1}¥éòXYÐþ¤Ö‹5¹›Ë龦¿Ç‹ 8¼Ò.¡õh§Y?Bó­7º1–\ºHуã/†î@6¡lÝ̰ ã¤ÿ*Ñc!ÕK/ŸF_ƒâ'†¯!Ö-”úH¯êÀV‹Mõ2x*«¡Êü]ñ.Ÿwá[{]*þÒêI®•œA*¹ ªÝpxäʹñuc$”Y×£(I¹+6['Šá=#Ý?bû_ãö‘4£t:|3]¿¶Ô;OçŠ}±ð.Ûûcão‹5y~e²mÃÇ©¡ìK:M{Xyõy ·?¼žm¡½2j¶@z?‡53H\ü˜ ¥dI×#n^(ÔP@P@P@PçÏü‹Ä¿løƒá} +c§=Ë(=W Ê%ü频ñæìç'¥PÆ–ãÒ€NEa¤ñÎh…°h ‘–çühÂÙÚ6õr€ ( € ( € ( € ü¡ý³§4Æá?à ÷,ô .1š00®Äû®?­*¥ìRÞ½¢0ó‘UÊöÁÎ@œôÚ}ƒC@ h¤UËFàU"؈¶Gõ «Xi`GÓ¸›C Ò¸¯q¥³@[4in8 cKb -šk6_'ŠBÙúÿÙð}µßßßj–ÑÏõð‰’AÂ5èÊL™‰ñ'T kw+áf“O±.TÄ#ãØœ”ã®àn|5Aucq¨/"rª§Ø ŸçúQ13±Î" GeáÉ÷Úž”º9P@P@P@ɦKx^Y˜$h¥™@S@‰þ:ñø§Æ:æ³6wêÓÝõ˹oëTis6cëùSŸÂ€:­BÿKo…ºU¼z\zËj—uÄ[ÃB‘ÆS~XáI•ÀÚ/œ‘š@rzcHÃÑßÏñ­>w"úÔµƒ!ÞÇO/€5H|*úôWdÐà w3ÛAt­=¼2>ÄwAÐ*1œÃ dQp¹ËµÔ÷Ý›?Þ9 “+BÔžéõ”‰'xãô‘üèHÜ&y‰@>„çõ4†HOeåþ”×(ÈÌßUÇõ4 ¯aw¥l'¶q°÷cŒJœÄý¶èäh e¢ꦀ!-‘ÇJnþ€l šý*ý˜ô½özðŠY_Þé“]™ï%kb ¶_hÎAȃI²dÎëRð >%9Öu{Ù·¹’(Q›êÁ3G5…s²Ð4kMJ‚ÃLVX"]Ç$÷$šMÜEóŒÒ¡ð´ø,†€:Å9ZZ( € ( € ( €8ž$ÿ„Kà·u@û*t½$u(Ÿøó ƹŸ/ÔU”FâVˆ›Tó ŸÊØÎžîꛋBŽèsüÀ ޵ÞÁsõ(ùfÝ :ݘ̟˲+/ófw†ã´šk•1És+ÌÆ‹±lçµw>%ø 5ïØørÇE²Ðíí¼¯3û6W.Š)åBN÷$çq'À@pSH±FÎÇ £$ý)ŒÅð’•Ðâ‘òcæ6}O?ÌšlÆ¢IQYÖ0ÄíœsŠzßÅë'OðN•ád×Vþx˜èR@ñ›TEÈѳ3£Ó|ùÎ8Αâú…г°¸ºE?ä3Le/ Âm´+XÛïý@ ,niú{j-1óa·†ß$Òçj Øy ` Ê­UNÚ]¶và°RÅ9ZJ1Š»nöJétM½ZZ&6þÐéò¦ËˆnDÞ’ÀNdŽàÈ<(¥S=-gÔXÌ'Õ¤’’’jé­šÕuI­SÑ¥÷/¯ v³IpìʈÌwÀV§KB¸š}.Ù¥â{œPÑ… ÄñĽ]‚ÄÐì€|u§|7ð­•¼h¶—o)8;öß©52܇¹jëL»Ó˜}¢'Aý6Ó0P   I!jÚðüÞ]Ø´ÛÂÛP”P@P@P@|Ûÿñ/öìûsf‡Õµ {M£©U&Sÿ¢ÇçMv~]3ljª.É gÄgÏùþtûù΄2î ¹kR²Ô4™c‡Wµºµ’H’eŽê2¥£p 0 9Aî 0õËm¥ÝÜ*F(™Ô…8ýhX–ëì[‹Œàù­!:M©?ºk‹toðÅ1´×_øö¿™?ë ÏóÍTÔ­îM³Ås}‘/îÞMƒ 7tÁçÒ€eµµžÎÚ(ôûc,*8‚? h¼š„жۛ9Ôú)ùâ€uˆAýâ·Þ2–h;ÄŒWº\Ö¶Ždš|D#îÁ >™ LÓ´>\ÆH «Èî 4týM´ö”yPÜE2yrC0;\dÄÈ ÖUi*–Ö͘ñ xcÄ6z¤Úm†®¶ÌXYê Í A8$0ç Œ‚€Øø¯ã‹oˆ>,þ×Óìî,ãû­³$ó4¬ï(ŒÅ˜“ÉRy$ž§’h@y§ŠåÆ–±s™æŽÐ‡QÞ€!ŒzÐð¬(¸Ñæó-ÔûPP@P@P@—ŸðPon~ÐwVJû“HÓíìÀ ÊôoéTŠGÌ…‹r 1]XÁ+¶&ž1ÉL¨'ð4 ¨ÚlÈs¨‘ìyýXP!§ùeµÄB(Ÿsgs©Ý[}»Ê‰-œË„É,Ø pzpMZŸPòX‰ ›â\üèM?Å ¥^Ew¦]ÝØÝFr“þ7Cêtëë@ s®¦£u$÷Wëqq+y%—s»¤’rMbêÒ}«\Ó RP<­ŽÝþm@™''½=áGÄËiúGwZ›[IöËKk{‰Ég&2“¥['¨*8#"“Åø·YƒÄ^)Ö5K4Ó­¯o&¹ŠÍpË*Ü(8ü(Çß´x’Æ>ÑFÎàL1ÿ šb;ßhðkúÍÂ^[Ë~ÐÚËqŸ•{¹¤`Ž{– rB0NkÊÍñSÃÒNå¼’r{E>¿¢¾—júxJJ¤ÚjöONþFÞ½á;ЯµY´­GÃ÷ÙC"ØË&PË$å²á häç# •"¼ü&cWÛ‚¨ª'6¹’ÖÊ7ÖÚ]I­V–ÒÉ›ÕÃÇ‘ÔqqvZz¿¾ÖwðÂÒ×áä> ŸPžÚÍn™_Éh‹¼Œ±Å'˜¬È¥‡ÈAÁì ÓÏêOð‘‚k¯µ{$›—ÃÊÒnÏÞíÕØ©`b¨*­ëkôï¢Þÿä‹ùÚÞŸ<(y÷ÊüÍ}IåšùÀë@Ï«¿àÚÛ>(kš«/Éa¥¾ÖôweQú£ ›>öAëPA4`“òÐÊN9  #JÔxv\ÂíÅt‘@ @P@P@øÅû@xœxÃãGuPáãŸU¸7_Ý«•Oüt ¤Z<ï«9Á<Š`E$…˜ç“@λÂ>ÑüEáoRÔõmSL—K‰¥fzKlÄŒE“ÎVì …رà1)ßóL t˜Éâ ¾HmÔ‘êIbsø@Ss#}ößìà7ó cƒÞÅ÷1ü±@Kom2öêûüs@4ÿ²¦¡ui+PW¨#8úÿJúp-›{ÙcŽXŸë@›;åÿQy¿ïí§€ÿÚq Í(î™óÉ  vÖ³FmBä vQD‡8 žüs’heue‰Áe¸…”‚ƒøf“I«1ÞÆ®“ãýKE¹šãH×u-:yÀó¤ŠâHŒ tÜr3ß­qâ2ì6"*©ÆImt½;SÄT¦Û„šl“þ=B´šâ;«t¶™Y•ÃÆŒ¶ ŒÏ^y4Ö_B.2Q³Œ›^­4þû‡Ö&ÓMî¬rq¿Ú xOUÛ·LŽb½0dýáÿЪe¹ÜîÑqøÒ2­J£Ö€%"€8ЫÛp¸ ÒÔæ1@P@P@P@ÿÁMüQö‡^ÐUðÚ†¥%Ó(=Vöÿ9‡åMóßž:ÕG$˜ˆÜš›F‚ÊóU¶‹Y¼}>Åœy÷)•£^§j‚7A2FH€ ¯…dŽÆóÀrjvñÈ+;Rq,±²Ÿ–A"ª©WR:«¤ 8vå­ô‹·C‡ò˜'ûÄ`~´ÁŽÓ£iÖñ¨À Hú‘@^ðýï‹uÛ='GHšêå¶©‘Â"2ÌÌxUP zM\ñw„.üub'¼°¿µ¾¶vwÚ|¬ÑO÷Œ•܆7R+é‚P–¹y$ZUÔ‚GÞìby x®)ƒ,A ’Ò/>(Ý™rwg¯àh)­-&?½µQî7øæ€!:U©ÿT÷6ùþãuüˆ E-FÆ8­ØMyrmœˆÝORדßÖ€. Ib‚?°˜>Êì?ÄP1Œ5ëiæï!8ý D-¨¼g[\+¸Ç¨ e{íQÒan“4åDòÛ–Çô DúU·Ø´øal Šü(·áËÕ¼C¦ÙÛ®ù'¸DUÉ"„í-½’iv¶Ö0ª´†8èªô©fl´œÒhÆO2®hàq@ JžË‰×ë@“f%ÍY € ( € ( €?5?à¦>(þÒø¹¡hѹ1éšR»(=$•ØŸüuRš*'ÆîùnxÍQEk§¸WÌ+ˆ;‚?þµUk¹”~öÚN{FAþx J2z³'Õ þY  íjao­™2¼’¡*ÈU;‰9éÓf´@¬J¸ÎÐâ›~ ñd¾ ñ¾«´X%¶Ÿ!&ŠXÚ)• Œ£°È Œæx߯CÅ÷:zÙéði:f›h,l¬a‘¤Žä9f9fg’F'Õ¸`P â7Ýi@ÿ­åóì´ÄÍUùQTãå~” »s¨[O5‘M:ÚÞ8#D•"y?Ò<»c‚z|¸Ô‹Æúw‚´ÛA'‚õmKV¸»už8d„ĺ|$dÅ+26PN & Ní¨€ó_K˜-¢òÖu³–ÿÙi‰šd’Q€ ëgø}ºêïOÓµKk½bÉ‚\ÙˆÝ@má#žk0ÏNädW— ÎñIÁ¨Kg§k«®—_ðlqÇt¤ãdöf>³¢êZju&ò•ܤJdù¤POΫ×aÇ @¶pq×CN¿Á®ŸÒõò:)ÖO„æu«Ö·¶W‹hÊŠP3–ý3]Œ¸¯¹œç)곇ÿá&øõà»6]È5æqê¨wÐýo‘üÉÜú±¨3%ŒqÅY‰}hP0(À`PŠžÌfuÇ­v#Š·@P@P@~:~ØÞ*>*ý¤i‘?ë¡Ûüè3P™/uk a"¢´ŒTäÀ¡j×wù²¿\ÐWÄÛë}E5±Ò—Pi£žêéb`÷e_ó`e”ÚžõåË*§({>gËf’è®­¦—Ñ=/{K»[EÛ¡®øšçÄÚ¾°d¹¿‡r=ô®YæBr¡³Ô‚[œô vÕ‡ÂGÚ§¤_N‰ùzÿÁêmJФß.ÝŽG\móéñ­1r R?™ÒhÍt .jeLÿÁ>ô/íOQß0,ºmŒ÷=²¥?› ÏÒxÇÍPfXAеÈ  TPô4ë@´ôÝ2ýh®´A@h € ( € (¾£}™§ÜÞ]¶È-âi¤cÙTdŸÈPá‹5É|CâMWU»?¿¿º–éÿÞw,Y¡ŽÌT|¼æ€X½h ƒÐšBxùˆZha_q@ fã¯^h¤à žôÁûø qÜcJn@é@HAÆ}BñFÊpª}ñ@ HR,ùj£w$ŽôØß»’H½•ˆ•a†Úá~åËŸ¨úPïcÎLí´ë@ý’k«è®.‚Æ!RªŠIÎH$þ‚€4‰È ·¿àšzëÏël9Š­¿ßmßûN‡°¥±÷LkPAb4  0(AÇN”t qÖ€4ôˆ·I‘Ú€:˜j –€ ( € ( €<Ûö’Ö¤ðÿÀ?^Û’$]â5aÔB™ü7P4~&Jû›¶}ªË",@Áü¨hç¯QŠ #ßÇîw4×q€?•5ˆê8úÐXäpFzP2¹çÍ5Žô ³q@³ç§Lsí@ fc€zf€_#§µ!“äÐCúó@ '?ýz&yâÎF:Ð3ô›þ á ÿg|Ôu]¯©²‚{¢ #õsJDHú¢4©$³`P€c¥;8 '(ñ®æ JµØƒ"€6ahÔP@P@Ì|NðrüBøwâO HÁ©a5ª;tGe![ðl€? µýïÃÚÕö—«Á%­íœïo<2 2:œ0?B*Í ÂÜœcÒà ’xí@ÝyüÍ5Ÿhëž{P å³Ò€#g÷ îàãžâ€I'Ú€;œÐ9ÈäzPZ\õ•_qùhÆoò(™=4Byãõ crëÇ¥)$õ==h-Áë@×Ù+ÃÿðŽþÏ>·uÛ$ÑIpþû±ÿŽ…¥"d{,iš’K=(Ùæ€¼,eðÍõ¡?ôÔÚ0? ÿ œn¹û/ø:E-¤ê^'°Ÿ¹<1N£þ ŸüvÐùŽ;Pý—Šgû/Äö’áIà‘Iú¸;¡ÝÕÿìÛâËr~ÆtËßE†é Ã&Üåõ_„>2Ñã-} j ‹ÕÂdS°Å΋©Yä]Ø^Cþôf•€¤ÙBK†_­1ŽG¯c@ cŒçœPzÚˆN9Ç4Bx‸܂r{zЃé@s×õ Nýš¾Ý|QøÅáý&Ö–Ù.[§ÆU"^\Ÿøô×pgìW˜ „¯NÕ™™2õ ŽœP“šÉÀ  íćZè£@‹@ € ( € ( € Fû¦€8ß9M`;àPŒß!rq@wv…³¸f€1o,¶ƒòÐ/«Û•ݵh¿icsò“@Ï|Ëè?*HuQ âߎŒ„ƒúP­©¥Î~ÔßhSü7 J?&ȧv(Ýè¨OöŽ‘¤\ç³[„ÿÐ6Óæc»1o>x#Síp“ÞÎvÿBÝG0ùŒ{ŸÙÁºÿFºÖ´ìôRæVŽ`æ1ï?d9óýâß(vöŽ?ô Ô]ç;¨þÈ-„¤j~Ô‡l\ˆIü$Úiè9½Köbø—§£H¾¿¼zÉd˪ÑaÜâ5?øE•£Õt=RÕתÉ ~”Xf;Ú\+6ó‡þéCŸå@Žûá‡À|ZÕÓº%é‹p]MH㤜øâ…sô£övýŸ´OÙóÃog$z‡ˆ¯ ÝAGuòОvç©îqÓ “ì&Ïd‚]Àw©$·äñ@+s@&€.i¶†âQ‘À ¾ÎÜEâ€,Ð@P@P@Ò€8ÏG»JQ@W5¶zŠ¥5†àx  ë+p\“Ìñàg%#ÅX¼3¤y‚Iô=YGü´—M›ó)š|Ìw7þX [xJÅn¼,1(DðJâ&µ» ÐÝ³à ¿qÍXC‘ÍO&y¨Îh¬Ò¬Ž9  P00(h € ( € ( € CÒ€9_Eæiì(ÌÚ>hÆ· Ú‘=˜a@eÓƒ”N]%Xò(¤º±áh£øu ?-V“ÃHsò ¬þF')@¦~à >@OÉ@GáTø:P«oì9 @–z_–FJÔ†×iàP䋊Œ@Y¨õ¼[HÅjÚŒc4~.EZˆn8è¥Ñ4í ;Ž´ÑFŠ}P@P@P@â{fè½qÅymí¤–³ºÊ…H=踴ÏZCE0ÑÍÖàžmè(û'‘@,žG6œ¸éÖ€¦©=(`'‘@G¦ªž”4v8<Š“ì¡z ­ryï@[ ô  Ò§@!b€-Æ1@ú5‘¸”8ÙÚÀ#@é@( € ( € ( € ( €èh#QÐ ¼É‘>¸ r÷Áq–&,¯Ò€2¦ðœÑ“±³õJ]ê"r™úPY,fŒüñ?å@4L:ƒŸ¥qÖ ‘@Å Ï4rÇ‘Å=b B;P!â ¢ŽòÅ!Lu 4`Ð!hè” ±ÅX‚3,ª«Þ€;}ÄA ñÍl(À  € ( € ( € ( € (#=h7…\r(´–AºPy4àG Py4¤#”V]'ûÑÊ€*Éሪ€)Íá$#÷d­T“Âr®v6~´Yü?uEÏÒ€!}6áÍP!žK¡ù”¨ qÖ€84ž´ŸJŒu ¡Å%Vôü¨Òx{M.ÂYÓ4ØAE5P@P@P@P@P@ @P´† zÐL {PMªžÔÆ´p(6²€"{9ÊÊ€+É¥F㔀*M BýP   3xa ù NO H>ã~tZO Ü»Šˆxnï<@Ã዆?9é@–~°2|Æ€:[+!(èPÐ@P@P@P@P@P@P@3Ö€€h Ö€P¢€Ñ/¥0§µ7ÈCÔPˆPŽ”¢ÏJ•"QÐP c¥-P@P@PÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_ecom_plus_b.jpg000066400000000000000000000167561231776762100265710ustar00rootroot00000000000000ÿØÿàJFIF,,ÿÛC    ÿÛC   ÿÀÈÈÿÄ ÿÄC !1AQ"aq‘¡2±Á B#b’¢$3CRcr‚²Ñ4S“ÂÒÿÄÿÄ)!1AQaq¡±Áð"‘ÿÚ ?ê@P@W{Ý¿OÁrmötKt4~iKhõŠ ŒNÞ;9œùf.¸Òëpúûcõ4]U¢Ûª,׬~ v¶OÏOU’‡3ô&ˆ“úЀÈ4r( € ( € ( € ( € ( GŽ´'ô…pí[Z=!źåžX‚Æ}€Ÿêsj<çˬuÇ´iÙ}”:2 ;‡†GJÓMW|ìOZ¢í2]¾d1Ç e„-HîÐ09ÏŸ¼Ñ4Â#]°éB? »_J:³ö "¢i= ÒC·Ý.Ar÷©œ ð^Où·SF¿KâÚý”uv²<&@m?ö¡&šMEÎÏüPµC{Ó9XüÅ®ñ²~Ùý*i:bûfþ(–ÊS|ÑÓ#ùª4Ýÿe61õ¦Ž•öËüF;)¹ìLÑ}·­_ûŒ!À>%+'íM%ÇMgôÁì†öêúÎr®¢c1š÷¦“¦¯~Ö´Mü Ùuv››¿ò¥«ƒDŸ–ìÔM-Mº—•´¤­  IÈ?: ¨ € ( € ( €4ý{|nÁ¥¦ÉqÀÚ–(?ÞW|²~T1íï$ìM]6o#úA>4µ¾@>ÀçÌSfÌdègØA'æת¢&vQ ÜíBsî¦Î¤ ñ†ÈîÁ ÕÛ]J×ÑÞÝ/}mˆç¼²šlêŠmÛÑzÒîâ‹kH?ð”¤~†‹ÙP¹ú.FI>®™­$¹»õ¢j*“ýåÅY1¥ÈFÛô"†í“Üì®H3ž2‚€È>Î3žj)K{:‹K¼Ó·+¥­Ôœ…Á¶Né#ïQuéÐCÔ5i™Ïþ|g\­Ì!9x }¾í I^:¨nÆ|@ç$ÊåœÕìô FE@P@PAåÏMîÒÿ”ai[;ív[¯Lq ÿKa)N~%jÿ XÞ1Âí•Ä §ëZoKÚˆÛ¹Óõ¡qOÂí© {O {Í¥y¬®ýã *ß)×h¼„¶åHIÙÙpánƒŸ}–zƒµ†ÝÓw1AR—m²”õ+PÚœ{òEOjèM>Ö“ÑV+,t„¢ß ˜Ø2”OÔVk;Q@P@PAÈOH MüÙÛn·¹¥eÆÜº¼Ójëì6{´ý+Q¦ÅôE´w³µ ÕI! EB½ä•Ñ?ZôðNÖ¼ß&øGËŒ§Ö»HõùW¡ã5Z$…¡JÎ8Ü$þ\Ö‹³FÞ’·ÚŽûm„ Î89o'™’ WdV—o¿!|7¿o·ÓÌ3Ô}kÉá~ÛŸÎyÒ6Od7”ĺÇqjÎÄ«)Î:àsœ|káOUÖ~JûÇû£œÐ’9>¬ã’AîÜGQÖ±~_n³òx_Wü îÓojR#Ü‚›uH Ï;zgõ¯/'㺯_<äÇ«ϰ¹ÒuŸl:6Ìù*Žõɧ^ñ±³Þÿ‚±nN‚vIx—2f¿Ô }å6‰­BŠÙQØ’‘•`t䪗¿f+|F™QÛy®PâBÇÀÖ)@P@PA«oˆÓ^ñx{-ðÞ–wt;UûPqeé+–êß}[œt—£Ô¨œ“õ­ºt½èïÚ^ŽÑ:EØ:†ðݾäü¥º´ºË›q€í‘Ðy×£“fž^~²»Ï´){t®×ª¬O)IÀG®!ãÇ$ë91¾ÞkÅœô•Rœ\nú„ÊHÀ>®¾ðmÀc<ç'5ÖY\ì°ÂJ®á•ìC )ÞìÓćJÔÓÚ*ï¨åÁIïa÷¡*^ò’’ =ßÒ}Ç$üëRFnV*².(»Û~# ¥•„Ó…$ã ¡V~9ë[ÖœíÚM–šKiCˆBw€”8¡ù“´çžx$sÓJQÇÛ}±í¹ôŠFž‡ßIA#> $ãíXËË51P@P@PiL}H4Ï£®®p8ìÖ[··ï.¸”¨€¬ü©ÇË”Š^3Ž•¶îDÔ¾0>”gdÖR¡ÈøP}bS±¾+®°±ÑM(¤˜¨I´õ¿´í]iÛøv§¿3Ž@õÅ‘ô$Ö¦Wí.û‰”öû­Â™7\Hð‘µgæÞºcÍœñ\²àãËÑìHKã|Nj“ðJÛý tŸ+7ð¸ïx“cÒ•ÿë¬N¤ø©‰@ýŠzÜù—Üs¿ž©û]¹éÙ zÃWH¾{šJÿEWYó1÷ïãóõaó=¨é‰\&솉èiÄ}öãï]'Êã¾Þ|¾,ô}TY§¨·‹[€œ$$~õÓl/·ñ¹'œkÎÚ¢çø¦¤ºÌJ·‡¥8¤«=S¸àý+ãçz²µú 'N2= è•VÞÎ{VÔ)\1£ÚÙW÷–V£˜OÖ¤n½Ç=¶ô¦—ÒÖd'+‹ni” ¾@ýêÏu˜ÙÚrä™Ûe\-¤„ãÌŠæÊj€ ( € ( ƒÈÄ—R=ikƒp¹ªJ’)C…¥CàsEòI‡D¶PìrmC)P=E)+пŽÚ&ˆ©y>ê+/ $pQ{få§=ô~…fe±2Þ[®©·ÝZœÇ #P©u¶-î¶vw£$é‡g¿p•Bä(wm²<2O¥.[KWxëîd!`ôUe*ÃŒ¥CÄfZ€ ( €  #ý0u7ó?¤nµ}'-Æ”˜(ÁÈ–ÒÙÿ2T~u¨Ô,úV¤$´òZW’‘¸­ëFg×R=“ Ï/Ì“õ¡nŒ.h“<3æÚd)Ô¬¨;»pIÝ€1× Q7³—æweAö%6:Ýä}¨i-©;B{Uú‚.îBe0X˜j·Ïø< —îïË/mîIÞkÆ®÷÷Ò‚IIQëÏÆ„\bv¬ûF’@·. Î)ļá!hܶ–¬ í$–PˆÈIPèx‰"uq/J¶2’SÝáÁÏ IÿÍR®švágm˜.íÆTµ,¨1Tööö±²• ‹ßƒ»Ž1Ï+åüî/‘—&7ŠÞzºï¿7rîk¶¼~¼YéáÏŽaz¿Æû~¾¯úK» F7PKi÷U¹V¤Ç[ %)mD„áJVÓ‚•´¤`kçÎoÉ\¸¿ó©Úg½_9zÖûkêÍo}û½&}÷õçÔ¿ßÇßÓXD_ywœµt@C||7~õúGÍGú Yô‰´¾¤îE²©ÇÜCe ÿ2Å*é;iãšÃ™ÒRSãšÚH¥ö›sdµ$ž¢‚Þ9€ ( €  —?ˆ¶¨ü°[›sc—{¬xå?ï!týÛMX±Ëõ»´îQÀóZnCx—6ZšË©xå·¿ìîÜàçÙPå'ÈãƒÍ%«uLÍg¨&Ý®kqOHW²•8§;¶ÒP€¥d¨%!)É98Éæ‚§h{¼^'‡d«û#ì6&Œ²ék†ÔÓµUÀ1tŽÒ¿Ž$¥µœP;I{œî6…cÚÜPµ½ñò‹T€“…,T@ýè´÷¿RBR•û½ô { .ŸÎR7 ÕICŠmÖP­ªØ²ÚðV„’’@P*)Q56J¥6¦‘v,6Ã(J˜ïR0zœ ûñT°î=¥S]-[[¸¸èeÉp€—ûÀK`¤7ŽNwd«?ÓŒ{è© KhkOLDXwËuå+}í¹jSiI>ÆIn#’žJzh ¥bÙ%Rc:¥àqõì H4€<±@š¶,{Iå@’XmµîCh > sAcÐ6Uj}u§-™×#`sù–¤¯SA/8–ÀJŠR€+G-£  XtÉ 3Î(%ì‘JÝÞsŠ JF(>Ð@PGjKmQ§îvk˜&Â+± ë±i)8÷àÐpóµnÍ/=ë»¶”Õl)™°)C„a2'ØuiPÁøäu·Yv§)^cßAðœTï<Ð&W¸Ð`¥dû¼…%X­ÓŒdb5/#?j 7{è1$â€Ï£ÐÚÃüÇé'¢ZRw7R¦¬{šB—ûP®¶²Œ’Oưätžóò û’s@¬f ‡B@ëAo·CÚsŠ´@Pz %éÙž‘í>Í»²Æ¸­²¯W•’Ûñò9Øâp ˆÎˆ¤Ytñf©ô0Òl)FÉwÔ°ùöwwRRŸv=ƒ÷«µêk»¯¢#èÝøn­`éLÛsˆú”)uw©I¹z5ê¸+WªÈ±OñÝËîÉøOÚ¯eêVn=ŽkkvKÚv{©L`—í&‹µR}šåmZ“q·NŠSÁ0¤àüÅ4#»ÄƒŒŒøfƒ®9Æ(>Öƒ|¨[¦;³ãAôtâ…›zÿølhÉ>Ó¯ú¡ÖUê«r¢¥â8/¼pžÐº_ å]lƒÒ°ÁdœcÆ€Æx ±ØmøHqcçš ü``t ( € ( ô4»µ<­øÈNz(ãéAªgÛ”ær3î ¬Ým Ø ”Ðkëåš`Z‹i?J ÓÍN`œµŸ•få(—ÐâTIOÐñ@Â]ºËtÏâ¶[t’z©è¨ýJsWª®ÑNöG nÄúΛˆÖz˜Î:Ñû+ö§U:©›þ‹šè †»ý½g§s1.$|–ŒŸ¨¦×©'Е‰‰Q±êÙ ž©Lë~~èYý*îHþ‚½ 7“fŸ¦îi?”zÂØ'ÿ‘ ­]ƺ¢sBÿgx¸¶­y±éÛ`9pÆ&>¡ä”£ÙE7ä÷—eÚOvU¤áé ĶG%jZÎç$83Ž ³nÙ·kë.d ˆt…P?´ÁTÉ#Ùh.L4l%#ÂJ€ ( € CA®{Gc|˜ä€@‚ޏIXàP2‘gKƒ”Љz]·2΂N‡eyÃcéA#³¶UþÈ}(#ÝìѵžÇʃÙ¢‚”}¨FÐ]ÇDóåŠ =£Oûrš +B‚EµšhIÀAlÐNÆ4öE¦TEû Ü(”cóŸ}%sã@™Œ’Oƒè‚œò-Íø¤PØ‚( Í6”g”Ð8Eµ)#Š • c`P&"®E–Yð8 e! ·é»nÄ\ÑéAd€ ( € ( € Ï»ð[|À|è"¤iÖüÍ!@û¨#ÑÑ—œ6Sð `î‰ËkXøÐ5wGÈ@=Ú¾# §&µþÏwü´ªß!¯ÎÊÓò 6)?˜}ôAùŠ U…DåT ŒPKÙ`ª|”ñì$äš ËIЍ € ( € ( €  Â|(>ÒzŠ K=R(0TD ×oAøÐ6vÌÓŸ™ ?*éˆÎ³Ç‹š=³ùT±@‡òI'=òþ qF¶ƒý¢Öº ºÔÔ$a´A!Œ € ( € ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_ecom_plus_n.jpg000066400000000000000000000054621231776762100265750ustar00rootroot00000000000000ÿØÿàJFIF,,ÿÛC    ÿÛC   ÿÀddÿÄ ÿÄ?!1"AQaq‘¡ 2±#B’¢$34Rbr“³ÁáðÿÄÿÄ)!1AQ2ða‘¡ÑÿÚ ?ê@PA¸Áć¸i¦Û]·ï{£îwQ¢ìIóR”pp>dË9¢Äe\'vÙךu ®éÃ8÷”©d)ÉkiH§rUð«†æXhý¢9 Õ|7Ö¶³üÅ”¡ô§ó;i†zRkWÚ-ÁÙëJ.oÖ•ŸÅí–å`I4ÁÓ)Ý—¶¯û}‡ˆ6ʺ eq¿î%4ÂbSûG´–  ûTiùå]yí,ŸÈ+5  ŒŽb€ (@PZãÇ­6%ʰLسni´/>KZBÏÑI«ÝkÂ%ŒšNä´!Ž}r\/Lž™¤§$ûl^àYu²‘ž^¿óÁɾ_t%õ$8˜kÉ@Öœ¯T¢÷~Ëzï•1OšPéL§R/±µš$¡"Îk# 8鎙Å2¹†Îì«Ã}CÃî2ÇŽÍÊh´;o’¹0»ÓÝ))Ø¢Ž™ Zpzó4”´Æ^²æ(@P(îͳÆ>Ów¡,ºä êR–[V a²¬`ùxP>úë§\ÎRóZðÚ.Ëúkz¶v¡…é±ä¸<½S^¯À¬¼qº¼=ghSŸh‡®ÝZR°÷±µž¸RC8ëæ‘è*|´Oi_œ˜ï®¥•­#:7ÜôÌåo³GXÜ­ÄÀçòÎ@CäíâWó GxF]ÖœA‚§B6åÈÏ¡EGhð|Ï>žu'i© ÆÿJYþð:²À×yy…1†­Äøsñ®WÒ½#6‡jké^qYYÈœZ^®¸Ï¼Ü"©âúͱ—±Ý!¦ÔûÊéÏ9i8õ¹L7oÑp’ ´ å$dË´ (  j1¤4.¡¾)IGÝÖ÷å®™B¡õ‹?h Náæ¡n÷lT°Ò›Û,(§ÅŒžDòë]ki¬æR•´b[j7kù$½t¼e(õ\9ËoŸ®•~µÚ7鿬x’ÿÞ¦Ç%•aê(/Œå§‘úƒô®‘¹¯˜r¶ÎÞ$Þ¾1é ÂÆÎPpŒIˆ¤’3ÓÂÚ74y­²Ôõ—¾é Š‘ì×ZŠNR‘#f= Þ7ñ/=ö—ŽõCxÇuŽÞ– †ŸC²wx äNr=êæÞ^&±íëøvœÖÓ3o±…­6~Äœø ‡.^ãþéƒ)þÈ«ùׂVÝ×fΦͪ(e[Ò–Òœž¹Í‚ÊÐˆí½©†›ìߩұۉbÜxêwè « V²“!„î[„©a ¤¨õóÀ<¼úVš7ªr!Me@¥eDz’?ñEî&•@u-LKŒ¸¢âJOˆe<¨ ü(pN§³œ~S$O§‰s¼@P’FA ÑyðNãÁQ Ðu„Ziz{Ahk5¾;î2åª —7NÐÓ ­)OL‚\Vzó52ç2°ú:I[²£øU¸~u”H¨@PÃí4ÔÆ&ˆÑ¶/uÁÙ‹Nz¥–ÂW‡Ê¬,9îÜ!9™ìÍv¸öÅ;âJv 2¼YÇ &´Þ}íñݸÜZä¼ú# xÉÈjÇëC¿,µóß¾)çÔôöXt¹Í[Û0NHåÓ—  ÂéwœÕ˜/°ÓQÐ\Ë›HQ+;²G4øGOZ,’1)#)…0¥¥(JÆÜ|?õYšÌÌK­/ZÖÑ1™ŸëïïŒÃ=3o{Pê(¶ö÷o¸Mf#@÷”£§ÄšÓ–|»S*Õma€›ZK+Ž„„¨¤§–>B°ävÒwSöøÓŠ ­h ƒš_i>©.5Yìí¬÷v«: Æyºµ(ÿjQô­CUTb ½ ×K£ÚéJYB9`îQP#8ÁÎ|±U·†™µ»¨C0 Ò‡¤w¯¾N¿Äsâ!<¼É Q2j.•ÌR»×´¶RÀ?ˆäärçáRí^»ÓrYµjÂóRa%¸i!+a#˜úQ1ÁDmRäHl·*Ïn˜ÛiRqÄç9 Ìdùø„šðêìzí6­íõûŸÄÌ;×[‰ˆ”»²•Œê=h8®¤8‘sö×9ð´éú"½ÎÄ:ÒÊ3Ìç&°æw´«¸šÂ‡’…û9  @Pq»µÖ¯ý©í¯§oÜÛ ²FÖ–¹~h&µ•†•¸Ìƒ÷x[{Ü–”¬¸Jvÿ÷Ï>¹ª²Îßo2µÊ˜ÌG#GJÐ… êä6¤×ÿºd€kŽó’JP¤¯nå,s_y4^Ñ1‚ÕÞBÞ˜•©n)j°1ÍAGwZ$z;ê=Q¨?e-ÖË-5l¶­Ç£ÞÅnVJ²¬x±“ðÍs¦¥oôÎY­âÜÄ··Ùã`öþ9ªR†æíYnôZö4Éj­ËVìéŒvò+.eŒ‚F=Eù£–’}Ô5ÎàÕ¦Ý.tÂRÄV–û„y% “ô½ÞÝ¿ÞgÝ&©ä9)ßæqEgêMmÔÜ·S@™Ô6¬ø'Ìr N´! !²¤s'Â|è©8;‚JF@ä3ÓáAöç>}Ñžêt¥>Ž`’vç®å\é¥Z}1†b•ŽÐ¼_fu‹¼w_ÞÔž‚+þ£ŠDVä²ù°‰çY`² &D¦Ð‘ž|è' NÔè(>šƒÎLf¦Gu‰M¥Ö]AC¨d)$`ƒîÅ(xçØcQèM]qG¦[ïZ|¬¹·ßîd0ƒÌ6½Þ7dg U¬·hÛÇõÍ£ýN˜¤ùª:Ûxb0‡Üìw[NEÖÙq‡Ï«ñÖó"ªš [€>™ óS™ó À/&ƒ¦ßg6™U£€o\ä6[Uæîü”ÆÚZIì¡_#Y–-+UžB£)Fž¶÷,÷îºgÒê€4A¤8ƒi3µÝÜùŒ|…­Ô¼7UÍ'»R|ˆ ‚Ëá=á’}šS„zI\‘5D]lö‰é={øˆQ?™s&XGì±£ï‹ÛxÒvæ ꨅÆ1ý ™\ÉÂaNF¸3.\ì¦ÒwN\UÝ/ܬ¬{‚‡ÆKÕ+C¥âÇ´ÚâÀµÅ VÒËc !¶›HÀJ@èFS[¹W–?„ƒ“ï ™„„¤ò€  Aö‚5¨4[7‰ ’ÛŠeò9ã˜4‰: cYîÔÛƒßʹÝ#5¢Jâ•˃@•V5·þtU£© Í»s(þ@?*È­‚Ûtrë¨i‘•¨àPlËl$Àˆ†9ÌúšTh € (>¤õÐ`¨í¨s@ I&ÓÐ{ÆP¯ˆ n^˜·8|QÇäH ]n³C„­ÑÙJUë@å@P ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_ecom_plus_s.jpg000066400000000000000000000017001231776762100265710ustar00rootroot00000000000000ÿØÿàJFIF,,ÿÛC    ÿÛC   ÿÀ((ÿÄ ÿÄ01!AQ "2Ba¡Á3’±ÿÄÿÄ1!2ÿÚ ?jXËÜÃqÊ3>?–#æLÙ@‘IaµÈzŠÐRR·S¬kºTºS`zu8¤›)Eè‹y¡*¢qÀ>”!ª½2 é'Щ¤%^Ÿ7|(TAžCãj9žuS†ù–Ÿ*k,<ºs/GRÀZ’ ËH%V·lO(ÔD€cÄ^b*ÙcŽ\I©Ñ¥Ëf}aqŠå¡jº#•2Þ’•&×Jo¹ôxð[ä·(+_æ;ù*´fL»ý6(‘`úŸÎ:3õOQͯŠÿ:-ÓàgN]†äØ ð!¯D·X£Ö²ûÚªôºÍ1æî/&;¬”zü@[h ™þoÂZ–îR…¥+wuûá5TUAŒû52ï’àår®âlª…mÄ…ÛâCM6Ø)na2tn¼¿Q`ಜ:íè;aLŸÏA“!æÔÝý.-€ S0òúÍ]Ýr¢2ú†ËeÒƒúÀ²ù[ËiZ•YË1ªH;¢tdIIÿ@à Z<6Èñ¨ãÓéÔæi”˜i³1#Ç 4{éJ ’zû€ ( ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_ecom_plus_x.jpg000066400000000000000000000673041231776762100266120ustar00rootroot00000000000000ÿØÿàJFIFHHÿâmICC_PROFILE]LinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3descƒlwtptïbkptrXYZgXYZ+bXYZ?dmndSpdmddÈvuedK†viewÑ$lumiõmeas $tech- rTRC9 gTRC E bTRCQ textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÀšÜÿÛ„       ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýS € ( € ( € ( € ( € ( € ( € ( € ( €<âßí-áO„÷M§Þ‹½WZUtûÆ#{äväûPR‹gŸø(­Éó< qäv#S¿//ì?fÍ«/ø(ƒ£Œ¿ˆ UþÅñw‡/ tXµ‹~[³@Xêbž;ˆÄ–ò$ˆz2Aüh5P@P@P@uñ[PIRÓMnA>t‹ŸÁ­G›¶“i*ò çÖ‚ŠÒørÒRp}GJ©?ƒ ”ay<w ™óø#1îí1™uðÞ'1ÀQqóן ÒB|¸ÿu§pæ0ï~+‚ JÀö#4\«œÎ§ðJÆë&}6ÖLÿzþÉ9MGöxÒfÝ68Ϭe—ù ²9Göp±Éòö#ÛkäÌP+#š¿ýž¥‹q¶½qÙãúŠÇ?}ð?X·'ÉžÞO÷Z”ÉŸálj´ö>Jùå6?Â4WþÈñU´±¤ß`°eó ,wöwºÎ‡&ýPÔl]y kpñütŠ”í4Ú?⟅&ôïë²,}"¾—íH}ˆ5+Èû«öVý¡§øíáM@k¶ZxƒHxã»XLŽÉHÎÖs‚=ðV3’±îô‰ ( € ( € ù+âgÅHî> k) Çm9¶L>O”þ Õ"ÒÐÊ´øŒŒ£2þ´Xv5-ü} ¹ÔÑaXчÆ6Ò0.Wéš,„>'µr2à{æ•€´šÍ¼£‡^{,…¼·Pñô¤ µNh¦ÚÈ>e _Ö²s…çÚ€¹FçÁÖî>USž‚‹ŽæU×€acSôîÆ%ßÈ\œÂ úQq¦`_|.‰óˆºö¢ãæ0/~+1 ˜#½Pî`_ü-hÔá8Îzÿᣮ@‹?…>ˆýü?&—}ñáT¬K[PÇ»¨‘øn&e3ì’€ ( € (  ßëxAÔµK¢66Òܹ?ÝE,•~HÜ|@¹½¼žêæF2Ï#J䞥ŽOó«: Vþ>•xóç@®jÚüE‘1ûÃǽ5­~%¸2~´ ÇUáÜx›Ä:f‘e../®#·By±8öÎh$ô à¿Óõ#lÚ•´0%Ô^{èä·1D$ò¿x„R[àäi\‡UÖ>Å-å¢%õœPItn-$¾J8FwÛ¸ã8ì} 1X³¤x³TÔ£ôû+륑E0DϹTí'ÐŒúÐ-Çñ àm·>dD¸‘HäuÐ4m¾"E ÿX§ñ¥`±¥oã˜$R>´¬+¢ñ]³ÿç¯4X #\·•r} ßj‚aÕ9¢ÀG$pJrUO=©V}.Ú|_΀15­ÎÆÂæîm‹´¬ÞA'ùU…ÏLýü8Ú'ÁM6öéJÝëSͪJHäùòÿ㪴¤)n{mI!@P@P~Ö~">ýŸü]ø•ö»Í@ë:mš­­Œ—2&Ç„‚«„8 1–díƒLv'‹â=„š9¼Šò8nËö%rvŒŒc<‘ŒœäÐÓâ®2þf€±µiñUN7J:ÊlZüQG2¡4)­mñ*7ëG>ô Æg|söÿjVlæõVÎ0:–‘‚ZXûoÂ:,~𮑥Û(X¬­b@ôUúT³6lÒ € ( € (äïø(ˆþÁðÃ@Ñãl6£©ù¬=R$$þ®´ÑQÐüø/“T;ÜúOöHÑöØkº£/2J–êÞÊ2ô!]4—91/d}zÆ8@C‚ÌAÇë[£«®Ïoóvb þ¿Z 3îZ)íƒÜØG)yüµR¸Î?¡ªM¢l»·¾ðÆ£pÐÜéV9$gÉÀ'¸Î1Ÿj.ú‹mŽs[ø/à¹bÝq¤ªn;U`',Þ€zÒå‹Ý"ý¬ã´™Ì\~Î>Ô¢2Y5õ® R¤à©ˆ5.7и⪮§'©þÍ–]ô½]Š!+ó.pGT¼,rÖ:kt™Å\üñwæè·J Ù,3qô8žû1ÿhw‰wàÏÛ=ËJ/¥{…Ù3ù›Ì«pÇq'•SÏ ¨x9ôhµ˜Sës ]+\²?¿³¹LyJ‡…¨º,m'öˆ£¨[œIƒ³YºS[£hׄ¶’&O]Áþµf_ªšÍ«ܵŽ%B2æ€æ4-þ È£ýaüè ž‡ðCUü_ð~“)2@/ÖîU=6D Ÿå@7¡÷/ÃïˆÚ+ßèkt­¤XÚ eVŒ¼žZ´zþ•©&«f'Œmù™ÏB*v$¿@P@PçïücÄŸlø‰á­7ÊXiÍpËèò¹Ê1M‘KzU û;öoÒ?²¾éìˇºw¸>ù8 ÙMZ(à®ï3ÒîœÏ;N?­h`@ó[ |ÇTQ©ŒÓÔÐMö„³¼q¡|î-·æü~§ó¦- ñi–‘]˜Ê19uÈSŒ÷¯­=I²#Ô`þÒ··’Õ£`˜¢L…pTŽqÏCMh&®r·ºç™{‘só«îòNâ~]Ã'¨ÈéV¤G+9-qµ[Hÿ²ÚV–GœÜ –G~XäsÇZÑ[©”¯ÐçÕòÁa¥,„Ox€™„c®òTmä }zš­ îô¿rŒ>-¹idfÎ(Ø;¬³—w>…~¥‡§5ʺíQeñÖúwÚ5 [Pìß»Ž9‰.Øü¿/n¾½¨åWv•ÙJÛ]²ÕîdûEžë6x£Žcºƒ†'Ô°~=iòØJiô#´Ð4ÍY.ZçL´ŒÅq$*Ѽã=¿åCeØæ~#x[KÑ|+uwm IŒ‰ybFI÷ö¸±j*jzXÎU,Þ–éˆ-–9<€;“TÝÄ••Žãñ‡Ãúe¨?ë®ZL{"ãÿf¯?öG­–Gâ“<`¾ãÍyç­Ìº]þÅcHøuñÄRáw´6ŠçÑU¿ –î}UðJÀèÿì¥q‰µ9šv=ÎæÏònÉêw~´2ê“Ü0ùbh>äÿ€4HßTP@P7)io4÷ (”»1ìÉ ÅßkÏâoë:¼ìZKûÙ®‰?í¹oëVo±ŠÍëA.CYð(&ãKàq@³öë@ ̰>ëi6ÄŒTþ”»§|DñNögˆµ»`:*]ÉøfÚ÷Fý¿íã«eÛ.»%Ò÷[¨c“?‰«Udº™º4ßBå¿í ¯¡ÿM³Òî}NÇCú7ô­*hÆX:lÖµý¢c`¡¡0÷‚çúþµ¢Æ>¨ÉàÙš–ÿ<7q´ÁªÚ“븈oéV±‘ꌞ]¡oñ[·ƒäÕ–{O §ôÅj±PfoUl¦2ÃU[Ĺ»Ì]ЕŒ‡p?•h¤žÌÂP’Ý9e' þ5¡|s¾/®i¶™âS!…ØÿEåc%yØö²øÚû³ÌËf¹CSío„MáߨôH€¬úÕüò u`JÆ?­4Iõ¹´O ü>ð¾šp‚ T,=öñ¥Ä‡úÂ$’?w4‡ {Æ<Ò–âg~¤0ÈïR!h € ( ;ý ¼IÿÁ?êˆÛ^2hã>Žë±V ŶàÕe -ÏZizalÐ; WFöÎG0žWHN÷C†U䩯•Gά¿QŠŒ¶OÃI «!…¸âÅ{ /»¥!\i|Ð!»¾nh4¾(¬Ù ­F–çŠQ¥ý( KZ=“jšÅ…œCs\O@}X j~¾x«áöáí#Hñ ¼³Ç«ià ¨;Yj…R=+‘sˆ±ñM×Ä[Uc)*¬QÎqø­ÏQäÖd?….rއë@%P@ð—ü³Ä›¯< Fßr;‹ùR¨§ôzh¨ŸÈäÕ dÒd{w  ûH´vøsªOqlŸÛ«©[Eopn|–IZ@#é€Q>n~ö8 `±#žôÆ/‡å3]ê÷$=ÁAô_—ÿe 7,’æöî [$—ȱEYØàø‘@ïcWÅÕü!=´zضe¹F’ ­î"¹ŠP¬Q°èYI ¥HÎAÎK\ÕÊÖ)! æ4Éà‚yý3@j_i£26F3† 5eˆÿÏEü¨ÖØGË'àAAor—rL0- mpN6ŸòEjJa·û§?Ê€ÔŠ@ÑýõuúŒP‘—Ü( DݸàPžû8h?ð“üuðUƒ®èÛRŠWì¡ÜA@j~›ëkºèšÚëWµ{Gv1Å-©ÌkžeqÚ¦æw(ø#áÌÕgÔ¤¿{Ë™¨Q¸'õ¦åplíßâ¤F·†¦òïJž„Pf@Å-P@~^~ß^&þÜý oíMÑéV6ö`g€J™õ’©œ.p½OJc(Ï%ôdî³ó÷¢n¿¥±YµSýý¥Ò{íúÐC[^µIv™H M“íÒ€¹Kѵ†“wÅb¸“2:9äòRh§E¡ê0ézÅíÝ…®«¼«+Ù]ò§çcí í=ðEšÞ=ñ³øëXŽôÚ.Pˆ!±ŠMÐÀ “ˆ×"ä“´¹<æ€8 xùú–“l;ÊÒ‘ì£û5k;dœÐV§§|8µðúø+]ŸÅ?ðŒÊkxcóäQyÂÅû… Ìc9ʘ;… “ËÏJ ÔÆðÔžl7× ÿ-î\¦ãÐ S °±û{L^Xíá…<Éfdƒ’I b²«W’Ú]¶uàðoåy(Æ*í»è®—M]ÛI$6ò3c0Hn’áC¬±ÁÔAö4éÏ]«‹ÃªåŒÔ“WMÁ³Oºf'ˆ/å·Ó÷Âì%2ƪÝòXgôÍhr²ìnJÇ’9 zŸIþÀ~msãÜWH¡†Ÿa<ÀžÌW`ýZ3ô:ë—ðå–5“Ünj ÊV­$VMÊÂQ@ 9fæ€4´™|»ÈÉõ öߟj’€ ( €?¾;ø˜x»ã'ŒõemñÜê·3þ¹UÿÇTU#[XàÃà’=&˜\¬ïÁ €zÝÍmsÚυíôÙu»il†£oö«uwš=ÅrW9^TðpqÍ9o^=¶•q2%P1!‰~¦€,‘Å´Bêä%C篵Wm*Èò±Iõñý(+Q­¦ªÜ^^GìNGêh J–¶±É«IçÜ<×pÇòÀ§œŒžGéA%‰#Ôü©k0ÿeð™ ­Hšâò!ûë ±êŸæ©^}cdo‹k¯4µv“Øph H4d>—mozëAlôÏ~h64ígìr;ZIo u(ñ¾×W^¸ û€ Î¥5QY8\\ðÒnwVi«¦»4-õô—óù³Ôí 4ªÀ tà ¬…‰ÄË>y¤´è¬’]’9ß1’m6ÿ-'Ü@ôU?ÔŠ³˜×S´b‚µ>ßÿ‚gh€j¾3×%^"Š Eov%þ‚)=‰gÞßlV<’ ~Î;ˆ¾ÑTûØþ!@Ñ.NM]·;$R;ïtÙ|Ûd>Ôn€ ( Ǿ!_ x'_Ö‚>Â{¬ŸTBÃùPâ]Ìï<­$„³»b{“É«,«5Ê@¹•Âg€OO΀cª}Šú « âóà‘eÁVÃ)È898šMDç“RI9½ó#*OQ@0q@Æ9â€;OæZ€zŽ(b€ (  ýµ|J<7û8x°«m–ù"°L¾dŠß;¨C[Ÿ“Ù~jÊ<2+‚y ž”©Jk+)Oï-—ŸCþ4¥fÒ­Ì-s ÿa¿ÀŠRšZ@uX¢žY®'T/‘É Á?ZR̰ß+"[YGmØÏèE±>¡ß²=Qˆþ”RÔÞ#ûë;‘ŽËƒýh JšB¶›hí¨~îIäiH댒pHúÐI¥a®-í½ÖŸw70H³E"¸NT¡‚µ:?|AÔür¶ÃSL·† &œC§[,ÓJA–V ÕØªäû @jp>$}ñØÁÿ=ne¿˜οÁú–â[½aKZÂÍ“å |¶ØB>ÃÃmb­´õÛŠàÌèT¯†•:OWçkꮯÒêêý.ta§TRžß×äv—:¥ˆ´ÍBÏTñ«kcX­õ+èZÜnʉ]Ab,Ê‚Ex0£S R)Q”)óÝÆ-?²ÕùS²M½“w²m&w9Ƭ\e4åmÞ{¿/̇ħ«ðñ"ÒOŸYµ‚Å%’$Tu‘×|’ æQœÆT¯ÊH9ªÀýyãܪ¶©ÊSj÷jÉÙ+[Ýþd諸aì- s$¿à»õí¶‡Y¿â çÿžh‘þ™ÿÙ«êÏ(ÕgÀ₵?Vf þÿÙëÁÅv¼Ö¯xþæGb?LR‘œQUÜ8","mû´"/­Nƒ€: ˆe>´ÓP@ñ¯ü¿ÄÆÇáç…4HÜ©=Ó®z¬1‘üåÐÑùÕ$ž½êŠ!ž@0=u¿ µûjZ•þºº]Õ½£J4ëë8® ô +½NÀKnf\ŠØ9Åq·3™æ’FXлÙáW' ‡µjaÛKçx–îCÒR?Ä‚öaA&“0 ósAZßÄ„·ÃmLÔõ‹›WK爣I•ÌI/”8— 7¶UÄ9ÕoZ 6êVv;"v=À¦=D°™Îl.J쀻2ä“@jÇlãÛÂ~„ŠR»év ÙX¤Œÿ²Ãÿ­@jTŽÞÖ=V(XÉ$û ÄÒ±!Fpzž( KOks¼µ½ä,?»&?¨£|½F1òÇo7û‡ü  5"’îæ/øø²qî­þ P•ô«Y`k™îT,—Ùœ•ü 55-ãk‹ˆ¢Œe€=Í©û1ámhðþ”£h²Ó­íÊû¬jëš—©“Õ›1.4€•FG*(žÔ2Ž8  ]M—8õ µ[r‚(h €?6¿à¥^'‡Å­E…òšn”×=WbñÔJh¤|¿.ëïT^¥k«{’äÁsà8éøñ@jVq¨ Á·†oúç'ÿ®€Ô…ï燋›+”÷?Ï¥9ZÌ]Ý^©ˆÜÊX)НAœtà -Ç©@Xž0AÈù€"‚µ:ßüLÖ|sm:ÉÓ–1s%ì†ÊÕ!72i ™ÈP3ÓÛ“@jp>%›[F:Í"GbÃ? 4ËÑ’±¢ÿu@ý(+SÙ>øÿÞ ±Ôá.»{t7¶÷RA°’úÕ÷Û“å:¼nXlÁÝÆbgŽ\H¯4,HÌXF ALz˜öÒù¾$¹~Щô''ÿfuðüþ.ñŸ¤YI]I´Í %b@ ;9 (cÉÅjzį€Úƒ¼'{«húÜ×3éóÉoumr«’ñÉS—…dyãeÔà9(Ež-$þ\lKª #=¨+RŽ…4’éVí9ffPrh;ï„ñGÅO éAK}¯S‚2¸ì\f„=OØ»¶w)NˆJƒ!Qyæ€%EÉæ€&EÈ ¨Èæ€.é¯åܩ貄æ1@ € ü~ý±|Mÿ Wíã[€Û£¶»)Ž˜…3ú«U"ÑâË «ÔÊÔ®òNÅ©¿­x_ðÿ‡¬õ­_Okk¦URÒ)‘ ÉæFèè%w¸FE©Ì\\ˆ!‘ܨ¥˜{@jRЧ‘t[_8«³.Iuô÷ ”Yu‚A‰ óÇäh+R³é¶2‹r‡Ö7Çô 5)Kkk¡i ž|¾ac‘ËaŽqŸzRÜÖ³î&Þò"?»"ŸçŠR#úžÖaþËýM©·pߨ̪œÿ‡FÕ£´[Xæ–ŠæâRXg ’V 2Äà§·4¬žY®ÊaÒnÙxo,¨>çü鉓XÇäÙƒøV€±ïÿ±‡ý»ûGøiwGb&¼cé±×?PÐîlžç5dè8æ€&UÈ  qÍ,×$ñ‰umZå³-ýä×LOrî[úÕšêbK?“vWaŒ|£&€Ô¥ý¡<Ⱦ ÿ:RßöåÄér«4‹w·Ïqo;iÊîçæÁéž”¦/ˆî Z=ÊŒƒ"ˆ‡üýh-Û(KXUxŠ©Ý|&׬´ cU’ïV_ßϦÉo§k-È,nÓçÂu&1"PH.¸S7âwˆ,|OãÝkSÐÉó¦Â…2t¹ÈìZ€Ôàä“Îñ,+ÔAoʼnÿâEõ6¬a¶žYþìÚD±;+ˆŒ…œ ª=NO¯µjoxSáÆ±ã}:æïÃKkr-%T¼å›Xˆ$O!l*ÅÁó€@— ®r×,-^UóEŒ°ß;XãÚêgh72 域˜éÏÖ#xxoSŸI:™Ò$“O±¸ávƒ‚ÜcŒñž™®wŠ¢ª{'%ÍØÍÖ‡7%õ2.4Ûew[›#©ÚÕ*}zVé§±¦ŒÎ½·´µh7¬¬(Q9  ã¡Æ)SG8^lPŸ^ÿÁ74/µ|EñV®ë”²Òü¥cÙ¤uÈĽÐÆqŠ‚ Q®OaWb€£û´ qÍMj1:cÖ€;#û‘š±@ywí9âƒàÿ€;Ôãm’&•,ŸG”ykú¸ hü^šLž8«4Ôˆ¹ÚyÁ( F2†tVúŠR»Ù[Ê~xc'Ö€Ôˆi–ÊêÆ<…;•XäëŠQfŽFrÐJTá ( HYnÐpa¨#úБ›”áíwTñ¥{XdŽòêúá|ͪ±ŽX(ñøþt¥†Ô þ)6Ÿö΀Ô|wŠÀˆ¥R`„n£ÐДu¹¼"íÇÊ*>§üèf‚ t @õ;K?i‘5íŶ¡ý©mcýµ|†a~1»;ü½ sžq^\ðU4\®\Þw½íÛu¿DqË7x¦¬Ýüû‘øïÆx¼‰m!þÏÅÌÎöq.#3’žNdÁ*sžƒQ—àe…ÒO›E¯_5éÕ~!†ÃºZ7}¿§¡çº£yšŽ<îy1ôìÕêF¶p8ëAZŸ _ðMÝì¿|_«ºóy ²·¨E$ÿèB“؉`B2*I-D2hÊŒõ cŠ(Å’ï~´×Ú D3@Ð@)ÁGüOý‹û?ǧDûeÕõX ÚÞD )ýQ:hq?-]÷7Žj5#Þä‚?­¨›€èE¨Ü8Ũ„äžs@j1˜AçÞ€Ôk6Çå@j3©ã¯¥¨ÂpÜÐŒ‘P˜/=ñ@jT’Î ïI÷¥vÓ-ËcÜ ƒ°±ÆGN(‰&†Bs ÍþîR[´ä€=*I,ĸ4`ZP3@ @T[çÒ€:¸Wlb€@~ÁS5ÙþÒ" ·wmîß»Qù þtÑQ>'ƒT^£wn9íÖ€Ô3‘Çë@j5Ÿ+òõ@í@j1Ÿ: úPbC­¨Ö9èG4£2;c4£K`h F3y 5#ݸsÁþT£ c¦? Q¦Oïq@j4>O9ŨÒs÷¿ZLóÇzQÊ›ÈQÉ1ÿ‚–|0ºñ?íÅúLM3øzwŽíPd‹y¶ÿEu\ÿ½íMó9ŽÑÛ5Eê0¶Fyô 5œŒÐfÚ§ðÅ©I¹²xÅ©?<šQ…°?­¨Òxë@j4¶3ƒ@j!Ž ¨Æ“#§>´£°¼þTÒqí@O<“øÐrþ”»³ÔЧ…´×ÖüM¥X@ =ÍÔq…ÉaB OÛ›+Ó­m¬âKhRÑTéRÌ™z4Àæ@‘Í]Ó¬ÌòG€:«X1ŒPôP@5M6×YÓ®l5kxnì®bhf·™C$ˆÃ ¤ ƒŠü×ý£¿`=GºÍÎ¥ðjxõ="re5Ì.-¿ÙFn}2C}zÕ&R‘òö·ð£Æ^ ý·ámzÍS9y-hP1L«œ¤ñ4¬Ñ¼duW©]ß'P-ÆIä~4QŒÀM¨…ýh HÙ±Ó„ävÅFÇ$â€ÔinFOZŽY•ÌyëÇZ£&³ræWþì`¹ý8ýjnMÈžòò^b¶¸õØ¿Ï4\9˜-Õês%µÁï#,Q¨\rëŒʼ$ö•Jõ¿Z.=“öQÑSÅ_´‚l¸d7É3ÝSæ?^ªEj~ïÏ#1îsPdL‡àÞ´ƒÅ>Ì®ï@N•d"Œ(N€ ( Lq "ø…vNªÉž òýY&ÜÆÖyà>±9_å@n­¦K|X_‹[áé{kÇþ†¦Ø>¿ðãÃzŒNº—„<+1oùk™·qô1²ÒŽaÜóýSà_î˜ÿÄšâɽm/àÀÿ:|Ãæ9}CöhðõÆN¬jÖ‡°š$ÄéNè9Ž_Qý˜/Ó?ÙZþ8xÞ3úŒQt;£›½ýüij ¶´²¾§Ù®Q‰ü3š™Íê_ ¼[¥öÿjh£«IXzœíΛyhÄ]Z]B}21EƒSóQ0Ž Ï#}Ô^§ü½&ÄÙ éÍ0/¨¾üô‚3…Ï¿v4­ÜE„u-ãUSÐÓÿ®*€²–À^;ds@j=ÝÕA+“Îh+Q‚u‘ ʪAëÜó͹ôßì…û5x‡ÅÑj4𦵦øwP³%4ÛmNØ\[ßHóHó¹T+¯ïæRêG4š±,úÿáwí©iž!“ÁŸ4»½ Ä–Èdk+™ æHGYífÿ—¨02GúØðwo™bäŸEÛ\EuoÖÒ$ÐÈ¡ÒHØ2²‘AE0&Ò€9â€64[#oaô ™"€;P¨ € Žqû£Šñƒ&·8öÅÝÙ'ŠÇ»ÓI€9­_J‘ÔàP ªèwìP5aOew8ß@Œ×q™IúÐ/¤QûÈÁúŠž XÂržd_î1Ê€8Ÿ‰ÿÞÚ´6ªêW² h,åÄÄga'Š0ÎÝ—?6Av;‹áï‡~ðV†ïã ;Hñˆ5) ÏuunU^SÑ&<¨†@ Ú‹Ø.T›à…üC`×÷ºu®•`ï,34(¨HÈPŶ ˜°ÜªAÁ »…Áÿd øŠe Éâ&ÙºÝ_ì“#Õc±ïmöÍÃæ+^þÁ¤ËÆVžËwi$$þA‡ëNè|Æ~Àß$œ%¥Ï‡§Œž%û|j?#ƒONátz_ïØ-<'ª[j¿n£ñŒG{éÞ“tŠG÷ƒ úì,Þ‚‹¤+žù£øfãÃr麇Ã[¸eÑmcKuŽÒÞ8ØFŽO“/BYË9ÜìÎÅÄ7rw;|=Òÿh/‡¶iâx%Òu8¤7:^¯a!Ø\+|—òa[†@ܤdRÜ7à?Å _þ%Ô¾üS[x‹KtÙ ÂHÛa½€v†V;]GÊ@À„`}"­•  66Ís0qÞ€; +aoPš( € d£1šò?ÂY”‘Ö€9é,÷™  “i¡³‘@·Z(r´yá„” æ€1î|ŒNPdþG$ù†(>/8JÁñ'…†¥Ër¨†A„‰_€Ò1‚}2FOa“Ú€<¿àÃæñÝÿnÖImgg²Ñ|ÁÏÙUˆyñÙ¥}ÍôÀR@z®­àKIt÷}mì°3H䯗´˜Èã<ŽÄúÓ“ñoˆô߇©¡ßøÇNÕî^þ#HÐôÛ_:PUs¼¦@ߌ@94ë¿ õý3â„tÏøq¥“M¿Œ¼&TØÃ T‚=AR? ô[K”f€.¤5ùGJåüñJø‰ý¼|>·ký‹ªÏ£]}¢0™žoÛÉÊüÃ¥m_h3ÛÝ>¯áÅEÔö5»±ß qý+õò¹®ðî±»¦Ã{c¼G&AŽEÚñ²œ20ìÊAzƒ@GûTøâçÃVŸ¼)h.|Kàñ%Ë[/Ú:s ]Ú69!£ÜËÜ2Œ`œÒ`zwÂÁãߨ^ØÝå1ÆVéºÏ¢¼RŸvŸFÜ;S×´}8[F }hT t  € ( ¸Ü¤P™xÊØÇ¨³×½sÛÿ C4[«}á@½š±é@¾œ§° [JRO€"mHû¢€<ö®šæÓ ¢èLSÕ=2×±r t?„mrßU˜ÅáÏÙx[ÃÚn¤Â#²Óí£µ…@舡Gè)Ÿ¬h+¬x†ËI)›X_ÝŒpØlB‡Ø²³Û,t4䟵§†mÞÃÂ7š'‹îV EÝu¿ 3›­!ü³¶Mм1ÇN¾©ógü)ñ Å€n¾$iþ,¶šO N‹5¦…=ÜÑÞ Ö1íŠ&ŒG;EåÎ@Æs’x=;Eð¶§iñçÄ®øoÇ÷Þ1–ôÿck¤ÑÁ ¯Øn–Nc)¿h9 ߌ!Ѽ âóð»Ç1x{Þ6µvðµ„Z¤RÚ]F׈ÔU¥ ?.ÞNrW¶}èþ¡ð÷]>µŽø«Mð¤ž3Öæ’+­ò壅ía²<¬Œx`¬Nu<@Éðàu׌~+xrOÇá}þËQ»ŽKIê‹yr).»¶œ2d°ÅX`[EÿÿŒ‚Ä6ÙkjĨ-Ükœ÷ã?õÇÔšëüµ–6I:0*U†A”à±å¡ð/ü_ðò᱇µ[:Õ’E¤Ÿé–CŸúg5Êý#”d"ìP0@P@®h1j±ãæìGjâïüs&zÊ›Gº‡‡…¸ô  í£|ÈÃê(…9怠ì(V zŠp„Ò€>eø›r#øî÷E´µø®Ò\kQ¬º|islM³2©_Ýwduã%HŠäµoÚ3À:ˆ|;iiñ"â÷GÕê;j;ÛQ Œ‘Gª¿îy/æ9ã®Gâ_Š>ÒS\¶Ñ~"ÿikz; ºÓ¥Ô­-ü¼Ì‘6ç06´Š^HÓ?IøçðÿTŠíî>%jºQ·Õî4_/Q{hšIâ`¬Tygä91Çg¯7ÄÿZÜk0ÏñaÖm²ßÇö›bÖäH"!‡•×Ì`˜ÄqÖ€&´ø›àk½CF²¶ø°Ò]ë’ið­Õ±k•bÊ¥uÝ£uú©hžÖ~:ø"%Óõ-ƇÆ6ö5Ù «Y@‘<1«–E$—œy¥p7üû_x?Å¿á»W±¹¹ñׇôé–U”\ËgpòÕ™‚§Þ,z⋹r<ûië-j6ki~¾sýçkétãÿŽ\⎠}‡L€ ( € ( <+ ù…S›MY@h”Ú,rš1@óøbÞLæ1ø £/„"o¹¸PY< Ê?vçñ  ’øjê?¸PÊ8Ñnt/ÚÇÁW—q•ŽÝ '¿¢C~mnãð  ¿¿cýWÆÞ5ñίmâˆ4{ؽ³YAe) #yG›±Êù'UXîäœR°×ÿ³»éSx‹FÕ¾#ønÏH¾ÖW\¶±¸±‰.bv¾ŠíÃÈÒn#÷eWæÜA"‹… þËú‰â? j ñ°éi ÏÊd³Ew=Â4An†ýþܺ¾6äuÅψ?f jß|%á»/ˆ²¼Ñ´[Ý*ëQH¢Ýzó¤h²0òñ‚Odb‹WQý—t;½OÆR§Ä,ÝÄ·ò²nžÜËwË¡&ãfÑä•ùQIÜ '¢ÀZñoìõk¯ïM7⇄ôâž&ÔuÛK蔋«Xï$I5u¸PH(G «2¹‹À[|¼ñOÄÚj:ö“¢èR4³išµåž&”ê¢ô.Ø®K²ßû¶dT½£þÏËoñOÊÞ-ð•‡4+=>íïm|±ÝÌWws41«NÏ<ðK6ìç=x§`:-öSÑüSðÿÀþð·ü)i«éZmÞ“wy¬r¾¤'vÕ”6å€2[¥;îý”5? øãÃÞ(°ñ%“M§x¯Uñ–óX±Á} Äð‚$áÔ)!ù<¯–â}›øƒöÓ–;1»ì:†`|voíÁtGýñ`}‰@P@P@„g­![¨ ˜ö ›T4ƳSÒ€>Sý¶tç𵮇ã»8^FðÖ¡§ëî±.KGgq²e÷Ì’±öˆúR`};okm©ZÃshcš ‘dŽDä:‘Aô Ó‹Ô|7e¥üB†[»XZ×\¶ûÝÛuæQõxÙÿïϽlÍà=¾í¬ }£JoÛõ0Áÿ~Åxv¡âíQ’òk84Ûv[¹-í¬ä±bÒ'y n n¯Èñ¼{†>¦•8òEµwvôv¾ô>šŽKFTc9IÝ£WOÔµ7ÒŽ£0ÓgX$Eº¶ †<€]K‚T0ž¿ZúL=Ì1ÕW´§úþœ8Ì 1÷dîc|øÅcñÏÅ^ ·ø}á©îü)£HÖ¯â‰v$W ŒÇ`—$–Èc˜WÜ9ìxDÈ~kKuú   MáH5hú|pBWMTºeAò’8ýI‘ÿí—½zż"ÀòÀ)GÄoÚ#âgáK)õç³³r2­o¦[ý‘YÙy®n>±JúÒ€ ( € ( € ( € ( ãƒ ñ¿¯ì.ìΠªŽÍf½n"dhæˆ{¼O*BÀö -ý M·WV³ÈdÓ´Ï–'ÅÀY\«.=3Óp5ôT*û:Î-8IE+|R{[ºKWÿœ4.å%D}åðÓá‡þø#HðŸ‚,ÒËGÓ!Ãå˜õgcݘ’Ä÷$רžQÄž ·ðíœE ’óP¹*ÊÂ"<Ë™q£=êÌxP < âõmnO‡š|6ÂæÖçÅšÍȹ¼”@Ò¨9Ú»”Tb)u$!#sOí ñsTøkði®ôÈ"“ÇZì‘èÚŸcçê,D À(&F  Ðß²çÂû_† ôË+óãKxíá¹ç7¡fi¹ÿž³I<ÀÿvU© =š˜P@P@P@P@(|vðˆ>ü@Ò>&ü%´7:µŽødÒcùF¯c#'Ó‰ìû·Mn¿¾jp&‹¨0žî4“É–9•Ë:KœìÚÌÛÓ!Tïm’–ÅuºŠ4}P•l5Ý%‚¦£i/•$3¹8¬ £òÜÅ&xp¬«`£‹^×¼9ˆ¼M¦IªÛ§SÑ£.Hõ’ß%Ôÿ¹æg¯(ÆWß¾"xkXÐüU¨è±ÃªZKesñK{…I¡;e•€<8©i=ÇsÆ?dßÙÛáì—a­=—toëÚ¤À¶¢ÞP• \ìŠ8Õ»’H?1Ç ,·b¹ô Þ.ÔõÉáácÇ:–³ZAõ¶%¦ÕSýñT¥¬éžt»’ûþjq,vóËÂÈåc$hq•@Ar£–nh´ƒMšÎ÷Ç¿/`ÃVÜÝ´ú«6ÿ8݆RsClÊRÎåþÓµÚâÂüCñ5µÞá›KvƒÃZ]Ê”’ÏO”bK¹ðÜ]/ʃªA–êѳ-ÀúîÞŽTUD @j`X € ( € ( € ( € (  ½gIµ×4Û›-V¹µvÉ ÿúŽAÈ Í|³ã…þ3ø ãMCÇŸ.-¥k÷júN£'•a®{ÎË[¼p.p#ãÌÚÄù€¾ñ×~>ëaÒä¸ðŽôç–â÷Á~ Gµ¹K¦Dýà@Ãzþís"oRŒÜl€V“XÔ~øieצ¼Ô£kéd¹s4‘À‘1`9i Yôi‚ö€2uŒ³[X_%χ„—‘Á,ÐÄnQãeŒÎ¬ÎX.>hÉ!†;à÷‹|m©ø;Äï•­”šZZ«Çm '™q3,ÛQ›ÌßZ5ˆœ}ìŸî€`Kã_øîkX<3 gK¹VV¾ÓŒ‚vmÉq•X,h~ë1¶î*J€aüEÕ¾üOkwº„×7f}#Âöù¹¼ØFPŸ¼•KF€+,mLãnJØ/ øëö­ñ<Åk´/é×"[–ÁŠ~Yµ-ÄãªÚ®Q<ÂUÍÀú³ÃÞ´ð¶š¶zjÈT±’I¥mÒM!ûÎíÝø€ ª( € ( € ( € ( € ( ¤fB’¨d`AVP‹üTý–<ñ6νÓìÃ[ֱ̋VÎso"2ËoÎ#p™ä£R°oÃï —ËðŽïõÍ.!ˆôÿYn!èÔ]Ö1Æ MSL ?þÒô5ŽÛâ_€>jÓDáó7Š?³ºç #¾€0#'™4®ÚþÕÞ:ñާžøð‘5HÔÇ ÔÞ6‡R’0z€¶Ð³ãØQp5`ðÇíñÒ=cÅ–Þ ÑÕ_aðFŽl¶Æý®û÷©Þ8M0;Ï…²G†>ÝͩݣÜë`ý®þK‰n/.²0D×’5Áã*žR… +îv66ú]œ6ºtZÛB¡#‚ˆ£ p0.P@P@P@P@P@P@P@P@P@P@ou4ø¼ËÉc†>™sŒŸAê}ª\”UÙtéΣ傹æ×?´ÏÃëÇàýCY–Ï^’T`¹²š52>6.â s‘ŽÜ×Ípñ©ì\½ïF}T87©‚þЧJôÒnêQz-Ý“èwPøÃGŸYþÉMFÐj›<Áfï¶F^›•O,3Üfºãˆ§)r'©óÓ˱1£íÜ%÷é~Íôù› w Øã€ ( € ( € ( € ( € ( € (ø©ã—øyà­SY³Óî5{ëxK}>Üó:©=¹’}rã1KMÎ×}_!ÊVgŒ†SP‹’¼ŸDßæúyŸ xKöø»ãx.­|áIµ^Lí6²‘I'’÷cE8HQGyÆNy¯Ž¥™bñ ªq¼›Õÿ[Ð9䘺ꢴ…Ò½·müRoðèu_ ¾ÛxÅ2üDý 5Ë]SIJ£nÓ‡‚ÖQÑå“£ºã„^“À«ÃP…žÛù¤ºt^¯«<Œû‰'˜a–S‘Óp§%kÛÞ’íÑ>­ëèyßÅŸŠZÏí;ñßÃVŸ  ¸€XH-ô¹¢93¼4— z¢ð°^y5†/S0ÄÅRV¶‹üÏ¥áìƒ Ây-j™‹O™^}VÖQóÿ6}צ|H]7⟼XñE­^X5õ”ªÃ*µÆFãw¸Ò¾¾†.J¯°­ñZëÌþ{Ädž×,Ï ­8Ï–Kù[W^«§–ÏB+Ð>tZ( € ( € ( € ( € ( € (âoÛ'ãηà‰ãÃvq쉴¨¼Í­µØ´ŒÍµ»AöŠøî ÆÔ…_c­©ûdž¼%†Ì2ß®MûꣷmJëÊí¯SÏ5ÏÛfk/Aᯆ^] 1=ÝÝ×›,äõûª1žüôãŠá©œòÑT(G•u×V}&ÂèÔżnc[Ú>‰+%÷·±Ëh_ ¾*üzhïüAçé>Œ†:†¬ µ¬CÕ#êçÓýkž–‰\ÒÒ=ÞŸ‡SØÅqGéҠùê½9cïIú½’õkÐúOÀïðÇöEð…Æ¢Ò=þ«:l“Q¸P.¯›´pÇü Ÿñc^æ¶.ã«ïÕú.Çå™´s®4Å*6å‚zE|1ó“êÿ¤øQãwâçíÿ|U èú!g`„ˆíãÂ8»˜úò{Šó0øª•ñ[šÑV>ïˆ2¼.M,‹ ï:Ÿ{wMÉüô_#ôVÚá.í¢žº9P:ŸPFE}êwWGó,àá'n™-2B€ ( € ( € ( € ( € ( =8 ¿iox[áÇÄŸÝ|AÐãÖ.õí ÐÚîÑn ŽDfI3ŸºÃälüëäóyÓÃלêFîPVºÓÌý«‚08ìÓ/¡ NHÒ­/ii5&šõ[£ýž¾*|ø[¤Ýkž+{{Êþ\¶úkK$1¯pJà3~‚¸2|N R³¼¯µ¶GÐñžAÄYÅXá°×T’»nvMý÷²ô9¯Œ¶~¯ãÝaÓÂv-e§ÆÛ,Òëæ`:n(8.t¬3 ÞxªžîÝëð߆X|¶ûTù¦þ&¶ô¿o¸áŸì³ã¿z¬^ ø¥wyáýB ^ê|\NŸÝ†3÷AìHЬ&O[ÕJÏ–=Þÿ"³Þ>ÊòO –ET¨¶QøSï'×Ñ;úÇñ/Äš¶¦~ÏŸ³­¬Z„¢ Nö½láÈ2»¿ñH@%›°ã®õ±U)J1˰Š÷z¾Ë¯Ìø|‹u'ŹüšŒàžœÏ줺Fû.»ísëû+D°²‚Ú#†5AôùWÔÅY$~-R£©'7»w'¦@P@P@P@P@P@P’þÓÓãOÃKÍ*Î+S­Ûs§M8l‹Õ7uPÃ*{tô¯75Àýnƒ„~%ª>¿‚8•ä9ŒkÍ¿fô’]Ÿ[u³ÔøWÇ^øgá†ÚK4Ú­ÄD-µþä«Ú2†ÞÞ^Ñò’$a†+âñXz¨E«ûKÙ§ÓäAåY¾u‹Ìjiay[„⮞ÖW¾ëªµîRø=ñàgÁé÷³ØG¬øÊ@ÒÊml|Ù¢bÇj $¦zô2ìv B2’¼ý’â^â|ÿ:QŸ%d¯+'ÝÙ]½Nn÷âgÄ¿Úĺðåퟄ¼;-5ÕÝà--Éîä‚N:ì'©¹¥ˆÄfU[‹Q^odz´r,›„0ðöñuª½’‹nRôÛÒÿ‰ïŸ²÷Àm/À:¬Úî‚×7v"&-Vò?.]JC÷äE<¤#¹å¾÷Lîå9dhÔubî­§ŸŸ§cóŽ=âúÙ%…¯e+ÝÅ;¨%²o¬ÿ›¶Ûè}2:WÑ– @P@P@P@P@P@!žEqþøCâ®-¯t;+é6%àŒ-Ä^é ù—ùW&'GZ‘ùõ=Ì›‰3 žjx:®:íö_ªÙž]àߨ÷Høwy,ÞÕÐ$Œ:¶i},îHÊ ñ^m Ž$Ý9}é3ës/1œqTöþYÎ)ú¤õ:~Êðž®Ú´úkkZ“JfWÔv´Q99ÊB F¸íòñ[áò\5sòÝùÿ‘æf~ fØÚ_WŒù!k{»¿Y;Éý籪€:+Ö>$uP@P@P@P@P@P@P@P@P@P@P@P@Pëü áïˆàm[[òèþƒÆ7¾9ñýµ‡‰Ï‡ì­t2äÜ$íl–¥fž_˜¶èÆÜØ4\,K7íeð¾ÛÃvšôþ#•4Û½Vmm>ç{ßD…ÞÍÛð¤Ž[“Å ·Ã¯‰~ø©áH¼Eà«×»Òä’XKÍ ÀñI‘$Ž@YH €E;‰èqwícðÏT³Õï-µ»Õ³Òôùui.&ÓncI죓˒âÑ:5rdÎ3éJã³7u?ÞÒ.üAk{¯Ãö ´ôÔ!Š)¢kÒتK,>îqžqEÂÅm/ö‹ð&³ã™|'§ê×/«$÷VŠíc:ÛÏ=²î¸Š9Êynè –UbF¥ u14¯Úÿáv½¡Zêú»}©YÝÞG§Ú M*êY.® …"Aé ª±} ìÆŠ.¬×ý›¾)^|dø]Š53hÍ>¥¨[Âö±²#A Ô±DpÜ‚Qœ÷Ï¥ ܱê4ÄP@P@P@ª|½ñÅ‹z¦¯5­¾ã/ Zh6÷ÓÄU'Y ½R9ç¬Uô<¦ÙcÅ?®<,<#ðïÃÞ-ÓSN{oiw åëRYÜG2¬ÑùA¢GòòF[ ÙÁ—.̯s¢ƒàwÄM_Å~7ñ޽má› _S×4MsNÒíïX±eƆYLcæ<üáqžÜW7*°N;©'÷CÃy¥ i¬Eù*R”ZµÌ·KKÛÔÛ‹àçŒåÔïüKrš ëiâØüEk§%Ëy2Â-D I³!ðNn23Žk…`«9:®ÜÜüÖéµ·>š\K–ªPÁEËÙýYÒr¶©óósZú«ô¾Å»ƒÞ+:£© ÑÛÄw¾.ƒÅ¦‹–X#Ø¢.ß½µ-·»U¼nG-9œÔ­ÓÒæ0â\·…Í죆t¹¬¹®îܹoµÞŠûÇÿ‡>!ø“á/ ÜøM4ôñ‡uëŧÞÎËÃ@ļ&@§ Ø}§+×Õ¥sóùrÆMEÝw<_Uý•üqâKmk^×ì¼wâãÆñm¶…s;Ëcujö‹nöÒÉåå_nq&Â7(8Á¢Âº7¾ üñ.½¢øSþ‡ü-ðëÄÚig´Öô}uá:9y÷Ê….¢‘FZ6À,àTY‚hÇñ× _ÀwWž.Õ|AàÍ&ö/‰­â­)5í@ÚZÞÅ%˜¡yJŸ.BF Þù¥`LÈøðë\ø©oá¿«è—vZoÅ=gÄw0n[{¨bY-·.]|ÖXã!KSCnÇ¿ü øi®|6ð‡‹4ý^k$¿ÔüG«jÖ²ÂL¨‘ÜÌÏ`@ä2?Zv%»ž/ðÓöføsâÛ«ïW¶:”7~Ô¼5}wý¯5ãÞOs21•"dT·ˆ¢àFƒŒsžÊÅ9žý‹ƒðïÇÍáoi·Ñ\VÊÃí êP[ÜÄÎ.Ûû±#©³ÜZMØi\ç¦ý§-­í.Ÿâ5Óáð$ž)]̓˒pUHùwy¬ ómÃcæ[¡v_Ú®âÇKÕŽ«ðÿ[·×ì5­3G]/!yf7ê­nûóµNæR~R&Ô¡«~ØcKÐôv‹Àšõ÷‰/'ÕaŸB²“íÓæògÚñ£y„¹PœsÉZW°ržƒàOŒÓxÿâ7ˆü5§xWV³Óô(­ÚëX¼‘#_6x#™!}ýá\îÏ ´zšwŽWâÏ|s௉þ·Ñ´±xu-#`¶°\ÍnVPw9"Ô¬›²3'qʸìI­ücø³àû+¾µñN©¯øbÛÄI=޹ô¯ô«xîÌpÆs:$WÑNX˜ÎKgJýŸ~ Ý|W‡Çºñ^Öŵþ¡¥ý‘ï {x¦G’P‘—;W škQ5cÛ!·ŠÞ$ŽÞ4Š4U@ =íLD˜ÏZLP@(Å-P@P@P@yŸÄÙ×Áµý[YñnŸ<ú†§ Iỉc™“ý ßyÀwGê)Xw°ºÏìõàíwNžÆîÚö;i¼6<(R ‚€X c£d›­; å­Càg…õ=~óXºŽøÞÝêzn­)[‚Ïb· v‘ÞÜϽýœü)p¶rØM®é:•–§}ªÛjšuóCq·’.7C±û„Â÷Ò°\ë|1à/ÂZLj5M+íM{®Í Åô“Ê_|‘©Ÿ$kŸS“LW9-Kö|ÑuŠw?"×|ac¯\¤È-52°˜b ¬!;c$e”`1$žiXw¤þÍž ÒuÓ¨%­õÕºǵÒ.îž[+&»ÏÚL0ž~ç¨Ø dÑ`¹[Ký˜<¥é×ö‰?‰§k>-&ÞêmZc>Ÿg‡Žy «<£$Šv —Ãï†úGÃ{B ¯®®u+¶¿¿Ô5 Ì÷s•UÞîzáQ€€$¬#ª¦@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_ecom_s.jpg000066400000000000000000000203211231776762100255260ustar00rootroot00000000000000ÿØÿàJFIF``ÿáExifMM*ÿâmICC_PROFILE]LinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3descƒlwtptïbkptrXYZgXYZ+bXYZ?dmndSpdmddÈvuedK†viewÑ$lumiõmeas $tech- rTRC9 gTRC E bTRCQ textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÛC    ÿÛC   ÿÀ((ÿÄ ÿÄ3!"1AQa 2$¡Ábqr‚‘’±ÿÄÿÄ#!1Q"AaÿÚ ?i¸ã€Wš^k¯J7ä[<%®1H‰GIjZ“¸ü9‘Ö…$%9ïý>çWR|ÈžËZxF{DçÃŒÔ6ÒÕPZ×ÈÙߨƒ¥j>r ¸œ¿ÁÃ~4_†È~ÛøWÖ¥±[ᜪÌÕõ³‚ãŸ9iv–Ô•3Wq°>˜ 鶬ä(ß—Œ/¼ÐÑy„‘W‰H¶îën})T–+°ÒÏÜH$(“Ø÷Ê8¥“fÀ„(‹~ã‹ ˆuWˆP£ÕçÔ”æHC¨mĸáp§Y…'ß§Ápyó„š×àJ†² ¦ ÿ.2úôàß%"†Þ¦2ÝùmG´ªRÃ’ê ¶KoŽ­;æ2=½qÒ|‡Æ3È{JBJÁÌœ¼œy§ B»ëBÛ´ëUe”À„ü¢O*ý±©dÆð„³QqJaÅ n¸”ê+êÈ}ý1vyD)e¸´juµ!´õ% 9n¥m;þƒ¤Þpw¶m»Äh ¸Î>ÌWe¡Q­ J7Ž¢œM^®ÖåÔê}þ›tj¿kØ8ßìF£F­ƒƒðÂ#’^]+\) Ï¸¸ŒËQnJËÕB@Oå‘—JU§`­É vÏ/\.Û7>étê˜( £ÂŠOÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_ecom_x.jpg000066400000000000000000001227011231776762100255400ustar00rootroot00000000000000ÿØÿàJFIF``ÿá'+ExifII*nv(1)~2¨i‡¾<``Paint Shop Pro Photo 11,202008:09:16 08:05:410220‘ 0100  Ô  6 –ž(¦m%HHÿØÿÀ xÿÛ„      ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?þ÷ ûß1ë@?{æ=h-ı ’h–ÿ„çÁfY ÿ„¿MÆvº›èÁÐóUf•ÈR‹vLè­¯-o#Y­.Òê8xœ0üÁ©Ø«§±8<§Ìh÷~cÖ€<˜õ 'ï|Ç­òÿ1 =~cÐPž~ñéý(ÏO˜ô4÷~cÖ€ç÷mó†€OÞùZ ûß1ë@—ŸðSÛCþƒáµ¯‡<9¨ÇiãMrÞW–v?5¢Œ<£Ð“?è§gw²9êI¥Êàÿâ×íññçöœø«kðÛáoŽo¼#ðê ÄZý™*ì…¶³’zû ŒšïŒe^vŽÇžù(Ú[–¼SûjþØ¿´Ù|OðöŸñ†‹•"ZÜÛ¾¡æG,+û±0F)Ê®ï÷«Ñ–‚hå§Y¹YŸQüÿ‚æÁ_,m¬õ9þ#hþ*Ò¶)Aâm毨*­`°ŠJñGCĨ»oøcþTý¸üÑÉñGökð—Ä& <û­i£cïµY¿–+)`䞆‘ÄÅîϱ¾ÿÁÕ³&²ÖÖŸ¾x‹áõám“¶žÊÆ{äpߥrË %ð³¥V‹Üûª÷þ ý€õ‡w¾7ø}â=kÆš¤3ÅÑŸJ’Ú\3a›{Ÿ*äã4C VnÈš˜ˆA\ú§öuÿ‚®þÄ¿´›G§ø[âý¯„üRä)Ò|@ÂÖRDz±;ðjÊxz´õh¨b)O­½ô¿ø;]Pú'‹4ýaaZÖñ$ñRk¦·;M]\Bçäœ7›ÚÉAéó†€~ïÌzÐþí¾cÐÐÏñr:úPWÃkÅÍÄÉ ¼jd‘߀ªI&€?ƒOø)í§á¿ÚkãGÄëM½m!§::]é×1ƒöxÉUE ¤vÉ>¤×ÒS¡G‘õ>ru¥íy‘ù§ð«á—Á]í‘xcÆ“xFwº-9Öìwe(@žr;×u P¥“Üä­VumÏÁYš¿¡x¸2”acªÅ—ò’m8>„W§¬™Ääï±ÏêŸ>(iØkßêB0~ôV"ãê¹Vo`O¹ÄË.«¦Ï²òÞm:e8ĨÈAúhJÊÌRi«#6ÿû#W@šæƒa¬€w“qh¬ÙõÝŒþµní JKbݵљSM°µX Á-í# Æ?„ sCI+!¦Þ¬×¶ÖotY¤žâ[¥™ˆ½Úl(éï×ÜÕ%b¯vyßÇ_ˆÞ3ð‡|;ñgÀuÏxžM@i÷öÚn£,à&èæù ÙVŽx>µæW§óXî£RIY—þÿÁk?à¢_eè_´N­¨ÚdšÁK´t? W—*Q“;ãUìÏÒï…ÿðt·íù¤Þiú_‰t/xõÖ óéOžqÕ¯á\ò¡®ŽÈÔlþÜ¿`ÚÇZý±~hÿ¼Aà輫4‹oq¼…á’M˜¡<€3КòZ³³:á.esíÇÿVÜŽ‡µ#Aç?7N¾Ôòßí¥ñF„³OÅ_I:ArÖ'N¶,3™&>_òf?…kN<ÓQ9êË–›gù©üLñD–ÍâŸkp}—J²†ãY‘`HêX±ù»ú«òÇ^Ç̤å+#¢øC§ø¯Æ>ðWÅ #ứ|;Öö(šÔHÓ&àÄ0Cœzw¢2ö”î–†²ƒ§+6zÐø‹à ¿xËÅ~:ð%ÞÅ´«§i¨l–ò· ¸0P@÷é\¼³Œ)ËnæŽQrršÞÏC\˜Ê¤¦ìκ29ÞkCõÏEÿƒuÿà˜´Þ7‰>øÄþµ3Ço©†*eN×R0{qÇZù‰Ê½)ZL÷áW4ÕÿàÒO èÚýž³ðûöœÔàŠ |Øíµm9€YÒ²öÒÝšª1ޱ?©¿Øsöl¹ý“ÿg¯|¼Öâñõ†ùn¯b‹bË+H0ü+•»»*±õÓçËn¥"ÇŸâàuõ ç›þ ÙûKÛ|=ðÂO€°ÉåÝø„^ë÷GwTOü~B ô0Êõ/äyئý‘ü$þÓš‹é¿þ&ÇÓMu~"Ñ"œœg;p99Æî>•ëViSv<š*õUÏê³öUð–•ðïöwø]á5·@¶š=¼làdF3ÅwÅ(ÅEmyóTrgkâm;ÂúоÑm5`IB­×Ö¯s‡™­—¼cû?|ñað×IVnKÇdŠIú€ &“ÜÙU¨¶gÌÞ-ý‹~ßÇ4z·þfl«Y^8 ô‘úTò®†ñ­&ýãç=cö-×´™ ºÅy®­”°ê6I&~¬»M.V¶f¾Òtyf«û=|bÒ ¯ö6»;”G4±üaE§ÐÕ:m\ò]kAøáÿ=µÏ‡—‘D™Ì–S¤à\dÒ—4–èÑA5£$’[9ŠS†Ú®ˆ½.gkhjŸðAëGð–Î]bùî!HsÈÄ>Q 6+æ±-?¼õp·ægôF@žµäžØª1´`uõ ?ú¶àt=èä}ï”õ ã þðÅ ?n_ƒ/4›­Càô$Ó`•XlK·ºpÑã®â­ž«» jÑæâ 7¾3øS¦|VÑt}_ÕçÓ–ßÄëÃiä•QÕ„mž@ùZ÷*AT+<Šu=œ¹Û_ ~Ýß -´+C¾ðޝ£¤¬&HæŽUàc885Ô¯c‚QŒÙßZþÓ_|A7—gâö²‘€ÂÞZ:cñWfNš{qøóÂzËìÒüUe~AÈTºŸÀâ“vÜ^ÍìŒÝZkÀžfÖòØn FA§t.V´<ÓT¼q¿rò1Ú‹ëcE»8=Bø;8ÁQ»9'ŠÑIlh“Ù[ãkø­´MZä¾JÂÄ:1üèm6kï©ùõ(kíHD»‹Ë(E÷$ñS²¹GúÁ*¼ má/‚’¬vÞT‘[ZXäîù¿V¯•¯+´‘íaålýKÇO”ô5ÂzÀÝùOZcÝ·ÊzqÇÍÁëë@Ì_ü]ã{-?Kø àËtŽZT»ÕgŸøü„ÚAÇ÷˜šõ0©¹¶y¶¬‘ü¨[.]%ì"+åÇ$÷&NNÜ¿Ìsõ¯¢WØðÝ­s¸ð¿‰ô"ÂçLÖtÕ-®'Iš`ªY6‘ÀÏcÎ~µ¢ihÌmÝ7ß u¼­^ÚM0*–Y" ±UN: Å›8è>”hÐ;ßB]_MðiµÓßþ(uÔ˜»Í Üå!\á2O=¹Ç·­6—BÕú¢¦ƒ«ø½µ)l,>#¾‡4„m}rÑDàxnG!xõȯ/ˆXj^ÖQr×d®ÎÚ4iò&—«(Eñçâ5µÃ õÆÔ•NÒ² p@úŠíI5s;ÙØ×ƒöƒÖCgTÒ`½<ùca£—°Ó]Q‰¾,è!Ð/m#µžÆñ“ È'ÒŽW{–¥´G“ü$ðì¾)ø©ð÷@òŒ¢ïX·ˆ®zƒ ÏéU'h6b Oì¯ãý/áÿÃk] ȶòÉpó°ã$`(ý¾J³NvGÐá•©\û/Hø·£ß²+L§#¹ŽóÔôíJÓR†9­Ÿx'$@_[pzô!?{æ=høÃÿƒ†¼t5ßÚËÂÞ ·”Íy øFÝ"Œž§•äb¼W»„IE¶xX§yØü½Ô ]êbéÄZ„QÚG. Ù9¸SùW¬¯sÊ{°Ÿ©M¢i2_›A{xD.Ë Ys• Éž9Œ«F.ÆÐ¥&®y®›âi5+ÃhahnQÊHƒ±ºSRWF. ;3wPÔí4Ñ^3A¼íVd éž”)E»"œZVfU½Õ½Ã¼v¬“œ/J{ D0Í<.˃‘‚)ŒŽGvRÙ%²3Å@ó0äØÐ×°¿†[Å?´ÏÃÖTiíôùÍô‡£×ÏU¥ 0Hþ‰<7ûAÄÒêÂõX¢™£P§ŒŠù);ÊçÕÓIA$}ÅðÇâ ö°ðî äqÞ ÔýSøL÷RépÉ;66u4ënvß1èh䟛çïë@Àÿü'Åÿð™þßÖîàAekªÛéPÊr  `ß­}5M3æñN«GåSÍ Ä·Ûàc#ßìIÜs"ªŒíóq]ÊËTq=ìÍýSâ׉ücâ?ÈQüC¥'R@WÄ[¿* Eéé^téIÊñ;á8¨ÙžUà-´+Èu Ru¼º”¼· Ú¬Ùéì •z-SåG:’s»:‹þ9ð çÃOø/‘~",“&­~Ò+›¦wp¢ å¹ÉëÚ¼º|Êw;gÊ¡v`ø~ÁìôÔ\¢]O2@d•°¨‚I=Mz§(+Dä§'¨ŸtÀ~<»ðׄ™ðÎÛàý§ˆ¤×ä›â#ß\ǨéÏo±m DC £ã–f-ßøq_N|×G¨ã[3Îü/$оÝtŸåF¡HçqíŠö*TäÏ>ævñGÁ¾&øKãËŸëþCj©*Es! Æ$\0Æx5*ªnÖ5©O•]½î£¦§[Ï•KF‘˜É8Áâ´«*v´‰§·ÍÌ´ -?ËezòG¬K2E<÷2nØ„ŽGm¸çŠQQ…78k¡ÑûZñ¥QÙ6‘ûà/Ù3àaðÄ:xÕü?­êN›]õ9_Ï•ÎèÈ (=±_ÍÕ3ŒÛUÖ…eŸÃØÿS°|Ây.lF_èÿ|i¥YxZù®4B•­^o0Û²0S‡êTäŸ~N+õÎ̱9…ÓÅüPvºêxÂÙwc¨ÕÊn©V‡2RÞ6vhû{ötŸÙÃãψÏîg½¸ŽÂ&=þP÷Ù¯«Ä´çŠ1½D}Ûû8xõ øæhÏ$ |ówgÑÅ-Ïèûöbøz¶Vv³<{qœ•¤Y÷ìjcE p8 õmÈè{PÎ?¶/ŒÇÃÏÙ[ö†ñ–v½„¯ ¶æ…‘qø°«ŠnI#*ŽÐlÿ7~w[jI*éÖ‘Ú„k`Ç{d`^sü«êÒÒÌùW«¹FX‡Ú^ hUlììãBAÆQœþ'¥%v8§'dyô}S׺F¥â¿Oö ¢²Û•ÀÚOÊà0åIndW-7Jr²ZSŠ»fôzÀM)®¡Ä1²à&ÒrG#ÍtTŠ”lÌ äâyѼ¼ñ‡‰OˆüKâÕn¢R©³Üx,ʼnbØsÐTÓ§Ëï&\æä¬Ïqð/Ç-_àŽ³?‰ôM-ZîmãE)<bùs!RÃa€5…ZnR¹½9¥à_øÃÇþ8¶þÆÑæ¾ñ&±uŽŸ§@<ɪ¸ÄI§*´ð¸yV®í®ßbR•jŠÖ¬ý‡¹ÿ‚uÿÁG|à+Í[I°Ó¯ôË;6¸:<Ì3ÞF€dˆãêX üªÇØWón!à¬ÃËRêMïf“õ?©²>+ãþËþ©—×ýÚZEÚVô¹ù?âkïÞëKâ뫹õø\Áp· ‰#e8*TýÜzb¿¡ð8|‚Ž %®|ÏÀsì÷8ÏñÏÕs©¶½dº#öölð­æƒû*xHh‚Í­kr_ÉŽ AÓúVX™+Ù7†W›gì÷ì¡ðÌÉ%±òWøIȯ ÷’²±ý|5ðìz‡l<µbqŽÔ ôü<¾´ÇÿV܇½~cÿÁaü`Þý>2$s‹;Z[M9 cIÔŸÑMtQWªŽZîÔàB{» Èî|µiõ;‹äQ;¶Õe݆oÈp1_P´V>Y»» šù#˪ƒkp\ž03k)ÅÊ<¨ÚQ•Ï$ø‘âOüGÕ4dÔõD]2Â(­÷1F0‘ª¨ÀÏ©ú×4)Ê3ægDæœlgøKã_†|Oám{âw„Ç|i ÂçL.ÙF9ãzö©®›w.“V±ó kž*ñv£«éš{Xè¡ü¸\¦ƒq/jÖx‡Gѵy¡@7É eÏ‚¶áî+ÆÏ2ùæÙ=\ 7iJ:?=Ͱxˆá1‘®ÕÒgõkoÿiýŠæððñ4ßà‚uS'ö|ºdëvv‚ߎ=ëù§ ñ ¨ðÕ°jOù®­ë¹úìs<½¬*µä0¿µ×ÅßþÑÿ´÷Å‹þ Ðåм=®jÉk èI¢Ædub¥ˆ÷¯ë>Ëñ^KKŠ•å¯ß·Èü›1ÄSÅbåZ’²lý÷øyàFBøIáh!Q †—dQÆâäkÕÄ;ίu³÷‹öSøfmà†WF<Šà=côâDÅ ©´`P —äïé@ p|¶ù;ÔüûÿÁÃ>—Bý›~ø$i«ø€Üʈq¼Å*¶Z»púÕùn)Ú?ŒAy¼ÖÎ7‡*2Œ­>fm|^ø¿«|@ðG€þÚøRÓF¶Ñm “_[Ú–p[,îç’q´qœž¦¹!N\ç\¦¹nŒ|8ñß‹,è6¶Š ‰dXã 鹈ûW¡8©+3âñÙÖ_•»b§gÛw÷"¿>|KФÓSâ Ýûi yV®% (çbºäcýœ¥sªqnÌèÀç8Î-àæºlþæ}Wû ø`x‹ö†ð2G™”æõÀhãõ"¶¨íÜ?µ¿ƒ:ß¿†Úv¯ñ7ƺ_‚ ™ÑcmFñcÜp'5òR’r»>® – \Aÿ"ý‘ô•û§Šu­J²qaákÙáϯ˜‘•ýk>dj{çÃÚÏösø±=¥‚~-éޱ,-0Óå¹\*Ž¥£|0ëEÓè”(Á[r“Gz øòÛ“Ðö ¿ooÙõiÿÙCãÂ;{cy¯]éÆïHBqþ— ó"‰]¿i 8IIÔ<OóñÞ›­|?ñŒüâ½ ø¦ÚôZÝØMÆ€¦r¤c9ɯ¤U£Íæœv‘Â[è÷’‹zž½:Õ)X9Q¥%¸m³nä`äâ—:*ÜÓ¸øoi c“¸ªôœÒÜvV±Å_øVæÐ«&æˆþ•JZh+#’Ô´G`JÆwƒÔŠÚ2W&Kª>”øñû@ø]µž¿§Ú\5´S@"¿CäȲu9¨÷ME«3ðüï)Æ¬Éæ˜H{Dãf»~дgþ è^!Ð<)¤Øè±_=³®¥ÆÆÚˆó cш¹ûÆ¥%t¢yù.SŽYÂÌgKÙAE¦»üDÿ‚phy]ì]?ÿeé¶ã; EñgÇ–ênmükñ8¤ÌÀ°ÛãËLFÔ-ƒÉ8óVKSéÕŸ ÂÁÒåÕnµ¯ø‹]¤‰oz$1R€X3pFqéU~à|¿ñŸá‡>!Ú®·ñ»á‡Å¿ذ“F¼Ó4étÍbÅ[v÷I£Úä…%sŒ‚)Zû›à_‹??f/øcFø“â™>%~ÈZ»G§ø{Æ×ñãPÒnØ•[;õU\a›‚¹ÞÀ~Ãuo{e å¥À¸µ–1,R!Èe# ƒôªÑþ.G_Jü¶ýª?à‘¿²íWñNïã_Ä êiãÉàH.Æ™©›xnJp¯"ÉlpH#8¤e(«DÂT¡7y_ Á"¿f¯ 'Ùô_…Ö>Zãs•¿ÄÐç7»)B DŽâOø&?À‰ h&øc¤H…qìäÒ§šErDZâÞ5ÿ‚5þÍ~%FÿŠûÉ$¾3ÂIü*ÔäŒÝ*rÝ |Zÿ‚èfÞâãá·Žõ ã¬vú•¸ž?¦å ßεi'sžXx·t~=üwÿ‚p|{ø+w¨ÿoøëXÐ!}©«éaaØœ ¯â+¶ÓZœS¡(êÍOˆ›I uhñºÉŠô£4Î)EîÏáÓumcVmÃú\º–¦Á˜EE›h“èTêFrbŒ¥Êu¿ðHø'Ü?³_ì—¦ø—âF‚ÓxûÅ6‹­ëÖwüÊÒåZž3”_©5󛛿gÑš†§¹þÒ¿ðP-[öý£áψ|§øßÁKðôxWM‰üÓ£² HÈ}¶ñ(U!ž2ç%·+ììnf|@ÿ‚éøáíΕ¥û5x’ånu›=¢MnÌ\FóA¬ÆîÂùªþzaÊŸ”ÒæÍtOø-þ›ãO jŸð˜~ʚLj$»MORÒ ÑõHAŠÚ¿³[FÒ1#í O.‡j’¼uÁÌíU†‡¢|møM­|&øÇá4DÕtTƒ\Я —ÜD WåÞ¤²–^7¡#µ^ëP/ñ_ü/àWì û'xÓÄüÿ>'êzÞ™a¨ø—Q…RD·šò8äHdF»³É'¹¬ªNS|Ò*ãd}ñëö´ý­ôŸ‰ž?øIàÏØ·Äz‡4ÝZ]3FñN,Á%’8¼È.†ÄÜUœªm(êZ²mßCcÅ$øûûmxçHº·OؓĺgŒ—†êmG[ñ Ä‘ $–ʾN[s¨UMï8ã*ï`.Åñ¿ö¨Õ“0Dûf«<Ï|ÉgæDñ:Còÿ»æpx¦Û̵ۋ⾊ßÚÏö"ñeÜ ¶‘nä^˜™¢ŽT·ÂÀpÎïŒÕG~)_°©­þÔ¿ðQ/ øçÂW¿ÿcÝVòçWðø¿•õëË›è­cIÛu´„Ù3l46úõì­âßø‡öâý¥eñŠº ö©ðïÂÞ!Õ,Âû%ü¶e‡ ÈÚx<úÓW¸ªGø¸}jÀñp:úÐëÀè;ÐëÀè;ÐéÀè{Ð:§ó ¯­'aÀëë@;~Ö¿ çø±û:|\ðE¤7ZÅΑ,ºxöªÜ ßÛ ¢“WV‹ø;ñ¦Ãã×ìÃà‰¾$·±ðÏŠnáHµ/Q¸B!Õ-åòç¶9 Éê¬ é¨Dhšo|A¦[êºo‡´Ùm¤^GÙ#ÜŒ:« pÀðG­0?'~ |Z×<%«üDñ—Œþ)è¾ð•wzâØévà˜!fË ¤¾Å\·?Ä:q_Åï8ã NŠr¯ìðЩʽÕòK»gë±ÂeTð4íjŽ7zþ'Ø¿±Þ¡ñâ÷Â=/â߯¿‡ž𿉭áÕ¼9¡ÙiÃíº{Ǻ&»vá®$R®Ê *d/$_ÙTÛtÓ—còY$¤Ò=›Ã7þ‡Çó]ÚÜZéŸo¶k=.ÆÞ%_28˜´“¶ÞÌÜ)8È_zשͱìR|FøƒûJ~ÓQy'Ãþ*ñéZ$‘¾LöV*¶±Ê}7y,ÃÔ8¤·¸ $}ï”õª#ï|§­ëòž‚€ uùOA@:|§¡ Så4÷~SÖ€”õ Ô0ud,¤àƒ@“¿~j¿³ÏÄ_|CÑüuâ?Ù»ÄR K^‡G@÷^ÔÆÔ:¼XùÑ’5äíV°Á†¬À÷ï„îüi¡ZøŸJÖ£Õ¬5E2i~0ÐÞ+­7QrCNŠAY§Ìpw`ôÅØ!ý¢¿fÿØûö¦×þx›ãƒt/k>Õ¤Öâ‹NÖ'‚šMˆëuÇûØ™¼²Qò 9Á®YaèTø¢™ª©5³=ú_‹6ºþ¡yá/ ù~=’Úh^V†hH+O#mfN€ª€03ŒWTRŠåŽÆm¶îχ¯®µ¯Ú›Å^!øUðoPžÿPÔ&wÄ/ˆ6ì¬4ø‹,š]„ªC4…òŽéò¨²x5{ýtð'¼;ð×Áð„ôåÓ<;¤Ù%•¤ŒEPX‘{å=h#ï|§­ëòž‚€ uùOA@:|§¡ Så4÷~SÖ€”õ #ï|§­Auim{Å¥åªÝZÈ¥$ŠU ¬PAàÐÄ/ý†|o©ßx›àŒ5¯ÙÓÄw2 ¯¢ðÕáŽÊù€Àó­ˆh[99% 56ì‰k²‡í×5Õí¦ûPxç@½µw£Røo™âÈmŸºØ„dÊÒ³`vþý„ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿí$Photoshop 3.08BIMÿÀÔÿÛ„      ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?þú( € ( € ( € ( € ( € ( € ( € ( € ù«âwíWð§á†´þÔ56ÕõøÎ.mí³¶p·_\Vñ§9+£–u¡fy†§ÿý™|9ŸâÿŸ »›í hõ;I }EKƒCUbÝ™Ýx+öàý’þ!Ca?…¾>xnò ÿgyµ…d)ê¬ø—# ŒŒõ 7±~ÒYô7‡üeáB×ñFâ;qÖK Øæ_ÍIšksDÓÕ ô ý "… € ( € ( € ( € ( € ( ‹¿n_ÚŠÃöbøAu«ÙÝF<{«°Ðá|>>yˆô@Aú•íZB<Ò±I8ÇCøøý£m¨>xwXñ>»¬=׈.¥É›tŽìN:õf9Æ}Éàõ¥QF6‰ä*m»³ùðñÆ_µ‡ÄÈôëjU¶šo0G,Ïö[‰Á–B'l'B×,a:²´NÙ8R4ª¼Qðš?xKDø5¯|Fº´ñ¨Í?öæ…96Ây ìdY(ã(Üž;W³O fÏ!â[wŠÐù_þ[ö²øã KÂñücñ&—ªis˜¦±$±qʺ%YYHelapk™ÓMÜïN-]h|5ÿ‚ßÿÁG>}’ÚÇö‚ÔîB/ëPðóèjª«]Ÿ|6ÿ‚¹ÿÁ=>*yxgö”І¡&´žoÞ úíÜâk Rš-Tƒ>Îð×Ç_‚þ1ò…¾+øw]–P Em¬BÎsþÎíÃò¬Üd·4S‹Ùž?ñ³öèý–¿g_xá§Æ?ŠÖ¾ ñn¥d5 xe´šDX‹VwP­Ä}ÓíZB•IÇš æ3­Nœ¹fÏ{ðņÿ4tñÃOi>ÑíZF¡Â{„àûkœ]¤mFjñgwH° € ( € ( € (‚‚Ì@P2I äþ SûEŸŒ¿J\Ïsç±¥ËÑë:ÜÚÿ‹üg®<$wZ¬ò ^„ *ô)E¨]œ®ËDy߯o†W_î<â êÖË]‚Üé:Ô—…&(Ïî'?Ää!1`r(¸ÆHÆ¥')sDé…gò³Ðü០|5µŠ [nÕÛqªH£í1àÝUÙSŒœžNð§£ MÍݤ~,Ôc”Mmy5¼Ý ‘¹ó¤’½Ùkc˜Öôoøº6OxNÏS™¾õäQùWôÉ‘0Xÿ½¸{t¬(I\|î(ùÿÄŸ³=”Ï%Ï€u瑸ƒÞ±•8T\²4S”]â~ô|ÿ‚ö~Ðz‡m¼=ñ@Ðþ!kÖñˆà¿ž#k-áî»+,jç b¡IÆâ£-^\ð0Þ,î†.¬t–¨ö/ ÁϳŶ¯qáß‹¿úðí×û,üF¶Šó¿ü7¨ÚÈ2’>¢°†ú6æ²pšÕ¢ý¤;ŸKh~6ð׉-–óBÖ­5›CÒkK•‘5$Vm[sDÓWGH—18aÏNh8!¹"€€ ( € ø£þ ñÚÃàìÁãßÜjÙš–§öŒÁ°ÈÒ«yާûÉ ÌëêÊ£½tR‚EsV—%6Ïá·â§íuá_Cuá©þµÿ„šà0sª¼È•?*qƒ†„)í_W(Fqå–ÇËÆS‹¼OƒIý‘<ßjþ(øGâÿ Ø=ÂÎ-H\[Þ"°-,#b¤ÖÁšæú®«XéXŠëFÏ[±øgà¿Üê¾øïáæ•Dê,u+i4ó ŒŒ¡íË€Hè{qšõÒ‹§Ëyrrnö•£xêvf¸Ñ5Èf “ž2žþ•¤£d'#‰Ö~ ü\ðªÉ&»ðÏ[Ó¢RwLtÉL`uûàýk[7°¹“zi#M´7íÝIÞ¯~³’v³.=ÊÍ3($9VdÕ _bÇGq(?.1ÉéZ+õ"[ý¥Ã¦0AÏÄšJäñjÄÅ·œÏ=hµÈM­ˆ´ew9‘@z NïRXu2b}i®aÒ¤¹ +ÛAæ:ª¡è£©ùÅb“¹m¤®ÆéˤÙj—7::bÍ*LÖâ7p8FaÎqÆN=jìžàÚ[›â·|–`ã=ªÁß¡•ûIxKÂ~4ýŸâ”lö_¼5©[ZÞy’·zlû•xÛ»tR¬`~ìÄg…çÖŠÝtdã.^‡å&£«JÊžX-´€â¼ë&w{G{£GAñ®£¥ÞÃsc¨O§Þ! ’Ã1V_¡ÇÙ£ERîÌúGÃ_¶/íàÛ«{ß üsñNuÌLuɤUv+úSäMY›]^éy|ÿ‚ÑÿÁG¼3©iZ&›ûIêú•œ“•oUX =JªíBÞSï\³§¯ch½4gö·ÿ¬ÿ‚‹|Vý¥cðgÿŒŸø®ïLšæmdA l^1’ì°ª V q–lñä8¸»3xMÊ\¬ýÑ9ÁÇZGH -P@Ì_üëâÝÆ¡¤Ù|+Ó¯–+>[)™„7·²ùŒ¯èÉ´g?ݹjôpÑN|ÌññRmò£ùñ)°Óî쬬uY.‘–x'„FБŽx$rqß*Üw¯¥ºz#ÅvkRE¿½ñŒü9k¨BšF‡5ì2Éf>s–ÁqÀ €3`s€zœP¯}F’[¦‘£ëž2×´ý@6é­j7ðÛG-ä»#V’@›Ý¸ÂÙ9=Z‰·9" ”ä“=ïãoÂi> ÝèV–+‡XÔÞ..l¡–ÝKŽ T“ç^r<ç°WŸ…Äýa6–ˆë¯‡Tš»ÜÛÑ.?iÏ|,Ñ~*7ˆõ¿ øfú1w§GqªÇ0šWòüÆ+Àápœ©Ù T'?g©„ðóŒ9ÚÐæßö¦øŸ¨‡ÅvúŽ¡#hWÐàl…Súפ¦í«8yRتÿ>k{£ñoìßáùó’_F»–Ÿ H¢¨Û»*¶Œ‰tÿÙÄ,é>0ð5à iy Ìkÿ}€ÕJq}p–èŽ_ŸµŒÂ1ûBC§Èà ·¢I>²)ÇéMJF M;4eËû$xöñ]<ã xé3ò.›¯Ç½»ý×ÛÍ §°-š<ïijgÇ¿ mKáv®ñ¯-%¤h\}c-UÊú 8£€µ¾ñŸüûY-®ô31k{»L+ã nG\dõ;²î™CZñ†£¬Â-g±Ó­ÆàL¶šl09±(£ŽœS3•úœ ‘Ô*ç-ü_çÞ›ÐÑÞúEü7ø?â?Ú6çQý<,©/ˆüg¦OYT5Òž¹ˆQ™ $0Nx®JíF›“èkI9TQG—xëþCÿ*ð܉~§ˆ2@[)¼æ#=seýkæ~³O©î<4ÖÌøÏÇß°íðäÉŠþxƒOu%˜ÅdeÉïÀÉý+U^“Ù™º>Vñ‚> xNå ñ?…5= E匑÷ï¸ §Q=bO³œ^§¡ü †kïÙM(1Ãm;îdqY¹7¤Ž¨¦Ùþ‚ðA/ÈÚ¿‹|~ý >5øëà·€ü7ˆ,tÙ¥†îkrH¹Cœ#g,Ó©®8Öœê:q[“¡ÓS“>öƒ_´ŸÃë«m^ëàÝü“Dw¤š5ôsõó6ŸÐçÒ½ªG[ SjÊG)ãxç[ÔaÔ¾&iž)‡P†4‚3¨èÓJ#@UPÈ€À=1Y¹¸»´>VÖŽçGâÚªOxEøjþ#Ò¡Ó슢)8¹Úª#%¾` (OòJt¨B£«fΙԭ8*rÙIç<£#d¹ÀÁ zסÍÎiÞÀ_k'˜98Ü0qíúÖ‰´î†–¤ð])dÁ Ç@zš.ÑNÝK3݇ÀSµ€À‹²³Ð‹í2¡P™L£5i½Ù ës¬Ñ¾$xë@T]Æš®Ž¹ÎË[é#¡«ºŽÀÛ{žŸaûRükÓ£òŒäÖ Q†R¶Šä0ôùÔŸÖ©JVуŠÜ¶ß´®n>9ø!àÏÈN$t¯³ÌOûèÕkí%³3pŠwEIuÏÙKÄxYø-¬x:áðZ}Ä''Ñ%Λ¨­fŠP“W¹ôÇì¿ñöbøñÃáÏÆß x·[ƒUðõó_ŧøLYa‘ö2Æìð{ ²…ZnB©¹ÓŸ:?¦¿‚_ðUo„nÒÆï¶—W3Ï£êFI1ݼ‰#R|õÆq_5<мÏr8Õ{TGé/‡Ÿ|3iâO ]Á¯ø~åH ¡î¬§GpExÒ‹‹´b3Œ×4O5ñoìYð3Æ1ψ~øUåÒbÜGûÀgõ©I-‹>Uñ'ü»öñ-ÌדüÑôÛé\ÙDcƒÔnä⯚FngÛÿ³_ì»ðÏöcðpð?Âý´}În$ó$.îä–cÉÀ¥Kww*1QVGÔ `éH¡h € ù öøøª~ þÇ_´¡Ô•©EáétÍ>éO1]Ý‘i¤³!ü*¢¹¤¢ú³9»A¿#øý§üY2êþ·°xͬZ,“É &c"YYJãÓlHF0FÀ5õ­7&‘òžLøÊÕ¬tOxãÄš•óÜÀÛögn<¶,çé)@¡»+±¤ä쉿àßÏ\x“Æ_¾*j0ƒ=ÝòÂ$+€HùÛŸ«×ƒ‹mÍž¦1¨ÒQGõ¹>e:B%Ž7PÏL×´|ýîyþ·àß _¼±^é–ï\Ë‘šzØÍ»=Ÿ¼Yû9ü$ñ5¬ë¬x;M½ JbKE?ÐT´žŒÑU¨Ó>TñOü×ö}¹f“Dð¼~ºqóI¤ÈÖÍÏ¡B*]8tGJÄÔµ¤x&µÿï‚Éäÿ„?âN»¡¾Ü¨–e¹½e G_jN ú3EˆM{Èñm{ö9øù£)mǺf»‚ÃûGI>iïÊÁñÚVšÙš*”¤!ÔþþÒf]CáÕ†¹®L–«opŒ€ûê—ï–/–”µLóëísÅ:.èüKð¯Äº,jØyšÑgAÓ „»b‡6•äƒÙvfø«àE›eæºt7Ï ª[½®~ž`SRªÁî?e$¬‘×Xk:V¬>•¬ZjÀd‚åJ©Íj¥³3pqWh¼Yd äŸ8©å•³ýkDÚØ”šÐ€\“i8äO™ŽÊÖ-Ç1ùvç'Ž*âÛÜ,})û!ø÷Rðíð§]°îáMb®­”ñ<.ÁdCìT‘\Õõ¦Ò)Y;³û¤ý€5›™§ø‡£Ät°°Ü„=L‘‘õݕ󘅪g±…nÍ¥8ƒò¯8õÈÞ=ÜŒ€ ¡õú( € þxàã¿ð|'ý”¾x.ü‹ßxÍ.&wúËkHšFöšKvÿ€ÖôŒ®sÕMÁ¤$¿lí÷®Øè®sZþÄ>ÿ„§ö‰ð FdŽÖäÞ8Æ@§ŸÌŠâ­w ?»ïØA6Þ ñ¯ˆ¤Qºêú;Eb;F¥¿ö ¯ž®ÝÒg·…MEÈý®Õ ( € ( âþ¼›Åþ(ý¡?a…zuÃǤjööŠݹšò8˜¨òÿ!N‹¾#—Èç¬Ú§t~,üOÔt{ÄñF¹ajºŽ«©j/2Ë ´¬Sj‚iRI}áÁõ©Ù$Ï™nîèðÚ/àgŒþ9|³ðσ5 [ ≠ԗ›–éreØî •l##œûaV¤9"oFq§SšGêçüƒÄ? ¿g߀Þøeão?‡|Sij‘\çOàwæ+*¡^¹êG^Õt¡:pQdb%³¼Ó½?âWÃÏžø£áínl|±G©ÇæŽy ÈüEtó4õ<ïf÷.j:fªÐ­ÌpyÈÇ!Ѳ0zùSæ3piêqÚ‹\ ’ c\e€z««Ø‡3”¸‰‚CŒm#×·ò§u¸ÒKciÙbcæàä Ÿç4÷Ø\«¡Î]ÝÎŽ™$€A'¨#§q¥ec™¹¾Üe2*wô¤ßV3˜šñR)œÊfÁõé&ž¨Ó”çï®bfXò ázÏò­ÖÅ¥cž’`Ó1R$œc­Y»ŒÂ¹·œW ç=ê[W³zŸ5|dÔ°µ‹•·–f#ПŸ&²hêÚ'ÊÓÌy9#“šÑ_—BÓßø%Ç…´þ-x—Ä¢T±Óv+ÌíäpUk™$÷Gû"èCEøበâkÙf½~1ÕÊüuE|ÝVGcé0ñJ’húf¹ÎÀ € ( € üÿ‚éþÍžø‰ð×á/íâ î¼KðëQ›SÓoa—cC*¯Ÿã‚ ùãûÝŽ+ZQ½U%¹ÉZMBÈþ0õI4¬ˆ{›Óè8·HÛK©-÷¶C:ܳ4ȲDŒŠX«º2²£Äq[4ÖŒ„ÓÔØ¶ñŸÄ‡×¯cæêÔb!šÚ:“ÎHB‡š›"“}OÒÿkÏ‹šVØîðâ´RM] íc> ‡iJ “ÎxïTb\u oãh9&ƒmÕÙJYBd1ÐçÓÓô£ÐÍ´÷(¬æ.<¥kˆÏ™…Ae`1{(•îÍHu]jÝÒH5{¨œC%¸"åŽ#‘‹:uû¥˜¶:nùºóNíjh’ÞÆœþ4צV]I4írÙ¡Hd´¸ÓÖHFwF laÚÀÍ6 ~ñ²orn¯tbÛxŸQÓæ7:@>o×QˆØÎêb‘3åì$–76Ó¸žzçšç«Jjn•UtÕš6„ç sÁÙ•b¹ÏæÕóõ¤ùZGf.UgÚÚWÅ,…胜‘šñÏ¥=7Hø$›Ôg `ð÷ÞVl¤Ôn ¥|âº|Äž;лÄûâýT’€ ( ã¯þ ø–—Ÿµ—É‚h^ «[^§™œ0Š#ƒŸjöp‰¤äÓš‹?Û +VÔõkP¿xî.®Ï”¼Ÿ*(ÂÍÜôÉîO~µì|Z3ÊzlUÒo¢Xk#±QÓSÊÄ:¶™ª\i›F÷j¤‘¶VT?u×<àò9èA«Ð„£8ÝÒ+³;]ðßFòÉ€ã?_øÏQÐ5ÅÕÿ³ì,/t´ŽßRù‚·Ù® Þd²&Yœ,;@ΊÞZ›S²;y ÝÙð†£­ŸŠ®í´¤[X'µ[Ém£ÀHä,ÊÛG`vÀà>‚½ª2r…™çÔŠŒ®NðŽ˜­gu¨Ý.ÞÞîý8‰ÈÀþ™5¤æ ®Ìã7dGxÐßHZ=^æÁñµ]mÑ£¦|¾ÿ"W"¯yY£©QIYdšÞ¯¢êÓèZ¸íª‹2K f9baòȤŒ• ~0<©®ØÊ34NiEÅÙ›ÐêK0BF[ â¨ƒInUÓ*Tñ‚:Ð/*²6à88ãš¡æ¨O~oð ¬?b~Ñž¶x‹ÅÇÚœEç5ËUÞ6öKö±ñ4°ø›Áúrmìé—=ä}¿ûN¾~µ”¬{xxû—<£ÁZõÄ“Cós‚3\m$ô;“iè}éð¾êYÄ#q$àÔ›Ÿ¤ 4Ù.Ü•ëƒÒ€?G>èâ8bfB8šö‘Ç  € (9¥Hb–iG)fbxPù¹~×^/“ž7|]¼»C&³â+ífÚ'‡p–6¹uUݸa¸Ààäã¦kê(¤©¤|•Y76Ï›îµËá;ý;OˆÙjó³¬;änÛNèÍj¬Ì%³mÃ> Òc•šn÷Û’ìehËß1¯åW«Ô—¦ˆÚŽy¢S:^;ÊMÞp”¡LÎ{Vm&¬ÍSiÝ'â+›¯O%½¿ŠÔé¬Å­ )#¡ù”qøW¡~§S«tløsú/‡tÈìô›Hí“(L`×>ù=ëÒ„Tcdr¶Û»;[Yíôí:þÆh^[;²³F2U×;\ýH#= îsÖƒ’º5§%fgx³ö“ñì->]øóÄ^'ð%ŒæãNðÉ»žKX%Ëb‰Ï—%˜’ä’O&¼¥»õ=+­ ðO‡|Cwwªø§Å¬•û(Kd|ˆ!\ì=ú’O©5ëÑ‹Œu<ÉÉÊWg¼ìÏ…5K(œ4é43•Ï;2±üÝ:Ãíc¢ŠÝŸIé_þh_±—Š~ CâM[Qñ¶³â]N]*{#öK&¥ó&Ì¥>xŪäD%$]â6!¼§çÌw^ÊÈüîÕµ˜uïG³5Ä:u˜´iÏÌdwÙøoÏü ½Š ¤ÙÁUêuúL2º¨EŒ‘ž8®ã–Íìt±‡ŒT`àäžÔÊÇJ~WR ñŒ€q¥5c"V@ûœ ƒhúUÿ¾Ð?´~1ëzô‹º;-1Š·»?­yõÚi$Ø_´~©ý«ñ_ºZÇ ªóÓ†?øó5xU5v>‚†”Ód_tÉg¹ƒ w+ž[I]è~–ü Ъ„'$sŠƒcõoàGlLg'b€>þð倳±×h€:*( €ѤñŠ/Þí-ãPYåu 1žܱÆbH¯&­I9XôiÁF7fí1ð o…ÿ|Kðç[ÖtoÆZjCoH”¼M+Â’…S$`¾ÖÈǯf¬iU•îgµf|áàm^mcLÓn²¬ª¬2yÁæ¾…;«£Ëz;Ët³[Ú!ýÐy ÒÈé9éÜïÅrΤbìÍc KTx爤ִG—Vº±¶Ô´¸Ø4·À«Ä?¼ñœáry*ÍŽ§š#Rva*rй¿¦kp^†5HÊä{v®´­¢17œI4"TíʦÁƒŽ<‘YÊ jÌi´î&Õô}kT‘íÛÄïmdà m£DfP2? W ¡i]ªª¶¦Þá­@Ób´°A†bÌÙÉ'¹'¹÷®èÅEY­óJìýýŸÿdË/øR×Ç~4³Ôµ;i­í¶•¦©]¶ààK3à§’ÁÆîq_ˆç|MŠ¡‰– -Üwv½½ï.ð·,ÌrúY×UåWîBü·íwçÑ#Ü5/ÙÏöz6“yðÎÿÂ7ŒFâÏ]¼óÐäƒòÎò&rTí_G‰³Ê59§;ù4êúþð>3 ˃§ÓF¤þZ¦|)ûF~Ïú÷Á7Ó¼O¤êçÅ¿ 5 M½ž£åˆäŠ` y/8} G‘‚ ܲ,þ–mJ¢å¨–Ý¡þyq®ª«Sntdíwº}/ëÑýý/òÜw©9ÜÏ…<àq_¢ŸÍ YØý¸ÿ‚Sè"=#âˆÊãÌ–;dcí’Gò¯:ªmÝÕØÝñMÛø›â‹u`L‰sªLñœó³yÛúb¾~R»lúh¤£c鯄þ2InÅ dVÉY\ýQø3áMÍk˜ùÈŽÔ~ªü,ðØ‚bcàÔPÒñ Ž4@cŠ’€ ( ÌŸø,¿á ÿ‚üoxæònuDµÑ¢Ã`·›r‡ýððÍmI^¢^g-gËM³øñ=Éñ&¥§_êS¤ŸaÃ$Pdp»w¿<¶=02Ië_OÓ>fO©CŶ#Gñf…à˜o î£yrör(„ ¹Nã¹r@è:Z´ÓWNÚ‘j—‹ªx›VÕ¡S S]<è„òl€:¤í úÜÜŸÅ÷Ú±¤x¯ÃÞ!›Ã^%´'¶¼h%‰‘B#Æàƒ’ t9Î{b¼z‰ÂwG£¥ AûG~Ð~>øÇâÏx¯^ñ%ÏÄ?‹úüÛï5)­´ w*(U*(PŒb•íII¨Ýð×ö•¤ØH§d1"dŽN8üëßNÚ3Ë{ŸP|;“‹ñÛá\þ6N“Àpê–wZ„:¥Ä‘Û\Û.ÆJÉ0]‚1‰ÇâϙͣԔQ_öÍñÂkoŒµÞióü3[X7>Ù"¶ÚF.bŒ$q«¢Êe@ë 1¼*†cÖŒ¶îµ>5øx·¡èŸi‰’ííÐË¿¨8ãë_DšKSÇ>Ÿð·"( X·IÀàŸzö“²³<öÓzãá?üLñâÜ|7ðLj5Ý^× eðýœ³M #ƒû±‘Çã_?Äeôéû,t£gÒM~Lúºy†´qY{”eœnšù¡Þ&ñ×Çm*öo x¿^×4-B1™-µ( À= díÜ×Ëa²Œ†»ö˜xFKÉÝ~v?pŸ‰^ aè,<ñ³Kå¾×üO>dIu3™ïfmÓK!,Î}I<“Å}õ4¨CÙÒV^Gá8ìÙâ31«*“{¹6ßÞÆyF@‘F§Í,^þ+½½.þþi-àØïJÓ@1ÝM¥Ãä™Xný×…]ÚítuQ/ÂϦ¶o/¦0¯»»ŸCÔýHø7á-ÍkˆðAÞ‘¡ú»ð—ÂâmÏ–8  ­­a@‘ŽÃš±@P@Êüã;UøÙð;áÍåôqA¥xjçVhe—bÉ,Ò…PÍ‘¶&Ç<ž2 éátnLñ±Z´æ;MÖ¯¿µµmZÊ&²ÓÒáÒÑe\†B»\`õC—=Tõ=kÜ^òÐò.“"Ь-šëÆ^'ŽO´j §ìIw|¨ ˆ›ÛcIÆ{žhI¥f ¦ËþUu[„_2â;Id…÷€ê;ä.[þXÕmCCJvs¹ídøU§ø;ãgŠþ,øOGñ¥ž•¶‹ew©\Á|ڌŒ·ò¦Aå ß,¥ÒUÛ Ò««ÆÈôîÓ?>~&ÜÛK¯x6% ý¦ÒÍÁçÉÛ–ÏÑ‚ãÓqõ®ü;jV8ë%dÑè>´yÒæfÊ[Ç–IÈP?Ÿ·¾=k¾rP\Çe žzƒœdúTª9«3’¤]âwz5Ô÷Gœ«’ÌÜJéïsœ«â]6[¤hÓé `·Ú Œ“ÓîÉ"·æ9í\ÎTžŒèŒj-QÃèÓhv7rÛGbÚ}ü-²[y¡)"gHÈàƒî#ƒšÒ1‹Wr½¤~‚þÀü1ûKþÔ? þxÆvOÎÓêz¬qK±ç‚Þ'•¡R0Fò €ÄŽE~}Å9¥lŸ#«ŽÃ¯y$—•ݯò=¬³ ^6jli>ðÆ›àŸh~ø{¤Ùø+Â6žU½µ†Ÿf¶ö¶ÈêÌvq´m`ÇÜ®3_Á•2ÌncÉŠ«QÊSjíßí_¯em|î~ö±40ÉÒQ²_¡…ñ'áG€¾=x>çÀŸ<§üIðT°™îÑ|ëPå•f·âHœì$ÁÛŒŒt0ùæK/¯àÛI+Ý>—kmõ³é¶è©ÔÀccì&µz|ÏâSöÜý®¿d_Ú_âWÀôÕäñ‡a,wz=üŠÏgÜmO”sÆx¯<÷R²²?W~ øH²–‹ŒœP3ôÇÀz*YÚE!P0¼q@•@P@¿ð[§ŽnŸŠM5ðM?úvŸ © ¿lžA—ig$óì {x^UV|ö%§SCñŸÃ~0U²ŸS¶†TšâÐÃo, ‚½[pD@Ú“G=»°?3B»Ysì¬[ïšôh6¥c’²Ñ3èÙóã?Šþ|Mð7ÅïL‘øŸA¼1,À˜æV$‰ñƒ±ãgCŒ1ÁšâÍ2ú¦¦ðÍ[úôa†¯<5x×§ºgõƒðKþ gû*ü`Ñ´íN‰–_üdè¦óGñúÚ4RwÎÛc‘s÷H!ºeTñ_ÁØþâ<–³XxÊqé(_ñKT~åC7Àc)¯jÒ}™ÝüEÿ‚ˆþË? ôKÛï|}Ò|K–¹Ót=E5 ‰Âœ¢*Æ[ô,UG¨®,>YÅyœ^4çË-2i|Ûíÿ êc2Ü3ö×W]·?”Úßöˆ×kOÚ Ç5m0è–Ú”±Á§X—Ýö[HcX¡Œží±AcÝ‹cý½Ã¹DrL¦ž^ÚÕ¾íïòì~+˜båŒÄºï©¯û xgþÚ áõ“&ø¢»L1Ùïé_k&’ÐðÏècÆv©ëžÓÈ% ·i°?Ûlì•óÕ§Ê{˜X¾G&}ðsÂ{šÔy=0HÅqž¡úÅð‡Â‚(­qô ´tûakk@`Ïz€ ( €ˆ Äœ2I4þr_·§Žæø•ûM~ÒŸiƒ}⛵¬ØW%(2¹Ë( ;¥}+Ø«Ÿ1VMÔløâê÷ÃÚw„õ º]Þ(h¡·Ù]h´aHÜÄîê\Žkºé;³•¤õfu¬—Öþð¬z’¿¸ÞÈÊxŠÇ·ð11üi·wtBÒ×Q’X,! )·I¸Š ?‡ Ïr¦;ŽZ•4[4é¹jÎ3ÄÞÖíÂ[Ù5?Ý^Z-åƒê |›ˆ˜²Ë„‚7!ÆAàãÉòoS­Ò\§“éúÝíÁšÎù 7ÐÈb™¹WS†ès^ªi®dp4Ó³=GMu[4ûÌOÄqÅfsÏ £’}†hmX®ÈòïYèN"Ô ½²±•¶sk4Q3áË(RO¦s\Šäí¥JqVf•…¾¦Ø¥®™VÐDcüõ®¥Uds¶Û»7ìu­A’,< 2¸'p9¨&¦IIY„[‹º9 GⱤÚj=…–¢mn^[D˜¤eÉ]Ü€q“‚G{x®‰Ê1Wf*.NÈKÍúäf+­+8 ¼ŸŸ`L gê@÷®'V7±Ö©ÊÆCØK¤ÜÀš¾Ÿ.Ÿ4«¾«¬ƒ¦UÔ•o|ƒÁæ¶Š„þ9s(Ù›btØ»ÜçšÛ•£˜ýÿ‚qhO«übԵ阺~œÍ¸âc´~†±–®ìÞ=3F:—‹™Œ{„QÇ8ôPOêM|ÝWzŒúZå¤Ñï‚þlÚ1О+œë?P~èIkm˜Â€ŠöÀÒ€ ( € å¯%§„J]H)½Y”6Îù•ciÝìwSmÆÈö_Úûöœð/ÆË/x’ÓEÔü/y¢ZÝØÈšì2Åg§™|Û[8 qÆ<¨L“ª‹…( q\Š)>h»*éj~pxm®õ3^»G·7×’\ìuÁX•Ͼ0M{4ïÈ“<É4åt}s¥¶‰§X¡2\F òrÛBäöùErT|Óå;)¥Ëv} ûb~ÎOìÇâ½Â¾/“â …íµõž¤o4Án’Og¨Üé×H‹½÷Àf´—c’¤ó•R¹!Ò¦Ó%–=CK»Ô,ÓPÓàÖ!M—p±;7UL+`€Ä0$c+Éñ¬ï©»¤Ò¼O;±×†£1´O»iW}Çù5é+5tp»§fz-ýÚ6™£ÇÄAJHÁ/žsÿÛ^UVùìwÒøØï„¿³×컯~ÈÚŽ/ü3/‰µ{ Üêz–½kqtÒ[]/”J²Ç$m7AQ7·gC†QÇÉ&îÍyÒv?›]µ>ñŽª·üKÚÑ﬙0ÝG†B‡ÕÀ1‘ÐïÕHÞ Æi“?…³”Óe™á] â½¶ÒZžaûkÿ½ðÙ]ÆÞ!•yï#³F¨Ÿæ+†oK‹­Ý‡>k½jæf‹vë†ÁÇ`p?¯˜“mÝŸ[£‘ú›ðs‚8íO—×Ôšwè¶BÊÎ4Æ (^€ ( € ç|]c&§áOi°¡’[>hGrÈ@­'ª°šMYŸæ'ñžyl5¯øSK´HõHõK‹k—’ 3bPØÈÂà`wæ¾¢‹nšk±òsZ´Ï-×´››{ÇV¶i®™m"iÄ~ãh'csЀz×M•ùŒ›²±/¦Šoëg Àn\F@à(b` £…ŸÎØá&xeRd8 wýjÎpSVf‘›ŽÇ¨øZ Qâ—Y’]N$pËòníòŽ+™PŠw¹£©&¬hψ‘D#TƒÍv¤’²9Ë×:ðKuºGc)"!b œ•#®3Ïþ¼qUƒož']9¤¹Y“ñgãgÅ?‹Z•¾¥âoë_¼T-V O\¾–sK«¾B[jä$÷®TÜänå«#–Ð<6ÚE†Ÿkræ{ˆ†é\Ÿ¾äå›>äšõb¹ccÎnîç±YëpéZ¿‚¼@úu¾µga,m%¥ä{¡˜¤žaסVdw× Ejšž…7î]OþÞÿ>ë^3Ò´¿„©¥ëšR\Íuâ5$†+›Y}¢Â[Ëmí„hÅzÓ¹2yùytfŠM«ô?/4F{讵‡FG½½šî0ãÈ̹ü¯b•Ô,Ï6m9]ûj7¾A’ ´+#‚TàqŸ§¨õ¨©$T&âÎ^oxŠ?ÝCáá3‚pEÐ ?W*§4·:X½)Xiþ(ñä7zìÐØéÑ‘"Ú@I AÈ,Ç®öæ®4•îÌeQÉYžŸf‹*œnß+ÑŸüÂé§|ð¤Æ2¦ÿP’íòÝÝé^eY{­¦\æ‘û­ðgÂlílî…ˆ,H¯>´ýNøgáÔ·‚È;P½( Žƒ@ @P@!è~”þpðP¿…w¿kߎ¾ ž·H|A<¶ä.Äí¹X{澃 .jI>‡ËÖ‹K3â½2¯øûI×õ;9à‘¯c\( ûÉŒŸ˜„>Þ€f»Ò±Ïddj•ÉçƒÈÝÎ?w LK„󊜅8#Žãé@“_œy4“2üëžPE5eˆƒ˜„ˆp ö jýo!~ao†#8¶WAwÔ{FIõMlêe^ÚÞI}Žå­ØŒ*GlƒÅg(©-M#'O3Õü){«Ê±kZ¤·x;´`"¶9‡SøšˆÒJWf®¥Õ™Ð辸Ô/l´Ý6ÐÍs,©mm c%™ˆPâk¶éhyÕjB7Z«²JìûÿÀ?²Ï‡5 Ƈ7†µŸ‹¾+H ÷V:OåD«÷ˆ4…Ï/¸Ç²“Œu›?›q;ñŸƒ|QðÓź¿üab–ZÝ£˜_tSÆÃrKc Œ¤xëÈ \Z’¹ý/—ãðù–8¼3ј֬òOQ/%‚ãÜÕ»[SÚ?¬?ØÇÂñh^øs¦\”´·¶ÒDó¼ŒPÉb{z׃^IC•˜xÞª¹÷ŠÿoÙËöoE²ñ‰­uj #O+M©÷Eµ¼Íwrød†ÞH‰ œx­¤}!é^ý®?à¥-#Ÿà'ìãM/ÂŽ¹·Õ¼g}¥x4äôÝëjR'¡û$,{…éJò{јà¼ßÃáï„ú}©†Ÿ?ÄÕyÇ Þ¾Ùš7P#›ö ÿ‚°|ÿOø±ûkþ8ðìcºŸüS¢ø¥•½Š®“rO°2}3Eä€÷/Ùãþ Óû;ümñ\ß u™.üñ~Ùsá=OOº´Õí09ót˨¡¼'Œ“Să–”M4õ³ô÷C×tOi6:÷‡5‹]CºO6ÚöÊáeŠUé•u$Áèj€Õ € (ùAÿƒÿfy´ü=ýªôM!®4]JìMvX¢Üa¸ŠCž Ù£Ö6ɯC >Y¸>§‘Š…ýô.v:Åô𶹬kZ‹O2X¼¦V,ï¸y1ç'Ç©ÀQÍ{®ZjxÇ#;¤²H¹É¬9Fµ„·#*`r9毙$7õcSBð ž"‡'Ð|ªÅ¸<,%Àp‡4¹˜Y±ø"1Zß*F3Š9˜ÒKc:ïÁÐ(m¨T‘éI6¶“Üånt9í÷2ŒóŒT¤úŠÈ¢–2m;Áã×¥>b¬¶2nì8% Éàu­WÐÊI-Q/ƒõɼ#â]Ä Jö7‘ÝÀÆðޝãŠÓKÜò1ØeŒÁÔ¿µ¾ô~Ÿ|øÙ¢x6Ûij¶qã?ëénògk ap ÖxÇœM£r€èW'ŒeV“z§oCù; R®MZxL]=t¾¶ÙÝYö‰ì¿j+ã/Ã]3–þÁ>&¶¿Šy§Ó­“f£´óΓ9mê©s1x£Q³H[æU'%N¼¢z¹ŽmO‚ö*<²½ýwnÿ7t~U~Ôž3±ñWŒücnÉw{¢h ¦]]!Ég3I ŒžûCþlGjPVwgé<…ÄÐËeRº´e;ÇÓ¿ÞyÃ=5u¿x_K˜<ž}ìqíDÜÌ7êOju%ËŸ´$Û²? ŸÙ×Fý ?n-zïÃõx¾|Ó'f«ñ[U¹MÑ‘¾ßK…³ÍÀ ºaaû¥wA#|¥Zޤ´=ì=.Ew¹ûû=üýž?cI-_öjøoiñã§{^%ñ—‰.e»Õ5ÇšejÒ/!‘ ‘“>ZÄ.UDlS—D´=í›m7ö¨ø¥¦ë΃­\x7í:„O¥I©émaž D×1ÛLåO• “ ‡akÇÆï,95`z¿ÂÏüLð·ˆ<-}ñâµµþ¯»ÙÞéIâ+‹ˆž6–éÀT”)f[0Á,L¥Û–zÔFÐþÙ>Õ48u+‹_Ù%´W÷KÙ Ý$2È|»¹& öyö #m¸PÙx•¨öœð?ì“ûJx/á×ÃoÛOൗŠ|UwaexóŽo ÞOÈ^õe–Í‘mî¤.’)T¶rÇ”;=Àø#Å–ÿµwüoX›â&©ãí_ö§ý†%•eÔ|a¨Ä×:ç†#8õ¤…s¨Ù…ÛF$û\ *ÜE•šØÜƒŸüñÃÁzo|©C}e<1Ë$q\¤¡‘‰•Д’7FWI”tee$¤î€õj`P‹~п|ûG|!ñ¯ÂZ%Ɖ«Ú4++G¹ ”r’¯NU°q‘‘x&“¾è–”•™þq¿¶_ì¯ñ'öDø×â…^;Ó$³ò'2XÜ…&;˜ |’#`eHïüŽ@ö)WçV–ç…R›‹<¾ñW‹.…¾… Þësž‘ÚZ¼íƒ[©Á;ÈÉFRvGÔ~ý’?h-R(ä´ø7âFF4ÚL±©úTûzi^LÙQ¨öG¤ÚþÃ_´´Ê­ÁíDÓsD¿Í…fñ¾ƒT*·kdý‹ÿi½6?1¾ ê’ýÊÆçò i{t·£Q½Ìk?>=hÉ»Tø+â{Xe¤ ì ¼ª@ªöé­tj-Ñâ:Þ“©iÓ½¦«¦Mex Ñ`}ÁÓŒÚÕòÊög1q¤,ªwDS'®:ý+uQ%ïÕŽJ÷Ãî¶ Ãh¤š¸ŽvçC•KƒÀ늴íª•Ô¼?$ŠJä6€kU$̹_CˆŽçÅ^–Yt-bçI•†dJB¾?¼½â ^Û.//Ác£ËŒ¦¥nûýû™Úߌ~#ë0Kÿ]‹R °· aß”þ´µ{ž-ÉèOž•üîÿ6sv¶Ñiöå* pY‰'ó­SIXû’V‰ôïìeû?x§ö±øÑÃÝí6 ·?á%¿µr’}žRBÙÆã•y€`Ì>ìAûµx5ê9Ë•lzp"¿Voøâ¿øcáÀO…¾WÂö²†ÊK-$ˆÇ"æh˜aeåŽ>hüåWII7Û{ÜcË}|5øWáÝÅ1Íð_ÃÖz§Œ4¨æÒõk0™,ídÈq!_>åHpâ#+Ít]ÄŽñ²·bÏ¥à‡„õ@&ø‰yñvôó ñÀ–ØžÄY [U# aoV$“NÝÀÙ‹àÏÁø,›MƒáG†¡Ó›ï[¦…nÿÀvb‹ 1ßàOëßx'L—áV¢>d¸ð¤ÆÅwöy OÜNGa4n=¨²è€|]ø[áýBX/><é–×ú|b(-¾%hÖqAwcr¬‘­ò•eEY$ û´6ÛG*ÝÀöσ? ¼EàO j¾ñV¸ž$ð²ÇŸ¦iò x¢¶Hü²9+ ˆ³íDMÎîÎÅ ?o<®Á%¿k/hßíg›öø¥¬>›á1)á}vVißÃë“gxL²Ù@‚ï|@ÇÌ…§TÀýþеÍ'ÄÚ&â=ù5=PµŽöÊæ#ò˨dqìTƒV­P•üLø+ð—âì:wü,Ï…þø‰%‹,Ž»¢Áv`cÔ§˜­´ûŠ:ÜM'£<Vøá«+q¦øÖz˜œGmej‘"ý@Ž·I+#†€ÖŒçýpNpEY‡à5šƒþˆ½{ ¶ß,ˆÀ´Së‘@·_mdY¨Ï  =ñ?ìÉáßYM§k¾µÖ¬ïAwj’£}C)Ý­‚Éî|5ñKþ Iû:øÖ;™#ø~ž¿rqq¡Hm¶ý#‹óJµ9-Œ%JœµhüÅøÃÿløƒ }¯PøWâëZ ,š~©‘6E.QÔ ­•V·9Ýý“òçâWìçñ+áV¢ÚWÄ__øZåŽØÚæåÈG]’ £ÿÀI®Èպќ¥(³çíwÁo<‹ +ì;×ldš±ÌÓNÌñèá7n‡¡ ñŠèRkrVÐñ]iÍœ®0WŽx­SêŒÚi]œ´¦{è5k®ö6V’ß^8þ£BÍÏ©hõ$ ä­QS†§M(9Hþé?à_ðNËÙ£öyðN¥ãÝbø·¯B5ýu0Ö× £9þ$]‘ûÀõÏÎ96µ=ØÁ'v~Ýj¡y©è ¼1y.‘¨ê0ÝkRµr²iúr¬Q‡)4¬|¸ÎFšE$ôÃìtˆ¿¶Oí'ûa~ÌÿðRo†ßaøÍ®þË?°ÐÔý“ý›5ÙàG‹%‹Å¾!üNð¾‘âgsØ5ÍΧuçœ,zB{‰Øc|*“IsLö)Ò5¡ý¤%—„¼§Zj^*Öì|5a-Ô61O¨]$(óË Ž(ƒ1»»*ªõf`I è<®×Æú¿€~%øÆ?|1Õµ/xŸV6¾ò5!îÎÖÜm†šò9\ \\Ø yòg’¯Üþ?ÿÁ6¾þÒ´Ä?µ~ |f°ñ<×Ú&§®ø{Hñ†‹‘®O¤;=„—p}¨³˜÷°] õ$¦“w`xþ‡ÿ¶ý—3MwâõÈîü8|e¢.«èߨ÷þT_jÞ¦K]£w˜X2!m>U{Û|,ÿ‚lü4ø_iðZÒo ~Ðá÷Œt¿øLx¯Çº%ÒXK§XIaikBåbŽÙ`•TEg`¬ÎÄP’@}ÿñgǾ%ºÐ´냚÷„u]?]²¿Óu WXÑ`‰eY@x·ý¸•óai¡8í•°J¦к¼ âgWðk¤x‡Ä}­µíý…†¥Ó[Cp¥­ä‘‹"HªÅ€)#8¢à~4~ËðÿÂÿ‚°~Ýÿ ,·ð湯é^8Ó,[\ÑYï¦_suá Oýw=êŽÀ~âU€P@P@P@1âŽA‡PÃÜP%燴û°wD=x 2ñ¿À¯‡ÿ´+ÿ xóÂZgŒü1tŸOÕ,Òx_ДpFGcÚ‹Ûa4žç=ð—öYøð2ÊóNøGð³Ãÿ ¬®\Itš.•¹™‡Bå,~¹¡êîÁ$´Gåÿí§ao¦ÿÁS¿à˜wSÆD_,^<÷Ð|H!ç×p8¨{ŒðŠ~ÿ‚¥êß¶—íƒeãÏ~ÏSøÿº¯†îoï¬âÓílb×ô—¹†ÖßÏ»¬ø·KÇ«Ëáé¢C¦Îb³’èÇÆfVÜÛB!"¦ÍôD ?à²þ/øãñÏHñÄ¿Šþø{­ü_²²†m2æÊ[ ÉâWÍÝÏÚÝÔ¦ÃtimWqiAËÕ°<¯Pý•¿à®üUûai¿õˆ×~ ñ‰îµDÔ!Õ­¼ÝPhÁõcIbqu>šš“>ÇÝU”26ÊVh×Ãß²ïü“Äþ?ý—®eÓ­5Uðö¯kywq wO1ÝOb“3å$—–Üøv`|‡ñKãücökø;û1Yüvø³ñ#áߊu?ˆŽ™ú׋¬aÔuâïḭËÚ™d1üúÐ0E$ádvu D;¤[ñ³Uÿ‚Í|0øgã /|Hø½§|Qñ§Åõð¿…tÝ:êÊs3ÙøšhcÓî~Øû¡d‹IgA¼j"Œ yš5ëoþÎßðU={áŒ>'xËXø‹ñ#âM¯Å ÎÛáÛê:uÅœº4zfŸ%ÅüÊÂ5‘oþÚ„ï8À›Zç³ÇüóöÁð§ÇÙŸãwÄÿøýux>-|>ÕüVl5ËqåAoðõ4û˧dÊ‹S‘íå “ä‡ ¬¼•g{ú?(ûGüÄSXm-þøb @ªô—ÄÌ™>¾]WÚ÷¬€ ( € ( € ( € (ðçþ !øU?ì×ûS°+£ü;ø‰á¿ë“ƒ…Ž¢ln•OrlõëÙv[rÝÔ>à~â#¤ˆ²FÁÑ€ee9Uó‹à#\ø‘ñcÃþ+ñŠ_T†ögN[oê–èl.cÂá!c]·] UQ…HÉûÀ•m@ïáFø/þƒ~1ÿǬÿòU@x·Ç›o†Ÿ< ŒuY¼k®Kq©[é6vq|JÕâó&•°2íu…P¡˜“Ùkà8£ˆ0ü/’Uα0sPéÛz%ý~'·—`jf8¸á)´›êÏ’tßÚOÁšŸˆÛÃ0ü7ñ¢Ý,~k\ŸŒú§Ùñ¹@_;alòç9¯çLŒlm(Õ† jïnm~î[Ÿ{W…jR›Œ«-<´ü͈µŸìeð§Løkoñ{ľ;Ò~*x§ÅRxOžÒ|m®jº¦©¨&Î-£‚á·&É¢&SµÌ˜3ý]—c? \ààä¯gº?4ÄQT+:IÞÝOЉ>xãÈiõ?HѸ–1'Ä`”lc#ý+ƒÉäW¹dq{ñ+áž…¡ÚøOHðlj|_kâÍk]¶Ó,¼}«É¶0ÞuËáîJemb¸a¸X(ÁÜ,ÕTÀü7ýŒ§_ßðRÿÛÿãÅ›yþ´ñ¬ Ò®“Ÿéka*ç²=Þµ©`÷kVí5 Wp?r*À( € ( € ( € ( €>Zý³>h_´ìõñáïˆtY¼E¦Üi÷ san›¥¹¶–ÞKk¸b Ïk=ÂFOÝ‘£n6æ“W@|¥ÿ¦ý£oüsû/ÞüøËâ‹I¾;|•|ã›Ù' í´‡Óõ•f<ÛÝØy !À$ËýÓI;­@÷{?Ž'ÆOÞÜ|$Ñ5øX^·{›Xu[s¬XHcûM³Dì%·m,/:Åæ2Æé¾!!/vÖ¾ñ~ƒãÓÄ^ºk› Y£t–3°J§kÃ,m†ŽD`U‘€e`AŠ{óí“Ì¿ ü –Á—w‹´øÞ`ê«ædVfe!FæQ’1’¹â¿ ñ*­œðÄð#ÌÜã§Ìû<ƒ &cÕ•™ù!ñSöñý‘ÿdë¿~+xËC´øía§ËñK¦¹WŽ=>ÌæA0·15ÉTxÒ–b¤wüg*áZ|+€Ž>4jíÆ +U;%}vîúnÏ°Äæ2®è9rA]·Õ¥ò9ÿø"¿Á}_ö­ø…ñSþ ûKi7W<]¨Üè? tmR5dð·‡FZ¾|þkïuQœ y޵ýW’Õ…\»>yFMJ]–’·’wKÐüë]«&®—eÒþ}OèÇ[×4 hú—ˆÝ­%Å‹¿¾kL€m¢xwNèsøqâmÆ^ðÇíwûüQÓuïÙÒúÍõ;=ÞÑ–dòR -3B%)ö`fX­4ÓÿügáORÁãÿ†)‹á_ÅJÌjRiWvò1Ôl ÷vRˆdpc1*ìtÊ'˜TföÖæøƒâ .Óþ(ü&Ô`µa¶[í#¬YHO*¡#QuŸ]ÖáAþ#Á/¦ ~=þÝßðKØ+öýý¢?goÚâ´¾(ð¶«àf[]OÃzo‚®¢Ä–i?Ú#µ¹­¼À¢F£,’ºðJ°ÍB+X¡¶Þçëý‡Ä<ØZh >ëWöР‚y¥6‹eh„?ÚU%Ùï 2ãÓµTTb¹`´Ûwgšø»ÄžðÍÍÇ‹~6x„øóÅz4Ñ]Øx7@¶-œ…£òäH\†¹”4±ªÍ! ¿`Š8äb­[jÄxMÕÜm¯hÚÅVÞø áÛ(üC©O©\y:WÙÒ^9íå…ãÞ®ncp]X)Ú^KxûðßÁÝ#Å¿ðTÚoŸ´§ˆ|9}à/ÙÀöÏmð‡Ã—vím#ZÏ—.¿<\în &+8ÎÞÕä¸ýÛÉndZ¶ôkkmcmmeemœ1¬PÃTP0@à °' € ( € ( € ( € (  {AѼQ£j^ñ›¯¢^B`¹¶7,Šz‚?¯j7Ñø}ñƒö;ý£¿c‹-ý¨ÿ`ŸÛ[Ë­\ÿhxßÁšêË&‹â‚ —ÑÄ –·Ø.¥¶ÿ—íq²Ü¼4Ö¨ ?‡?µWì?ñ×Å× ø­c'ìûTköqD|-ãÈm ‚ùÜ[¤šN¤¸µÔ-ÁH$‹È˜2Ö¡ ¸ºoP?U|uâ_ÚLñ.½ü/o{áPºv£qoÔ^R¥³å$ñÎò07àt’ß–úÄh¾=ý¡|] |u:î•uà}WKÒá:DV>¸SçÇux“,2Hö“$0[°xÕ‚‰Ðf9vGª~ÖÞ;‚ãÂ>´Ô<;húds%æ­?ÙÖ(~Û*×TWfáãµlb;˜‹•u,ëP>_ø«ûE~Ä?³†¯¢x?âv¬ŸµGí-•ä7¿¾Y>«ªê²\I÷ÞA öd•Ö¼1D±‘‘šKp<·Ã?³·íEÿ-ñ„üiû\éÚWÂßÙƒG¹†÷Âß4„¼Ñ­š" Sê€#Ön“ ²$_ìøHRMË,”®õ`~ñø/Á~ð‡í|7á›3k§ÆÍ#¼’–yåå‘ÏÌîÇ’ÄäÕìU@P@P@P@P@PË?ÿc/Ùëöе¯|Bø§ßiºŒ­qnú}½ÅµÌ§ Í-¥Är[I6<׈È8ÚÓIîçðGY¾¿²Çí'ñöxÑÁÄ:'¾#ê:U„dtvµ¼•«UŽÞ%ë´(àM­°Ø‹þ £l¬¿à§ž,M¢9äÐdŸ¿||?»>ø¡&SÁ%¾$üRÍ¿í)ûcüSøÇ¢·7z7ˆ>(_K¦^²Öz\ZJ…ÿyäôÅop>æýŸ¿àž²ÏìßáÄð¿Ãï†:]–ˆJ¼¶ivöÖ“2ò­,¢%Ã)åd¸ʼ~óŠi$ÛÀpª € ( € ( € ( € ( € ( € ( € ( €?ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_ecoma_b.jpg000066400000000000000000000047411231776762100256560ustar00rootroot00000000000000ÿØÿàJFIF``ÿáTExifII*nv(1)~2¨i‡¾``Paint Shop Pro Photo 11,202008:12:19 10:45:580220‘ 0100 ÿÿ 8 B 6 ÿí$Photoshop 3.08BIMÿÀB8ÿÛ„       ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýN4ÏøßÇší õoßçء æHzŸoÀM+‰»[¤þÛŸ5f…á:Óì Ã1B)mÖAœd3({æŸ#µÄ¦™é~ø¡àï*Ÿ x¯Ãš®î‚ÏPŠCùÍ+1ÝϹD‘À UX®=) “ë@2x ÎÇé@ðP߉–þ&ñì^Ô0Ú6~pŽàÆ^i0J“Óû£x®ŠPM]œÕj4왯´]2á#º7*¢-†8Ф¾Qe  /Z³:]rswsoym “Û’² a©ïÒŽek‹•ÞÅQâ=Ö2¼¬ ã§\P×½{–6oj3[¼3]I,N0D˜5BÔúóöAñª|6ð, lºÕæ’sž¥mú ®JîìÞ‚ÜûƒÁZüÞ"ÓMÅÂ㦭`t¾.ëÃà <[ª1Úm´Ë†SþÑBõ"ª*ì™;#ñÞ&ˆÜ)º›ìðŒn” ÛW¹ÀÆzŸËÛ-ĵw2le’ÒÊúêÒí,ÝVFHv¼ËÐã9ùˆ=>µÜ©X¥»Ô¯r³Úø~=ˆ‘ØÎë;Í¿¨žG¹ªÑÉ 6–§O⟠èú'†m/´o[j72mßjÌr9#ÓëÎÂãêÕ¬éÎ6_×ÐúÜç‡p¸L 1tk©7m.µºÖÖÕ[³>‘ø9á)µ[ß Yª6ÛM>ÝXz3 çÿB­ê»ÈùšKÝ?B<3¤.‹¢ÛZ ÁUÖf§~Û:ùÐg_m¯|ðY¯¾çþŠkJJò3ªíòá§h£šX-…ØÚ6BÊw8íÓšê›9`ŽpÏ :‰’Indehn íXùä‘ߎž˜ïIßšÅhãqæêÎOJ¢{÷ŽM×6²©TØÀ êà ú &¥$ÒÓ@V¬z×Åïx'âTžÓ¼à¯øEµ%c¸”D‘yˆØ=«÷°H;Ž x™>†”zœÑ{ká׌¯J¢J³>ñýœ¼‚ömBXÿv‡ Hì£~‚»ÛÕ“ecéôǵ"ÏŸn¿ Ýøö|Õ$Ó£i[L»ƒP‘W¯–¹W?€r Ò›´Œê«Äü®¼I'GŠ'”£®Ç±ƒí]nÌ廎Ä7Wï§¥´‚T²Y<ß(‚ØÀ'¿JVW¸ÓÐm­Œž ×l­î¦³Ò¡òÌ^xRrI-êyü… '.3èSu½ŽßÀ>»Õ~;è:}Ö«ÿ Ë\Ç!ºVÜ  à~@úPâ£Ñ8,_Ö¡Ìãmmå÷õ?_þxy|9á»xBí‘—-\'°Ž”œžh å¤7ö“[^EðL†9"‘C+© ƒÔÅyM§ì¡ð²ÁØ<¤[©$ínÿгOš]Éäb¦·û!ü0× häðíµ¹=ß1‘ÿ|‘G4»‡">yø¹ÿçf²¹¹ø]¨ ©@,¶ìcè²`sõkÍng*WØêc¯ØšçáÃø§âqµÌ Aa Î3×-Ñœ÷#ïJ¥^mÁNЉö'ax€jÈØJ( _¼(æ?C@N:Pž´”ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_pinpad_0.jpg000066400000000000000000000602721231776762100257640ustar00rootroot00000000000000ÿØÿàJFIF``ÿâmICC_PROFILE]LinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3descƒlwtptïbkptrXYZgXYZ+bXYZ?dmndSpdmddÈvuedK†viewÑ$lumiõmeas $tech- rTRC9 gTRC E bTRCQ textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÀ,,ÿÛ„       ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýNÜ}M© qõ4n>¦€ ÇÔиúš7S@ãêhÜ}M© qõ4n>¦€ ÇÔиúš7S@ãêhÜ}M© qõ4n>¦€ ÇÔиúš7S@ãêhÜ}M© qõ4n>¦€ ÇÔиúš7S@ãêhÜ}M© qõ4n>¦€ ÇÔиúšJ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ãþ!üLÓ¼mÝb}B`LVÀãï1ì?T`äDçÊyl¿´¬Ö(ÓêÍ!¡N>ƒ¹­;ªœf«ÿðg‡ï¶©ÌÊÛX[9,?‰¬š-M‡íÉðÊ[˜mõ›Ùô™§‰g‹ÏhŠÈŒHü”ðFGãMFãç= @øýðÿı«i^&ÓÛwO0•™ýhå`¦ŽÊÃ^Ó5P™©X]çþxN¯ü+{—Ê‘H”P@P@P@P@P@P@P@“âÏÙø7×Úήá-­#.FycÙG¹8v>ñÇÅ[¯ë:†·­Î˜Å°O ½T~@ è‹åG3Ww>OøÍñâ÷Xº›LÑgh£L¤²Æßwý…?Ìþ“eÆ69†Ÿ¯<}$“]jé6‘«H“O?œW– ŽœãC²ŸÅ1IÓ¸)$zg‡ÿà¥ÿ´Xµëk üuYcûèúÔºh¥?3Õ|7ÿY$*ø£ÂXÚݲô/éSì‡ÎÏRð×üÏᎯ´k_iŒzîÉÇæýi:L®sÕ¼3ûa|'ñPQ§øªÑº,„ÿŽ“RàÐùÑèz_Ä ëJ§Mñ‘6îŠnIü M˜ù“Çt?‡~¹ñ‰ï-2  ¼CÌ.Ìpª u$Т۲¤¢®ÎsÁŸ´7ÃÏ2G xŸO/ÒÚñ¼„úøÏášnŽè˜Õ‹êz(伃Ўõ&@P@P@P@P@P@|¥û_üB{íFßÂz\„Áh÷O )*Ÿ¢œý[Úµ§êe9t?>þ8øÒm46Ÿ¦1F §¤¤dŸø ‘ø¸ô¢nΊ¾§ƒøs÷"Ö`³€•ó[瑺"ŽY¿ 3°äùUÏ¡´g‹EÑ5f·RYéæ”ÿHùÄ×l••‘Å{½NBÅ™m£1à j3/âO‡n|Cq¦êú5»Ü\\F-o1’%A…s茞2‡5”ᮆ‘©d^ð߃l|= M¨$ú–,À4q{(<þÑü1U$L§s¦mjr3ËÐn^­¼Ú„vpíwÓ5R&”öS’W>«ŠÊt#"ãQÇcéËø(>—•öíÃó$q‚n›³˜÷Ší$¯ûC§|VÃ5ÔÚ8‹½QÓxsþ ðŸÄ×E›·ðÎUqùJÇÙ³ntznƒûBxÄHLñ.› n›˜¨üÈÅO+:ge§x¯LÕW:uõÐÿ¦+ÿ#Kb¯sMnQ‡Ón/¬–VþW0¬ziYU!À%Ëg©8€zÖÔh¸2jURV2¼Cey¥ø;Q[ëK«y'¬±2œ/^ûլъzœ¼S##b߆+Aܳ¬ƒ*Ì3Ç^´ àe9'Ïë@\C!ÎFzbÆ™ó×#†„Ö}ÃåL–:;¦Wàã¾@éAE¤ÖnYBË3ºÿuÎà?:VB¹Ú¬Ò€!ØzÃð§`zŒ¶›7qgÜ ç"“ ºDëa ⹆)¾@ñH¤Ÿb9#ñX s%•¡X³†n¬Ä“sõ¡ /ÙêÒY^G,4R/*êqŠv¸§ÅŸ¦›¢Yx·F[xôë놵¸·€’-îïùUÔ’b§`yÁ#jsèÏ-œ¶ =”ÒÁ"ó¾'*1YØÑÌèô_Œž0ÑJ;ÄÚÄxèv~M‘Râ>dz—…¿mOŠÞ§‰æ•W´ àþ TRpò=7ÿðSωšNÄÕáÓµEù¶ªù©þu.š+™÷={ÁÿðU Jâ(5?$ò /••îCÜÿÀj,´+™Ÿj|/øË¢|Q²…´²-ï8¶2¬™^åY}22zVIÜjW;Úe ŠJ( € ( € ( Ÿ?lÿŸ ü9]¬»'»w(þYCŒÆFò5¥/ˆÊ³²±ùytÓÈÓÝ—i&bw¶y?Zî9 6k„—wÑ,ð†*û¤eòFÏ8ÏQ{“Ãzµí†Ÿ-Þ“uqjòʪ”b Î>£Š`ήÇâç‰lå†Þ]^9¼Ï•Vô#?R?­vÜJ74n¾"+ÈañO…t ÙSäØþ#5Jm‰ÂÄ'Sð¤£ûGÃ7úk·ñØÝÇЊ®qr•äð§€5ÿ‰w‰5]=kËmà~"‹ ³"¢½ÉÐ|WáëÑÎI MùÓÓ¸\¥{ð[Ŷª^+¯£ìÖ³+æ)Ø9Œ ßëúa?nѵ=L GædÜÈpбeXv`E+ l)Á?­¸Âü“Î=(‰,äˆ\¡¸bèâ3ó`ŒqšM_‹IÒ ±¶Ö.¡'¢]ÀÛAÿ€³cðÃbÔ‰lþT%Â'ü´@v±öÈy¥ÜÛµ6s7)!Ã8Ï=M`hFc“ãÔPÒôÆ0x ¥+KÍÜŒ T¦¶);ÏÃûN¨[ …Àµ-¨¿±’n|OuxT±Óö z±~€Ö ¨dÒ4œÐP@P@P@ZøöÝñÕ®üL`|¤Ûè°úd”ûhÌ¿ð[Ò‹9j»³ãmkY’éM¥ ”Ú>¤§rûöÈìkªæ$gK¶–5]Fîy[Fñúgüš7ô„ZÙÅj’$á]ä2¬îÀÇ ‚ÄÎïàõþ‹¤kwºØÓÖs“÷q‰¶Km îÈÈã‘Á0r­ N>ëÔÖ”Ô«CÇÚœî¹vú(]¤2Âê‚rqøÊ(8FÍ…I)Jéοàß øoáŬÚ3]Êò&$¸¸»ßæM´µ àçV;˜2Ù\XÝGíµÍ±ÈfF_æ)Y…îzÀ/Áã‹>Ñ5EÅž§;ZÜCŸ¿«Ù¬«iiOâG×þ&ÿ‚u|,Õ$‘­ô««RÄýÖVþkŸÖ¼Þyw;ÜSÜóÿÁ/<-27ö©wf„ ÔÓö’DºižUâŸø%߈¡ |?®Û\c¢Ê\Sö¯¨½’<«Ä?ðOŠÚ!&ÓO‚ùW¡ˆœŸÈjh^ÎÄ^ýžü}à{ý¹áAÎRÅWxÚ;ñOšácô÷ö?ðm×…¼5þ¥nö×:”‚H¸aŒ.G¹-Y2 ¬ ó‘H° € ( € ( € Ïñ¹†|=©ëçÚ}¬·RºŠXÿ*ü®øËª]k:V‘Ü›®®în/n©/ò~Y«º1µ‘Àõ<^æ(ßU´¶³™åIÈdP¬œÎ àçÆ¬C£Ûuª_\…ÜZL)ôƒñ&šB-ˆU0ŒÜQ`¸è™‰ 6sž?΋ÇeU‡È?#ý)jîòæéä‘S i éšzr™Œ‚2vÉ¥°Æm¤†`qõ΀°¨Kå‚ßNh¸!é.Ñóe~¢˜Á¥ y<ÐHŒprÇ\ÓBIŒÿ:wÞvvÅÄ[‡‚MÑ;.;ƒƒ@Ó6l]QÓN¯6ŒôÒâoáð¬ˆ_C…º( `ÀOνˆÍ_¶³Ku5 a@P@P@P@â_¶/‹Ã/ Rm^îßOM½J—ß úyq¸üj ¯$ˆ›²gçÅ;ù$Ôtd¶yXm¼ðÉÁÉÈǰÛk¶q‹I«ItI’]¯#;uÊ©ÇÓ’8§krÉQm•ãä0$ŸÆ©™ºŒã¹Îi’$lCÀ‚2Ajq‰q@ÇŒ‚{ @G'ßùqÓ©¦PæPWHëï@®FÐ#Ì°Æ éÈMš¹;§²±¦¶ÌwbPHîÀ45¢ (Œäžy„1»DdŽÅ[=)†Jå·(ôe?Ó4ÀFtO¼É’8·?*bI’AýiÜ(l‘ŒœÓAqöó4W´gæRúÒc?C¾ë×Z­Ï….æVK·[ecÜ‘µr~¸ýk‘ü%ÁûÈú庚æ;C4…GlÐçÖ€€ ( € ( € ( …ÿà¤ÿÓIÕ<áá&<´ŸR•êN#ŒþBOδ£ñ\Ϊº>Iñfª±k÷ÁÚx§†!ŽX³Qeã¦I<ûWYÈÎRÅ®e·Öoïx‘£’ þ¤…$ýiˆ½ckäA l"Zh’Ô$$v4Ä €ƒÉȦRCBm\·¯'ÖŠ$õ B>f@Æ3Ôf˜0#GN´Á!œ’1ÈÍcI›=½( ˆvå‰ä’h$spÀ‚r?* °å\ ‚3ÔP=‡¼›Ú„qŠ­*¸d{Ð+ýš&$ˆÕX÷iZã%[u6ó´£vr±cÀŒÿ:ÏfÚFÞƒœU /èVßoÕ­`d•Wz‘S=€ý ø)¤yž'ЭÕwnªäc¦ÕÏóË'hšSW’>¢=y®s°J( € ( € ( € ( Èïø(?‰n|Sû_á(m}‡OD?Ýb ý]UvýLêhŽ [D½¸¾Ô.n u,³DB†\oo½ÏƒÒ»ÖÇ#ÜÎÓšKùñ¯Ï,êXŒ*€Oׇ¤#B>;qÔ bd…NìäÐŽÆš†–e$ÈÒ@üh ŽDóT0;Aà .Z&,C>”\cLaA’:‘LC;¸9ì1@ÐÌmÓ=s@¹[àŽ´ »ˆc 6åút -q¥r#ÿ¯@É€9ƒžÔ Lg©¾3@¨fçQ@ 'æ# ãÓ¥=ße¬ùæe\ôäÿA@™œÃ qŠ}v?´Ãªü@ÒbeÎ%GÒ³›²ô³à.æx†êä¯[»?–kš®†ôV·=Ò°:B€ ( € ( € ( € (ó;öÖø7ªÙ~Öþ;Ž!.ŽlÅܲ/Xž(a#кŸ\zŠt}Ù?3:¯Cç+Åól#µ¹•þÊìXD~ëøþ¿JïjçfÂõ´èe‰"ŠxŸ»|€¬:0 ‚${ƒÎhË:OfnÑ"c/•Ûƒq“‚ Ž?:}Dü†$ñªa£aŽë!þ¹«Ç«@ã—™õ@¨ E”ŽGuÏ÷_æ)Zà8iÓ2âIóÚ'V?¡¢Ã+Ío4#÷±:ÏÌ .W˨8Á÷ ØwiŒ m`W$c4 !]xPqë@ƺn%‡~Ô T/G\ÐN­»rݨ2œã ìM0.Gtưɘ‹HÇRÌÏŸ^€#@ÁÝ’x#µ43׿f}0ÝøðÎÃ+olûÖ5@ý"ø gåé:¥Ñ¼©>Ê3ÿ³W-Gs¦†Ç©Vfá@P@P@P@òÏíýcomðÞ×T.Ü’gªã’¬Cø?iKâ±e¥ÏÏ]nîKí–Ö"Ajå]ÖL…„p¾ã¦GoÊ»ç)Í«ÛÙ‹É"o –Èà×Î=úUX’Q‡ÒíNC<’cë…ÿÙMix_L‹R¹½ûZÛ²ÁjeUºŸÈœÈˆ¡Ÿ#o/T‘-ØÕ_As}­ý†-Zî b…b³ˆI(w ¸vä)Fã<(°^å+oÝê+éò$›¬¤¿Éò9E”ÆåÎ2áG+ìdÙh—úœq¾n÷I$ÚFY•7°Eç=) };­¤;Çsý«Æ¡™0„ûÔU:”„þðÆùìñ‚–h¯bÇÍjŸTb?žh &´”Æâ2}@qý(¥##÷W: ¿Ó8Ã!È]ŽÝ0Žò4å.%W˜üè«.F¸ï@ qœTgŒš‹Ë%°8Ç¡ï@ê-†‰c}r­Pf9ç#ÛҚآ¿e-$ª_pq5…M@ý øG³MðM |oÞSøœÐ äžçe%hºÝÆÝjM ¨Ý€9ès@P@P@P@|oÿÔÌöž ѱæ¼÷l<*œwï[P^õÌ+=,|':ÁzÛHeIP±  2Br9®Ã˜nµ$š•¬0¢pŠ’¸n@c‚@çÖ– OtžJ[B¼8ô,7ìÕD±žsÇ ñ+‘Äb)£ÀÛ"î ü@4¼æ[{ç»·ºŽAj.¦TŒ…)È‘Y‡#ní¹âÑ6cü'«ézd‚ѧաTLÔ À›#; „î- <»[ž›ºàŠiØrò3,tû›¸ä §rrÖ˲Dy–<«pÈÇtÀ8?xTÌÝNØK(]2Î(ˆLÔÑ›wÍïÀç¦:P=޳Ã^ÒüU«Þiæiô¹ H¶âd—Ìvp Bž>nç ¯#6̧‚Qqïs»„Ž!µ'k#ƒ¼U¶»ž(ŸÍŽ9LcpƒŽÙ¯Nœœâ¤Õ®ŽI.VÑ “$g¥hHõ¸‘såJéŽ~RE*ßL§;Ô’0w(9üÅ*j ŸÞÛDßí)`GÓœP˜nìÌð]ds…OåOq·³5Üí!]¥ :ØR\£[wë¯Ù§Jû€ÖfPy d÷Ås½X_hÂØéVvêÀyq*ãßÈÝÙßdmÃâ ž­!— ×r@ÍjÚë!ñÍk[ݬÀyõ  è € ( € ( € üòÿ‚xŽK¯ŒZ]…¬ŽNәʳ1lŒwé]u{œÕÞ§Ê–©Þ $iTI4Š’NØùFyúbºv0â,Yê–ö–±I ÃWŒ±o—Ôç¡Î=ŽhNàO«ÊQœÆNÕr AÀýª%ŒŒîP  hFùOÌFzDÒôÇnô5dWnqÍ„d¸`<`÷vÀÐÞKœ´!ˆR}vôϽl’ÿT½Ô-š Û–’òÆ…ÉÁ—ÆæüI .îîy%Ÿc<Œ]¸àϵ!ÞÄ.çvNOÖ€ÆSæÆyëÚ˜ fRÇi+Çj›<΀ØÝùÐÓééšB9@ bY”'Rz û“á&œºW€t˜ØmÄ*Ç>ü×4žãŠ»="ÛÄ|Œ±År浦¿»£~´±i­“š€: ?U,F€; "ô¾3@"6äR{ÐÐ@P@P@ M~WþÔþ'MkãçeidS Ëk Ä ÿV+Ç yö®ª*Ñ8ê;³Ä-mîno'–å7Ï;nØ8Ÿ^2MnfI`©¿­Ä~T‰"3«~QóuôÀ¢Ö YL× ÍË1ÎG©¦„˳B`C¸‰ˆì»›ùàž*%Q"Õ7¹“yiv k £;ãýDÈ·²°ã>Ä~5*§rœ ÛmdÌ™ê`ûÖÄXÓ²˜Ì¤œP"k‹Ûk2æâ(`îþ´Æ-ôL?vàŽÄ´†Ip¤œí@Ç#À͸’.G'­™œ½ ¹ïë@ãrü¹Ç|PÚ:tÈ bIÈ HÀ;¹é@ËZ5¿ÛµkHrò¨çëIè€ûä„"PvˆáŽ1õàW4Þ†”µ’2,üDr2ÕÌv&™­ù„`ó@f—¨03@–‹!wZô= šëãA  € ( € ( €<ÂÚÞYŸîÆ…ÏÐ ÐãŽï†µâmsZ»™Õ¯ï.'G0yå¹éô®ØiŽjÎwIÔCÛäƒzOÖPØ  ãÔ´h’¶›dçQ½¾™¾qí@xPFÀâù¤„?M‰ZåŸu˜ôÍ6ô©~òaˆ&’ê¸H® h®û¤‚àƒé\·:ÇOñî}%¾!]Åákm*×O¶µµ€&–dXÌ*A9ù÷rI'¹50ÒãO=€#¹ÀÝúæºá±Œ·;MÍ#°–âp FÇ÷‰è?CJr°F77ü-à¿xÎÞþO [[K®7ÂgŠ&‘гDb ŒB1Ú ž+>漨óífÒ+xþÛ§ª[º2‰¢ŒmGV8 @A#8êµm ÝØ‰CK‰ ­#& ­LÍØ-ŒvûÈÏÔ€úŸÿ]Kin 7*Ê/\±¶†ÞàvŽ ²çè¬?@M i•ÈÊVš´S®åÇ9àóŠ¢KK8aÇJ‘]Jàóí@YAÇé@ —Žz a9<”×|&Óµø£SvÛöm6wÐì ~¤QkŠNÈüz½!­D2·îI¾ë·åÍwòœ%‚Ò#¥Ïs"n†&òÙQöùkŒ†$~^œw°úãÍ¢_O&à®é3 \–ÿZb'·ÚP¶1ž>´$Õ54•D×1È%UÃJƒ!ñБØû÷¬' 3xÊç%«jWz’5®‰Ÿƒq(û£ØzýjR»+4}-&Â8Fâñ¬{“]KDbt:r3é—vÄþð²Ê‹ýà¹ÈÏáYU.ið÷â6àŸ ë–Ï¢]ßDñ[ëö·(²ÚÆÉ´Æ¨ñ°²w2ä;àÕÍOñN¨¶úm© qrÃ*?†0A$þX­a¹vFµ¾YÆ@WA‘©­¹ûj[' *¨É“ø“\²wfñVGmñ Àz_†| áM[N‹W³Õo¥¹µ½³½pÞ\°yaÿ m¹ÏîÎâaÝ’EDdîQäºÛ¬šòÍÜÀ³JO3,¬ßŽÐO¹>µÓIèc=É­Ü‘Ï>õ¡Øùž(V‡' H0Üþ”<œŠõŸÙ¯NÞ<óŠäA¥g0=“ã%æíKL¶Np´˜÷cý–¹ª;³¢ŽÇ§‚e¬ºƒá¸™ŠbÑë^µ%’ž¿á‹ *dP£éС ·@P@P@â¿¶6»ý‡ðÄ[kÞ´V‹ï¹Á? 5PÖHΫ´OÌ\6§ Vºw˜±HQ\`EŒdÇ‘Á÷®ÔÝìq´gÝZ¼:{]M 6ëÕϧ®=?Jm :.‡.–wn:mUP?RÔ XËE•ç¾É¦ôÔi\­¨«ˆÈ·[²Èù?RúÖN¢4äg>š‹ÙÝy…¿‘.7H!Ǫ‘Ô“Z&žÄ4Öæº\‰JíÇáÒ¬E¶ŒÉ™r8Áö©`Œ=RçvXîÊÕö þx¬½‘¢™[Gðí­ŒÏ;f[™9id;˜þ5qˆnæÔ@!àþb¨ÞG1G•–9UBÜ€~¸ãð®y&™´eqž0ø©©ø…-Åæ¡­Ég‘kó´Æ$ô\ç56(æ´Ë[›¦’îùJI.'÷t©?tAXÆNæÍ­¹ÈÈÎ{U6–¬!7h«³¥ƒÀ¾!º‡Íµðþµ,Dd:ÚI‚=²9®9f8h»9£Û‡ æ32¢ìd^A6Ÿ3Ao=¤ËɆâ6‡à@5ÑN´*«ÁÜóq8:ØirÖƒ‹óEV™ åNqZœ¶!i20>…ý•tüͪ^c¢¬`Ÿ­cP—âe×Û ø»ÅZ…宣­[[ ·´Šñc6ΈD$3³¯˜TW ÜÐÐùÿÆG„LØóá ~¼¬?AZSz“=‹ZZSvH®“bò4„¤ÜÌFJ*}pA?ʱ”Í#?\ð|š|Þ^£e¢Ý²†Ré$g‰Gá‡áøÒU p0´ûˈ¦–Úì<.Qöò öö<ìkdî®dÕËrÒÇQÜU[Ûvh¶›if¡zý3×ð©muLÄAgm9GˆÃ(䤱”oÈÒIt)Éšæ2ŠÆN*ˆ=ã௃-ãÒ­56Bùe™'x̆ÚÝŠ9,v·Nz9¯ŽÎq5+Wxx»%¹ûWå8|ûJ¬y§'e·{-^Þlôy|âF…. ŒÜ¬Åp >$Œâ2CcòÉú2ú⼟¨UµÒ¹÷1✹MÓ›³M­º¤¯·­¾LË×4«iŸañÞšotç,©pY¢ íß«œsŒp}Å({|,¹ã¡8ªvoF-6ÖÏG÷;;þ(ù‡Ç¾›À¾+½Ñæ—í Šb0%‰€d|vÈ#>ù¯¼ÀbÖ*Ѝ<çÙWön.T:n½ XåÈàWaâXþÌ6"M93Ê ?úõŒÀÌÕçþÒñ¡p|Û‡ ûgô®W«;Vˆé|;a¹×"¤¤z×…tÂJ|´ ö_ éœ!"€=KGµòbúP‰æ€ ( € ( € ( ƒà¡Úé—ǾÓarÎÁ¦ùz†wà”VôîsWzŸÅûO,¦‘‚<òuQžþ€g5ЕŒФ]/Q·´´ŽE˜ÈÊÊÍÈ?ˆŽÝºqÍ4îúÐΦñtí‡ýúSñܤ6²ÃpÈp3´d«ÄþÖuÑpvfEÖ³ ŒR+]‚Œ¬düÞŸ/ZÀÒç%,w^'Ö!™áx4ûc˜Ñþôýãéì+Jk[“3¬³‡È °Îá[pÍkŒ4û]äj]¥Ä†(•ØÆXB’asò’èk™Þæëc±ý ~ iß¿%àjF¯ÖivÖß™û‡¼G…T^Yµ›Òû?/¿cÓ-¼yâ)öÉ}q*…´W?8d iÏ;r:g¹õ¯ê©hî~™ˆál»ª§gå§ÏÔn«ñ6)´#g«ÛYÙÛĘIbı#?Ý9Ë:Ôss®êC“—î2Ãðü0UÞ1UvZ¾k>–ßOÆçÏüV¢}üÎlG±¸ëï^©ògÙ¿­†…ðÊÞVJ[¼Ä\\ÒzvrU±–@O'?s³¬ô¯ é¹)ÅIg°øSLÉLŽ´ì^Ó‚ªq@Ä1ùq…ê( € ( € ( šüÏý°¼S¥ñïÄ›‹‘i VqI%'óÉWEdrUw‘ó¬7WzÄÒ©2Nß,`äí“ëë]D¶°*x‚ÚÊXÄsc û…ºûŒ*†[Ÿ´]Ï+´Ž[#¹'4$òyQC$Ìy >¤âi9Xi6s¬ÿd>v¡cq#¬ÙWAõ*N?RM1٢ݕô&?Ý®Ö$Іe•r´€‚úk˜¡ýÐY…áÏ¡þ•œ¡}Qq•ŽkPSÖTÛVÊÝø$ì=7v©Pcs5t­ßJ²H ]ˆƒJÙ+š\Ç3G+mŠUÚ[²œäøÖ¦jè¨;3¦ð?ÅmwáÅ¥ý®…öŽéÒ`n ù*º¤ÑÎY<›§h÷6<źߟì}9¼Ù§ÂÌPçʾO©UE]‰ÈÒµ´1ÕT8®›˜³BV œ)ã9¨~eÁ_bH<[ªÙ †ÃX¼HÀÀÌ$/ЕçÔÀáê¾gÏ¢Âq.gƒ%*ÒK×üÈfžçR>§<·'9V-κ(á)RÖHâÌ3Üv9râkJK³z}ÀàƒŒJêGŽÉ-­ÍÍä åÜ/ëMˆûQâþÆøjЯÊÂÞ8@÷8ùšå©¢4¥ñׇ¬w²q\çR=gÂÚnJdu £Ù<'¥ãaÅz¾‰f#IlP@P@P@ 1ÀQ’}¨ò/âΠi ±8†€æîíôëÙ q]Dù䯒ƒŸÀÏ‘¥bÖ™¦ZX.-£Aþè5J6&çqðßÁ_có÷cù×Úž#:Ÿ†úiÕ¼e¥Û•Ü ÀŸ¦iKa]øÕ¶h6–©Ç™08öPúÕÏTÚŠÖä>Ó²S+Í`u#Ø<)¦ä¦V€=“ÂúnÕN(¾µ‹É„Z–€ ( € ( € (  _j‹¡ø3]Ô$;EµŒÒç8ä!"=ÆÝFvºI’êgòn³¡c†cýkµGDp¶>ÒÖÙle•£Þ‘A6ݪAù¸íÆ*ö“áÛÓq¦ê“Æ2D±²—È?’bCáo-·)!»c±¤ÆIsvMòßÙ6Éw‰J÷ÁÎ@=FyÎÓ‹6NèÄñŒe¸»¼Ôµk‰/õK¹^w$î’iX’IÇ©$“SkìVÇ;áý.á-š[în's,˜è íøt®ˆèŒØ@›4YÂpÁ“wû¼ÿ\TÔ.™í5 éaFm§ûŒN\žœñ^„sxkÍ íø}UôÓ<Óöñ¾Ÿ¡ü ñrjÍ“Y‰,líØüÒJJœ]¡KíïU”©bó8Î’²½ß¢'Õ,?,Î\±ÇAÞ¿Y>Už¯ûf][*:óTI¡ÃGaPÙ2žCCJJ註3ÿT{Va¬ì{(#afS¹‰™{«êi}«•Ž8òm“ž¤žæ´„m©œ¤t6à#œgŽÕ¡ÛùUq¾7 ¸Ž@oþ½a%©ºwG¢üsøÑeñ6ÓD´Ñ¬nììì ÷Mzb3\\K°3¹T1 k¸Œ¶2qœRµ\ð +í]^îú>`aˆö`¹ÉüÉü«jjÆSwgEhí«“ô«džà?Ž^4ø] ·ð¾¦~ÀNãav‚hsÜ…<©ÿtŠò1ù&ùªÇ^ëFuáñu(é¡ÛÝþÛ^:žÜ¤o‡`”ŒyÉ „ƒë‚ø¯pn;¹Jß/ò;?µj5²<£Å¾:ñÄ]Moüi©Üj3¨"5rDeQÂ¥}-£ƒ%Ûó~§lLê»É˜ñª§ŠôsÞf-?7:¥ãЍ õ¨åqnnu×8â5T€ÿë×÷;)+Dôo i™)éRh{/…t͈œP¢ØÀ!„qÍX € ( € ( € ( ™¿o}fKo…zn‘nÀI©ê  À8çŸÎ®’¼‘•g¡ù¿«]Ekwo´/›UÔ)w'"»NB¾¯u-þš–¶ê ‘ÂfÝü“ÓדEÚóÆ,ôÍ6="i0Úbè¢XGÚ,G®íà“Ï>¢³©+ßS Ñ¾jÚ÷‚u¯G4Ùi mŽg"K¬2 <¡ÜF$BÇ  =k+#ÍüKEò€³£…‘†˜§€O¸8çÐû Úœµ±]H¬dó]òÇšÙ™²† "1¦夀‘ø×ó¡ÎÅ(¶e^A|ÌZØÛÞ`dĪbÿº ý2*UNå84UµÕæx³ƒÛ¸ü=kTŒÉà—Í$§åE€[Èg1–·ÆO\ráS(ܨ»WMƤv_ÜÈО¨Ÿ(aïŠf_9£og œ)!BŒ ÕhfÙ¦-ü˜$įüIÍôÏêsôô™NÅF74ô¾ ±¹¹Ø»–i‰Qêv¶åŠÉÔó4PC-´e¾”E¥O*Ý7Ü·¹`ÂCýÕ~0O`ÙϨªŒû‰À§Ñ.É*ì‘IVSÆÒ>ù­Vº™5bq&æé@©g /ìþóØa®gÎ}@¬ÛØô‹/?PšL}é q½YÝë^Ó3³"‘G¯xvÃb/(§Ú€ ( € ( € ( € øÏþ ;;.á(” Ò7¡Á­)|F‚¤D’íî.̸~ Žrq]iXæ"ñ<°é×AnŽ“™J’Í‘"NìvíÈõ¦˜XŸY}—KãÉŽ8±èB€\Ð)r³Ú<Ѧzn~ þ•EuràÎÇKøÑ¨iZ EÖ ÞÅk§\évóO ‰,0ÎÌåUŽ\œ²“=bù_CK/®jÚš„:}ŸïIpà¿\ÕÃ{“7¡«¥B#»ù«s#°ð戞*ñþ¢\Ì- ¾Ô ²iIÿV¯"¡<úšçnìÝ#§ý |!¤x7\Ò‡4«­o,žáôë™^G„-ÌÑÆÌ_æãƒÆ[Ž1CÄÞU“UÔš.º¹Ç@ì ·ë“ø×M7¡Œ·6´kpÑ<²pˆ7ô§'a%sCJÐeñUÕ;emtð[My'ÚdÆ"‰ ¹É (< ÐdÖ.M›r#¿·[Kf¹Ó‹Æ±$·g.'”ž@€AÏ\ЏK£"Qê†[ݶïÚ¶35¯gÅ(ÀTÙC“þ5Í=Í¡±ô·ìñã-NðM•’ê–Œ7o5äR4hÓ²ì'|±’¤µ¸Ü…™DN0»òÒ ÞÁ'cÀ¾(jvº—µË$D¶ÏtÛ›\Ž ƒa*7[å8¸â‹[A§s˜Ö5Õ|Eww H±HèÒùk¼þ'“îMoOc)î:,8Îj™'ÛôÁ§øGG‹n”¯5ŒÞvzÇ…tÒÅIÉÍrìžÓp©‘é@›¦[aй@P@P@P@|ÿ·X¼=á ù¢2ÁÛ‰w¥/ˆÆ¶Ççæ£suªê°¬LóÅB»–'¢×ñ]‰œ­­ˆ]^kˆLs»"àóò“ÛÔP®&¯qçÞÏ é#³þf™Ì2 · Œc5pZ§³k…Úòͳwq¬ýš/‘ÚéðX®ÛxÕNy#©>õj)ÝÉ60j„Ku©(*ó1IÆð2:} a5gtk\Íñ‹/5[†ši®õKé0<ùÝœð02ÌrpMÛÒ*é:T––›nØ<ÎÅäoï[ÅY=YÐY,."Q†* Oéüªg±PÜö/‚&ÐtïëÉâ¿ì/³i—±jSÚÞYÃ,ú»##[DÎ¥2,©C;v¬¹o©£g‚xÓXI£Ôg‚Þ O¶»¬V°gd{Ϲ$àgŒöÐIÙjQÌ[ÎqÏjé0.½Ãà¼G zƒÈ?QQ(ܨ»%Ön!È6…ûÇëYò2ý¢EYnµ]EŒp¤vˆz¹;›ü—9­a`,`TÉb9$ž§Ö¶Š±SgIƒíwÖðŽL’*à{š¼ü§‹{KhW EnñÆ+ž£ÐºZÈõß éyÙÇZæ;OaðÞŸ±"€;]Ší@P@P@P@óíãá×Ö~ ›¸“{X]¬‡”ƒŸä* í$eU]™ÐÜ5Áp¡ÆÖV\ã!±æ»ŽB® ³ëßk™€#2 ç`U-“îH&#˜`öãÔP€êqÁ YHäúôô ›=h%=¨vÄÀnL0©ÈR²AqÁA;SŒ9Š7Pñ¡«;·s]‚|¸acê ¥dàúsK¥Ïqr·Z¤¾c'ÜFjá'sJÒÉç•$/#°UU$ŸJÔÎRQNOcÐl>¨ˆêfç­µ¤bF_÷˜œìúÔêÏ—Äñ2Mª¿›,IðM»Ñu÷ŽcÒ=Bµ¿àHxü+>ç5>(š½§§‘ÅkÞÔ<%ª}ƒ^´6×w£¹%LðÊÆäàÓNçÔ`ñ´±Pç¤îVÜ'¨ª:Χ᭗ö—4¸Èó?AYȽ<içÌÀ€ æ¬Í°ë[žáá=3rµ‰Ôz–j!„dt£@P@P@P@ÌüLðŠxïÀî…*†7–®‘ƒÿ=Êþ P&®ÇÝ_DþľÔíõ($’[9„M%p2rOqÐ~&» ÓIœ-Y™UÄo¥=º°ŒGå¡~O.^üÍSBW$œt>•7¯ËÁ¦˜•g<ŒQpaf= €iòI×íEÂÄ£Ir¤Ö‹ŽÃ$Ó¤^HééJáb§×y›§ÌB½ªÍ+&ö÷håÎ1¹”‚H5)I=^‡£_…tåRµweÛoÀñM·ð¿R™_´éös7ÞRΪÈ=˜žª(kSÍÈêÊŽ-B;HñÈå!U[®+Cô#Ö?g½,ÞxÐ\0ÊÛÆXýk9;÷Ã=%¤´óœs#qôä×GvuQVW=ßÃ:vÅ^* ŽÚ$òãP¨ € ( € ( € ( €ÇJüñý¼>IáŸIãÜ/U;®#›øúýïÄúV´§gÊÎz°êÖñ¢‚H“åI îP=3ç]-˜ZÄ"RÍòž})\e¸!óHäûP¡§ääõ d©§d€0>´\ vúj’70¢àX’Æ58•À©5š»Þ…+BkÑŸ¥0(Ie°ô ¤€¥0*Ím¸r Rd²›µpð–VBYN#¸¦L¢¤œ^Ìéì¾ Á,auÈäŠaÁž%ܯîGP~”\ù,gÎ2rÃê»dñî‘f,WÏ’ ‘ >æ¨éOœâ†U‹nÊ9wÇ2x’Óì¶Ò[X1”Ò°é‘ØJÏ{+É–^Ú¦²üŒezòVǺ}=û2xJì“vc&{ùFþý?¹ç$4®ì}ßàYZÁ /Ë…ϯ½rîwEYXõÏÊŒ:P3XœšJ( € ( € ( € ( €0|uà­3â…¯´Â%³ºM»° FÝ}Çÿ[¡ M\üÊø›û|Hð¿‹î,ü7á˽sMw&ÞöÈ©Œ¯¹'åú×­i –Z˜J›è&‘û|F‘Uõ‹M3K·AØ~ º«ÚØ&uZìg©Äö޹h‡¸‚Ý›õ$Ru[/Ù#jØúþ¿[¼'ý‹uÌšN«aì‘d~Ç–L>]gRþ¹%.vÉ®?cœôOÝ'´–ªßÉ…ì=’1ï¿d-r%ca®ØÌ}&·týA4ùÄ馱û2øëOW{k;;å­nFHö Š|èŸdÎZð6»á¶+¯é:…†8Ý<,ª~ÓõªS] ”mЖËzò¿Z™*ɦ>•JW %ÓJç"˜.,C‚æ©1XÇ»ÓÀp${Ó$ΖÕTr«‘ëB@ DŒsŽ;SSÂ:þ.ñ%¦›f§÷®78UîMLåd4Òo_LÓín<’EŠÙHê:ÿ>¦¸ç+amYô—‡´-+PnuñGåFP¨ € ( € ( € ( € ( Ë•0hPÐEçé@oáD'î~”«á8ó÷JxYDý(…Ÿ»úPRxMD•SŸÁèAýØü¨.÷ÁË#βä€<ÃÆ³7„üH§Ò#³¸lþþÃ÷-Ÿp>SøƒNí Å3¼iûêú_™7„¯cÔ¢‹{"{û§ÿªSîféÜñMÁŸ‡.Í®¿§ÝXÎ8ÙØk¶rZêö6÷¶ÏÖ)0ü|ïñöB·»Ž[Ìm¦Ÿ±]1hÛÙ_ªþ9â­NÄ8\ùâ/5_Ke¯Ø\XÝ&s«ŒPzî8­## E#ɯm'½ºKk(džyjG嘞À ÑÍ"R¹öì«û]@öÞ'ø«lÐÈpöúkðàv-éüëšUý ãM#ï]Ã1YAVð¤QFª ÀP:Rjtp[¤ …úДP@P@P@P@P@P@P@Pæ€#’—ï@çÑã— €9|*Ð|s¦¾ŸâÝ&ÓS´#'L•÷V©ú@š¹ËxöYøwðßU:Ÿ…<3k£ü7S»Îéþérvþ=w’Øõh4èá f–€ 0¼ ( € ( € ( € ( € ( € ( € ( € ( € ( ÍÏZJ( € ( € ( € (  6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6J6JÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_pinpad_b.jpg000066400000000000000000000401331231776762100260400ustar00rootroot00000000000000ÿØÿàJFIF``ÿâmICC_PROFILE]LinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3descƒlwtptïbkptrXYZgXYZ+bXYZ?dmndSpdmddÈvuedK†viewÑ$lumiõmeas $tech- rTRC9 gTRC E bTRCQ textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÀÈÈÿÛ„       ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýNÜ}M© qõ4n>¦€ ÇÔиúš7S@ãêhÜ}M© qõ4n>¦€ ÇÔиúš7S@ãêhÜ}M© qõ4n>¦€ ÇÔиúš7S@ãêhÜ}M%P@Poˆ¼G§øWK{ýrámíÔàg«·`sM&övWgœß~Ó> Ñíšã]¸’ÂÝyß!^ŸSƒD*‰‘è_µ—ÂIJYøÇN‰CkÈ¥ÀÎÝØÆqÏZ›\®tzãŸø‚5}]Òo•ºy7(Ùýh³CRLÜ_™A\zÍ!ë@ @P@P@P@P@<ÜÐÁŸ´çí«â;É!¸+ éE¡·ü²¸ûÏøàþµ‡º®c?yŸø·â·ñ“ÅImÃÃe¼ìFÎÔAÕØOœS›°;A\ìu?h:]¤zEssj¢;™^gjÈê2ÊFÀè?<×Ti#™ÕoS˯dÖ|â >ÏQ½ŽX¤7¶•Ðȧ”aƒÜÏ—S{Ý\õŸ|GøÉ F’é~7Õ4¬tŠæñ±î0Øú¯cr=ªG¦èÿ¶—íánÖ,¼G}L–é+cè0J‡@¥[Ìì<=ÿañnŸ/•âÏéÅ8s´/Ÿ¡¨tQj¥ÏVðÇüwÁûÄÞ×tÖ=^YT~.‹+Ú‘'ü+á~¡áBû·º†«oh´Ù¡hŒŒN-Èü( IØRª’àÛçÀÞ'’('Óá¾ðî¥e©ZL7$ÖÒ««±jÛ›&žÆŽåþð¤1@ÏB 4˜ÇZ( € ( € (Íÿhü;¼0Ü%µæ¡›H¤fÆÅ#.ß‚ƒø‘WNÒ±YòÄüÀø¹á»¯Hš…ït««HÇ϶ú$gc׆aì??Zè©NOH˜Bª[œ_‡¾j~³/a?Ú/X.ô_3Ë@Ø²ä žzôÅiB›Û"µE-ŠzÍØ¸ñ¤å€>yE®Õå[Cc+‘⼆úKxšö(Ä1Ü– 3Ç’3×VW¸s5ÓÁ4Ãqð« 1 ÝAm5€«¬Ú[Þö"üãþ0ZN)‚lÅoè '˜‘_GŽ|µ¸ÈýFj=š9»aö{¢¶ÓáX-ôrIõ$õüj­m¶õc|†!Žm>ÅUÜ“ùe$Ú{‚¤gêh°Ž«Gñ¦¡¢#C¦jÖpH~o³NѰ#¡ :Ï4J)…ì&­ûR|jøIª[[ÇãmFòÆâsi-àYD±G>„Aê+–T’:¡Rèë|/ÿLøŸ¤²¦½e¡jê¼ј˜þ"³t‘j§™ëþÿ‚µ[„þ¯Ìñ5•ÐýTºE)³Ö<'ÿ<øSâ)"ŠþßÄ:lîpí¼ÏÔT845#êo ø³Jñ¦“£á»¸îí_2ðT‘œÛ‚*/r“¹¯Ž(”P@P@ÁAüg6­âM7Ãösìµ²$ùŽÒÅUÜœ½ü+¦‚9kÊîÇÆ y“܈£™ãÈTá•ùï]70±¯£kúž‰anÚmýå«:´… ”àœ‘øô§{ ¶¹¬x£ÃÚe•ÇŠâÓî…Ì{ü›ëxfdÈÜG#ŽÝEE:êm¤ö.t\UÙŸ}{e•­Ï‰<g wI¾9!ólÙÇbq´TÈtÚ2Ú/ÝŸžßÄ:aÿ¦SG:À€jî+ >ðõÙÿ‰gŠã„ž‰¨Yº~«‘NèNâ7ÃFc'QÐõ/Aê©?ƒbg_|>ñ5„{®4MG`þ8ãóó\Ñ`ÜÁe–ÊåE弈Tò’©LŠ,RЕ®4ô‰µµÌRç+þ‘½AúŸÖf‘Àlõ eïü:ñWÅXŸh÷ÚäÚ<²¬ÐÚ®ã2`ƒMÊßaY¨êÍ)ÅËcÉ5…ž0Ñ¿¶|/®Yêd¶oéXª‘}M$ºÕÃÝX¿—u‘0ìêF?:‡ª:¯†%¯|M*¼þ$â¦Nå£öŸö5Ñ͇‡»‘vµíÓ2ˆ¡Gê s³Hl{Æx¤X”P@PWw‘iö“Ý^0H ¥‘Ï𪌓ù ü—ý¢üNð·ÅË[aöHá{°|’ø–)Hê#ƒìEqT¤ât²–†ßˆ?gŸø•Xk^Ðî÷u2Z¦0+->ºýƒþOtg¶ð½¾Ÿ)92Y;F}ió2yQîÞð­—ƒ4 ='Fɳ´ŒGg'ç¹ïH£^€ ( € (Êjoü ñ=ؓ˚ê$°„ç´ÌþJXþQW’DÉÙ3ò¿â\ÆóU¼•äU·Hb„¡b7€ ‘ïËWvç U›ËUÁŽ8×8ã‘’?Z¤"i‚;{ÐH ˜ì8© p:¢ÖƒU>O›4År) FSòŽzÐ6È^Ýø.8ìzP`<€ÞÜŠ ¦ÑÊç*AèÅX…Ñ×€„÷È CDr8Rv‚Hî‚LƒT€ûö6–úmÂÜ?ƒ@;®JîÇå\Õ5¹PÝ¡L~cŠã;ƒ9ê(Ï”P@P@ÁR|m6‹àxzÉœI¬kÈ^â5Úç& ¨?x™ì|EâHÍ΢Æv;›£²"Ç#' ØéÐ î±ÄÉUº¸b¥KÊÜAÀÇà2Y3.2väûSÂÄ„ìê:ûP;0è\Ð!¬˜àóL «ÏSÞ‚†:Äœâ‚wF[ž½Üœôï@Èän#{ЫíI þáä{ñýh5ºœŒÓôö/ðá‹N𿘼‘%ãqõ#úW%W£f”•ä} y5Ìv @P@P@*Á@¾ÃãxSÄ“ÎП j-xT.á"•ÉSéÊiÁ{É‘QÚ'çõ±K˜àï•UŠÄ˜ùäc·^ÕèXá¹mn¤ºŽáîDLUAËä?Æ… ‰&–ÝåŽØ¼1`<ŠÓ5B¸á4p·ÍqœÈŠBËjãåžEö‘?‹ £¿uÕI‘n¦¼¾.³’âòáíüç•ÞD†xÎ߸à)Ë6>ùä`pÑpµÈÞ]9SM’Úi›Ëæ:.H`YpWr) 0ù:b6E©h–_2è¾sÃ"f9w²žH' qœ68ÆFŠM³ [ZÉq*Csp†%f.Ñvûã4‡bω´›ï ÞCmsÁ–!24M¼m$ŽãÚ¸ðxØb¢çÕµ7¯‡•Ë.ÆA¾$ëú *ì1^Çz7¸ ÿÖ -ÄŸ™Ý3ýäÈý E©<{R;góqË0R}9  žÓVñŽhW"[”{f”ݨŸ uÐôÛ²S,Š£è£ç\U^§U¡éVþ,Vè²65muøæÆâhN9Ve܇ð P@P@|ÿ×øOH‚Ms%ÓrxXÓñîõµy×zÙÜ@­vóGæ?Ì2¿0wÏsôï]w¶Ç) 4‘éÖ±Îs#sƒœséM;‰Ž–t‚-Ó¾Þ:š6W„2ŒÄêÀ÷­Ç$‚QÈž´Ä…hm¤®ñ†ã#ßÖ°žúyœyóË! S.rqÔŒõì(¬Vv };R‚a° £4Àk¾9â€#šMÛºv DýŸôßí/Š:ia”^Sø ‰ìÚ¾*[ šÞ7!ä{× ÷;)+Dé4ÏHÃþµ&‡a£k+( hÓ<;rÓ Ü{PÙë@ @P@|ÿÖÞóâN§A/—›¥™\î# +ž8õ ]ç5w©ò´-£Hm"ýìƒ÷`ŒëžØ<×FÆ¾ÎÆæÖ ›îFŠO¹?©4î#¤ðö‘a«jÜzµÝÅŒV6770ˆvþòH×äBIN<þ#–RlèJÇ™js*ë*|²”¡Rã”,P³žK¹‚­jArà¼DªC,¤uÙ‚,äþU<È|¬© ô3 1¾sT"`ÊÃÐÀ<Ð{½1š÷OÙCMó¼Iª_8Ȇ>äÿõ«*€woâ·¹Õ®œ1ÃLÄ}3Åq=ÎØè¬wÞÕžà®Ni{?ƒâk†ŒŸjöŸZù6ÀŸJÖ € ( € üÂýµõŸí_Ž>)¹vÿF³Xlvî?0D]Ãón•ÕF+”ã¬ýãÀõô‹;Xl´€3£1õËùÃ|‚ݦ`2Ìp~¤zÖ.žº©÷24íb–k»¹ ÅÔØÜç  °¬#dCw6Öî;(-ŒÂ9 ´›ÂL GÛÄ΢ê\C;âG.þ"ëÒMomo×#Y£,ñ(jNŽ{TB:•7dM¤Cö4®<ß-¶g®qÅo=Œã¹¿fž‹á¶¡%ܶ’x‘ïbû*)”M@0Ÿà*~\wÉ5Í­Í>ûJÝêWs[ãcÈ2W¡l ÇþúÍtÃcîjÀ($²lLØÇ=h»ZúWöi‡û/Àþ¨àf|þÊêk ŽÅE]”t¤i%Lg9®C°öOØ3˜ò8¤Qô€´“²2G¥zÕ´B@Ç%P@ …9c€9$ÐãçÆ]wû{Ç~ ÕnÛÌ‹PÕf’4-œüìã§A]”ã¢8fõg)êšoØÐG_¼•Û‚H#ßNkBHôäÝÔÎ3µwcê@þ´¦ÚC‚»7|OðÞ=3áö…â+û‹+‘«Ï4ikRЬaNYÁáŽï»Ô`g®+Ÿ™¦mdÏ:Ðægy"29Z0þ¸8®¤î®bôgE5ÍÙ{{y&T,Ë&R u$€w¨uÊPlçæ[ Ï"å#;†ä’1€Ã¿µTdžÂ’±­ iP• 1ÏjŸ™&§lf˜Çuwqmü;vnüqÍd©§±§3[šþÐSUÕ,4/b4î#Rz.z“ô4±• R¨öHê˰SÇba††òv>…Ó~X[Ø#Ûè3kí®$™òr3÷U€{ã#šøùæXꯚ/#ö¼7 pö{C¼¶¼¯¯OMÎ+â/Â(ôÝãTðäWv2ÚÆfŸO¸%ÃD:¼lyã©g-žkêÉÙõwÃ迱¾¡=ß]Ïä+–«4¤½àð¾šg+HúÀ&<¯éH£èßéB‘ÐPVNM%P@‡ã½e|;àj’¶Ñga<Ùô*„Šö?uI<«ø÷瑲껲S<Ÿ¦sÔWzG+¼›õ+ÙíÔEi¹XÔðX“Œãèi hímå¨mÊC)þ!JJêÃNÌÀÕoofV¶°_$œ2S»f{ÜÖ>Íšs¢MJM&Ú(¢%ös¹¹ÉêI­ÖˆÉ·ƒþ"§€µmbþ;t¼û}œ–…^s@ÜØŒõg‘\ÍtféÜòä½:Ö° -kj¬¾v8‘ÛǨ­©hDÙÔB¡, O3ËK¶G?Â8ëù“J£è5¾;è~ð†¯aáÿí.;U‘n ë.é0H9^?)ÀÎ3ŒöÅ´[WGámFãJ¼³¼¶m—V첡<€G85µzQ« lÑX‹þ&¹*3j+VÍÿhÛÝ _JÀéGÒ?´<ÉZ{fn-­T‚hÍP@PþÖšÓhŸÕäçYºËé«.iI莬â$îì–çÑ×_±Ãû‹# j^-µ¹éö³4n{¦À? ŠøÇŘèÊó‚µû3ÜY]¬ž§Ì> êß¼G«Ë þ{–ÇRJ¥Â‚ ŸºÃ#+î9 ×ÚdùÅ<Ê›”UšÝ&3 ,<¬ÎC–Yñ™f Ÿ:áÓ5ì7¡Â}â«q6£¥ÚGÊÁqé“þ¸êîtQZà &?—Ò³:¤|£ˆbBW  àŒp: J( € ( ˜?à Z«Cð£GÒ¢m¯}©‡<ãå‰ó¥/ˆÊ³²?: º·Y®ÚDH ß{{Œr}x®ËXãl¯n²¦“l—[wÉ$’8?J`,·#@ W„îתŸÿX¬§ ê#+¾½-÷‰/˜]4‚7—ιšVÜó6sÏÔòML"ï©Rjƶ™Á è̈T1ìϤÕÑÜéüGñJo„šO†Å´»Óî仸¾“ný^Œ£ìu9amnlyžˆïz Ô¨SÏ‘¤äñþ5Ó„·=?á·€_âWN…oýš«Èn|­ÿwžFNI$êp“lÙ$‘åºÓÇkª[yD’—GòøW6?>{ñZSob&ºž÷û.|r³øM®ßÛxʺ&¬±‰n#RÍm*gkã©\1÷¯ˆòš˜ÚqŽO3·/Å*j{3ìÛOŒ~šËí–ž*ðܶ¤gÌ7q8ê2è;gŠøEŒð.‹åG+Hg¢…¡W  € ( € (GZüëÿ‚…Á%ÇÆ0ÌÒ#Éb@ÁvãzÞ‚½ÎZÛŸ$ÝܬúlQéñ1Ü|øû«‘Ðý21];î?S¸0êü`#Ñxþ”oKøªxMn×D¹ÅrÂIa{t˜3íe 7)Áø`ƹåicdÓ8E†{ûÉ.®“ʉWd1“ÈäŸsZÓV"nçS¤ÜY,úQÕVGÓã¸Ct‘ýãá»ûsŠš›•Oæ{â[÷ðT0E¦Ü$QDBaG“jî*‡•<úf¢ Ì©= " e–IAÚŠN=q]vF1WgUqà ©<ÿ <ñÚKndSå£Ç¹",Ñ–o›x>b€ŒžÕ‡3¹µ–ÇÎ˹á3¤rmºãŒþWD]ÑŒ•™Óh>$‹Cñ6™ªMwBÎhåkw8°ÏÓó¬%X»£¦øãñwNøƒ{¦]YÇ-œvp23\ã{36x œAêMM» i¹ç‰vÚÌ÷®¥ ĆBǯã]ØÅ»³ê?ÙWJòô[Û¦^g¹Ú²þ½gSDÂ*í]ü>Ð÷‰Zã;Ï |=b-mT‘ƒŠÕ € ( € ( ¿à¤º Å⯠êȬ"¹±’ÙØd*ÙÁü oAêÑÏ\øÍH–ûN‚Α㷸ïí](æ±Vë÷’³¾~cšStÁ9Çë@JŽ(6ˆ2íó=׊M\iجšL r&™¥œçOJQŠ@årÚ3[’PA¸¦ÕôìÆê~1Ö¤ð徚M6Þáîb·r¡V$rxÙ8ÆMgÊö4æFŸ§JF&Y÷1Q÷˜úVÑVFRvÕª|,Ô/`U¾¹ÓlÜÿËÝ™‡×h PÕÏŸ«Ä˜h;E9y£Zø{sá9 ›U³ˆÃ)"+¸XIŸMݱÁ¥cÐÀæ”qŸÃz®r% Ž ª=í?Ù›G0ø7J@>iƒÌ\Õ^…ÒW‘öO€tM‰+\ÇiêqÆ"U{ Z( € ( € ðÛcᜟ¾ ]]iЙµþݨÉhñ‰ü9ÿ€ÕÓ—,®gV7Gåû\¤z”ÏG QÆá00I#>üõ®ÛœfkŸ1¸9ö©¸ì5­$sÆqNá`[ÈpÜf•ÂÄéáâW'vzwˆgÑš.Pž=i\,S{gFà w Ok¸sNâh“ÃבéÝ­ÍÒf8¤ xÎ=ÿ¿…QÇ£*ØyÓ†íñáøLÒ’ÛÄ:IÕ!yÌÎñ,l.”#.FåÚ€ p|Þœ§õ>+ Zû*ÐÕ=Nc⽤6™âXôØ ê[KCÉ&N¤’ÊÙËwÁ<ŠMX¼$y±ñ–Y_ðësÆ,Qî®"…2Ìì@êI⩟z~’þÏþkm.Ò2Ÿ-´)úãšâ«+ìúËÂÚhµ¶V p+# Ý € ( € ( €$i4OȲFêU‘†CÔ@š¿µìwâo øæmKᆇ¨k~Ô¤2G„FFµsÉF=LV°©m„éö<çIý“~%\{ïɧƒÚòtŒÃ$ÕûTJ¤ÙÕÙþȾ0dy4¨¡•›ù-/l?bË£öCñr.b»Òúqÿ²Òö£ö/¹N÷ö^ñíª~êßL¸´w8'þúj/dÎ7^ø+ãmKßøoP1¯Y Q(ÿÇI¦¦O³g {£¼r4sÄñH½QÔ‚?V¦ˆ±6ã «Nàf^iD‚AªL› otÒEÝźž«áLæ­„£YÞ¤S3¥Y'¸3ÞÏ,òÊňúS±t¨S¤­N)¡û<øãÇ~<·x im¬Ü>1ÃÈ~èþ¿…gVvFê-Ÿª_ üº6m\”scï7s\mÜíŒyUY‚JŠ: C@P@P@Hn†€2®ü9Û–`§>´Xx>ÙO*”ñáKl}Õ ?„-œp©@î< ƒåEü(ŒñoÀÝ Å0´zî“ezñKÜ>Ô~t®x?b{) “x2òk :‹k¬Éö ÷‡ëV¦Ñœ©¦|ßñàˆ¼ì5ý6Xc sß}#ƒZƥ̥M£Æõí9­ yªGÖµŒ®fÑ‹áOë?ô›O¥O¥O¥O¥O¥O¥O¥O¥O¥O¥ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_pinpad_n.jpg000066400000000000000000000245771231776762100260720ustar00rootroot00000000000000ÿØÿàJFIF``ÿáExifMM*ÿâmICC_PROFILE]LinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3descƒlwtptïbkptrXYZgXYZ+bXYZ?dmndSpdmddÈvuedK†viewÑ$lumiõmeas $tech- rTRC9 gTRC E bTRCQ textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÛC    ÿÛC   ÿÀddÿÄ ÿÄ=!1AQaq "2¡#B‚‘¢±Á3br’RSÂÒáÿÄÿÄ%!1AQ"aq2ÿÚ ?”ìÐh4Œ¹ŒÀŒì‰¯6à $©n8­©HdЙë.…D´ÅWiøòT7%™Òˆõˆ©i¢ªILœK£!Ûl¸òÚ#!l8Ô‚ÉÙ““@  Ðh4šÍJ  ¥xéêÝÎÅekLèíÏÏ(a£•8³þZ09ÀüG÷k¬"ë¹rM]2:´Ü­ÑdÏÖÍ®Eöäè/*b2Cd(ì_»‘ñÇ•jÅÛ8dɺF¶?¦§?&Ùy»ÃO´*a¥-’Ú|² A$|?½tXW²WèR-}~ê¶›JN’ên©´ðÅÆG¾7òýfp>†ªðE’³4(Z_Ç[à2ì}ExÓw)µ!˜Ú¤‘€¡·jr<ƒò®kŒ½’ó¿BÓo´?UÚRcõÕüØH Ù÷W·« )#ä‘ßéIqSðLsµäP-ßj7Mž¸:Êɪôô¤+jÃŒ!ô¤÷ÎP¬‘ŒqÈ¬ï ‘ÝeLT4ÏŽŽ‡ê•6ˆzòÝåã OiØç'Ë+HQÁ¢ÊH\ ÎsˆÔ«síJŒêw6óJ JǨ#½T±ï@@Zã‰iµ-Õ! ©JQÀyÐâY¹®zɨ/kØûùh«ï¶R”€}3¥nƪ4a›·g7i¾.Ým”ÊeÜÛ{b-=µ°h¬yð;|êöýײ·›û>ú´Äj,è 'J„ÒV£œ7wÏZ2•l‰%z0ËSé>óhe£ë÷˜¨~Unò´y.%‘åÛ·HDy)(‘ÿ¥[¹‹^³E”A‹z€ÚGÇ[$ý•Î¦ÐØªèÚ¯±c>ÿQÜ´ë7“µû{l¥æp“±²e!}ÍdÌ䥣¾5©ù6Ò>Éísc¼G•aÕö;¤f\ ör™r:ˆ\nŸå¿'uމ(首^‰Ð6+å zT4ê‘Ø¯ºˆøn&¹¤t´$(€L£Ö”®Tg=ÙÙµ{”µ¥A@Û8ª<‘RQolè¢Úrôa—Ú9ûØú¹‹ÛCKZ‚à óð ÿ€+smk+…Þ` e•!°£ê¥]µÃ;ÑÓ¹%ÿQ·FMc6¨(’>b€­P‡øÐ¿~ƒðõ¨R…äç#ÄN3—R¥*U]1+’9åu-r¢”$aY@£€J•žã[Q‰–_öˆ‘¤¬´¦_Z›Jr7“‚qŸSçñªÇ%º.á£ÍÂóPL¥Çum 'Ú-)ÈFàHÉõ ;œ·zº#µÑïFSjt—3Œœš› óL€òAJÒ GT‚Ò¼œPs w¯ðGN"ÌÎ×®sX>e)?ÔV\ìí‡ÍŽg§ú¶MåmlZŽqçYC³%bÜ×¶$¨Œó@fÐP 7í¾ˆ6Óö¬*\õÈç¶l§Ÿ†^ÛýŽÞˆû ­õò3‚Gá! #øšÔôfJÌ El•j¾°Íñ‚—iB–д%D2•ƒëÏ8ªci½£Êõ6b`yyqíÒAt¥îRŸ#…õõ§jrÒ*Õ×ô]«'/¨câÔd›ÃÞè¿ò:²”ñÊ1Šurt¯èÃÕš~v’¸¦ᤥÅ'{kAÊVŸQÀ=üˆ»q9äǺ>±Ñy+7ÃÈ­«M;Mà­Võ7¥ôU±±Ê U¸ÿJ¦g³¡ÚtI(%•¸“€q\MŒBBžh€(öŒß}ç\ék:T"Á/åG€]pƒù4+F噳½Œù*R‰q9O _}¼ª#v‰“uEn¶Û²M¶3oiùrK^ÎR•‚ÊRÁ[?í¤¢Û’HUú+ÒŽ¥Ü´Ú®ÚÑÒ¼ãÔÕ¶iŠ¥C£ŒÂc0†Ð01PIé@@Kx´„ì/šÝ‡†Å=7p$eE.©8ôÀ5³ü˜²ÿдë|µHµIváD¥Ö”R¤ç ò=‰iFʧFž•muN%)²w+ÚòsžG§–=(ãªD©nÊΘýÛPKºÏf4rûÊwØGNŒ’pÉàR)¤K•³QN"TièóQS‘÷ÞÇÞÛørxƒãLwbm—®Z²Ó¥n6ÄC-Zg8ÛÒâ9J’F ÀÈçT§0ã‡Ú-†–éV;©D'ÿ#S‘Ò4¥l•>’é¤Ú­HuHÁÚ1XMâ…@@@2½ ºÜ.pºƒ£mò.¡nlFh­i)ÈmÜ’0BO¦Ôú×lY;tÎa{CE·tK[Ýt­ù yÖ"ÛÏü€®¿"û9,lÏW‡Ý]r´Åå\~Är¿éš|¨Ÿý•óBϳ:[¸@›ÏûrYSdý©SL«û–éd7!”~±¥§pàs]9䯧í ß«²åXÓl]¶:T”Ã¥ ))#v2Sƒ½‰ç¾I;‰5(§%Qi­oC€ð Ó)w»„ÛûÌ«ÝJÃ-,Å·9ÇÔÿ-pÏ?GÔá»$¶Ý 0!´Ê6Žk1¨É     20y –8.¬­Èí•ú[@ûÀŸUǵtùµ£šÃ½’Ó®šYze§!Y´ÌFãÄŠØm ž<Éó?àÝÒ­#¬¡!@@]¶€6ÐÚÛ@hmm  |èmm  ´¶€6ÐÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_pinpad_s.jpg000066400000000000000000000203011231776762100260540ustar00rootroot00000000000000ÿØÿàJFIF``ÿáExifMM*ÿâmICC_PROFILE]LinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3descƒlwtptïbkptrXYZgXYZ+bXYZ?dmndSpdmddÈvuedK†viewÑ$lumiõmeas $tech- rTRC9 gTRC E bTRCQ textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÛC    ÿÛC   ÿÀ((ÿÄ ÿÄ0!1A "a#QqE‘b¡±ÿÄÿÄ%1!"AQðaqÿÚ ?i¸„2Ÿ\Z×t—9AÊúm2 Û"EEÊÔ]JB“rEï°?Ù««w, –íáú'ˆÞu‚Ò~kÈZ›ƒg :SÑSùIvÿ÷‚¾—á˜üŸ”^©%Ù,EuìÝ•ó%4!_ÇòL9•ºß°ŸNâµ5Óà>hŸ9+ˆ:$Ú®˜Ô$N ÐÄüWSk"àz€o±8Md2z„lQb×é“ëºïž¤V„ËEZDt¥ %¶ÖP~þ0õKÅÚü˜;—m­KwÌJ¯Ì¥ªâçïýàšéÁŒ—=™V^±e(õ9Ñ~ Ójq·ˆúwºÁö)þØ«‹ÔÔW< Ö @êé1â2W3ŠŽ„§_sn§áòZÖ–Ð¥,„¥"äžÃ‚[ÏÕÅf˘jåCÌŸ5騛ýG ¸Ϫÿ¬<¸Iå¶Vå8±ñ%)PKe´$ó…%$ÛuÒ÷éÛ¦&âÔuz]-£Í ê2|‡â¿6,5>Ó‘¤)d67¬í…áÔÆúÜ¢šçÜéw×go½UcMé¯U÷¹”ì™uwä§Ò®cÓNÕZ“´m/Íóâ‚§¢Ñå¼€:ó%•ÿ1qÉRÀ—ªS¤6‚@>jJ½Ûs{õ¶o‡^D–ê*‰Q‹%¦¡¼â'yÍ¡M—yI6òŽån£Û¹Æ'Ñqý½Cɚ˄È.ëF®×kS)ô¸HmL4¤Sb˜ìžkƒ¸'•$ß|)WLºjUI·ýÈ·֞þ1ì2FYLvPÓ@% Àb9™™ñ‹5¤=ô)·X¸ZH±؃ˆC0¯Ã¿MKï-ó JÔT”¸úåƒÐOAÓ{Ÿs‚z²éDꇚrQÒijPfëf<û6®oñq"ÀþGïÍdÝ,l‹Œ°øOáÍíÉïüË1ª–h©¹ñßh’„(’w û\ß²{˜J(1QˆvÆÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_pinpad_x.jpg000066400000000000000000000332141231776762100260700ustar00rootroot00000000000000ÿØÿàJFIFNNÿâmICC_PROFILE]LinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3descƒlwtptïbkptrXYZgXYZ+bXYZ?dmndSpdmddÈvuedK†viewÑ$lumiõmeas $tech- rTRC9 gTRC E bTRCQ textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÀÁ´ÿÛ„   (!%"/#%)*,-,!140+4(+,+  ++++++++++++++++++++++++++++++++++++++++++++++++++ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ú¦€Ò€@PçŠôÛk†‹y“o ËÐ|¬—$gŸˆÞK…‚mF8¦c€¬;þXw5ì|O¡ßc캥œ‡ÓÌþTX.kG"H3«ÓiÍ!Ž € ( € ( € (Ã¥”Ú( /âgˆÿ±t¥¶·|^]p<¢w?ÒšgÌþ7ñ¬–Èlì¤ýógsçîÕ7¡)ׇl<ÈdÕu ¤ß$Œ{œeTb'"n×d/}`ïÄÊŽqÏFëÇâ)¸¡EѼEâ(¥TÓu+àÞ‘Èp?>”XmØíôlÕVP:$Œ­Ÿóõ¥ÈÆí¯Ç¿iÅF«ai*ú”)ŸÇ¥.Aó&™ûHY¶¥¢Êž¦)­.Aóf—ñÛÁפ g¸µbzI.V4µ¯‹~³²‚ãN˜jFGÚRÚPw'"…ÁÉø‘áÍi’8ï ¬ïÒ; ?Cœ·I3³Br0=5%P@8t €Ò€@5ÙQ 1 ª2Ií@<üDÔ.u[ÛËØävýܯP¼ãôæ´QÐÍËSÅ$ð¾¡6¡¾òÚá场Ž¼Ô¥!Ýt5îœ.šÊ˜ $¨£ƒÿ×[™\¨¤’9|r)G\õƒý 6‚âÛ,VÐù0(Tþ/VúÑ`æu″„6Ò‡‚¬2áC@QŸL°œ“å4-ëãò4¬4È"Ñ­c}Ï<Î=8­.P¹¤vŒhбÂëLW.õU‰â9ŠÊH?…0:m?źݤ ž­uo´~íƒä/±¨¤ãq§`O^5ѯÖþH't ,xÏ¡úËÑHè´¿ÚFè`j4n;˜¤Á¤â;v›ûBøre_¶Ú^Û“Ô… K”.uzgÆ߀XHXÿ ¨A¥f;ÍíµýºÏe&]ÇÌgQŽ©ÔP4>f@<Á;Êç®åÁ¦Hù‘yü(?Æë=ÃØÝÞ@aò•3Ê“ŒÿÀH¬äRØä˜Ù‚=E &`0A w/èŽd¿ˆcóT²±~E/öMÜ®ÌQvD ’G°»% SC˜çmõ±ö`â„ÂÂ.—§;†ƒVEÇðÏ ÊÅcÔ>]èš6Ÿ{k­5½çŸ(hÙB¸èÝ+)ÆûAØô$ð—„6ŽýîtÈ$ÆíÍ#séÀÏó­£±‹Ü†(‰w6öyK“ëÿצ"Èhæ˜Î8æ€n=èZZiëô  dÐ!W©âŠÍÁÉ Î=_*Cœ Pü¨èƒ–X·Ò—²ŸÈšÎEE]žÒk3P €:P@é@  Sâ­”úßZZ+4òZ¶Å^¤ŽqúR`|•i¶:Uµ³/—:»÷pQ‰-Ïýô+xìb÷”–ÑÆû²‡ã"˜‰ÏÈÅ éíL ðËù‹)G#…{älê¤}E#8=¹ wG9 €z @<Ð[9>”Ã’@ sû£îÔk½ÕqÉ#=€ú“áu ‹ËÿUnâqYIè\§¢TáÒ€ Jm2dI!’9>ã) ôÇ4ñ¿ˆ¥j— í†'9Pp?•l¶0{”$A°©ÁiàvïL mÕ$¼O0þí¤ù¿Zbeãio"<䫲,eI‘’G¿biÚqVO&]ÀîÜq˜Œý@ëõkYÝ$¯I¹Ó#9ì3ס eb³`f=Ùvü)Älø¼ˆ¯ãç@%q¡ÐôfÜP¸c†ñ ’8 °=p*Šã+±O\@èP}§X³ˆsºP({õgvÛÚÜ9ÆY‚ Œ#±Õ­Âõ%’+«t4ìqšpé@¥6€(k÷BËBÔn˜àCnïù) ñµË´Ï¨›Ô·µnŒKÅVÁtBAÎqÅÔäëLB‚T’¤©ö8 v—3FY£•Õ lzå}(:êW Ò³7ïðAÜ@ìFnQ¡²ºŒ Ì­¹Ž3Æ8Èçð÷  4ýM¬¤G&P“89#õ¬«RöŠ×±P—+¹ží¹Ù°âOç5¢VInM宅ÔñL·(É$‰Ê»Æ€ä»ä’{šè~[‰üQoÇ‚Çò¥ =÷M½ðlÎrk)nkXu<÷ýjJ4-¯Éã4³i?˜¸  ”PzPEq߯>ÇðóWlàˈÀˆÖâ–Çʲ†šä@00kc0ãͺfæ@’NsœJO–\ñØqÖ†ì+Þ-Ä [“Æí¬¸$zŠJCh†üÂ0:Õ²ìr¬~‹ŸåJã±IVã4Ä*°cÅ#Œ#{PdŒæ€ ñ@Ï‹}ú•Ôä}ÄÚÖ¥°;aªq 0±6[ö7¥ÀæŸ!r(®ÒÁÀ4«@¥4P—þÐW+„ìí˜³Ý Àu j£¹3ØùÖ1)šG^`1î}3Z™ÄÛ³¯W“Ÿ¨ë@²îµUãrp}:~U2)ø¯Z’ù¡‘ó’·s’v®3R·Bž—É!YxêkN„õ7ôm> Û-VæíŠ­´E“l 6ü½Xg<3ß›eœ´äÒûrßÊ´‰,½Ûn§ ¡»W¨Ø]ZG$2I›±È‘zÔó”£ åÔQVA8bhbps@ ÍzwÃ$û>ƒytxÉ?¹ ´Í¼dõæ³6:‹¤3½Ñ"-´šílcÙâ€-Ž”PzPhÄ¿h[Äûf‘fç„åÆ3Î@ÈÕÀÎgˆÅç,S>SœŽ¸ZЂ -íÕ>é¿\Jt „#h$ôÉÅ+¡êg!H® ÉÇ=3ÎhI.ÆwFAê 6"µãͼìò÷çµM™W!´µnvròÈrÌ{Õ¥a2äî‚5Üq´ä}=*$47^פÕ'‡lQ,‘Ä"D„¨£?ÔšHl§o E>€Vš%©)6ì‘®ºF£åo[¢˜ÎDG§åXûz}ε€Ä¸ó(;z]¶±VÈaÁ¨­SM]²‹N̈¿S$õ~ÉàØÈ§õ8¬äRÜ¥b…œVf‡m¡[—Šz6…k…^(§Qµ@ Ž”PzP~´ówÇKÔŸÆ×Qœ±¶#QîFN?:ÒÌó'ó>ÆVn¾ñÇz²•ʈ€~”³ Ýé¶ZÓM«Û½ÄËUÁˆà‘ÜuãééY½ËG%©Jî”|ù,}‡?ýj¨‰—¡]–Ìì8óøSlIõZéöR¼N.кùcæŒ÷ú÷ÅJ‘V1,Ù™pÍ’ ý+BK²®.FãÛ楱ؤòyUYW ’¬½­4ÓŽŸÀÂÞMFYn>ôj ÿ²3‚GÐW9µÚç·ÓJÒÒòQÓÔïÖÞÂp GŒ0'¡=‡À¨ÓkF}4±xŠmóÓÐåþ éð‹¸r†î'P²ãdnÇÔ_c]8IÊ97G‘œR…\:®•Î<–±¯MŸ({âýŸÃu¸'h?€Íg!Ãqº<™I‡¡èœ¯ ô .‘ŒúP‡­8t €Ò€:ÐÉ?oEï‹5‹˜Ø´tÊ vøqZÇc)¼û¦Ž¤ÈBÃh­2G;¸‘‡v3Õ'ó§óT—yœ»œð2rke±‰\ƒ5ä&BWÊÛŒg­1 ·HØË$}i1¢â%’èÏ6ö¾y¶@Oá,¸éÈúŸj‚Ž^-¿jœG€ú€÷ÅZØ–m[ZÍw<6–ÊÏq1cS‚IéI¶4gêO§Ü2I½Z7Øñ¿U>ƈÈMË‘ŽµAb ¸ƒ‚BHWý“I ³XQqÔPKgºü/ðŽ˜<=oªÞ[Cwyt ‹æ¨dr@Oã$ׇÄTWNÉôaÇ™Ž¡á½#S€Ã¨irFF ¤Axê`Šã‡Ö!¬Y«örÑŸ?xÿ@>ñ,Ö )šÙ‘eÏRÓ>à‚? ÷ðxoIIœ5`¡+!¾·ûGˆ­ä.XþºY‰é·jfÕ}€-dÙ¬V‡] Z}Þ)z‘nã¥jš(Ã¥”Í|F»^Ö¦ÈììŸ÷×ÖšØù&w]„Oœ/,HÎkn†DjKÜO37"= g§4@JÀôïE®·-•†DðOR*yJ¹¬1À¡A$ç$ž¤ÕZÄš¶:«é:½ü<èz1PÑHÆÕõumNI1“$žlÌ®p3N(,ZáRRÍ·Šo`FÔ¶úZx:+•e®6ídìõ#°éP3’·‘^âvP<³'‡Ÿ×5kbYéžø€4A§jqÉ5ˆ$Å$~,õî+ÎÆà=´½¤4gEüŠÌí'ø§áèa/ ×SIõkõ¯>8WÈèuéîy'‹µéüO®K¨\ ‰Jˆâ‹9؃ Ïæöp¸uBš‚8êÔç•Íß…öûµK‰Háñ5ÐÌEÓàónä|}ç5‰²ØôÓ…â´a"´-áÒ€ (Î~:]ùhAÁ¹>Ý¥Tw&OCæa2¥Ëì• Æ+S"$Ü#žF|´Ž?(D†K‡‚É,ÌIàTI•a¾%ÒN—pð<‘»ÕÖXÆÈþ‡#ð¥pfU“Y}O5¡%‹œ°* b?™ÿõÔ¶UŠ‹&ÂѲ…eüFz¤&M%r80L§(’Vdó€öŒ\£¹5½º.Øã bܽceq¨Ü{8fžLgl]…KcH†{) šX™."t2›Ž¼þ´&2‘YA*ˆ=3átl.'#—| ,ç¥h6¹*qÔÖFç¢è¶ÁUN(lÐ@8t € òÚü-`£¡ºŸO”ÕGr'±ó˜•cyQb8ÐÖ¦d@2YÆ®rÅ‹7×üæ€.J–VC•e8#éRÐÓ*j—Wš›*Ï,® m/#d…ô$˜î:ЬRóÀ#·j¦„Ý;Xµ³ðæ¥a,.×7,6¸n8ÆIäcæ#äûTX³“Y<ù”eT×¾jâC5¬íÍÄÖ–©"FÓ¸Mï÷T“ŒŸjMŽ(—ÅÚzéw-ðWÊ!-ó)Ç|€FH<ÄR¸Ì‹iŠÙæ­’mxkÄG@½–U%IWkÆÇ®G8=Ç¡¨±W3õ½tßë^¯úé[(€ä/?J,x  Õ{?ûc‡í¸-PÇÏRÐ->ï™±ÝYGåÄ8æ€' € pé@¥yÏÇk#uà)äUÉ·•d?N†šÜ™l|¿+l·‘F÷ïŠØÈ&R©7UAÓߟë@ØÈé@ ju2H#q‚N=3Jû‘ª U(éMÝ•ä©È=Å&®4ʺ”÷šÔ“^ÈÌÒ¾ùÛ,çÜÒHmèM§ØËw6È”I'G½YZ¦¯#Qü6$ñýn_ÑùÒ8¿´cÖ,͹ÓäÓn 7ùnFA«PG„vÒ«Šñ9ÎH¦h}à»]–VÑc„ˆ ÊeÃsÔô;]¡N* ˆp1@P‡J(=(;_Ó“WÑol%û·2gÐö?ÕÏõË9tÛÙ¬fˆG<22I¸r0x­“Ðħtá§rÀ÷  >QEÀ<–4å´-Ú€Öxîh€¯JfÒzÑp!‘:œSihw¢Í¯&6“ÆO¥Ÿ§'×C½‹\Ò¥@—šsÝíMÀmˆàÁ+‘žzäÑÊsûh5fºW‰nQôËxdÁœM¹u\r>™ÇRU$ÒÐÌÐíÍÞ­kä´ƒ?JÐõO¦üe˜CíûÇåúV24é:|>\@Ò,µ@P‡J(=(´ã?<6¨‡\Ñ i.bâ(ÆKïÜÓŒ¬L‘âöñçÍ‘{³?yâ(?3WÎO+7-¾ë¬{TOgJ9Ð(²âü:ÖH[þùÿ NAÈÁ¼®ÇÊÅnãÚOñ¹ƒ•”.ü#¯B }:Fô̆þTî¬Âº°¸·r—VòÂþ’!Ÿ0r”žß$àS¹$n÷À§=¹ÆA¦R5Ò.Õ¹LÿZ ] mÝ¢¸\1fbÌz’rM‰$¬‘è? t)u@ÝìÊýÈÎ?3Q&ZW>›Ð´ñ Hª¸P+3S¤U   ( € pé@¥6€@®mDÞ¾ôSû&<ôᥠþ@ÒÓû´éGÝFóÃðÏIbIõWPEqšßÃ-*ósC ZÈz4GË¥;ŠÈóíwáÆ©a¹­•nâüƒ Ó½R‘.'`ð–VRx*G#ðª¹60/W``Hv§qøW@½ñ.¯•ŒLÙ9wÇ ¾´œ¬8«ŸXø#Â0hZlVñ(Þlu¬±ÛÁĘšHzÐ@P‡J(=(´P@P@#*°ä ­5”rœÐ1â_éúä,·P.>Ya—üw&½øª\jSS·]<ždÁß÷zfŸ1<§¯x/Á_…tõ¶Ó¡Áÿ–’·ßú“RYÕ¢ª (¦€ ( € pé@¥6€ ( € ( €Ö€ºPGZsPP@P@8t ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_pinpada_b.jpg000066400000000000000000000047721231776762100262120ustar00rootroot00000000000000ÿØÿàJFIF``ÿáTExifII*nv(1)~2¨i‡¾``Paint Shop Pro Photo 11,202008:12:19 10:45:540220‘ 0100  8 B 6 ÿí$Photoshop 3.08BIMÿÀB8ÿÛ„       ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýMúМ|pøóᯀ~]_Æ’¶É òàŒî^Ôr@ªJä¶x~ÿ-øjeµ‹Äš/Œ´st7DMš\\ŽX`ã긕DÏGÑmŸ‚ÚÓ¤oã‹.fé­ ¶„~2(­/g%Ð|ë¹èZ?Æø‡P·±Ð|aá½Bîå<Èa¶¿ŠC"ç`óôëK•®ÌޏW*rqÍI@4 f€Gæí·ñ#þŸšŽ‘s¥ö£”‚¥Sê2Íyù‹~BºèÓM]œ•&ù´„óZ·*ÍæåF}ø£rˆ&…FR(êÏø'&Š×ŸuÍDò­mBpx%³×ô¬1ÐÒ’¼Ñb3éÏjã; ÿêi¢øSÔ&;RÒÖ[†>±þTÖâgâü÷òßj2Î3æÏ+L[ܱ?Ðס²<÷ï > ¼776× æInÅ%Y"W Œç‘ô4s+\j.ö3åÕ–âbXÕ ä:qŸaíCÑî5tW7n‡†àñƒÏ4Ä}[û xµ>øZ{àÛ.5k¹Orˆ3\؇±½¬û»áçŠn|MhÒÜŒ¦Ðwæ:L/Ú__ÿ„kà7¯c§½ºýdÂìÕQWdMÙ’°ˆZuûmÁµƒy‚ï(02p:õ< í“|»FNžóÛiW·Vw)bè’9‘ÛcȤí8Ï%ˆcøT;(¥a«Þä7"â×áãˆGa3¥»ÈÊÃ}à ž‡ÔÕé)$·Ú‹:Ÿx?IÑüo©i¾"¶½ºeBÖ``¶zíúW™†ÌjU¯ìeÿ+e™pÆ —GN·3ÓM,ïÚÎé¯4{§Áß Ëªi¾²îìü÷ûÒ;7òÅtÖw‘ò”‡èŸ€´Ð|9m ]”ü«#sÿoÝwû+à9³Gú–§OuPÎU­%yV~éù§sr°ÛM/Ù–åv6cpHÈãÓp>•Ñ%Ðçƒ$Öñèižt×Å‘¡”0Ø ¸°={cñ¡§{·(—3Y%æ˜ìÍ|ÂCçÚmeƒ;ºe#Ž”I9^Úh ZÇ®ühñÏÃ/è=·Âÿ Í¡ki*ùÓDKåm#aÁ;ÎânÜóÍxYFF¤ž"w‹[^ýwÛC·VŒ •5gýyŸh~Íÿ„š„É"¶†(WŽ0ˆó½9»²)ÆÑGÖB(U` ‚Ï”à£:%ÍÿÂ-R´Rñiúª™€u]Cøñ­h=LklÍËÙ® sÛÁ<ñÅ2ùR,mïQ?*êqLæRh¥t.¥Óá´‘;häóA|Û±½×t©¶·*úXX,nð;žò:žTvóÔñJ¥nmQÃF+¡QD°D±ÄUVP´P@ ½hà zá†=3úО´”ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_secoder_0.jpg000066400000000000000000000555071231776762100261420ustar00rootroot00000000000000ÿØÿàJFIF,,ÿâmICC_PROFILE]LinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3descƒlwtptïbkptrXYZgXYZ+bXYZ?dmndSpdmddÈvuedK†viewÑ$lumiõmeas $tech- rTRC9 gTRC E bTRCQ textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÀ,,ÿÛ„       ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýS € ( € ( € óߊŸü#ð}m¢ñ]ì²jWC6ú]Œ~uÌÃÔ&F’@àúP“'íéàØ5E‡\Ðü]¤Zç %ν‡¾#fþTÙ韶GÁíOhÿ„ÒÒÅ›øuYíqøÈ€~´ÜhŸ¼âP¿ðøÓš‰n‹m©ÂíùÍu±L“ x$CÑä}P@P@P@P@P@P@P@P@|û7ñ7â¯ÅˆZ¢­Ñ“Z}/LžQ¸Ço*À¨¥}>‘ot….áŠe=VD ?Zæu_„> Ö³ý¥á}rz³YFæ4Åk?²7Âýo?hðµ¼D÷‚i$~”ÌKûøFÍÌžÖ|YáÙ;>ô ÷ÈSúÐ×övø‹¡¨ÿ„CãoŒàTû±ß»Üü}Ø~”õÑiŸq¦øÿ¾ z.¥c³}vÄŸú<|Zý¥|>ßñ6øàßĿŧÎÐ1ÿȯÿ Ð£öÃñÖˆqãOž*·UûÒé× 8ü7D£ÿ  v_ðP?£üOáïø~Q÷…Öž’?öÎF?¥uÚWí­ðkU ÿ”6,{jWØü^0?Zît/޾-Ñ!Õ!-ÿ|îÍvV÷PÝÄ$´–)£=6 â(Z( € ( € ( € ( € ( € ( €9¯‰~(_|:ñ?ˆ$`ƒKÓ.o>©0ý@ ýŠ<.þýŸ´ºí:Œ“_HÇ©,ÛAüÆ€=íלÐH -x÷íñN‡wÞ´µ×SÃv÷Ïwq©6˜Ú€†Þ³ÌkÈGŒã¢€3µž!ÒtχvºÔ>ð÷ˆ ý !ðe®¨þ(ÑËisi¶·¢ÌnIn‘¥(–8”HOR àb€;½_ÇšÚ9¹ºC«[Ïwmq‚|çŸîìÆrEbé¿<}¡É¬Oy¨i:lqÅ)¸ÕtÛ›E++Œ©t·\m'­tvšžâu[;í+TÑÜö¿1$‡à僞”Íë < âhVK¯ xfý$Y’Ê#¸á”sùОkŸ±ß­l·Ú<*–Ì{ÚÝM? Ä~”ÊMû ø2ÒC'…ußø~QÈk+ÔÿÇýhëû6üIÐüQ¼il«÷b¿igQùÊGþ;@"Ñj?4¯ˆþñ kÑ5+4BßR!ÿ  Q|`ý¨<>1«xÁ^"EêöSüŒôµíãý㟀þ+· ÷æÓfyÀÈ ?ñêÜøoûvx/ÇÞ=ƒÂ÷öš¿†5;¬-½¦µ‰¥lrªÁˆÝþÉÁ=¨éu`Ê œƒÈ"€€ ( € ( € ( € ( € üRøëñ·Åþ?ý£ük§hÞ*ñðæ£­Ogý—ü¢Ú[h›Ë cÝ´‚cœÒê3õ«áׇáð'‡t¡M–Ÿ,÷‚ ß®iˆé6‚B’7qšS ÐytªxJÖ|HšÖ©—7 ¦Ï¤ù6b6ó2´€®9'bŒúPž/À½_F½Ñ®|9âM6ïû3FAâ-$^«Û‰L‹’²! Ä'œ„€.Ù|¼‡Æ–ÚÅåÝ„ÖÃÄ3ë“BˆËÇØ…­¼j9A¸žÝ1@‹¾ x»H>+²ð¬1ê^ƒÃ÷Ö~´ŽEÚÉ}$bxâÄTr„¾ÞÔsS𖵯èÞð÷‡î~ ÙBšý´Ïsâ{H¦:tv°I"2€6ºKó1ä Mà›(,þ½‹5[-'Åvþ$º»ÔeÖ‘E­õú’Y¶ü«äº2:…åx<•4©àùìþ#jb-kNM7N]6 ÛM ') Í+ÉæÏµBùƒr¨\ŒÙ   _x~Û¿u©|?>¯c=¼2=’èN<©Ü@còï*vœ¨$às@_?á8ðf‰§†­¬xŠèܺk¥Šá– d)ç%†2r¸Î¢èbñô=9µ½‡QkhÍÎÄØ¾nÑ¿'9â€.PAí@ °…û¼c¸â€>6ÿ‚”ÙØiþð޳o qø•5È#³¾A‰P(f?7R8ýhîO‡º…έà]÷Rº¸±†YG£ÐC@P@P@P@P@×ÄÏGà?‡^'ñìt2æ÷'¹Ž6`? ÄßÙkÃ2xûö€ðå­Ñ24·q¼¬yÎçÏäI¤†ÏÛ ')ˆð¯hËâÏjóÉ<ñ%ŽÖ3AUÉýI®šQºÔæ«&™E4M{OŒ/ÄºÌ ÙLìGåš¿fˆUZ,Çâ/iÃkÑÝÚæoשö(j³-CñcÇ6#ý3MÑïÀîªÑ“ù7ô¤è«– ý ¯à8Õü'8ÇV¶¸ÏèWúÔûR®KOÚ'ÃÏ©iú݉ïºp?#ý*]ªÅ›vüxüN’ÝkˆdO温t亦™³o㿠߯ú½¤LOeº@"jyZèW2dÒ }V¿¸¼„öâE?ÒÌýsšWˆã‰5ý:ÖôBKFfL´dõ*ÝWð4žÒ›F‡JK(¢Ó¢–9RÚ,ª†IŠxëó¨'×½jó@câ€SÖ€ `ÐÅ|Gû{‘âïŒ|¹qs~÷RÆ?ºYË}~ƒhÖ‰a¤ÙÛÄ»R(•ŽÀ »@P@P@P@P@3ÿÁE|eÿì¯âHcm³ëS[éQy!Ü3ÿãˆô˜ÑñGü+ŸÛ_nµi" Ÿ’†?Âv쫊3õMHQ—8QÉ'Ò˜Ð.Mò^_ÉóµíܳçÔ8ý1]°VGGvm¸=©’C&ÁB*ʉԮ;P¿z¶2Á"Ò7˜²ÞI²>1òçûÇ<} RÔ— Á%Œ’ÁoxÐÁ{2†Ò¸ãß½1ÜhzuÉuE¶•ÐáÀÁ*}ý(ÎCÄÞÓf‰£ÈIî§q‚dNmq/ÛežI4›Ëû9ZÖᔫÜÓÙE™{Y"å±ñÖˆ´Oøž ½#–å¥\}‘PðÐe¬LÑ¡mñãÄÖšŠŽ×¶Q6~¤(5/RÆI¶ßµOÄí7OAðÆ¦ òcY!'òb?J‡ìRÇ÷5­?m½FÙ¶ëß.xêÖWàþA“úÔ< º3Ec{Oý¸ü>±¡ø³Lnå­’UоJÍàæ6 ï¼ûF|=ø‡«Ûé^וµK‚D6w6òC# n\€O^ÕŒèN íB¼&ì™é%p8¬OÍßÚ×âÀðí¥kâdš´~Ó-@²y<°òHű»8=;Rzöoì¥ûaiÿ´ìúÕ•·‡.|9{¥C­—K:ʬH%HU#£ø… ÜmXú&˜‚€ ( € ( € ( € ( Ï/ø+:_Ãÿ Å!Ì“\ê³ÆdQdÿßr~T˜Ñ/üÏÂeðw‰uùPïžHíÕÈ÷,À~KMûOÆš—ö?„5‹µûÑÚÉ·ýâ0?R)¥v&ì0Ðm~ǤYÄ8Ùíí]½¹¢îOoÊ€´6Aǰ4ÄU˜ìbéL M[J—Q|Áv°ÂÊRX¤‹xaê¹?+ryç·¥4ìMŒƒá&R’O´9´wYGïßvõ rýÒÑïÅUÅcP[Ë &H ´¶‚t#y¡pÒÜ€F~l 7¹ëWvD‘Æ\Ç4A·E}e¥Ë!>LŒ±aF>æH²x8Àµ²0f 7Úµ¹‚$ežlÌ‹#,fffbw+)ãÍP:ûP½cq!¶6†Y 1@H ŸÃ§|õ  ÒÊdõÍ;£,i.wD¼ûõªZʧA.K¢þE>fO*eYô+Vr­$pš|ÂpG ~ÏžÓ¤ø—m²yÖ0K0m£å$lúrcgjvîuà¡ûËŸUŒWŽ{'ãí!â3⟿u@ÛÒ}tÙFÞ©Ûÿ²Š™ õÿÆ×ÿ±¾=>šÍ…Õ´K”Õ’HÜ~ˆÔ¢ ýS«P@P@P@P@øóÿ6ñŸü%?´Ö£§G'™‡§Zéªà;3þ²ãð©e#îØWÂg¿³®…æ(Yo¤’é°1Ç?ô ¢OIøÅvS°Y£a¯¯"‡ªóÿ Šºj쉻#5ÚŠ£€µuœ@A=sŽØ4À àõú§pr{þÄÈ%)ÉSBfV£~¶ñ°'ŸQT•ÄÝŽ2òñç”ç5ºV0“¹NI@jv$«,Ù<žGz¡Š¡R0ãµU™Tž½j‘,¬ÀÙÇzb#h†ɦ!Žw1ÈÎ:m G¶~ÍZyw×5 EŠÝO×,¯?-‘èà#¼a×õ$Ñ´MBþr;[y'b{RMyÇ¢~êš„š¬){q̺…ÝÕû“Ô—þ±©Ñ®¾|/ûO|<—vÕ–ïì ÿm¢hñÿ}8¤Ÿ³Ub ( € ( € ( € ( €?m†šÇ…¿koÛk…çƒ^¾MZÊàŽ%‚S€£ýÆ ŸðzVÔwÐý[øW  |6ðÆ’Ë6ºt(ëèåAoÔšb7õ.ËWHÓT¶ŠäFÛÓÌ(ØÆAìpi§m„ÕÊ’xKL|‘Iû’ëUí$ºéEô*ÉàkVÿSs:{0 þ^ْ袜Þ›i÷‘7³¡J·‘.‡feÜøSŒ‹o0ÿbL aGþ‚kÈÆ;Ô·dzø%jwîÌßÚ»Äßðˆþξ?ÔöH4©`CŸâl«W!Ö~;Ü[ŸL²éåZÃ= |ÇÿB¨‘Hô6WšÇÇoÛèͲò]~Í£îâeb ü(?qêÄP@P@P@P@|iûuøMñ‡ÅŸº´ŠMbçR¸v¸Qó¥¨ò•”ûe>Û}Í}H€(ÂŒÀ° -ž´¡½(CóÅ/˜@äÐ3ÝmP&¸Ürh2‚0søÐ[/O½é–V“缑+1MI­˜œSÝ7_|5{Ÿ7IµR{Å”þF´U溙º} kÏ‚¾¹æ}l{ysdûèÑbæŒÞ ýýŸmdìÍÄg°šØüAªÆ¾¨Éà—Fs÷¿³Þ´™6Z–›r=|dþ†´Ž6=Qœ°RèÎ~ÿàŸ‹ísåØCt¿ôÂt?¡ Ö«Mõ1–¢èsº€¼M§î7š¨ ud…˜~bµx=™”¨ÍnŒY {=Ëym5¹C¡üëE+ìfãcëO†ÚöO€t}»[ì©#wù󯼹¦ß™îP,ò>xÿ‚‘kçNýŸSJ…±.µ«[Z`ª sÿ  ÈÔüÓšA?‰nä_»Œèƒù ÍîZØú_þ ááøIÿi"îH÷Á¢Y\ê/ž¶ùIÿJáTˆ?[ê€( € ( € ( € ( € øóŲÿÂyÿÓí‡ÏmáÆX‹,»ä?ú_¥}8£Šõ súÐ@Ë&Å  2È]¨€â€ úP»ŽhCc­(r{Є„ p“Þ€³q@­ÌhvÃ}q@ œ[Ý!óU%³€Â‚ב”qé@ ÁK|B]øi¡#’çT•}‘@\ÿãÔðf ™.&,™y ÷b?ÀÖe3ô+þ WádøûÄÓŒ1û6™ ÿzIþ‹ªDŸ õ@P@P@P@P@|_û.Ìö9¦"ÝP@P@P@PÄÇà¯x‹Ä =+N¸½%º~î6oé@0~À^—Iøk¨^ô½^îKÉŽXœg?ð-ÔOöÛø+ãÿ‹iáI¾ßÇjšWžÓF.Zg}¸`WÐ)|džÿjï‡`.™¬øÆXcà,:™¸\ºÌßÊ€,ÇûX~Ó~ñµíÚ/S©hhàýX"ŸÖ€>˜ýhŸ||‹Ä²|@Óô›(´Ï%#{+g…šWÝ•!˜ƒÂøŠÜý¢?j½ötÔô ={E¾Ö_UŽYH´#hU ŒáÎrxã¥y½çíýð“Ç~Ô4mf_xeo hêÒÄ‚RHÜ•8îo|øíðGÀú$ºVñ"Ý­¥Iz½‚Yȇ;!A!=ÙòÞôï^ñt·à½G×VßiÓîRo/=3ƒÆh HÙ* Ç\ Èñ}Üšo…uk›k=NþX­dak¦.dàñ?ÇŽG¸å³Ö›qgâo½‡ö¨ð¹ûzi»Žö5‘€ÊÅnÉ“Îå²áhÛHÁæ€nz~T¡}o¤ØO{¨Ê°ZÀ†I$nŠ¢¢s8¹IÙ#Z'^¤iRW“vH££xžÓYº’Ö(¯­.’17‘{nлFNzŒñê;â³¥ˆGËfŸš±×‹Ëjá ª6¥íx´Õû;uüúc­nyäˆ0Fhó^óÄÂûã'í/ã‚ùf—w§[HOFe«Å¨â fò<@© ¸€îHÆ*gî?¯ ü7𦂪éº]µ»öÄcwþ=š´Aéž¹)&Æ?…tàäP@P@P@P@|õû{x”ø{öañM´RçZ{}IžUVÿÇ7ÐCð?ÃÃÂß ¼'¦„(b°ÙOfq¼þ­@ÄüÇÏ4Y£‡ïH÷“©XYN¥d·ŒçÐPMI³Òçca C¿– ÆO© Wâ¿Á/ üZû4¾2Ò­ïç¶S2¾C"“’qšñ=oöø¨î6v×Vlzg<ßY ?×?àœ61мAn{,±¬ƒô"€=·öJýŸ.¾Ùkðê—ñêWZ”‘l•"ÙåÄ›Ž'$³~J(Œý¶<ñOÄÞ"ðÕïÂIõ(,lm%I¾ÁzÖîef' 3ÂÖ€>nÆÿ´ÿF¥ãv?†|ݯþ<€54ï۷㇅\GâKm>ø¿ÚZ^Ãù¡Zú¯öDý¤üCûB¯ˆŠ4'OKXYf°2 Í!`«Ùç=Ç×|tý§¼+û?_è¶ž2µÕ®åÕ#–XÆžˆæ5B£,‡]ÜcÒ€8+۳ோô‹;WÕuÝ2;„ÚÆ}=Ã!È ‚»†AþjJ¬%³:pX¹á+F½=âúíý3´ð7í!ðËX¸–gø§£ê3ʪ‰îË!ŽxRI'“žÃTÒ§8¶ç+ýÈ׊¥V*i($ï»müßEѯ¡øŸFñýŽþèÿþüL»ñÝ›_Xx‡VQ4"WÌC/ÞRÞU=hÚüûüÑõîbð‘,0xÞåæ›kAùœ÷¥`¹ô$’OSL *}—c€;HÌŒ’€ ( € ( € ( € øçþ |þ Ö¾øÕƒ>«®½ô±çøa@ˆOü oÒ€>•³·KX#†¶8”"Ø@¸Ü¸4ã^?øû¦ø{Ç:W„|(*mbÆÚò;;›ë8nä]Éo$ʲ8Î2œ‘š¶^€o&$  î•^?œƒÞ€(˧ÚOþºØú‘@·Þ ѵ+uc€õ  ÐŸ xWJðšM‡ìm¬cüÉVÂ|cqÇSŽ(‡øÝû:øWãmÕ…ß‹­[›8Ú(¦IJ©9ÇÖ€<Zÿ‚rxZè1ÒµRОƒz¸˜þ´ÀëðMíN Í¡xX‹qn˜cü¨ÝcÙ¿Yø¨x’ûÅ×3Ü^B–¶¢×vJnÞìÙª>´Ꟶ‰‡„gÿja‚:iSD‡ý©Áú° ýƒü+ýû?XÌêD—·-!'¸ 1ú»PÒB CŽ ô  B:P¶m»\zÐy§Kº (íP@P@P@ñOÄÙ¿á`ÁBü;¦(2ZøOC‰ä²È^lþK}ñGÆðçᧉ|Q+s.•a-Ôp¶q#¨ùAÇbq@èŸðT{¤WÅ_ fþ)týAãÿÇ]ùЭÏíÓðkǺ¦㯠kv÷º]Áº¶–KxnDRì+»†°ã#ƒ‚9€=kÃ_¶_Âj6Z~“â ¯¶ÞL°EÖ).Ü ¸=ó@Ù+Çg’ÝÈÇ-$’0U@:’O{аMìeœ±\Dz<.Oâ(çÏü=ÖµŒ‡W³ðæ«=ãj:xŽþðY\écO‹L‡_:)épûX€|tÏNþ´°¦P—]ÈAã^$øýñ éšd7‹ewic{s=ÓA‰î•HÉŒÆHWS‡‘ µrh× Ÿ¥:D¢€-IóGÇZ7b4âô$ ûÁ@3ÁF|DÚgìòúd,DºÎ©mfu*yÿÐ(Ö¿g_¾…ðÂ"mͧš@ÿi‰¦(°¸ *Ãq@ç ÿ*}£mœgÖ€;l¢ŠØ#ŠZ( € ( € ( € ø{öm”x÷ö¡øÛãr|ØSS“M¶—Ö8ŠÂ¸ü!o΀>®¼·‚öÊ[{èãš T£Ç"†W¨ õã^&ý~xŠW7~у7VŽÝPþkƒ@s®þÂÿue?f±žÍx'aÀ’(Á_°ÆàOèž$Òµ=JA¦]%д˜¡YJœ…$(ã P¿|dðž§ã¿„Þ&ðþƒq¾£©Ù=²M!!Fî¹Ç¨Èühóºóö<ø½á9èm»oñX^ùdþ«@n?i/EEyãhã€`vœc9çïøÐcðƒöøá«üMðχîøã»†|Câ©á7PéVr¶û¶ù¤}ÕÏ8É f€>bÓ?া™Ö¼¯Ù¿³\Å0žÓ@Sö¤øâÿ˪êú4d¼º‚ö÷Jpßb»¸ƒo•,¨™É\}bîïšíGð¯Ä·ði~5Òâá‚GÅ£%Aó?õUka†êjÎ×ígµi­n/,Ô·›]IÀÚq‘9ãßÚ¾o>ÂεJ27R’ææŠÞö\­«®dµÒû´ììw`ê(ÆIK–NÖoñ^F>4šf±mìzµ™„qÈUWy8RÀ0 u€ ( € ( € (  _xŠ?x7]×nHi–Þ±n˜ Jùþ ó¡ËcðRMføµk7¯tìÝ[wÎOýõ#PÓW8Z壩ٷa¹Ìgõ  ? ÿÁ>æðßômE¼Cö.Öî)î`’ßæ’4pÅAÝŽqÆ€>¶øÇa¬ëŸ üScá#³Z¿°šÞÙ·mÚî¤g=ºžhóbO‡¼ é³øÂݵüŽ¿’¹þT‘|zý¡<ßéZWøu<Õãþº-v¾ ý½¾*ZÒÓYAÔK¸]³Øùm'û;”ŒÓ8£}@ý+hš‰0˜œâ€>ø×ü,_Ûë þò*ÒÞ6…ܱý Ò08è( ÈıFx XµÌp(9>WPG¤¾@Ïjê-tt=P@P@P@?þÞ^)o þË>4[w)uªÅ“%§‘PûäµGû>èQøKàÇ…,"]˜³YˆÆ>ù,?B(ZëâƒíuûÿÅ^´ÕíˆXÝ_Å ¨H|¬Gb Gã umk—±|4¾Ó›W¸ ¢e‘-Õ˜”c!Š)f Ðâ€,ø[Â:w‚´+m'Câ¶€^CºI¤'/$Œygc–f<’hSfM[„¼Ðñ‡ÇW¾Ь_Ãö«¬j7ñY[[ ynXƒ––E†<<›#Vr ŽZ—á/>!xÛZÕmaµ¸{‹‹r±+ q­}óÆNÜ˜ÛæSÁ Ã4r#ò Ð[‰ãµŽIndHbA¹¤‘‚ªROJt7 B¬òΟ,(ô öy¼×oþøjÜ^Ýk“Û´×|10Üí´8õÚçœù×â—íñ¯ü7ø­â_ÙøSJÕ´}2ìÛC+¼±JÛTn%†GÞÝÛ¥bꟷÿ‚|wkkkñÀ:Ôf”OÆ›©í–ÞP ïÇ–êpÄpÜ‚A Fð'í·ð[EÑ-4­ûwB²€ÜY´˜,Ř— å‰bIbI$’hèoøßFø‘á«]ÂW&óL¹,©#FÈÀ©ÁHÈ4½¥hn^Õ.­Zå1¾*ï\ŒŒ®r8æ€<óãï‡/¼Gàëô½:ãT6Ú¥µä–‰j—I"!$‰`gO:<‘” pFvà€Gû?øGWðn¢ñ=´uÍþ©w¨E¦ÛÄ!ŽÊä‰c Á8І #&€= '­ZˆapŸ¾)Yü'Ð ¿º´›Q¼¼¸[[;(›i–CÛ AÀ$’ MgüøÈŸí5Q6s¢ßé’ˆæ‚G.Ž H™V*§‡ŠT ¨å8È Ð£ƒ“Þ€ Rú=3H»»™±¼¬Ç°šùCþ ‹`Ú¬>ñ}Ò“.§¨»‡=Nçf?Ò€>å–l¢€f$b€1µO˜œÐ«‰8  =1¶‘@>žù€4Ç4P@P@P@|7ñþãþßÛÇÁöÞÒ#žU'…–YSÿŽD´ô’6îh+–Ã@–|Àíáüñ¡ü(ÍŒi°BäçŠâÒ/.&9y¤·Rî}Kc9 6Ö¿b†z°o#IšÅ{[©À’?Jóíkþ ÕᛆfÑõ­^×<“ËütÖ€>–ø5àøcðûIðÄwvºz8k—P¦gg.ÍÓ®1è|aûH~Ë_|WñkÄž*Ðc†òßP¸Áå\„‘"ª®1€¾´å)à¿þçNÙ¤g ZÜË"Á…^²ý©><ø:O/TÖµv ÆÍNÅ[ÿC@hï_Ùgâˆ>'ü!²ñŽ$·šú{©ãŠha "L ÅG{xãû´Áü^ýº4?ƒÿoü%©xnÿSKˆË{krŠwº*‡`G9 Æ¿¶WÁoŒÚ5¾—ã›/é" ÖâÞæ;xähdŒðXƒÈ*GCÔ;þü<Ðn4¿ xæ$[¹þÑ'ö¬g`ØÀÀc§=hè ø³Dñ®ý¡áWOÖ,ƒ3ÙL$UaØ‘ÐýhŽý¥¼Kÿ‡À/êa¶€ ( € ( € Ïñ±‡t KU¼!`±¶–êBzE,A@þÁú\³|3Ô¼M|§íZõì—ŒÄrÂGyGé ü¨÷í‹ñãÅ´ï ?ÃØí ÍõÄÆåî ¡apHÆKgŽx Ÿíÿà¡þ*»²’ËÇðÖ·e2çŽ5–5•OPÀ—R¦1@n‡ÿðCëPjºï€5m7TŽÔX‹›˜äÄ·lÚBd2éÎ1“@ýðoö“ðŸÇ=JêÇÁ±êñ\ZÁö‰õ¸Œc cÏ#ó H×|Y¡ø: yüY«éº47ù0Ëp°«¾ Ú 3€MK½§körêÚmát!&´¹I‚’8?)4ä¾kº6±á7×ü;‡ÓÃ,úd×I_ ZNœ@=¬MMn0MTÔµí>ÃUÓ´Ë˸ãÔu0ÚÛ`—”Frè#$ñÈH  úÙ¯ŠÜ@oV11¶<Á8 ·®Ü‚3Ó428‘CFÁÔ÷Shh €%”r1@ GZpl‘é@[¶[ñ¿üR:§‰~ø^#Ÿ;P›P’1ÜF /þ†hì éãEðΓ§/e´ŠU@ë@ÚJ™Ðdl®(¤ƒ&€%·ù[šÜÓÖ€7áû”%P@P@â¶·‹ŸÁ²÷Ä ËWÙws§: u/p àæ€9O€Áÿü9¦B¡DvëÓ€0ävºÖ•g¬ZùZ¼71à•Ö€<ïZýžþøÙµ/ hníÕÖÕ¿5Ð ­þÄ? õ]ÆÚÆûOcÿ>×’`~ X~”Ò|ýœ4Ú¦«sỻ듩F‘8º*|µVÝòíQÉ dŸA@ßµçÀMsãž Aá»Û;q¦K,¯ Ë2‰ ¨‚éƒÛ½|y©~Æü;3I§iþy^’i÷¨OþŽý‹¾(|Fñ·õ›‰:®¥cgaæ˜ï` µ·*¦Ðwǯe4쟴¿í'ì÷áR²Ò"Ö®u ß³ýšIZ0±„ffÜç!GNôâzWü»Ã“L­â/jv’´ËkwÅA<¹Tãǵ_×ko‚ÿo´ÛWXñ—…omH å¤&)%·6tÜv6Õ´ê1§’cøÊ ™´Ëu·Šö[ap†î+BD¯9 ‚]¹’3ŠósHÔ•8ò¦×2æKw.»ÚöÖ×&Gnuí>õÏ…,¯Æ™'ŠßP.ÔŒÀo›–`U *z ðe8Çÿ ÿíÕá= $:V:Žv´²’ßøî(îYeË:ƒÌçšr±Ð˜îé@H0ÄŠX9  1ù ŽÜå9  h € ( € ( ’?ࢻ\ø_áÇ„¡åµÏÃ4‰Ÿ½²´¬>™Û@›¡Ú 3G±´^$rgÌf€*y˜4p“èäÄ‚–ä|Äh¸eo¼ ½¼ž5?…%µ´Š4RO$´“ãÿ†Þø•¦Çiã-2ÛR‚ßÌ>ãtÈ#¥x¾µû ü8Õ·[;ûoù÷¼ràû…yö½ÿãÑgÜÚˆo­Ïe¹·ŽAÿŽí4ÓþÎ?²¡ðWâRx‡RÖ-5+HmåŽb…‘¼×R›ŽIÀ Ïø‘@¿í“áøßáLZOøn&»7ðÜN–òsd€ #ø¶ž½¨ák›O^;c»ø…`‘ž6Irè?-€-éµÇÆÿ J"½ñ-ÕÀSþ«S¶ŽB}¾e @ûû:þÙ>=ø•ñ?Aðlj,4+›mBeÞv‚E«ƒ¸”HÇ8í@q… £ùÐÄÿTøïöéøƒ®·ÏtÖÈÝ@EåÿèX ¶]ò=h=ùaš‘'Šyn(7â€3´`P¾˜øn(¥µ9Jž€ ( € ( € øïöLjÉûD|7ã6;5M™é愌Ÿüw4츜v ¹È Pv^hm ñ@Œa†heÛ(s@ºhñ·Ì(élÆsé@ÊâM§ƒÅ=eÅ*Éó ´Ììj¬-á“ýdj~¢€3õhºÄe5-:ÎåOQ,JÃõ•áï„^ ðLj!Öôé:´JÉÜÈŽ†2 C@¥ýÚXéóÜJB¤Q³±=€>6ÿ‚{[>¹wãŸ\ƒæjw³L÷óffþI@e3àsúÐTäžhT`øPŠsÓ­#žhC–ã   M8íq@=™Ê ³@P@P@|íûo|3Õ¼gðºËľƒí>*ð]òëv6àn#PDðñýèÉã¾ÜP„?ô¯‹ŸtŸxn6Þê0²ÆÄ·™xx¤£ùðGPbêG­DSž(#=¨€$ÏË@•çŠB9æ€F ZS”Á D ¼ñ@Ár:æ€$D˜gÐЕ?. BŠ=_ž("1ÈÏZá¿h¯ÿÂ!ð'Ç:¨-àÒ.7ûl…Wõ"€<×öð×ü#ßlÝÓkÜÊ2}B þ¬ÔôQ9 N,gŠx?/€Í×øP±Éü¨VÀ ã4ÒÙðZ € ( € ( €!¹b©Å|_ñ_öuñGÂÏj>>ý—oáÒî5óuo \&û+ÖêXGÆ ç¦Ï”ËÛ~Û²è,¾)|.ñF—¨GòÌÚ=ÔS¦{‘»lŸ­tš_íÅð†ô…Õu/xyÏQ«h“?àQoÝh?´/¿•] â?ƒ'‘ºE6 ¶Ïÿ|Ë´Ð}§´Z¼B]kmB#ÒK)’u?Š@InðœJôu#ùÐ!†0OÊGá@Ä1zP,dPŠ0(Ò¼Ð1Bâ ÍÅ&SÍ5—šp\Б®ó·íý¬›Ùöm.ÄÚÞ§i§ªâ@çôC@£ðD]á'†­cw[yļÄÓÞ74«Óë@Ær8ë@< T]Çš³è(RÎ0Ít‹„f€ ( € ( € ŽeÜ´ÈøŠ Yï@kâ_Ûê1²]ÁÂrxÖAùhËu¾öŸ èÎOñE’4"€<ë^ý›¼©«-ׇ¤Œžð̃© óöEð­´æoê:¶‰?PñFÈWþå@-¾üYð’Åñ‹Äˆ‹÷mçÕ¥eÿ¾&Z¿ÄÚƒÂã-¨é~&‰ç÷H¶Ÿpÿz€gûq|NМÇã/†¾¾(pígss`ùÿvMâ€:½'þ áâU|SðóÆÚ_t–2Áz€þhq@¾‰ût|Õʭ߉µCÖ=cI¸‹VEeýhÐü?ñÓᯊʯ‡> x6ùÛ¤kªEŸø •?¥;›XÅìBK·1CÛ°‘Oâ¹ b´[N>Œ *Œq€Ë>”åš‘W1‘ÎOosé@ ütñÁý¥>ßÒôÈ´.ÖÊÓýM¬Iî¨ ?•Jx”¡ò84¡ñœÐ[Ö€Ùçé@ H#4 `q@ÃçPå…¹b00(~Òßh©{EO@P@P@P@!^hw θ± NW4JM)Iû¸  œ ®ú.: ®ú)ÏJ‰´bÂÐgÒˆ?v€+˧0(#`Aåh6²nÔÆ¶u s@ 1°ûà sßÖ€$œŠ`0E޼b€vON:ýhEŽô©al[ ŽÆßPż\Jº£ŠZ( € ( € ( € ( #=hEFÐƒÔ ŒÛ(­häPMf¸é@ {AŒPbELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÀÈÈÿÛ„       ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýS € ( € ó_‰¿®¼)â3¾ ÒS^ñf¥o%ävÓOäÁmn„+K+àœn8 “ž˜ BŠ_ô™emkáÆ¬Ây_ìlDÃð‘9üèxÿimSOñU|'ø‡§ãï=œ0Þ üRLþ”fßö¼øv¯³]›Ä:÷¦sRÖ€:-öø_¯0]3Ǿg?Á-êDß“h¶ÒüE¥k‰»EÔôýA}mnAÿŽ“@4P@P@P@P@P@>øXŸþÔµ‡ùáÑ,,4öb òø¸ ^h€8"€ RzPŸët«ˆÒxBîɧ’+aq4ë*±ŒyO)&23°* ¾p ˆ1ÍsW¾,øcâ ÛTñŸ‡4ëk;¨EÂKeop Eã@Å£/·æ™ç `Ð/üøi~`Ö4 J¼fEÖI-Ûs)uÁB:¨'é@Ó¿gÿ ²Ý?€¼}ã}$Z9Ža¥øšI݇PÊÅ‚ã¥X›áŸÄ­†ð—Æ2ŽU5:ÚõH÷$h#½ý¡4QûŸü7ñŽ×ºmÅ£·ã@Çñãfßñ:ø[á½iVÑõñ?E•?­Yö§ÖtáÿoÁω~>ô–0Ã|ƒñGÏé@ŸÛcᥜNÞ#“ÄždêºÆqVÚT~&€=¯@×´ÿhÖz®wöwÍÄ$B2#­hP@P@P@|Áÿø‰wð÷öeÕD¾¹Óõ-VúÚ í¥h¤@[Ìr¬¤òÆÃZL Ïø'ö‰oû=Ùk>!º»¿ÕuÛÉo®.îäi%”à ,ÌIcòõ4Àö[ÿоÓ5k­?P¸»†ki RIögdÜ:á€5J «æ–…«?‰>¾8ƒ_Óƒá•ü³ÿbŽV>dRÕ| á_‹¹#ž6¸¼y$–êÆìyŒ^³¶O< cã"§b®U¶ø/¦Cy§Osuwx¶^Z¬SA ¬ˆŒÌ‚"ƒ’W';4ÏÙ| ¼Ð|Ce¨i:ËÝÛÚÜË$P\Í4C ,)k$g.#HŠ€À‚ž™  :Â}GÁ–:”r»ësÞAlâd•Cp’I#ª«€­˜ûÀn~f ÀÞƒ¢:^ñ^“4ºŸš;Û@~Ï6ªÃËQ‚6ãž¼æ€(ÞxGÄ7Þ½ÿ„OYºÐ5)u)$»y&U¶W!QU‰pç wéX‘d%˜(ñrhDc< P=~94;ÿ혢¹±[yx¦PÊÈ’>ÔäßðNG»›ög°šïrÙÍ©ÞÉaé»JJªû œPÔP@P@P@œ¿ðV﫯‡> ·bZFŸQ•|•Š?ý©Id|ðÚx'à÷„4¦]ŸcÒá21†+¹¿Riˆãt’—Ö¦æár÷2=ÁÏ9.ÄÿZ킲8¦îÂïD²¸Ooÿ¼ Õa^ø3Hef6ÑÆTÝ*xúS² ´gé¶­£éα§om±ªÞ°ßôˆ4:q}T’êiŸø·KˆµŸŠ¯%EÿžéÃõ>Â,¯o$r׿>#é÷l-¦ðæ¡þ›6F#êŒ?•WÔÓêG×èMíAâË¿Û^ Ó.Çv±Ô3ù2šOú2–9uF•·í{¥Æ@×<â{?V¢œÔÒ¡à¦ZÆÃ©¯gû\|6¸ _Þë[t?lÓe~*³xJ‹¡kMõ; |gðŒï¡²ð¿Šô{ëéŽ#µì•Ï\` 5œ©N;£XÕ„¶f_í'âCàï€?5dm’A£\,g?Æë±V™¡Ä~Á_ü ®|:ðïà ]_èzfûË{‹fDb¬•~ó0÷¥qØúΘ‚€ ( € ( € ü¢ý­o[âÿü KðÕ³yÐXOa¥œŒHÿøô§ò¥Ô}Ò_Ý.àÝQí°›-š‡¡a±˜ªŠ»&NÈóû(~ÉkKÀD  ®Ó†ãÈÝ÷©ˆ¡vžj¼mœ0#*pqõ¦&s—^³.²¼·Ä·Þ=ÁÀíV›&ǯ[Krb† ˆ‚GÝ"Ùƒ‘óÞã’sÔÖÑV1›¹ÉÏ£jq]y]÷VBÝ;󎤟—§5¢fe«XîaN¡)žF°eSßÿÚd>dHO¸ªRdr£¶øá>óâe…ߨá2ÙG%¾є!vý ¹±“j›:°p½DÍOø(V½ý•û:ÜiêÛ_XÕlì±ê¡üÆý#5ãÉñÿüÛÄ_ØŸ´ï†ÞFÚº¯ÚìÛ=÷DÌ?U r™û VHP@P@P@•ß|¬ë¿ðQŸ\øÎÔèizž¡pȱ1} ²`úI Ÿ£Þ%ÑĺQ±’v·S,rUÎv¶p}²*¢ìîL•ÕŒY| 8¹º…ý™HÿÝVò0t<Êsx7RŒ-"—ýÙõªU¢Ètdc^xwS¶ËKeqU]ßÊ­T‹êK§%Ðâ|A5Üeã0\Gï!¼}L&šèqrJ lžsë]5ÊsÙ Óœ®À`t¦„Ê2¹“×µQ-•¤›'ž™ªH–Ïiý›4åmG\¿Çú¸£€êÄ“ÿ ŠóñòÑ#ÐÀGVÏÿ‚žøÊÒü¡ÆÝe½ÔäP¹?Y yŒô”f ®¬>=|3}.3-È×-p€ãpioüw5(lýÀ«P@P@P@5ø>ÂÓ\ý¯þ)ëÖvð¡ÒôÍ;Fy‘pd•—ÍbOrªýP·“š8 2àrh•Íáfš€Í‘‡C@.´6ø¶iöSg©xTŸåT¦ÖÌ—½ÑyðßÂ÷Ã÷ÚL“Þ&d?¡­"¢êfðôßC÷à_†®Á6ÒjV¤ÿr`Ãõ¢ÆM¼}û9A&³uéSÚ{pߨ"µXçÕ< èÎ~ûöqñ $µ•ö“v;Þ„þbµXè½Ñ‹ÀÏ£=/à÷‚¯¼ ^A­Ç w—&B"}ã`P?rbjª’ºìvai:q³î| ÿ#ñö—ÆØtØß)¥è¶ðmôy¥iÿE®Ilu#;þ ÷àÿøIÿiÍY#ß‹i> üpSË_üzAI?]jÄP@P@„…“€;šù§öU—þ Ç0qω¼S}yð£ùq~V€=Ô@äd+`ô8â€0<%¨jzŽ“,Þ"ŽÞ+‘yq,´jbI°ÄžBçñ  ™¶«@Ç‹ücaà4_ë©|mrÞd–Öí(‰Teñ÷TÄôž(hÊydjpÉ  @ɽ(lt +;vvå%''ÔÐäífñÄ?ˆ¾3ŽqäZx¢#"O*܆ÿ¾JãÔ˜ÑïŸðKÛoªx×Å.€†ŽßMF#ûÄÈà~IJ ÏÒfYâWŒä0ªú( € ( € ã>4x´xጼ@ϱ´í&æxÏý4¶Áÿ}b€<ïö{ðsxoö~ð–†îðNÚ:ù’/ÞY%Rž ·é@:Øoâ„Ã%±PIXå–UŽ×Çé@¶ð'í]á FÒ(¾$ZëZš‚SrFîï#'¦{и~Ñ>?ñ×€<§ê?|7‰µ).Õ.`¸BÁ ØÄ¶Ém´òç‰?kjWšTÿ> j¾n•7Ÿo.}sn¨üd•*ÊÝ?‹8íŒÐ¿üý®tŸÚÄך›áoC½´´k¹^òDt2®8ÁÉ,;PIâÿړᇀH9%{J ½hÒn×{‘h“êö-4†Õ¶ÈÈ$µrñÈpHÛð¥F£œnûô4Æá–j û^ÍY¯[\Ñšá,m¦¸œâ8Q¤b{?ʵ8ÏÉ?ø#ÆŸþèSø/ÃÞ¼ú濬k—YC½žDHÃ7AÀjLhûcöøW¬ü+øgaãM6m'^½½šòêÒ}¥ã"‚GÝ@™õ†î|Ëc?v˜4P@P@ó÷í½¨¹ø/oáëSþ‘â}oOÑÕA啦ãþù‡ã@£ah–p[@ŽÖ%ÑFò [ÇtoÝé–šÅÆu Râ8-m"+æ>÷Tß‚F>üdÐÙäwrZ€,9ßm†ã¥f•°¼–HH´–Hþü`©dúŽ¢€KÑ´í:ù®,líà™ÆHÐÃКá¾"~Î>$ë3êž-ðå•Ö£p›vW| FxP•kŸðOo†™fÓ£Ôô×=<‹’@ü4ì þZü-øA?‚|%r¹ŠäG(E–P~~1Ó#JùzOÙkãÿ…×þ(ÿ‹z¤ÊKÉ×?,(Þ‰íwámRÊÖëVµ×,šdG’d·— ¸d’ÊëÍ}OûAx—þß>:ÕÄ€Im¢ÜmqÆ]¨Çü …pÿ³G…[Dø à+ÕAMI»’ßÖ€=z9<¶ã   Ï ]~ù=è®"€€ ( € ( ›?hiá(ý¢~ xU~x¬å½ñ Êz$dþ.ÿ•?ö”Ö>.hšF‡sû>Zé·s¤Ò6¤—‰îhØr;çs@5ë_´Ç+cmÿ 7àÞ¯%œéq¥¤€Ç"«)V`<ƒ@Ùû:~Ñ:·Ç=KZ´×|sáVÓ"Ù癟Íw$m‘{{ô üWûm|1ð?5 x¢çZ´¿Òç6ÓJ–FH™€í*sÆqÓµsŸ ~8ü%±ñ޽­ÇñÃàêÄ¿“,3[»¾÷iI€!0›W œg ÑÖ´ßivú¯‡ï­u 6àŠîÞ@Ѹ‚=Á  ¿µ-[Bð^¥¨xbÏíºœ(¾LlŒê2ÊÈPI ¤±vЇúާ­øBÂ÷Äq˜µ |ÍàÂbÜ¡Ø+<€ÊàôOò•‹œ(ä“Ú¦RQNRÙ +»"”:´3\$`MÉÊ,±•Ü0NG¶yø|Ög¤Ó–×M]Z÷^Vÿ‚m<<¡w½»YjPj1—²™&AÁ+Øã5¾C<<Ô——ßùR”é»MXðŸÛÇX{_Ùî}*ÜŸ;\Ôì´ÕQüA¤ ÃòJë3=ëEðkxÁº%¥°âÖÆJú@ò  M•bƒ@^—˸úÐ{ ïH Ð@P@ó?ü%¿¶õ;àð¾g£Ä{,’“3ãß(×õ;’ñìNÔÌi¾#ÑõË›«]+PÓï®mNÛˆ!•]á9#æQÈäÏ¥iYE 7;¢R£Éx»à¿¼e}5ω|1£ÞÜÌwI<–ë½Ï©n¤Ðšë¿±ÂmkqM K?ÅipéÃ8 F?l ø%sðëÃ÷—zvžÚ|štWJwK6rÙîNOç@.Mû |Cðûð?Å=VŸqi£Çýòä~”¯àŸ†?´Ç…|_¢CªxêMK@[ȾØÒ\‰Hƒpßé'åÏ hý¦~'üBøig¢OðƒÂÐøŒ\I/ÛÖhZQ6’yç¥&®¬ÀùÌ~ܾ0Ð%Cã/„²Ûò –—ä0G̬1ŽÕäÿaáœ"ãkÚÍ­ô¶û[¦Ë¡ÓõºŽ÷wùíû1~Ó:Æý[SÑ|?áSAžÎßí²ý¢d•ʦÉÈõ­òÜ®†]O­ïo’_¡«Î³æ›ÔËý¬¢>*ø©ð7Áq|Â÷^kù“Õ"F5èŸh4jÑì mÆ1@GˆtñmpZ>4OK}—´ÝéÒo„@è € ( €qÖ€>Ký˜îÿá"ºø›ã3óx®í¡~¹‚ò£ü0qš·üÀZ‰õmÄZ/ŠmžÂò[Su1Ê’lb»€Ü1@ø'ö¹ø*/5+Ù<[4Zž¥9–kOO–&8Ž UH‹Àë“Ôš÷í;Ä:]î‡m®ÁlºEÄ)qì®#ŒÆØÚĶ1œŽ´ñ+WÕ¿á’ãáë Ë÷šZ(¸1D\opª·Ë‘±Î(GÁ­«Oá _!Y{HÚñ +)_˜8ú~( ¶Rƒ@‰>&i^ñV™ ê‹r.¯Ú%I`E2ÈcŒ`°fË ¡¶Œ€h­ÜAÅY !ùÀob(œÚm•Øe¸¶‚\pC(8úÐz'†´ö[#N´³ž`I!Œ+8€H댚ðé­Oÿà >€aíü'á£tùè²LíÇhëç¸â€9ÿ*äP;fv\­vÚL™P=hN€ ( € (“ø³âµð7Âÿx†F ý™¥\Ý)?ÞHبüNxOì½áæð·ÀYÎìÅÌÙê^C¸“ùŠê|CðóÂþ$šC¯èMñ~KOlŒOâEyî¹û#ü(׋ Y[»«]¼ÿ‚xj:L¦o|@Ô,r¡Ñø8þTÔüø ñ£À?t;¯øúïYð½´Å®­ô¯æ.Ó±Ç98ï@ßí-ãÏŒ~ Ö´gø#¡[jÚWÙ¯¼Ûe˜™w|  †/§­x çímñJ×lµo‰Ÿ-nïìp"ºT¹·(Fppw.FN â€>—ý›hÁûBÛkr Üè ¥˜•üÙÄ¢F}Ü”FÒh-_öÕøM øUÐ5ÍzöÂûN¹{9ìddóኲƒ >ýž|Uà/ xÇ]Ö.~,x_W„>Tj×2A$„È\¼‹(v08÷ «t«ë]VÒÍ&æ ËI—tsÛÈz†ðÏÙ ÿÂIûM|tñQùÒÚêßDýHÌú‰î2sš¡©Iæ%aF¸›ñ ¯G“!hr€ ( € (À?nMVK_€úE±>ˆu-êD³)qÿ|#ЄšžðûÃ6_ðêVNŸj‘Z ‹ÉV(Ã`*ÇŒœP^¹ã6¹±Ž‡ðéž*”åÝmµ(‚ª(É‚Ivè£ÏR4Ò)2B’l’=êÙ 3ØŽÆ€-[äEƒ@”¾?†¦€¶7N¦qh×Á—b\Lâ=¹Üv¹, PR†  36ä@|=Òü?¦É$–:E³/67> vfÇ$“@Aû£Þ|6ñG‰çÏ™âÝÞî=ÁrGè€>–k‚OÄ›Ðçò  übN”¿£? èÔåE-P@óWíG ñ'Å¿ƒ^tk¨]k×öÛoDÏü cùPÿ~è¿üt½ÚY­Â]+[>Ö Ô˜ÐÌz§ü›JŽF—Â~/Ôì$+æÂвšíþ~Î>8øIñ=CÄ^5¹×ô$¶–$²k‰ˆóŒHÀçô  ÿhMkãö…ãï´ü‚Ÿ ­¤J-Ì0L^^K’æîµxÿü4‡Æ?kÇYñ§Â}*ïTù-¨®<2Æ>ò’:qŸN:PÔŸ³ÏÆ ß¹×õÍþéa»{cndg*©-’þ*àíëðŸQ¾ŠCRñ6Œmn¶ûc›— T±+ÎîÝÒ€7ü=ûNøÄ&–K‰¾ "ZÝDð܆+´Ç¹Â€™óËdã  s±¹†îÞ+›Yb–ÞdY#•u<‚px  ¯ê÷úeà–å㫪ùærX†PÄÀÉõ¯/‹«Fv‚º²èÝõÕ]me®¤·bχµiµ‹3-Ý«YH¤+Bí–S€yºŒrx­ð8©â!Í8ò¾Ý®ÃNæÇ/üñÆ®cÚè÷,‡?ÆPªþ¤Wh̯Ù?ÿðˆþÏ> ±eÚíiç¸õ,sþêþi'¯Jq}€ #ï@CâA@Dg((ÔP@PË^$‘üIûdk8ÌðÕµœ~Ò\;ÈÇþùÙ@#æ2(¨r4|rë@ÜI§­#,®0ê§ê(K8â@è‘¢« €<×Ä?³GÃ/O+ê~ÒD®I/ f"I÷R(ϵŸØá~¥!“NVÒß9Úä¶>› Nø¯ðþ |>Ð5Y4HÒ+h£¹E,BC·jœ×hÍ|³/ì{ñÃÂ’<ñ&åÂ}ÕMFxC‘@ÇÁmö”Ð~%h6µ[CÂÞútÓKëå““ù8ÀÇ9"€=+ößÕ×à-Ö™ĺޥe¦ªŽ¬`Ì?$4íÓ—C𶑦Ä0¶–pÁu@ h$™~ýªOü$¿¾ xI~e»×_Q™?Ø…ƒùÈhè‡|“ŽqŒPêØÎ(¤î8©¦.$\õ ¶Øþèf€% € ( €9Š^Ñ>%ø>ÿÃÞ3°QÒ®”o‰ø(ÕtaʲžCA –ïü?ñ›áH6>ñ…ã}.-ãñL,.âAÑ ÈÊ_­“@ÉûA|LÑX/Š>Û_(ë.…­Ÿ¢:7þ…@bý±|=bÁ|c࿈~oâi4ä¹Aø£çô ‡Iý­>êÌøÎÓNñåê¶·d}Lˆë@î…ãÿ ø¤øF|QáÍT·E³Ôa‘¿ Ùý(£[YnØû}pq@ hó@…œt d¨^( ós@Ƙ9==hçZTñ¯í¹¥ÁlÂ{ hÎ+ÈŽâbX©÷ åÿßB€>‹aŽ(ÉÔP¹Èâ€%†2Hõ  >ßç´ÒB»c%P@[PMÖ¯ŸJó=jÐNÌ­Íq§†b¸c˜Ôûâ€9û¯`â&•¢±ÅsZ¿Âí;VjZ}…ØïçÛ#Ï  Zý•ü¬Jd¹ðí¤n{ÀÌŸˆ P*~Í2x}Ìžñg¼8öZŒ›GàhôzGÆÿýñoQ½Eé·eÀüK#Ö€4­¾.~Ðzk°øyâ¤^¤#Ú;ß2ý€5"ý¯|i¡ÿ ÇÁ­UP}éômHJ¿“Æ?ô*×Ó?o‡²È±ø“Gñ¿‡¤<µi~r¯ã1ý(;Åß¶kxއû;xkY×õ»‘²=OQ³h-íÉþ!ùä#Ü*úœP¡~ÍŸ.~h:†©â˦ԼY­JnuÙ;c’7w9ä‘ÇzëÈ q@Ž(hvP­¶XdPõ…®8  008  € ( €+ß[?Ò€<çQp.ZÎx•ÁÈ  òZ!@úr1éøÐ"ÒQâÉ¡#…^O Fã•  òxJ7ë‘î(³x*bDA}×å@Ü|=°»l^ÛEr=&@ãõÍt^𥖋Ë k{XÏT‚5Œ¨P3@“áBF0 c€§-@‰Ðàbšz|±žôÐÙZ`(bÄkÅI@P@^ÿþ=Ÿ4æz»ywoZ¡æds@#šäñÒ€§4ðF(Êö ª¼âŒgžô Ç8…AÚŒl C”…P2ͬ&G ›L´ ß¶‡`É  P@P@W¾]Ð(εëVYÙ”f€1@a÷ 'æâ° z·¡ À «tÍ$Éç¥;~OZ8Ih ’9 A»žôôˆ½név™#ŠuV6á@â€4À  ( € ( J›×€1u !n2Yh_ ¢€*Ká€*Éá×ázÐy47Œà(´šlŠp 5œƒ 4Ó¯zPÄò(ÜsÀ4 œóÒ€§'Š¿§Û™\dq@~™i±FnCÄ  ( € ( € ( ²Ð{Pmj¤t ÚÉ{ ôõläPi4”c’¢€ “FB>íU“BBxZmòЬÚ…W}”ôâ€= “È  ;NHü(£³ƒh€.P@P@ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_secoder_n.jpg000066400000000000000000000242611231776762100262310ustar00rootroot00000000000000ÿØÿàJFIF,,ÿáExifMM*ÿâmICC_PROFILE]LinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3descƒlwtptïbkptrXYZgXYZ+bXYZ?dmndSpdmddÈvuedK†viewÑ$lumiõmeas $tech- rTRC9 gTRC E bTRCQ textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÛC    ÿÛC   ÿÀddÿÄ ÿÄ> !1AQ"aq2‘Br’¡±R¢ $%56Sdƒ“£²ÿÄÿÄ#1AQ¡"aÿÚ ?ú§@PÎ'_'[`Ù­ö9*‡:órn $¡)Rš@BÝuI sxl¬AÑ Ð2#É!t¶ç™NÉ Kb#éýK!æ bWò k²ZVc†ÊLWiï}´>ÁmMòóóºäçG^P>!@ðÇrÖäîYp듉%$Aȇ ØðÔÆ‡cûþFƒ¨ñ~|Erݰ<­°;½Èrûið³ü” 7Çla'W&rkb¼ýòÃ5(÷Eæ }Æx—Šæs]…‹d«”æ›ñ\ˆÃé.¶ëjGæ~¢‚M@P@Py>Õ1ÜûÛÿ-xºâíØ^3Þ„A!óâ•k·7+‹NþZ¨Js{òùŸŽm.ÇZŠÐ‡XPAì9‚ý5åZfŒ¬÷ZÊg›“Ä2ù¯­­×%K\yE¿ìTžM½¦ŸõOÈû†YùbpHV9|€ò”² bÛ©IZyU Vzhh hyI¶Îô]ζYâ_dE1gÝî1vµH‚û.`FüT umüúT]¶¤ô™¹ÓûMmÚ¤²”­Æê„«z$|ôh“lƒ;~ý÷ñYJ¿¸«L¬ê«p—¸e™ÃlZã¿y²Dÿ’T×ÿ$WI¸ÔžÜòÛéÞá; ñìjøÕÒÌĦd4•¼V‘Ì=úö'Χ=ÎyããQ†Û 2òŸ^êx“þhÿˆ¡JŒþEï)ßPìhn­$ýŠGÒ³^Ú=>³¥Ai A$lVC4@PE¸§‘¹ˆp×(½F:‘Û!öî§Cg™V‡Þ‚¥Ëø+„\°,f6~‡ZŒÁDXÓžôU09AÒ›RvTPŽûÙ×­Xÿ‘‹Øò^5–f­~$ÒP̉×5Ì\žo‰Ÿ˜$žn½÷¡éAøeÄ c,bzø /V·^A¸F™cŠ—¥!A%ô«`tÙÞ…yÊxÐåýÅZ­<<¾X¢O಩2bÊåI%°µ|I'Do@ô$PH²Þ%æ8®9a”ž\ï— ±Ö«ƒ6YŒ¹ø{ 'Iúñ7³Û§Ã󨳘¶6K-œºøqÆÚÛ%êMçËñ—,¬¤ªÿ 1ÒèÒ‰ðÊV ­úlzÓdâ§S,rÊÜgOû={:[í¹=Å‹½ÂæõömA_ e•<ÚTâ‡ÃÌI*Yïûç¥8Qì¬rW¼Û×e=*C­@PŸÝ÷œfÇdJ½_ E?46X>íÇXûÐVÜSáÇ&É™eâ^Wªbе¡Æ^†¢”èò²âHÙÖϯZ ¤X8•kÀ¡CÇ3 5Û&bR•"ç{¶„·!“ͤr2RFÓñü§Öƒƒ…±8—H¹DÍ,ØI·^—v…¿)J•AÒBB¶¢NûýMuÙq÷w |H²Yc·8(R¾å½•w àï òË»ì_ðË™Î(©O)JÖ{’V‘½ýMg›¬.§Åí·zÛ/xqb³0˜öüzË>b#£ò´3‘ü«t}«BV⥆÷@Z•É0|ÍÙ=R>” ( ?ãAL_óxó 1~’ä”+¸BùKèXð´~Zò4 (æGTJ‰Ð úÐp^±«.O¸ù%¢Ûua²yZ™¥;ï  h¬üÁ¬ÑïQì8ͶÔÕæ"¡Nàx­(Sðë]ÏQªuŸÙOÇnÑ'bY6}cK!Ó%éÏÀ’"’­í'Z={PL±Åþ)ÇLÚxü–ËeºÒŸã>,…ÿGZýŽÒκš¨ ÿZIO­é“¶“ô Þ€ (*Ž0ðòG1‹£ϵ^[kÁMÆÚùeÕ7²B®‹H$•…I#[4Ä«Gì«"ۙɜÚOÀ‹¥º3£è|44£üÔÿ·œO¶ʳb¤§ºY2 )Cî^ µÇ›Äø“‡7ÖÑþ;LèòÇþÅ4¥œOhìA¿÷ëEˆÿ×Yd©?ÎÒëª=¢¸jŽrÙË­S“ *˲œQ씲9'·o®¨;øCl¸&ÓyÈrHn[nY%Åw%B{^$vyÓ-¯_¼mô$ÐX-:ËDµ¤‘çA-ByR  Ú€ ("yʹhùPAÜ ¹Ý Ð `°áꄟµj°Äwó6ž´¹‡Àw\Ì ý¨6‡[`ÌÛˆÀxvss~´œÅJêz KDUHu']Þ@Ã`ëFƒ²€ ( ¢Ô«“GqA w–×dïíAÌ«L¦¿3gB2˨=P®”:‡ph3⟬$¼àJwÖ‚w`·›I"û·j ÐA‚ï@šÙAR ;‘ZPê‘AÆí¶:·¶ÅöˆªÞÛ ÏÚcÑ$Pon·²‡A ëA0ˆ€†G( Z€ (?ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_secoder_s.jpg000066400000000000000000000201151231776762100262300ustar00rootroot00000000000000ÿØÿàJFIF,,ÿáExifMM*ÿâmICC_PROFILE]LinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3descƒlwtptïbkptrXYZgXYZ+bXYZ?dmndSpdmddÈvuedK†viewÑ$lumiõmeas $tech- rTRC9 gTRC E bTRCQ textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÛC    ÿÛC   ÿÀ((ÿÄ ÿÄ,!1AQ"#2aqB‘ÿÄÿÄ 12±!"AÿÚ ?õO ™¾br|ç‘Òš¿¯Kõ©EéÌÑ0°ðúò¶ÇÙ$®×Éó管'ƒ‰ÏÅdŠ_øxì‹ó\â9rpyÁiŠŸì¡ëeƛѓäÁlè?(âð’eçå¬W¥jœwEÌxDHæ³[ÚÆ6tçZ'ÈÞµ×S*û#ºîX~ë#S:B÷àÆçóUã–.Ç”ÈObià0Y"U®v¯ bO žUHüÃ}TÚÑOdrÓñ®A%žãYª¶nÌÐ*ü•‚"ÑðÎñˆÇ’uçì ëHß8é™ÊˆKhüYàxŽiÂh`¾ oŒ·" ¹8̽¦°Iß+ýí ­¯sãCzê[t­_b×Djëú\Ø&[Ç*~×PÃýõ™ ›¶âÇÓžÕ¶ì‚ÚYì lŸø:¶IRë›î``šx±Êž¾?0ðY–VÔûÙÏwy#·ÜàSI1VqˆµùÞ­,{·åd¾€Oa¬îë½ ðP;‡@H¾IøÕ¸,d­åo48©»-Så¬)žU ¬«¢¦«öïÇ~!…ï>ÊÞC¾&}ÐvõÙò¼tÙŽ1—¡M‘gµRXP¹ÐÛ)géïïÐÃ/ŽÎAy—fäìJ˜ÒÏ3‚Hf’ÄŸ'É?SÐb¹ÃìÉm©rÛx«V`X—/"4`ÑH§bª.¶ÎÎýúea‚YÀäY¦È[†ü¹X”ÅF+îQ¾a"M–Ú§õ$  ©è–>\ãQºcϨ5¶ØêÙ†Ôõ6¿Är"g&•6tŽ€kŸkbÖ1[ûŒ€yãx–µmÒ1Ã5 Û q¢ÆPh€ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/cy_secoder_x.jpg000066400000000000000000001001221231776762100262320ustar00rootroot00000000000000ÿØÿàJFIFHHÿâmICC_PROFILE]LinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3descƒlwtptïbkptrXYZgXYZ+bXYZ?dmndSpdmddÈvuedK†viewÑ$lumiõmeas $tech- rTRC9 gTRC E bTRCQ textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÀ/ÜÿÛ„      ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùú w!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?þþ( € ( ­0È£®hÁÔŒä~tê( € ( € y'@9Êÿ…¿Ù?•7wÜýs@ ½@?*–€ ( € ( € (åßÛöžð—ìwû;|Gý ücc&±§è–Ñ‹M:=íܲ,0@ýÝÒ:‚Ø;WqÁÆ(ò^oÁUÿhŸ iuoÛFýžn5ˆ#Ô­< xR)í¬ ‘C¤RÍ$nîผàä “EÓÿà¶? ,a°ðÿÇ/„¿4ÛpV(µï ½´„g8-Eùó@Ð~ÛðW¿MŸ~À> ø¡f¿~OxÊKvaìçœÐšÁbþ)ø=ññ¯þ ¡ñoÀШijhÆAè]a'½vü‡ö»¸òk_ÿá`x_\øs§Ý‹ WR× pÅc9ØWéQ¡s½0²'z‘Eq·_²—ìWñ¢Â=^ßáÿˆšmÁeKÝ&ÊÒUŒnÛ%±##89gbèþ*³¹'Ó„šõëícKÓ-Vþþú;[6!D®ØRONhN)#–4’7FÃ*Àäë@P@P@PË?¶Ÿí=¡þÆ_²ÏÆßÚƒÄz¾*Ò|¢>¬ÚT7B½“rÇB¬¼Ž‹»èi7ep?™ŸÙ[þ ¦ÿÁcà¥ÿ³oÄmá.§ð›Â |5«Ý¾™©êQ]ù—²m&dtmF@9’w\ÀR–‘o¨æ¨XžTýhXX `þ4òŸí¯ð·ÆŸÿgO|ðMµÄ—ž(Õ4­TžÖæ8¤´Ó[PïnŸŒ¥ºH@ÃH[¥~füXø_ñ#À>ñ7€þ Íâ}{Ä:§í¦ø“ĵ/ͯ&¯£ZصÖu5´b6X½½”‘"¢+¦ü2€2¾-xi~#ÝßøCÃ÷öRéÚï‚<5ðêk—ðÝMâ?™¯§··?5¼ÃOÓFç$°e qÀ Pñßí9ñKáoˆ<+ðâНWâ‡ÂÍ3ľ;×5eg¡øeûIüRÕÿf?‚|q©hú ¯‰õ Ç—ÆÚŽŠ~Ëm¤•´ûë»X% o%ÄkpeX¡w;Êœ õñ'â_е=s@ð'„t^h&›¯ëÚÌÖV2ߘ’Y-íU"šW’FYß ¥Â!V ?Å¿0Ó¿k¿ÚLU>#ø-£ëËÎÖòÀß“oé<+±ç¬T[:{ÛÆÚØíñgÀ¯i üOgsÀüˆC\ï 8èh±ge¦~Þ³åãyZ­Ö¹áY_·èrmŠ¬Ý «¡²¯Iõ=3Cýª¿g rELøÑ¢ZÜ๹kvÿÈk7Nk¡¢œS×4¯x7Å!eѼ]¥x‹çܦ×RŠcŸ^óY´Ö¦‰§±GÆ? ~üA¶Ô ñ×€t¿[Þi3è7ÚzHe²™•¥¶,F|§dBÉœ ‘‘RQåžý—þü=Ô¼+­øCÀçB¼ÐµiµÍWU»–;K©mZÕä$‘Õs ²í(É gšóÏøgM;Ã~ Ô¾ü/ø‰¯|3ð]åÞ©qq¦Ú%µÌ+¡+Kq K$\Ê-âм'¨j»Ï@b·w¨ Éïø5‡áž¡áŸØOÅ_5TÿMñ—‰eÔY»°O“'êÛèú} € ( € ( áþàøÍý¯ñ¿ö\ø mt­‡ü'}⫸‘¾ì×· oG®ËGü±“ÖÆ±Øýÿƒ|~'Ã/ø'ƒõ7‰£¼ñ¯=û–\‘ªB¿†å“ó­ŒÑoÚâøIáŒnm[ÄÑK Ïü³·FçþR»(+Ôæ8ë»S<†ÞÞÕËLÇÌ“;pF@ã_A#æÌùô«ĉ·p=CT›{Éê>Ñ®w -a“žUã5§3&ßÊy_‹~xÚѯõ]Ý¢f,qÀYås÷Q~óÀri¨§ÐNMu<ÞÓà—ÿZÿkhº\–БЫE,n§YH Œ==(qÚœþ&iAðßÅ^U“¿|Máµå[]j`à9kce^ªêdø£â·íOàË&}ö†Õ.f_•#ÔàŽä~;Ðæ…ƒ§6ÆTƒÜñÿnoø(O†nX½ÿ¾ Z«pš†‚ar=7E"*§–Á«ÄÍfRÄŽëNÿ‚®þÒš¤ž9ý’´MzßÍ¡x’hXÿÀ]$ó®w–Kx³¡fqÚHôM+þ 9ðö©ã¿Ù—Ç~`>y,eµ¼Qôù£'ò®W—WKÝ:–eB_ëüöÕcÖüOâoÌGÌ5Ÿ \_«Eæ å–ºQÇaŸSܼ3ÿý…¼^cHý©¼!opÿv-Fý¬ßò™R¹ž·‹:'/†Hú?Ã?>xÝVOüKðå^¹opOàŽMs¸N?gZ9|,íÍ»!ÚêU½ÅdYù?ÿ¾øŠ~ÿÁ/¿k BM½ö­£Cá›b­‚Ïwp?à.ÔÁÁ¿nŸØKÀ_²ßìçû[þÐÚ&›ûAš<Þ¼Šx.%Ô$rL(]HصŽqQÍò•fI@‚2*É€ ( € (7$+ qÐPù‚ÿÁt~(¯Çïø+ígk)ºÓtmoOðšnÈAe$¸ÿ¶í9úæ°”o#O²~_°ÿäøQû$þξXD3YxNÒYÀ\~òTó›õ“ô­ÌÏ=ý¢54Õþ:ø@F/áéoåLð²O.Õ?]±~F½L*RnG—ŠwJ& ºÂ‘«fx`kØmÜñ}Ò7+3)V.ÄíÇJ¥t‰2o"X‹#/^™@yŽ´ÛíKJ†ßJÒÆ´«p²Él—ÿf—eÕþ$ëú…ÔÖVÞ'³Õ´ù®l5íN$Žc ÈBìRw|€‚w¸¯F0Q[\¦äîy?‡þ%jnšLWÞ}J9çYnæÍ&Ï=÷ªÆê…6¢:‚¯‘ÇÒbŸTuš¿Šm­æŸÂ·=Å·o<¬[ Œq÷A2“÷㡪ÕÊ‹úˆc;ã3`|Ä ÖÊR1q‹GŸêÞðÕò~òÅ&R6Њµ&þ#ö<ßVýŸü©Å'Ú´+VO½µáý*ù£¼‘Ÿ$—ÂÏ7»ý’>ÜOØé‘è÷G¥Å¬ØŒD£IüH¬âÏéÛöøosð»öNøUá«ÍrÿÄþÒ ~3C1†Mƶ^!Ð%ünñÝÕÃö¥±þ¹ºI˜ŽæV ƒÐ×q‰f€ ( € (œñWˆô¯xkÄ+×.…¦‹¥ØÍ¨ÞJz$Q!‘Ïàªhü›¿g«}sö¾ÿ‚†ø?T¾µMcÆÞ=›_» s–¼½i~‚OÒ±Ž¯CFÓGú£YÚÛiÖÐØY ŽÎÞ1(:QµGälf~tøƒQ>#øïñ£[ I¥Ü:?ÁJÿ-^ö6§Ìx8—y›²Œéè+»”óHÁRÌŸã\~µ z“.Є•Û÷r½(Ÿ*BîÛÔM|¿håu]N Êûxù~µÒ“fM¤®Ï™¼Qâ9¯ï$A&å TdœW¡$2smžy©E¦Þ@ðßÙè@ÇæKˆ„ŠOÑüë§Þ0–Çw¡xqï£Õ?±-—PKsf“GVXö•ØÆ è3Åiïc±´´´†ÆÍ>ËknŠ‘F:Q€?TÔ$†D“§b+h¶eh™rDî$Ta¹¾cþ5DjÙUZXVL0„9 æ´ø‰÷‘EK‚°@ždÒeUOcÛë’hæ3[û§ôÝàoÇá/ø7ûWNÒmìÈÇB‘(?¨5ù IsÔ”û³ö Qä§vHþ@ÿàå߈É{ûG~É¿ R_2x3Zñ”ñ†û²LDÿ~ÍsËccùƒðí¼øwT1·*„áY¿žÚäŽæ¡þ¶?²WÓâ¯ì»û9üL[•ºmÀÚN®îV–Î6oüxšëŽÆgÑ5@P@PÊß¶ßÃ߈ŸcÿÚƒá‡ÂKÈô"ð­£hrH™ækWDN£‹mÏbÙí@ç½ÿö|¼ñ¯üÀú¦³¢Ëb¾¶¸Ônm¦BÞKtq±Çb%HìF+8”ÝÝÏôVŽ]ª¼žhIäËð?áâ]ëú}¥Î—qw%ýבtHi¤mÎølã$“ǵuFµH.Xœ²£ ¾i.þé®scâ+ˆ}Ð+"+¡beö‘Îð° 9ûŸÚÜmþ…­ÙÜ/¤‘ºëZG¾Ò9Þý–pú§Á¤’4:m½ôx<Áx¹?ƒbºã‰¤þ#žXZ¿dó {Á~4Ñà‘gðv¡ò½Áÿ¾s[Ƶþ#žTjÅ_”ùSÅÓk ,Ö÷6V< 4 Šï 1^Äæ¹äÍM>[#y3-ı¹ýð!J«ƒ€{×¥yhyRÜǺËÂÿóøÕDƒê"ȸQƒÔúÖ€aÜ1 »îóÉÏJ¨î?r²¡­#±Œ·1^\n+òáO5F|ÈËšvÛ–'jžüdVÖÖä?„õƒzñwÅ_…¾h„Ëy­ÚÂêå<ÀÍømS\8‰{<<çÙ3·iˆ„;´IW/æ4ÌRYkòsõƒüùÿà»ÿßÇ_ðRÚ[ɛαð¿…4OAƒÂI&.%ßçlý+9ü%Gsò7JA‘§)ÿ–²<Çé£ÿA5ËËþÿðG;/XÁ1¿b«¡M_þ{yb œýÚß9ïäë®;¦u`P@PrgË`£-Ž0_ðNï†^¹ÿ‚¯ÁZ~/ü;ð¼^ð‡Š†áKoõm|Å ô‹Ø¸Šáˆæ€? ' }¨»—Ö€%óp1ŸÖ€.]OÞü(½Íù‰-@ƤҾöj†Kˆ§M— &R9WƒøäõOü=׎ígÁZN¥!þ)´øË~xÍmµ#´ŸÞc:TåñE?‘ç:§ìÓð+XÝæx'qk+™b?£cô®¸ã11ÞG°xi|Qû3Ö?aÿ„wû›MÕµ­¿‡eÒJàéýk¶9Ž!|Vg ²ì<¾£Êu¿ø'ÊJ¼;ñPÂÙùEö—ÛДé]ÑÍÛ‡âqË*‹øgøC­þÀ?í|ÇÒ¼A ëËËþ•$òdÇë]ÐÍ(}¤ÑÃ<²ºøgŽëŸ±çí#¤‰ü7}f5SóX^C0oÀ6Jô#˜a'ö¿3Îx \~ÍþãÅuï„_<8ìÜPˆÕ´õbw·]Ùv^?@Ù4²KjIFé\žz(Ìþ6xÚßá·ÁÏŠß®¥Ûè~¾ÕÙØð<›wqü¨üªõ}T^iÿ×T»Xo¯í®5‰šVÆùn®]˜äõ<-rÏsXì~ Á*þÛ|bÿ‚“~É~»n´[Eâ Õa•ò,îÎ}³ Æ…t"[Ÿéùk~Ä¿³O¡¶[f‡Âð^JŠ˜ùæÌ¿ž*úEý ¾xƒÄzǃ4_Ž~ Ô¼a¦Þɧj:Bx¦Ð][N‡ÂÒV‚1@_íOð/Úáσü2žµñrÃã TÊJZÛE}·R¡S‡cn9Ý¿ £ogK#ΦËÃNh˜Ô.†<¸ÛwÖ€1v7S÷¨á} ö—ø£©þÕËðFø?Åž }RþÊù<3¨ÝÞj^µ‚ݤ†ûR™Sìq¥Q´Ü³!’3ûÌ>йŠsŽÔ Ò€å"ŽIf‘a‰T³»œd’OAŠæü%ão|@Ò[^ðŒ´hbf·7Ú&© Ü"Eûɾ&eÜ223‘šéÁÁÍJ–Qéë@R@Æ@VL.6õ  Œ«·=hóþ 7ñ ü.ÿ‚dþÖÚä7ÞþÿÃÃöÄL—s$ÁÍ ðQ†:'†Ÿ°/…,l!·ñ4ÿ ÛÄ:ïÞoµÞÉäúGo‘þõsÍu4ŠOâ?X?àÜo·‹¿j߉Ÿ^ÜÉgá?˜¡“ q}2D1ïåE7àja¸å±ýä|5ñL³Á ÛöÀÏjê2=½[<´ú( € (ùëÿƒ…üK>¹ð;öQýš´§fÕþ$|aÓ­¤[K[${—ôó~ÏùŠýpð®káCÐ,”%®›k Œ+Ž6ÄŠƒÿA å7ö•ÿƒquˆŸ>&|OðGí/Ûµýrï]hud1¼ó<¬»ÑÁ8.Fq@ ÜÿÁÿি¥ûgÁßѯ”wDt_iíÇNüèѾøSþ ËðóãgŸxç㇤øk?ˆ­-õ{¹|_ý´¾rù²Iç3‚=äŽü ÐôÉûr|uñìõû*|zøçð·Ã‹âohš3Ýè6Y´è󴨑ïH, 6â28hùðßüµûOø^æ8>(~ÉÞñ$ƒÌ’ÂmCM“ðRò¨?…tß³×üGöøMâýcÅö°‰> ë“Ï6¤<âó5œòÎâI¦k9Z(V|±}›É'æää÷ö2ÿ‚­~Ì_·Wo>|Ò¼_¥øªßI—X•uí8¡ÆT:ù‰#Ãržppx ·¾&üpø+ðM<;7Æ?‹>øU­;Úé’ø‡VŽÑn¥E èŒä@ ž{Ðão‰ ø¹ð“ÇšgÁO|9øÉ¯_éR[Yé:—‰ ŸNÔpö÷gX䌺ÆðH @<«ö.ø 㿄׿´W&ñv´·7Gyzmà† uC,ŽêŽÄæHÕUT’X“€ ¯'ˆ«N¬0øxóJWz»$•®Û³}U’_ön[†ÄákfYWN•.DÜcÍ')·Ê’rŠû2m¹$­m[H鼬ê>$ðî«êÚ žÕ¤ŠâÆK„›Êt‘‘¶Èœ:’¹VÀÊ‘§ uP©:´”çWÕ];YÛuºìû>a†£ƒÆK‡©í"¬Ô¬ãtÒjñz¦¯fµ³NÍ«7ÕG´ŸÐ×aãŸÏoüƒâÙaý~ |!²ô¯üNÓí0yx­Õån=7l åþ +â?Yý°üeðËAóõ)¼ áßx kKg“ËkM2*ü àù³K‘ëXÊJÚ'dH_ðlïÁígÁÿ²7ÅoŠ>'ðýç‡õx½,-ÓP³xdk[p¡‚¸©’y0z´Cù‰–çôõ᫆±¿µ`Ü8ÏJØ“ê­>àOm‚9  J( € (ù°ý¾®×ãüÏþ ûð8È5 á÷ƒïî§ØP£¨$²çÿ¯@{tÐÝKæ¼*[<’´ÓÉ ¾£§5¥ÔK5»¦ÖB2Å|ãâ_Ù«à§Œ„Ëâ/iš²¹;–æÆ9þ<¦€>Vñ¿üŸö&ñÊLÚŸÀýHùËÛØˆ~1• £öBÿ‚sþÏ?±¯Äxÿàχ¥ÑuÍkOEãK{,ª B±«±Y‘2z tÍy¿üCþ ¶ÿðP-'áKCñ.ëÀwžk¶¶Š;Q4S›€‹Ë‚<¥ç¡4üüø¿þ àý¤|7<—~ø³£ê“'Í=¤¶î}>e ƒøÐŸÚþÁ_ðXï€ïøkñ3ÄñÛÄÛ‘|?ãéâþò(ý(úpÿ‚EX~ן³&¹?í—âOkŸ®Cýª?j_þÊ:'‚õÏiòëxƒX}"ÂÖ=JÚÐ.Ýî&™æ¹t‰#’Ì2]ë@éàïÂ_á? ø­4Ùôxõ;¯ÒÒâxex–E ¼/$OÁ2;)!ˆ9 šÙŠÏÎh¢»,öÍÁÜ>jÇY˜ ‘¹GSŽ”Ù|™xx•»`¥jhío$q¢ÇŸ˜ªŒPã_…þñ…Ì·$ðí¶­$˵ÌñÎ:px ˜ü_ÿøý’üx$þßø/áíAŸï<šD9üƒúÐɾ0ÿ‚þ¾+¸i¡øqÿ¼ÄîiÓ@èA஀ ý†øuá]á÷Ãÿü>ðµ€Ò|/ éPhºeª¹aÆ#E˱À'’I=èù™ñÜ«ñëþ9ÒôÑ‹í'áç…ì,ÈêÒ»qìr€?£È4õ€ù…~ln$Žô<Ÿ½$Ÿ”ô Úà™ã ÝûÐÓ¾½Ýk çœôìp¶Pgð  ¨ € Ãñ³§ø{EÕµý^qk¥X[=íÔ¤ð‘Æ¥ØþM2?ð@Ý;Rñ‡Àß¿´Æ¼ý¹ñ7â-ÿ‰YG.’Ï%Àç©é ?à4ÔÁi?cÏÚÿö¥´øªþËž7_ ÛøQµ Fué¬'–y„jŽ®˜Ý„F‘ŒûÐàªøgþ ãðU‡Eø«ñ'V²ƒî¤^&œDöey2>¢€&‹þ µÿžø>ÞGÄ/Iâ(ãûíâ‡jXóÞHÒ#úô éwþ ‘ûDübýªÿeOükøç§iºW‹µ-fúÞÖ/N{Tû4.¨3³‡Þ»ço®M|ûCÿÁx?gÿÙ‹ö“ø©û;xóàÇŠü@¾¾ŽÂ}{C¾µd•Ì)#þæB„mg+Ãíí@Iâ¯ø,ìûDTƒöˆø§û-x‹L‚æÅç±Ðà\ÚÝ*¤©,,—0¾6.Ù6‡ˆœ†Ã° m|ÿ‚‹Á2<1ðßÁ ¾þÔ¾Ð|áíßGÒí5K¹¡’h#XÑXÊŠÌÛTdõ'4úY¤\XjÖzn¯¥ÞE¨i·P¥Í­ÌI£u ®¬8 ‚=Á ²Kib‹Ã$*Fà] Å¿Œ·´UÏíÁqjº—Іƒmâ¿ Yø3Ãú-ž±½ÎŒÈª_›Ø[û8l•§GwŽÑĨžYxÚ€?a¥·_˜‚ç€Z±ŒÇ#žzJæüMâøt›‹«X´-CZ6p-ÍóÙD¬-ЂGv Ú œœ€5Ìx––S GR³¥*ŽœbÕ8Êî7NQs“IË’š”¹UíªOÜ£€•ZQ«)Æ<ÎÑ»jíoѤ¯¥Ý•ÈGŒü;•¯k3j_gÒtë“iu4‘0 ÙÀË}õ§éOˆòjX*ù•j¼´¨O’rjVR\º%kËYÅhž®Û¦s¬%Õ†1¼¤®•ÖÚýÛ?‘±£ëšgˆ-?´4{ôÔ¬÷´EãÏÊêpAÁæ½Ì¿2Àf¸­åµáv®º5£M;4×TÒk±ËZ\<ý•hÙïòïèuÖRƒ¹ÏZ÷Sù˜ÿ‚2éKûCÿÁ[ÿà¡ÿ´⋽6-oS·µ”ó„YÖ0û Ðõ ã_˧´“Z¦èú`w txed‘v·|Ðy̱ñŽ*úÀ×Eb…Kcµ}c)’%!·}hB€ ( Îø+ÅëßðMoÛ7Çú|Ëo¬/nô]=·~Óz”;}÷Ü }(ç/ø%wÂëoƒŸ°ìçámŬ‡Dò®ÜÈÇi>û(î_ê9¶h£Ãc¯µy¤‘YÜÍl’ÿ¼€Ð=ß…ü5|ntˆ¤S×å ‹ÂzN“¡Å%¦•g®8Dè(῟ðM/Ø÷ãç‹õïøÿàî™}âíV_´ßêPoŠiäÀÙ‘†[s@xßþ þýŽüF&>»á9îý›Tó ¿|¡¯ÿÁ¹e¶¥ouà_ÚÿM&©¨é1Ê?¸ë“lf€?¥­oÃZîð?Zð‡Ã½šN½oáY4MÌ8H¶žD Åz`…c|Pñzÿ²?üÏàT?`ð‡Ä}ž ·CñäÒÆØÈF—øíQ‹öÃÿ‚çü ںw¨YÄÛ¤]kÃë}}IŒçó ¹?aø,íùñÇö«øû?|Qð§†î´ßk°éz‡™á©-.-4ÊÊøSjï»~Pæ€?¡Û[ö»ð_ì=ð[øÿã/ ÞxÃKµÔ,ôÈ4« „Šk™n%gWjîsžËŽôù cÿþž/»û_ŠüñGáÝÅÌi úYGo,s*çŒrî8Œ¨VÁÆkóÜw àqØÙfÒ¥9N1EN£‚©ß•M-tM®h¸Ë•òóZÖö©cëR¤¨Ú-&ÚæWqo{zïgu}l{Ÿƒÿà­ðMoˆ—ÚßíE{á=ÿU½ÎŸâO OjCùâgO=áIr6ðçØ.¤™åÏa@fŠC.á· @½àËŒmÀú PÑš$æHT¸ë@'^EP@Ïügã)öYýŸ~é²3j¿~.é:t/ü´µ³Y/dàuâ„~"€?J¼ ¢[øÀ~ ð}² Òt‹m5TvòâT?¨  oÜ áµ¾^ ~|KñǿگÁ? ~ üdìe¶ñ'ô O¶—Z6ŽÄ¹R—îîD‘aŒ³*„–C„Œ+€}¸ñ°Ü1·ž(昬’±f-žø  ÚˆfhÊýêñ_†ÿþ |_Ô5ý+áwÅ Çz–”Cji—‚F‰K2ÆèË+(‘w!*@lŠõƒ3v ƒN›6ûO\ÐmÄP4’$°+.{­fÏ ècmÆ•‡þ¹@ºwÃÿéšÔ:ý‡mmõ„ébEa€n Áõ—ñóàÂÿÚGáý×ß‹^·ño„ÞU¹6—@íóW•q‚#±ù'ãOø Çìaâ:M'Ã×þ‘¾ïö~© þû…|ƒãø7áåÁšoü\Ö´6ÿ–iqm À~#a ¶?à•ÿðKþÁÿ~"|CñWŽmü|5 èZ"ŧùR[‰fŽIÞF,†Õ@ë½²x€>¢ÿ‚Æ|J? ?à›Ÿµwˆ!˜Ãyuá¦Ñ-°pL—R,ÁÍzüKápøYÿàøK ůÙîõieÔ[#— ÿÐOç@²RÍ’Ãô !ñõ°– uþtó•ä>\ŒÚ¹ ûÂ21@ùxëŠú3Ãòª'8é@²}Ñ@ €œ ÐóÿS½ÿà¯_ðMOÙÜH.´¯ è—Þ<Ô¢Rpst¡8è|«9ºö4úSûCx·Ç>ø#ñ›Å¿t¹uψV¾¼Ðìíáó[Á ˜B¯;Žý§ñŒPñ÷eÿžÿ‚¸|ŠÞÃ⇆tŸy@+¿‰þ¬>Îd‹É9>½y ZðWüuñKEÔ®µþǾÕuK¡jÚ¥se=ÀŒ›‹,»¶†`¡‰Ú 4úûÁgü ûlümð¿ÀÝöñ€|Eoqs5ýƳͽºÅI’#v0Î8<ÐêÇÚOàì­àÍ/âÇ¿ÃðûÁ·š¤Z,³[K(7+²®ØÕ›Q‰8ÀšñØ?o¿Ø¿â×…üA¥|.ýµ<¦øšóNžÛN¾“[†9,î6Xæòn|½å«í#nZñØ+ög½ø=¯ë^-»ñ?†uÍ%|¦ø+I¶ð÷Žo<@ƒÈžYî.b’ägÒH­ö8s²nÎ@ôáál.øÚ<ôܤf€5­"eAŠù·ö±ø“ã„uü:ÓaÔ¼W.±§hðyÖ/xmÒâé"–â;Dt’îHã/"ÛÆÁå+…Ï €q±·Æÿü{øyãísÅÑGyu xçTð}¶±…>–º´6…¹ûÎò[¶çxÚ2ÇŒíZªœƒŽ=裈æ/Ã¥yoþ-|0øGi§ê>!è¿í.åhm$Ö5íüæ,qË`N8PA8ÍwZv¯§ë:mޝ£êú¶“u ÜÚÝZβE4l2®Ž¤†R ‚AŠÖ³‘ŒñíhðGþ0ñ„ÑþÈß ~Y?úgþ%éÚqŒ^(CLÃÆUhúý•ü gð‡öjø+ðîÅJæxzÞ"]Ì»Ûÿc@ÜoÆyaÔÈøžQ< NY½hç½f#ç¶åÏç@ÞcÊGÝÏzúÃÓçËõï@‘UÇ¥M@G!Ú¬ùè(ùL𢟿à¼ÿ¶÷Ä´ÍÖ‹ð÷C²ð5‹’HG·´E•Glùדqê=¨öÝ ´[nVæ€<ÿS𧆵g¸‡SÒ!½‰Ü² `@>øÓö-ý–~!‰Å¿¼/­Hÿyî48 ß[súÐðcþ ûû,üø›ÅŸ„_ ,<ão±Í¦‹»Mãl`Jª¬ÅT°ÈÆGs@Á@ÿa~Ýÿ <+ðïÅÞ+Ô<'‹«ÿmYÍ`ˆÛ¥òš,:¸Á\ã ÐóóãŸø7Æq™ŸÀŸ쯣Ù«£Ê‡þúIã´ò¦½ÿ=ý¼þÜ5ßu+VØÛ’M#ÄOjÿ“ÇÿǨ÷¯þµð#öøà¯Ö_´äúÌzæ¡«ÙäZêºë^‡†(ÜÉp™w2ñF9ì<` ð_ø+OüwöÚý’?i_xOö{ÓmmþEáX//_Tðº^AwxóH_÷¬M¨±© ã©úÐæì¿ðpgÇÿx{PðGÇÿÙSáÇÆŸÝl[ë ìî"I‚°e%7ʃÁ±• ‚ ±> ÿÁÅÿ|%áÝÁß±®£ðÇÃv‹{K jÖßfrI ÇâO©$’rMC²¿íá/ÚÃà…~:ø/CÔü7áýRk‹e²ÕÑñI†9P•uÜ §Ò€2µOÛ¿ö2ðß¼Qð«Ä´çƒ<3ñ D»k WIÔõ•¶–ÞeÆc%ö©a‘À&€?3?o¯Ùû]ý³> xâ7ìÕñ£Àß4ïøD¦ðÃiƒÅVÍ%œÍ#‘u'ŒnĹ 4r"8W! `¬Ÿ³Â;ß‚_³ïŸ…×Ö‘[êF—å^EdûíâžIic„…P"W‘•G8É÷‹e*êèY‹"€?œø,9“âÿü+þ ƒû7[¹¸„jW^'½„sÓG 1Ezþ°Rhì­mì¡m°ÅÄ À`P6º X†ù~´«Ü  eÏå@?¬!iØ{Ð䟯Êå rð쬾Yõé@·lsJ·@gj7ÖºmÞ£{2ÛYÛÆÓÍ#ÄþÐòaÿTû_Ľ7ö¸ýª5@dÔ>#|FÔ5¨ål墖îi—ðòÚÀ ýÚVÀÀü(‘×u=;A¶¾ÖuR×CÒm×͸»¼¸HbˆYÜ…Q’I;ÐN›!xϽr¸•IÏšêIf·aüDPTRÌÊÛQ˜/ÌÄ àzŸJsJ¬>`ëÍXÓäŠ;œ¢ª¶6ð´_Äžеè–-[NŠú2yY#€>rñìmû2|@YÅ¿ü5­3ýç¹Ñ f?ŽÜþ´òWŒÿàŒÿ°O‹žiOÁ{Mg/¥]Oopöþ”úû>üðWì÷ð‹Áÿ~Y>›àŸÛ5¦ “4ŽCHò»»±Ë»I#±'×Ú€??Ú³þ⯋_>)|UðÇ[ïëW:ÜÖºžœÌ#’i Œ»Ñù’ÛÓùËâÏø wí«àÙä½ð~«¡x’D;‘ìµ'·ÿßq®ü €9ÿ ~ÊðW¯úµ®‰oñ&;Qcðï‹eqœñ´$Äu#ÐuÍwÞÓ5­À¾Ò&xE³³{gOñÙ¦óå„Jèát!C ûÀç>Ôóïˆ?à·?ðM?Ú6ë¶ߴ7ˆz>™$²¦ªYÁ¨éRË"lón-â•DîŠXF]–\²€Ø`ö‡ìýÿOÿ‚nèüðãHý­åº³Ñ4ôÓ­.-øÛEÒtˆx¡¼¥Ãð^çÂÍ}Ÿi¯Iy/Ûnîæ·"hZ³}«1˜a@«M³æQ*ÉócrŒîo¥Y³B³)v€.kú~›ko>¥o¦Ã%Â[D÷3¬aäs„@XŒ³ŽIàf€"RÊòç9âî‡ ñЊÒÓä$•n=¨k—1É–»P²‡à‚Ù ùV¥÷´ »±Û@©SoíÏ @Í/ü|¿ÆŸø*ÿüCö† «jVRõ )e¦7Põ,ç<°æ€*‹ž½èF˜*°$²ý{Ð;xÌ–Ï  öh‹’O4êž—y|væ€=³M9ˆÔŒâ€6¨ Áø8cŧþ§À?­%ݨ|Pø© xMà^¯kÏÛ®8î6Zàÿ½@Mü/Ðað‡Ã¿øf$­Ž‘¹\tm€·êM|Ûñßöý–¾=ø‚ûÅ?> è¾&ñEâ*\jonRâ@£jî‘ ±Ààô ‚üiÿ2ýŠ|R“6‹¤k¾™¾ëXkÒ:¯üq  üYÿíø§küvÕtywnŒj:<#¡&3ÍDß ¼!wðóáG„ü£È<ÍA·ÑlÀš5‘€àu.@þñ âïÅßðMø*gÂOkž ðañ,ڌ׳^KwáO€Ò3ÈÎ_ 4LrI=3Íe§íÿ®ýŸyÔüyñVÎÆÊkº4÷ðàz™"•H÷Ý@Q~ÈßðWø(WŽ¿hOƒ?~!ßøÄÖ:÷‰-t‰ÒïÃÁq(’EO(ö”Îs»fWÐõûS~ÐÞý“¿gÿŠß´&½¤\xŸAðÅ‘»O¶™c’õŒ«q«0!K3ŽH zPLv?íÿààߨâß…ßâŸÁh·š6¢š¾™%î™g¨-•Ú£"ÏÉ«#€ûr7`ÐQé^9ÿ‚žÁ??h cáïŠ~~Û·³oÅM®-­õ½C³ö7HæÖH¦_%ÎV9cvÜ!–$|0ÜŒú]û9|rý˜|g¡h? ~~Ð:GÆ+­>Àºƒâ¿íFtS—žgv2;mÌÄ`g€ª]ØÄÇvÔi07£8ãŸu›½7Sð|7úþ­áÊ· ©êz=»4«2„òbvXäd³!,–ERFp?ÎkÕ¥ˆ£ µ'Nƒææ”o™[‘6£'¿yÝ-ZIµ}q›µ»;áOŠ?U³ÐuK#‡$¶ÚrëúÍŒÂÓK;ÀÓB»XË, n¸;]ÆìÛ_Îóï¬G ‰…©·ûY«4å)¸sAYóN ìÆ2—½fùLã9_”ûبçvxÍ~üuþ?ñM¿€þøëÆwÒ‹{=FºÕ%v8Ú±DÎOé@‚ðmÿ„®äøñ{ã&¨›µOkáän¬ÓM-ËŸüy(ú4šãŒÒ€ Um¢€.‰X¡åô€(ÜBŸâÏ<Ðx]p~PhÑ<7.%P? ýhÝ´†Ê!  ñÐ}(hù¤ÿ‚Àjmñ_þ 9ÿÍýœ#Q5†g¬üEÔ#8Ágh¬ $÷ç#èhôÝ&Pr0ªÕ Ÿ´gêr’"+ÓëAFJN1ÿ¾¨o?'ç@šdû¡Ûèh­Ù…®fFOµUk .eËÚ'=Xq@ÜžðTš•®¶Þ´mbßÛ[©–#Œe[S‚y½Mñgá€>9ü6×>|Hðü^$ðF¥ ¥Ý”…•_i ¼©ÀAÅ~Bøçþ?ûx°ÜK£Øëþ‘ú -lȃþ2È(ã¿Á¸> ¸Kðÿãî—&w,zž‰£þú‰ã?¥} ÿÕÿ‚GüCý‹i_ø[þ2ñþã/ Ûh×–štV’¤ÿlž?$HÛÉ ‰ËÜ’Ì>´ïßðY¿þØ?>ü!Ó?d¡¯Ã©i¾%“XÖ¤ðÞ¤Ö×;ÝãˆY™C;<ãŠþoïh¯ø-ÀÉ£:‡Ä¯‹º-½¿Ê­equ:rÏŠGü „Ú^è׃ÿàºßðRMãëÿ |@·BHuï D²6y1Îréך™%%Ë%p?£Oø$·ü+âŸí÷¦ü[ŸâWÃí³xe-fŽûB’eILòH‚ŠFb;†qކ¨vÿ‚¶üG…_ðN?ÚóĶқ{é|>hAäËtËl¸÷Ì´ÉÿÁþ¯ÂïØ#áNž"Í~òß0ÛŒªªB¿ú-¿:ý<–]ÌÀçހè·^´ ’dFq·'Ö€+ÊÊß1ïü@Ðp6˜}ÓÚ€;I‰—Ùô |Ñ4QØÇzéÇAô ô?Jþi?i‹7ƒþ Ñá™üF»­î~iÍ¡ÿcT¹Y¶ÿÀÞ<ãÔPérC·Nç.0{vÅÑ£;Ë'ž*.Ìuá}1@ÖM±v’S'¨  ÷@™ûÐpXqÿÍ8HÙéÿÖ ¢ÒOÜ(;¾îÓšËk.VÛ!Ûš°·d þ|ÐÑÜ~õI=èjᣖ¨“œr(iúdã÷¶‰îОø«àWÁ¿Bðø·á¾âHÛï Ý2)³ÿ})  ƒŸ¾|µ×´¿„¿tŸ‡¶:­ÚßêQé6)º™Wb»íqU$ ôã© ÈÏø8?ÅÒ[þÇÿ þ[Iþ—㉚FcÏ/ .×2~¹\Ðê÷ìÇáUðìïðO‚3 YøfÓÌùž?5¿W4íRÈXu*I  ¶×R9  ~~é<ò½y SÀF ƒüè ÷ ÏB;fV^ôïÚ nGlP\ŸtPž‡é@‚¿ðZÿß4]7àgüCà†eñŸÅo‚Wwx@´Sæë^¹ÛöØ;â(“'Y¹Æ(Øþ|oøcûHü'ðwÆ¿ƒþ+·ñ‡ÃÝrØMiyn@1¾ø%^±Ì‡*ñ·*Gq‚@=Rh¶ñëë@|¶¾žÔÓÆH>Ø  m^ŒWŽ8 Ææ$äPàøPìlò?#@ÖŒ@^˜  Ó 20^y ‘Xößë@!Ž#´<…d-Øq@>'øðûÁ3®“âŸØézã®cÓD†[·«oi›ðJùŸÇ?·?ìÿðáäž!“Ãì;ë76ZP?…ýÄÿŽÔó 8þ wû$øŠí,t¯‰:MõË¢;Oøzw'Ð"j%‰öš9Uxköø?©Åk}sâ‡ð­œ¤,wå„Ö9ö¸uòá!£™øÿ—ÕÓâÇíÿÙø£Þ.§jóê>/!Ä‘¸s¬.ËÉ‚8ëTôs´6ç[([{u[hÀìª6ù@ Y}:ôö  1ܹåÊÆ€4°ýO?63@ ,@ÚæÏ$Эc22îÎÚî´`hÃâé@롱¦(±S2=¨IÀ&€9mqD°M ’2¥XG¡ÏZþeh¯ø&—ÅÙçâÇ‹¿h¯ø&OŦýüM¬ÎnüGà9Ñ&Ðui3’ZÖLÅÏ<|…sòºô žï?à¡¿ðTÿ„íöoŒðO¿|Gµ‡å’ÿ×Z®˜Òc¸ØnaçÛŠ¹¤ÿÁv<)¤L¶ÿaŠ?îíš][ÓµTSß (·ý:мx_þ uÿâ×Liâ?‰^.øErØÜž1øo¨@ˆ}å·Y“ñÎ(ëO‡¿··ì'ñUá‹áßíð»Ä—R©lþ2·³˜“Û˺10>Ø ®´›tñ’ßørHüQ§²†Yô™ã»ŒPÑ3@ÜÚ›Fòî£k6þìèPþ´¶ wFCw4¢-$.ˆp¿7Ó5¢l·n94ÇøÓÆ¾ø}¤G¬x–ñàYeû5­¼&[‹Ù°[Ɇ%ùð pª 1U€㈿nOÚ#ö¼ñwˆ>þÀÿâ=ŽŸrÚvµâïí·±ð¾ ᣺Öb[ù×ø­´Ü(èndæ³¼žÀX‡þ Ýáeðv¥ã/ÛsöÓñOÅ­Üjøk~<'áìG Kô{7·Ë'Ìy§w°È"Ÿ*Ò<û3ÿÁ$¾ëv:…¿bïBëP6WÓø"=Jâä|²5Ҽ˲I|· «#’¡Uˆ~é>ñïCàOü»âÃûø·ö6øwaáX¯ Ó®"ÖþiˆñyÐÇ4LÞ\mµ9ãlîùw@ Š=ÒÓÿàšßðM?]_k?³v§¬þÇ^:3¥¤z—Â_xqŒÏ¿bý‘ØÛ\e¡™vyN¤Å"õFlž±ð·Æ>ý¥> ÿÁ[5M7Â7ÚÇíÇ}ðªÂÊ+«øoMÓõ–ˆ©¾u6I²Òöâ1ƒ _)å`«óF¨êöHý¾þþÔÞµ½ÐüCi´oÿ±fhâ–š€Îln-æÄö¼ôYÆ_Ã$à+™÷`ùX<TØIÞ»½(Èu Ì0Íœth\í9ü;P啹fÀV€;½"ÐR~ns@Ç£&È”wÅuJ0O½÷MbßCæG ÆåÇJùOÇöh÷7:ü¹<ÐÈ~/ð„SÉ4–êöÒ}íбCŸ¨ ›|Yà+­H4wwgTêïaIÔûaÁ ˜|]û7xÄf×>øcX|Çû`sÿˆ¥|§ãŸø'7ì¿ã8æ÷Á²ù™ËXjÀú,Èÿ΀>YÔÿà’´[ù5/…þ<ñ7ÂmH6èÞÎ `e=¿yi4gñÛ@vট§·àoüSÆÓi(¿%½ÿަ–4ç…0jº‘ö¨Ñl¿iÏø.ÏÃUîµo üxÓã;‹êÞ°º‘Ç¡’ÂHßñÆh¦Óà·ß¶¿ÃÙ–ËãŸüÿÃ:Ó!Û,Úˆµ-CôŽê9P}3@Å£ÿÁÄŸ µ’O‰ÿ²?Ň÷N6›«BÎÖH˜gJœ ’0 |{ÿý”ÿà¡?5-ö˜ý¨¥ýœ?dHl¡]RÞëMÔ,¯6XjŸ >'èšÃßÔÛÃ÷‡µû7PÑuHã26›s'ü·ß´¶·.àVÝûè¤Þ“¸¨‘º ÌÄtÜ*€±¹O8êvÐ¥¤EÛ áÍ@Ž™fÌwc¥z“`|Åb§¯?-zmŒ"4PGÒ€5“îŠîžq@®@0ÉÇn´ò÷Ûɘ(Ý÷F}hÂu;41ÁÜO¥yí÷‡ã˜üè¹íùP}á(å;Œ?!èMr÷^ B‹ˆ÷6=(¸ð,d7î†ã߃qðæ wµF纊æo¾é²>ïìÔÀÀ*˜Çã@ó|7¾aµÔ¯¡Sòˆ–功m¤àý1@ˆÿ´·Ã‘û`~ÒÞý•<%gcýƒ5”šïŒõÛ]2žÃÃÐÜyNRT@Ë=õÔmmœ­¼20âSYüL³!½´sƒ’†{9%ŒóÉ^Np(×´¿‡¿ðY¯„¾\_ ¿oOø®Æ1û»MKÄvz²`vÙz¡È D¹ø£ÿûø£Ÿ]|IŸÂ6ó/“>±áÿi}Û/Lý­›ÚL¥wŸ²'üÃ7uïþÔ?!ø¹ñCÌŽçÄ<^$þÓÕ. ƒ(5 ¶;¡‰†~Dq Þ ~7ÁŸ 5—€<3Œ>ýŸìú·ÃŸ³‰b·¶äéhÿp*“›B|¹D~Sœ8¦xþÑá«MgÀÚ‡ö懬»k_Ú†s+ß4¼ù®ì'P)b¢ U~OÿÁO> Þ|2¾Ñÿࣟ ô›É|Sà­>=/âΓ£³ø‡Â+*Èó¦:ßiÒ»·“¨ò>TêìÿñbÃãÃ-Æj¶zÕñDŠòïNÿQrLI,wQÐÏ ÜF;$Áz©ªŽÀ{¥ª™¤P>îzUÛXY€Uq»Šô *Ã~C@…¤Ø´ã¿¥uQ€.(Õ5þé  gò}9 –¾"8 çã3ʰ'w‘š™lçüwáeŸŠþ xûöÀ¿ÒÍ®±ñ“Ä“kÚ4r/Íiá«<Øè¶£ÑE¬>f;´Äõ51ô;âU¤žð•Ö£¤i±êÞ%º¹‹JÑ,¥K‹éÜG 7ûŽ÷ôöª–À~oÿÁPÿgïéŸðLïžñŸÅ»o…ú%Ävsj^1Ö4님®/ŸP…Ì·1Û£ÊDÓaIUm”cj%¤ˆÿ¿hÿˆ¿¼âO„_³—Âß |ø½¬~ÒËà?Ü|<–ßXÓ/åþÆi–m"+æŽÚÜ?”€«°ŒT’ûÀ{ׄÿmŸÚûÆÞ,ø'ៈŸ´oŸ٪k/„zoüY«êº-¦£¥ë7“ø‰ôփϷyv„&ÑnN%';FvÌèÿðQ¿Ú·Løÿñ·Œü1}à9õïŠ~Òü"|-l§GÓêÆäέçH]ðdùX#×å«»ó‡À¯Û‡ö¥ø^¿´÷íáψ:_‹?ho‰w?4MWÄ:g…¬ Ç©Ú\´‘Ajî-Ò*¬Jd*…¹`™8›¿ˆÑþÚ¿ðV_ŽšçìÁðÀÿü à޾%ð÷µ ÛëýK¾¶¿}SŠ;a;Ú¼ÐÛJÖîé ˆ°Wp«·°ÐΛ¿ ¾'[èÀüãGšúÞ%K=i͸D—1¬’…ÿž°ÌzÊj¶åscc©ØÞiú­„Zž•sÛ]ÚÌ¡’hJ¼lUe%Hî ªñgþ w5ÿìùñSãçì1¬_Ë=¯ÃŸ]x7CiÜ–›FxÛWÐd9ë‹)ï­³éiþY­%`?z´{cµF7sŠÐRÒtüªäuï@…¦Ø¯É@”ìEÀüh@(_Zu5†G'ô›zvÄùôÅ|¯ñ!0ìrXЄÉ>7vçÔÐm6UNï›°€!ó¹`ON”àÙÏÊ:P‰cfÆzç#?­*a*h`ŠFIܦ€?-à°¿/þ~ÅŸ5àÚêÐxO]¿´t8"ìç²€q.¡uµL¶ôà«„ß~ ü'ЬÂþÓ"xëã/ÃÙÿà.­ñ“YÒ£¸ñV£}®mµKc [è^Ùf…® f,’¢;©mÃïUÑiŸðOï…:¼UðßEý‰þéõÁk³¤A ]­µñ¶gk5|£grŒ~e.Ø<šË•ÝxöX‹áMßnþþÌÿ~ßxVÂïMðìš>›}nú]µÓ﹎°‹+Ïýò2sWÊ€½ñËÄ~?ðŸ‡|#©|SÕ¼ðÿKÿ„–ÊóOÕ ƒXº‘n-™®ˆDKvÉh ¸\¶†#9`ïÐBðßíoû9ø³â±ð¯ÃÿlÛÆ–—:]‹Ù][OnçRµ7v6i$±ªIu-²™DLªƒs"ÑÌ€üåø¥ü+?ø,†uûR-ìüuðCÖî‚ð$¸ÒñøÇÿÈŽY?cˆ—J [Ûø^þâeõHõ *W÷Äoøf³‘F×üömý¤>7~Ô°¿Æ€ž¸ñG†¼-¨A.¶×~&Ž×M´µ;[‰'x±NfñɲHŒ›±åøQû~ܾñ§Ã;ÿНþ*Moðñ¼?a¬Ïñ|ž»ûN¶×-$ )ûiž+Û•x›;'”.VÎw?ðIÏø(n‘ðà ôŸëøj×T´¼ºðö…ñÕg7ƒ-¬æ¸ŸÉC¨“6ì“"X£l(¥fØ^3ÿ‚S|rñÞ•ñgÆ.ðæ·âŠš·Çîo> 3Û]øBl'¸ÔHnK{‚¥<¹N÷ÂüãÊ‹ü6ÿ‚jÁG4ŸˆŸõïi^&ºm ᆙ¡%í‡Ä[O+N¹ƒKÔí®m. ÊÒºI-Í© •íw•| *yXuÿø%×í•ÂïŒQ|ÕõO‹÷„¾?öÖ™ãÛBonô#ìš­…ÚOp¢á ÚÇ+eÐJ¨9r6±ÊÀðÿü ý°5Û\ýžô¹ï4¿Ú[ZøWsanú/oÚÓLqðþ+4·gwo&%Ô¥.X¶^Lù…Ë`¶¶þÄ?¶Ž“©þËÿ³Î‡àÙüLÕ‡ŠlÐeè&9éŠðOé¾zÌvž”ó>·¤OŒT½éÚ€1~Çscgm§&€ðÌ¡™¶: ƒ;[>YVõ4 “ï|Ü÷ #«ã§^zЄ ÈÄãŠø7þ Að†O޲÷޾À»§Ötëÿ «÷_PÓç³…¿ ©-*e°û|j‹öý‹eŒfM×Ú×´ïísÌW°Ä¶÷1·£,ðÈìE `;Ϻ.›­|'ÖüCq}ÿl:Ëhú´Vº½Í¢¦ ŠÞw0È„„¹XS,Hv4K`:øðÈMÖGü%º¯ù3T‹ð'á€\?XÝÇþ*íSÿ’hçÜ|1Ðü_ãOè?5\h0Âú…Äÿ/­Ì’?3Ë@÷¹à’;°ü»Åž)eœ)Ç"«†©Rm&Ül’½¬¶wß]¾gèYoâ3+ÆF¢Š½µ»ØËðÅ÷„|Yá{ïX|Ö×G·‚[‰a—âeôw»f ¢'Il.G¿ËÔSËüMÃæ8èà)`ê]µªi¤Ÿ[¥oÅ_‡jP¢ëJª·£+Çñ‡ö+»ý ü'û)èž-×üYñ×TÒF½'‡ômw[ºþͱh„Ës}"NbµB¬„yŒ—L/̹þŸæGçgÔÃàGÃRp,u»¶ñâíWÿ’j€ó¿ü*ðn—¨|;ðß…ZÒüY¬ø†ÝbÜ;P=Ç„_êxúP\¾›|Ÿ—¹4Ÿ7†ž#´Fp=(>MdÝÃÏJáüuàVñÇ„èV·Ÿ >#Þ¾ ÚÆ™4ºžc–[M;„–ör¼ÁeÕŒ§•8ei!;u øqâÍen5†^>¼|IÑà÷,¡F±g»bjö;¸Y”«—pû¯jÖ‘B~R9%ºPÉúσo¥ZU«Š©1I$R¿»ƒp>è¯ó÷‹8SñýJ¸eehû×z~î*ý¾Gí¹fcG ’Æ3îôÿ·™òíŸÿ4ý—>þΟ~5þËI£ü^ñ.©øoáIt›++Èuù‹0ÊåÀpòJ…ÁùПԲÜ&‡kLJð/ßPu*T•ýÊky&×]—ú&|Ö"­\|~¿Y{¼Ü±Šë.Šß‹ò;Ÿø%·ìGkû'ü¸ñçµoøXµ?ÄÆÅÿ¼_qÌ·7S9m+[ö… û›Úúž“„©Æt¶i5ém?ó™&¤ã-ÏÒÍ_\Ñô 'Tñ½ªÁ¢è66Íwwyu&ÈàFYØöóì2HÒIóëø¶oYëßüc£Io®j0¦‰àï ]±Šæ+6‘X+ Vq<¬ó"#ÉQF›¢`gOˆ^ñ¿í-ðûà_ìÅñ#ö±ø­n<;ð÷º ƽz©{Êݤc÷io,d¬¢i G33€QXô¸8Á~|Bð¿ÃŸ|nøÝaöoŽ>0Õ¯üYãÜ”×µi£¼¾€KX#ÓlG£Û\/­L@ýÕ±· ™*k@7cµ>€ ( *_΀!hÁl(”¶ÀýÑ@Ói±³a—§JΗH‡ ×Ò€*¾Š§’£¦Ÿ.€¥±±yäPðì\*(çÃPÈÍû¡ÈÛŒPÏ„b`ÃfÑô  9<r#~;ÿÁKc¯ßKàßÚ{ö}Ôm<#ñ×Ášä~&ðÖ«xÁm­õO-mÚ ¶í§ßÛ„³¸cÄr-¤Ç ²°—°žñƒ?nƒ_ðÑß<5Å-;^¾ø†HÒ x†ÒÕífK«i‹È†ØÖFÜ%Xg’4ŒÐKèÎñxøOáßÄKKÿ ül³˜>™ªé¯w0Ü `ò]Gÿý µk{k?Þ Óî<ØÚ)xÉgoï2–6¬Q¹]ŠX¬´=½à<¿F𗈿jÏéZŽ¥ÖþÓ¯ŒªÖÒ.´i ²8‡ç@'iÇ&Lr&:µ¼–ëæ4É_ü]¨ÁOj‡ÿ~ yZ×ìOðŸÄ¢áu9 šËÆþ-±+‰rOúF‘¤–YerJÜÞ4‚Û·ø€þ”>øGð„ü?àíLÚNŸ“·/¾Y˜’Ï4­ürÈìîíüNÌ{Ö€z¬11­[€€ ( € “Ò€!xÃpz®ð©è§¥Fa?Üü¨·ùy_Ò€+½ ?Â9U¬Ç§  李껿 «&™P£9ü¨7QðþŸ©Y^iš•”:†›q ÛÜÛÏx唫#+J’ ž$´ø)ûUþÄß?fŒr~Ú¿±Šm|#ñ(´írß^’GѼK¥Ã/J×öeÕb_–×V\Ël6Çqº%.v¶ l|/øáû:~Þ#Õ¼ac7ìyû~ÚXEm⟆>41Ûjdg[—k9•/låuóÕ¦ô™A"þù˜tø\|Zø-á?ˆÚÏÅKÙüMá?èößÙ xÐ,ï9™âŽ!t oPµódK4›HHñUïÆøƒâ7ìÏñ WÿŠ«à¸ñÇŸztÝ7W>³¾þÒŸÌDŽ8?šÆE’)ŽÔÙ"åÁ8£™ÂêþøA§xoà¯Ä-ö]ð¥…üC¤oS¿Õô9®J‡Ì€* |¦òæg2J«yeX‚ÙÙœñí7â+›=Âÿ þGừ«±a7.M¡›äÄ6ÇËIQ–vx gÅ´Š23"Ï0ž8ø࿇ÿ|Uñ?ö®øõoðÓàØÚêú¤ž*–ÎÙô{¢’µäç@ŽIffòÒ6,û!EÊ€øÆ¾5ÿÁLf¶øû*øKÄ?a^7¸Õ¼N"m/Ä¿­±!³¾f•¤Jr&Ôîθ–•Ø©›ß@?w?eÙÀŸ³'€4_ø3EÓ´Ö¶ÓàÒÂév_gµµµ‡w“gk$Åkg*¥™ÝÞIeg–Gs bYÀV€6`sßšuP@P@ * Í.ÕëŠM‹éúÐv|ßìÐ&!éŸLÐ&ÝIÎh0¸có Zpú „Ú¸ÛÒ€#û60 ÌïÚÏþ kû9þÓú–™ªø+L¬nÿJ´¸†U‹N¹'qžÂ{wŽëL˜·%í%Dfù¤ŠSSdÂIð{þ éû"A.‘ð›öOÚGál*a‡Ã?¼?/ˆ•bÇ1Ç®éHš\q›«ÀêÍÍN±šÔà ã°>øÛÿ›ðï‹ä„yþ|rЀLxxá¿û Ô$yc€Ê#AÑEÀ.¿ÿÕ|M ø?ÃVßðG?jZ‡`[} ÛÄ¿|ekbŠªΡ!ÙˆÐÚÁ¶.T*¹ ðßÇ/ø*ŸÅKmgBýgÿƒß±·†õmBãQ¾ÔlPñæ¨÷´²Ê~Ï®—æ3»ÍrTtè0&ò{èß ÿà:ßÄoøãWí·ñcÄ?´¯Å->Qs§j®­µ#¥¾zéúLIý‘§z?—y(êO4Zÿµø[á‡eÆ™á-#ìKq7Úon¦™æ¹½›ón&rdšLq¹Ø8 ™gk´©#æô ’(öŒùÐÔP@P@P@P€zŒÐJ‚sÍ4ÇÇ¿½!Cõ Ï~[‘ýêoŠy ðES¼Ò¬u8ZßP³‹Q·ÿžw‡_ɳ@:„<3§J·o‡tû+ŒîŒhÃñ (y­‰HÄàîŽh3jÏô mòIâ€-G®ÑŽôr€ ( € (ÿÙpcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/icons/icons.cpp000066400000000000000000022627351231776762100247260ustar00rootroot00000000000000/* Generated by reswrap version 4.0.0 */ /* created by reswrap from file cy_ecom_s.jpg */ const unsigned char fxcj_icon_cy_ecom_s[]={ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x60, 0x00,0x60,0x00,0x00,0xff,0xe1,0x00,0x16,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d, 0x00,0x2a,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe2,0x1c,0x6d, 0x49,0x43,0x43,0x5f,0x50,0x52,0x4f,0x46,0x49,0x4c,0x45,0x00,0x01,0x01,0x00,0x00, 0x1c,0x5d,0x4c,0x69,0x6e,0x6f,0x02,0x10,0x00,0x00,0x6d,0x6e,0x74,0x72,0x52,0x47, 0x42,0x20,0x58,0x59,0x5a,0x20,0x07,0xce,0x00,0x02,0x00,0x09,0x00,0x06,0x00,0x31, 0x00,0x00,0x61,0x63,0x73,0x70,0x4d,0x53,0x46,0x54,0x00,0x00,0x00,0x00,0x49,0x45, 0x43,0x20,0x73,0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf6,0xd6,0x00,0x01,0x00,0x00,0x00,0x00,0xd3,0x2d,0x48,0x50, 0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x11,0x63,0x70,0x72,0x74,0x00,0x00,0x01,0x50,0x00,0x00,0x00,0x33,0x64,0x65, 0x73,0x63,0x00,0x00,0x01,0x83,0x00,0x00,0x00,0x6c,0x77,0x74,0x70,0x74,0x00,0x00, 0x01,0xef,0x00,0x00,0x00,0x14,0x62,0x6b,0x70,0x74,0x00,0x00,0x02,0x03,0x00,0x00, 0x00,0x14,0x72,0x58,0x59,0x5a,0x00,0x00,0x02,0x17,0x00,0x00,0x00,0x14,0x67,0x58, 0x59,0x5a,0x00,0x00,0x02,0x2b,0x00,0x00,0x00,0x14,0x62,0x58,0x59,0x5a,0x00,0x00, 0x02,0x3f,0x00,0x00,0x00,0x14,0x64,0x6d,0x6e,0x64,0x00,0x00,0x02,0x53,0x00,0x00, 0x00,0x70,0x64,0x6d,0x64,0x64,0x00,0x00,0x02,0xc3,0x00,0x00,0x00,0x88,0x76,0x75, 0x65,0x64,0x00,0x00,0x03,0x4b,0x00,0x00,0x00,0x86,0x76,0x69,0x65,0x77,0x00,0x00, 0x03,0xd1,0x00,0x00,0x00,0x24,0x6c,0x75,0x6d,0x69,0x00,0x00,0x03,0xf5,0x00,0x00, 0x00,0x14,0x6d,0x65,0x61,0x73,0x00,0x00,0x04,0x09,0x00,0x00,0x00,0x24,0x74,0x65, 0x63,0x68,0x00,0x00,0x04,0x2d,0x00,0x00,0x00,0x0c,0x72,0x54,0x52,0x43,0x00,0x00, 0x04,0x39,0x00,0x00,0x08,0x0c,0x67,0x54,0x52,0x43,0x00,0x00,0x0c,0x45,0x00,0x00, 0x08,0x0c,0x62,0x54,0x52,0x43,0x00,0x00,0x14,0x51,0x00,0x00,0x08,0x0c,0x74,0x65, 0x78,0x74,0x00,0x00,0x00,0x00,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20, 0x28,0x63,0x29,0x20,0x31,0x39,0x39,0x38,0x20,0x48,0x65,0x77,0x6c,0x65,0x74,0x74, 0x2d,0x50,0x61,0x63,0x6b,0x61,0x72,0x64,0x20,0x43,0x6f,0x6d,0x70,0x61,0x6e,0x79, 0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x73,0x52,0x47, 0x42,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x73,0x52,0x47,0x42,0x20,0x49, 0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xf3,0x51,0x00,0x01,0x00,0x00,0x00,0x01,0x16, 0xcc,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x6f, 0xa2,0x00,0x00,0x38,0xf5,0x00,0x00,0x03,0x90,0x58,0x59,0x5a,0x20,0x00,0x00,0x00, 0x00,0x00,0x00,0x62,0x99,0x00,0x00,0xb7,0x85,0x00,0x00,0x18,0xda,0x58,0x59,0x5a, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0xa0,0x00,0x00,0x0f,0x84,0x00,0x00,0xb6, 0xcf,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x49,0x45,0x43, 0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x69,0x65,0x63,0x2e, 0x63,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x49,0x45, 0x43,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x69,0x65,0x63, 0x2e,0x63,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0x49,0x45,0x43, 0x20,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x20,0x44,0x65,0x66,0x61,0x75, 0x6c,0x74,0x20,0x52,0x47,0x42,0x20,0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73,0x70, 0x61,0x63,0x65,0x20,0x2d,0x20,0x73,0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x2e,0x49,0x45,0x43,0x20,0x36,0x31,0x39,0x36,0x36,0x2d, 0x32,0x2e,0x31,0x20,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x52,0x47,0x42,0x20, 0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x2d,0x20,0x73, 0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2c,0x52,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x56, 0x69,0x65,0x77,0x69,0x6e,0x67,0x20,0x43,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e, 0x20,0x69,0x6e,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2c,0x52,0x65,0x66,0x65, 0x72,0x65,0x6e,0x63,0x65,0x20,0x56,0x69,0x65,0x77,0x69,0x6e,0x67,0x20,0x43,0x6f, 0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x49,0x45,0x43,0x36,0x31, 0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76, 0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x13,0xa4,0xfe,0x00,0x14,0x5f,0x2e,0x00, 0x10,0xcf,0x14,0x00,0x03,0xed,0xcc,0x00,0x04,0x13,0x0b,0x00,0x03,0x5c,0x9e,0x00, 0x00,0x00,0x01,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x4c,0x09,0x56,0x00, 0x50,0x00,0x00,0x00,0x57,0x1f,0xe7,0x6d,0x65,0x61,0x73,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x8f,0x00,0x00,0x00,0x02,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x69,0x67,0x20,0x00, 0x00,0x00,0x00,0x43,0x52,0x54,0x20,0x63,0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00, 0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00, 0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00, 0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00, 0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00, 0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00, 0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00, 0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01, 0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01, 0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01, 0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01, 0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01, 0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02, 0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02, 0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02, 0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03, 0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03, 0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03, 0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04, 0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04, 0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05, 0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05, 0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06, 0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06, 0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07, 0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07, 0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08, 0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09, 0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09, 0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a, 0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b, 0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c, 0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c, 0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d, 0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e, 0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f, 0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10, 0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11, 0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12, 0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13, 0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14, 0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15, 0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16, 0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17, 0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18, 0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19, 0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a, 0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c, 0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d, 0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e, 0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20, 0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21, 0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22, 0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24, 0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25, 0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27, 0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28, 0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a, 0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c, 0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d, 0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f, 0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31, 0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32, 0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34, 0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36, 0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38, 0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a, 0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c, 0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e, 0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40, 0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42, 0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44, 0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46, 0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48, 0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a, 0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d, 0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f, 0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51, 0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53, 0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56, 0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58, 0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b, 0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d, 0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60, 0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62, 0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65, 0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68, 0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a, 0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d, 0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70, 0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73, 0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76, 0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79, 0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c, 0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f, 0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82, 0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85, 0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88, 0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b, 0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e, 0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92, 0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95, 0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98, 0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c, 0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f, 0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3, 0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6, 0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa, 0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad, 0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1, 0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5, 0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8, 0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc, 0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0, 0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4, 0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8, 0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc, 0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0, 0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4, 0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8, 0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc, 0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0, 0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4, 0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9, 0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed, 0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1, 0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6, 0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa, 0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff, 0x6d,0xff,0xff,0x63,0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00, 0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00, 0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00, 0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00, 0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00, 0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00, 0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00, 0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01, 0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01, 0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01, 0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01, 0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02, 0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02, 0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02, 0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02, 0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03, 0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03, 0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04, 0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04, 0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04, 0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05, 0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05, 0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06, 0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06, 0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07, 0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08, 0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08, 0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09, 0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a, 0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a, 0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b, 0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c, 0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d, 0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d, 0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e, 0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f, 0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10, 0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11, 0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12, 0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13, 0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14, 0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15, 0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16, 0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17, 0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18, 0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a, 0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b, 0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c, 0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d, 0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f, 0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20, 0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21, 0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23, 0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24, 0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26, 0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27, 0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29, 0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a, 0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c, 0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e, 0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f, 0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31, 0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33, 0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35, 0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36, 0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38, 0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a, 0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c, 0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e, 0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40, 0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42, 0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44, 0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46, 0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49, 0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b, 0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d, 0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f, 0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52, 0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54, 0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56, 0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59, 0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b, 0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e, 0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60, 0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63, 0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66, 0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68, 0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b, 0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e, 0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71, 0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74, 0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76, 0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79, 0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c, 0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f, 0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82, 0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86, 0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89, 0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c, 0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f, 0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92, 0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96, 0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99, 0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c, 0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0, 0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3, 0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7, 0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab, 0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae, 0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2, 0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6, 0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9, 0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd, 0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1, 0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5, 0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9, 0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd, 0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1, 0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5, 0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9, 0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd, 0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1, 0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6, 0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea, 0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee, 0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3, 0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7, 0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc, 0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0x63, 0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00, 0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00, 0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00, 0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00, 0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00, 0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00, 0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00, 0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01, 0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01, 0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01, 0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01, 0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02, 0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02, 0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02, 0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03, 0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03, 0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03, 0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04, 0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04, 0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05, 0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05, 0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06, 0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06, 0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07, 0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07, 0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08, 0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08, 0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09, 0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a, 0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a, 0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b, 0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c, 0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d, 0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e, 0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e, 0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f, 0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10, 0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11, 0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12, 0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13, 0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14, 0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15, 0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16, 0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17, 0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19, 0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a, 0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b, 0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c, 0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e, 0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f, 0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20, 0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22, 0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23, 0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25, 0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26, 0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28, 0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29, 0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b, 0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c, 0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e, 0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30, 0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31, 0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33, 0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35, 0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37, 0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39, 0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b, 0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d, 0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f, 0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41, 0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43, 0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45, 0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47, 0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49, 0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b, 0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e, 0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50, 0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52, 0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55, 0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57, 0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a, 0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c, 0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f, 0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61, 0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64, 0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66, 0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69, 0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c, 0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f, 0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71, 0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74, 0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77, 0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a, 0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d, 0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80, 0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83, 0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86, 0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89, 0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d, 0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90, 0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93, 0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97, 0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a, 0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d, 0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1, 0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4, 0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8, 0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab, 0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf, 0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3, 0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6, 0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba, 0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe, 0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2, 0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6, 0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca, 0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce, 0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2, 0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6, 0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda, 0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde, 0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2, 0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7, 0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb, 0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef, 0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4, 0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8, 0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd, 0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0xff,0xdb,0x00,0x43,0x00, 0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x04,0x05,0x08, 0x05,0x05,0x04,0x04,0x05,0x0a,0x07,0x08,0x06,0x08,0x0c,0x0b,0x0d,0x0d,0x0c,0x0b, 0x0c,0x0c,0x0e,0x0f,0x14,0x11,0x0e,0x0f,0x13,0x0f,0x0c,0x0c,0x11,0x18,0x11,0x13, 0x15,0x15,0x16,0x17,0x16,0x0d,0x11,0x19,0x1a,0x18,0x16,0x1a,0x14,0x16,0x16,0x15, 0xff,0xdb,0x00,0x43,0x01,0x03,0x03,0x03,0x05,0x04,0x05,0x0a,0x05,0x05,0x0a,0x15, 0x0e,0x0c,0x0e,0x0e,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0xff,0xc0,0x00,0x11,0x08,0x00,0x28,0x00,0x28,0x03,0x01, 0x11,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x00,0x19,0x00,0x00,0x02,0x03, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x04, 0x05,0x07,0x06,0xff,0xc4,0x00,0x33,0x10,0x00,0x01,0x03,0x02,0x04,0x05,0x02,0x04, 0x04,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x00,0x11, 0x12,0x21,0x07,0x08,0x22,0x31,0x41,0x51,0x61,0x09,0x13,0x14,0x32,0x16,0x24,0xa1, 0xc1,0x62,0x71,0x72,0x82,0x91,0x92,0xb1,0xff,0xc4,0x00,0x19,0x01,0x00,0x03,0x01, 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x04, 0x01,0x00,0x05,0xff,0xc4,0x00,0x23,0x11,0x00,0x02,0x02,0x01,0x03,0x04,0x03,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x11,0x04,0x12,0x21, 0x05,0x13,0x31,0x51,0x14,0x22,0x41,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02, 0x11,0x03,0x11,0x00,0x3f,0x00,0x69,0xb8,0xe3,0x80,0x57,0x9a,0x5e,0x6b,0xaf,0x4a, 0x37,0x15,0xe4,0x5b,0x3c,0x25,0xae,0x31,0x48,0x89,0x47,0x49,0x6a,0x5a,0x93,0x19, 0x0e,0xb8,0xfc,0x8d,0x39,0x91,0xd6,0x85,0x24,0x25,0x39,0xef,0xfd,0x3e,0xe7,0x14, 0x57,0x52,0x7c,0xc8,0x9e,0xcb,0x5a,0x78,0x46,0x7b,0x44,0xe7,0xc3,0x8c,0xd4,0x36, 0xd2,0xd5,0x50,0x5a,0xd7,0x03,0xc8,0xd9,0xdf,0xa8,0x83,0xa5,0x6a,0x3e,0x72,0x0c, 0xb8,0x9c,0xbf,0xc1,0xc3,0x7e,0x34,0x5f,0x86,0x07,0xc8,0x7e,0x8d,0x16,0xdb,0xf8, 0x8d,0x57,0xd6,0xa5,0xb1,0x5b,0xe1,0x9c,0xaa,0xcc,0xd5,0xf5,0xb3,0x16,0x82,0xe3, 0x9f,0x39,0x69,0x1f,0x76,0x96,0xd4,0x95,0x15,0x10,0x33,0x57,0x71,0xb0,0x3e,0x98, 0x09,0xe9,0xb6,0xac,0xe4,0x28,0xdf,0x97,0x8c,0x04,0x0f,0x2f,0xbc,0xd0,0xd1,0x79, 0x84,0x91,0x57,0x89,0x48,0xb6,0xee,0xeb,0x6e,0x7d,0x29,0x08,0x54,0x96,0x2b,0xb0, 0xd2,0xcf,0xdc,0x48,0x01,0x24,0x28,0x93,0xd8,0xf7,0x03,0x13,0xca,0x38,0x1e,0xa5, 0x93,0x66,0xc0,0x84,0x28,0x8b,0x7e,0xe3,0x8b,0x0b,0x88,0x17,0x75,0x57,0x88,0x50, 0xa3,0xd5,0xe7,0xd4,0x94,0x10,0xe6,0x48,0x43,0xa8,0x6d,0xc4,0xb8,0xe1,0x70,0xa7, 0x59,0x19,0x85,0x15,0x27,0xdf,0xa7,0x17,0xc1,0x70,0x79,0xf3,0x7f,0x84,0x9a,0xd7, 0xe0,0x4a,0x86,0xb2,0x20,0xa6,0x0a,0xff,0x00,0x81,0x2e,0x32,0x07,0xfa,0xf4,0xe0, 0xdf,0x00,0x25,0x22,0x86,0xde,0xa6,0x32,0xdd,0xf9,0x6d,0x47,0xb4,0xaa,0x52,0xc3, 0x92,0xea,0x0c,0xb6,0x4b,0x6f,0x8e,0x81,0xad,0x3b,0xe6,0x32,0x3d,0xbd,0x71,0xd2, 0x7c,0x06,0x87,0x07,0x01,0xc6,0x17,0x1d,0x02,0x33,0xc8,0x7b,0x4a,0x42,0x4a,0xc1, 0xcc,0x9c,0xbc,0x9c,0x79,0xa7,0xa0,0x42,0xbb,0xeb,0x42,0xdb,0xb4,0xeb,0x55,0x65, 0x90,0x94,0xc0,0x84,0xfc,0xa2,0x4f,0x8d,0x08,0x2a,0xfd,0xb1,0xa9,0x64,0xc6,0xf0, 0x84,0xb3,0x51,0x71,0x4a,0x61,0xc5,0x05,0x0d,0x6e,0xb8,0x94,0xea,0x2b,0xea,0x04, 0x9d,0xc8,0x1e,0x7d,0xfd,0x31,0x76,0x79,0x44,0x29,0x10,0x65,0xb8,0xb4,0x19,0x6a, 0x08,0x75,0x01,0xb5,0x21,0xb4,0xf5,0x05,0x25,0x0a,0x39,0x6e,0xa5,0x6d,0x90,0x3b, 0xfe,0x83,0x1c,0xa4,0x16,0xde,0x70,0x77,0xb6,0x05,0x02,0x6d,0xbb,0xc4,0x68,0x09, 0x90,0xb8,0xce,0x3e,0xcc,0x57,0x65,0xa1,0x51,0x9d,0x0e,0x00,0xad,0x0a,0x4a,0x37, 0x1d,0x8e,0xa2,0x9c,0x4d,0x5e,0xae,0x17,0xd6,0xe5,0x03,0xd4,0xea,0x7d,0x1e,0xfe, 0x9b,0x74,0x6a,0xbf,0x19,0x6b,0x3c,0x7a,0x19,0xff,0x00,0x00,0xa9,0x73,0xe3,0xd9, 0xcc,0xcc,0xad,0x38,0xb5,0xc8,0x7d,0x23,0x2d,0x5e,0x98,0x48,0x82,0x2f,0x35,0xb5, 0x87,0x28,0x5c,0xbc,0x5f,0x12,0x98,0xd5,0xad,0x50,0x84,0x7d,0xbd,0x1d,0x71,0x2d, 0x9f,0xd1,0x67,0x07,0x5a,0xcc,0x90,0x16,0x3f,0xab,0x14,0x6c,0xf9,0x28,0x71,0xd8, 0xad,0xa1,0x6d,0x24,0xa9,0xdd,0x4a,0xd5,0xd3,0xa3,0x21,0xe5,0x44,0x64,0x06,0xfd, 0xb3,0xf1,0xed,0x8a,0xdf,0x92,0x45,0xe0,0xae,0x62,0xa4,0x88,0x8f,0x44,0x98,0xe4, 0x58,0x8b,0x6c,0x4d,0xf9,0xa9,0x69,0xd5,0x15,0x32,0x42,0x49,0x51,0x41,0x41,0x24, 0x94,0x9d,0xb7,0x27,0xb6,0x7e,0xb8,0x09,0x47,0x74,0x76,0xe7,0xf0,0x24,0xf0,0xf3, 0xfd,0x09,0xae,0x5d,0x23,0xb1,0xc6,0x5e,0x34,0xd5,0x26,0xd3,0x28,0x94,0x5a,0x3c, 0x66,0x99,0x6a,0x32,0xa3,0xd1,0xdb,0xd2,0xc2,0xba,0xf3,0x2b,0x03,0x21,0xdf,0x47, 0x7c,0x87,0xee,0x63,0xa3,0x4f,0x2d,0x3d,0x2a,0xb9,0x4d,0xcb,0x9f,0x2c,0x7c,0xac, 0x56,0xd9,0xb9,0x2c,0x0c,0xe6,0x9b,0x05,0xba,0x64,0x06,0x22,0xc7,0x01,0x2d,0xb4, 0x80,0x90,0x07,0xb6,0x34,0x69,0x53,0x7e,0x59,0x90,0x38,0x87,0x66,0xd6,0x2d,0xba, 0xe8,0x57,0xd0,0xd4,0xa3,0xaa,0x3b,0x8a,0x47,0xdc,0x8c,0xfb,0x28,0x7b,0x83,0x91, 0x1e,0xe3,0x1a,0x9e,0x1e,0x4c,0x6b,0x2b,0x00,0x7e,0x8f,0x86,0x74,0x10,0x95,0x7d, 0x45,0xe6,0xf4,0x97,0x7c,0x2c,0xc2,0x08,0x07,0xfb,0x75,0x9f,0xfb,0x86,0xf7,0x98, 0x9e,0xc2,0x33,0x2e,0x20,0xfc,0x3f,0x6f,0x9b,0x11,0x46,0xb1,0x62,0x3d,0x0a,0xe6, 0x31,0x73,0x71,0x0d,0x34,0xd0,0x0e,0xed,0xe3,0xe5,0xab,0x30,0xaf,0xe4,0x09,0x3e, 0xd8,0x38,0xdf,0xec,0x46,0xa3,0x46,0xad,0x83,0x83,0xf0,0xc2,0x23,0x92,0x5e,0x5d, 0x2b,0x5c,0x29,0xa0,0xcf,0xb8,0xb8,0x8c,0xcb,0x51,0x6e,0x4a,0xcb,0x81,0xd5,0x42, 0x40,0x4f,0xe5,0x91,0x97,0x4a,0x55,0xa7,0x60,0xad,0xc9,0x20,0x76,0xcf,0x2f,0x5c, 0x2e,0xdb,0x37,0x3e,0x06,0xe9,0x74,0xea,0x98,0x28,0xa0,0xa3,0xc2,0x8a,0x4f,0xff, 0xd9 }; /* created by reswrap from file cy_ecom_n.jpg */ const unsigned char fxcj_icon_cy_ecom_n[]={ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x60, 0x00,0x60,0x00,0x00,0xff,0xe1,0x00,0x16,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d, 0x00,0x2a,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe2,0x1c,0x6d, 0x49,0x43,0x43,0x5f,0x50,0x52,0x4f,0x46,0x49,0x4c,0x45,0x00,0x01,0x01,0x00,0x00, 0x1c,0x5d,0x4c,0x69,0x6e,0x6f,0x02,0x10,0x00,0x00,0x6d,0x6e,0x74,0x72,0x52,0x47, 0x42,0x20,0x58,0x59,0x5a,0x20,0x07,0xce,0x00,0x02,0x00,0x09,0x00,0x06,0x00,0x31, 0x00,0x00,0x61,0x63,0x73,0x70,0x4d,0x53,0x46,0x54,0x00,0x00,0x00,0x00,0x49,0x45, 0x43,0x20,0x73,0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf6,0xd6,0x00,0x01,0x00,0x00,0x00,0x00,0xd3,0x2d,0x48,0x50, 0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x11,0x63,0x70,0x72,0x74,0x00,0x00,0x01,0x50,0x00,0x00,0x00,0x33,0x64,0x65, 0x73,0x63,0x00,0x00,0x01,0x83,0x00,0x00,0x00,0x6c,0x77,0x74,0x70,0x74,0x00,0x00, 0x01,0xef,0x00,0x00,0x00,0x14,0x62,0x6b,0x70,0x74,0x00,0x00,0x02,0x03,0x00,0x00, 0x00,0x14,0x72,0x58,0x59,0x5a,0x00,0x00,0x02,0x17,0x00,0x00,0x00,0x14,0x67,0x58, 0x59,0x5a,0x00,0x00,0x02,0x2b,0x00,0x00,0x00,0x14,0x62,0x58,0x59,0x5a,0x00,0x00, 0x02,0x3f,0x00,0x00,0x00,0x14,0x64,0x6d,0x6e,0x64,0x00,0x00,0x02,0x53,0x00,0x00, 0x00,0x70,0x64,0x6d,0x64,0x64,0x00,0x00,0x02,0xc3,0x00,0x00,0x00,0x88,0x76,0x75, 0x65,0x64,0x00,0x00,0x03,0x4b,0x00,0x00,0x00,0x86,0x76,0x69,0x65,0x77,0x00,0x00, 0x03,0xd1,0x00,0x00,0x00,0x24,0x6c,0x75,0x6d,0x69,0x00,0x00,0x03,0xf5,0x00,0x00, 0x00,0x14,0x6d,0x65,0x61,0x73,0x00,0x00,0x04,0x09,0x00,0x00,0x00,0x24,0x74,0x65, 0x63,0x68,0x00,0x00,0x04,0x2d,0x00,0x00,0x00,0x0c,0x72,0x54,0x52,0x43,0x00,0x00, 0x04,0x39,0x00,0x00,0x08,0x0c,0x67,0x54,0x52,0x43,0x00,0x00,0x0c,0x45,0x00,0x00, 0x08,0x0c,0x62,0x54,0x52,0x43,0x00,0x00,0x14,0x51,0x00,0x00,0x08,0x0c,0x74,0x65, 0x78,0x74,0x00,0x00,0x00,0x00,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20, 0x28,0x63,0x29,0x20,0x31,0x39,0x39,0x38,0x20,0x48,0x65,0x77,0x6c,0x65,0x74,0x74, 0x2d,0x50,0x61,0x63,0x6b,0x61,0x72,0x64,0x20,0x43,0x6f,0x6d,0x70,0x61,0x6e,0x79, 0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x73,0x52,0x47, 0x42,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x73,0x52,0x47,0x42,0x20,0x49, 0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xf3,0x51,0x00,0x01,0x00,0x00,0x00,0x01,0x16, 0xcc,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x6f, 0xa2,0x00,0x00,0x38,0xf5,0x00,0x00,0x03,0x90,0x58,0x59,0x5a,0x20,0x00,0x00,0x00, 0x00,0x00,0x00,0x62,0x99,0x00,0x00,0xb7,0x85,0x00,0x00,0x18,0xda,0x58,0x59,0x5a, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0xa0,0x00,0x00,0x0f,0x84,0x00,0x00,0xb6, 0xcf,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x49,0x45,0x43, 0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x69,0x65,0x63,0x2e, 0x63,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x49,0x45, 0x43,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x69,0x65,0x63, 0x2e,0x63,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0x49,0x45,0x43, 0x20,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x20,0x44,0x65,0x66,0x61,0x75, 0x6c,0x74,0x20,0x52,0x47,0x42,0x20,0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73,0x70, 0x61,0x63,0x65,0x20,0x2d,0x20,0x73,0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x2e,0x49,0x45,0x43,0x20,0x36,0x31,0x39,0x36,0x36,0x2d, 0x32,0x2e,0x31,0x20,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x52,0x47,0x42,0x20, 0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x2d,0x20,0x73, 0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2c,0x52,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x56, 0x69,0x65,0x77,0x69,0x6e,0x67,0x20,0x43,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e, 0x20,0x69,0x6e,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2c,0x52,0x65,0x66,0x65, 0x72,0x65,0x6e,0x63,0x65,0x20,0x56,0x69,0x65,0x77,0x69,0x6e,0x67,0x20,0x43,0x6f, 0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x49,0x45,0x43,0x36,0x31, 0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76, 0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x13,0xa4,0xfe,0x00,0x14,0x5f,0x2e,0x00, 0x10,0xcf,0x14,0x00,0x03,0xed,0xcc,0x00,0x04,0x13,0x0b,0x00,0x03,0x5c,0x9e,0x00, 0x00,0x00,0x01,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x4c,0x09,0x56,0x00, 0x50,0x00,0x00,0x00,0x57,0x1f,0xe7,0x6d,0x65,0x61,0x73,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x8f,0x00,0x00,0x00,0x02,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x69,0x67,0x20,0x00, 0x00,0x00,0x00,0x43,0x52,0x54,0x20,0x63,0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00, 0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00, 0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00, 0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00, 0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00, 0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00, 0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00, 0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01, 0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01, 0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01, 0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01, 0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01, 0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02, 0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02, 0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02, 0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03, 0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03, 0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03, 0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04, 0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04, 0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05, 0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05, 0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06, 0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06, 0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07, 0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07, 0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08, 0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09, 0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09, 0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a, 0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b, 0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c, 0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c, 0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d, 0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e, 0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f, 0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10, 0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11, 0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12, 0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13, 0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14, 0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15, 0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16, 0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17, 0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18, 0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19, 0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a, 0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c, 0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d, 0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e, 0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20, 0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21, 0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22, 0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24, 0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25, 0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27, 0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28, 0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a, 0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c, 0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d, 0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f, 0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31, 0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32, 0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34, 0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36, 0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38, 0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a, 0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c, 0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e, 0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40, 0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42, 0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44, 0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46, 0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48, 0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a, 0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d, 0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f, 0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51, 0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53, 0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56, 0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58, 0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b, 0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d, 0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60, 0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62, 0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65, 0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68, 0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a, 0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d, 0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70, 0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73, 0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76, 0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79, 0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c, 0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f, 0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82, 0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85, 0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88, 0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b, 0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e, 0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92, 0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95, 0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98, 0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c, 0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f, 0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3, 0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6, 0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa, 0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad, 0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1, 0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5, 0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8, 0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc, 0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0, 0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4, 0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8, 0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc, 0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0, 0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4, 0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8, 0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc, 0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0, 0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4, 0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9, 0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed, 0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1, 0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6, 0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa, 0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff, 0x6d,0xff,0xff,0x63,0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00, 0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00, 0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00, 0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00, 0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00, 0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00, 0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00, 0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01, 0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01, 0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01, 0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01, 0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02, 0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02, 0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02, 0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02, 0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03, 0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03, 0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04, 0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04, 0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04, 0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05, 0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05, 0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06, 0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06, 0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07, 0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08, 0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08, 0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09, 0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a, 0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a, 0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b, 0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c, 0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d, 0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d, 0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e, 0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f, 0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10, 0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11, 0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12, 0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13, 0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14, 0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15, 0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16, 0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17, 0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18, 0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a, 0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b, 0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c, 0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d, 0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f, 0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20, 0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21, 0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23, 0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24, 0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26, 0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27, 0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29, 0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a, 0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c, 0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e, 0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f, 0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31, 0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33, 0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35, 0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36, 0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38, 0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a, 0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c, 0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e, 0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40, 0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42, 0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44, 0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46, 0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49, 0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b, 0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d, 0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f, 0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52, 0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54, 0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56, 0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59, 0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b, 0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e, 0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60, 0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63, 0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66, 0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68, 0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b, 0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e, 0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71, 0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74, 0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76, 0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79, 0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c, 0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f, 0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82, 0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86, 0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89, 0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c, 0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f, 0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92, 0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96, 0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99, 0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c, 0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0, 0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3, 0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7, 0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab, 0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae, 0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2, 0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6, 0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9, 0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd, 0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1, 0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5, 0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9, 0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd, 0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1, 0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5, 0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9, 0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd, 0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1, 0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6, 0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea, 0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee, 0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3, 0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7, 0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc, 0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0x63, 0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00, 0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00, 0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00, 0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00, 0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00, 0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00, 0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00, 0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01, 0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01, 0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01, 0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01, 0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02, 0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02, 0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02, 0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03, 0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03, 0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03, 0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04, 0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04, 0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05, 0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05, 0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06, 0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06, 0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07, 0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07, 0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08, 0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08, 0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09, 0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a, 0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a, 0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b, 0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c, 0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d, 0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e, 0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e, 0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f, 0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10, 0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11, 0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12, 0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13, 0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14, 0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15, 0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16, 0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17, 0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19, 0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a, 0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b, 0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c, 0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e, 0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f, 0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20, 0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22, 0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23, 0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25, 0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26, 0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28, 0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29, 0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b, 0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c, 0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e, 0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30, 0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31, 0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33, 0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35, 0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37, 0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39, 0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b, 0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d, 0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f, 0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41, 0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43, 0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45, 0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47, 0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49, 0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b, 0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e, 0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50, 0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52, 0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55, 0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57, 0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a, 0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c, 0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f, 0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61, 0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64, 0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66, 0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69, 0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c, 0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f, 0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71, 0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74, 0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77, 0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a, 0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d, 0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80, 0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83, 0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86, 0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89, 0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d, 0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90, 0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93, 0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97, 0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a, 0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d, 0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1, 0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4, 0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8, 0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab, 0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf, 0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3, 0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6, 0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba, 0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe, 0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2, 0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6, 0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca, 0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce, 0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2, 0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6, 0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda, 0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde, 0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2, 0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7, 0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb, 0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef, 0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4, 0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8, 0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd, 0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0xff,0xdb,0x00,0x43,0x00, 0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x04,0x05,0x08, 0x05,0x05,0x04,0x04,0x05,0x0a,0x07,0x08,0x06,0x08,0x0c,0x0b,0x0d,0x0d,0x0c,0x0b, 0x0c,0x0c,0x0e,0x0f,0x14,0x11,0x0e,0x0f,0x13,0x0f,0x0c,0x0c,0x11,0x18,0x11,0x13, 0x15,0x15,0x16,0x17,0x16,0x0d,0x11,0x19,0x1a,0x18,0x16,0x1a,0x14,0x16,0x16,0x15, 0xff,0xdb,0x00,0x43,0x01,0x03,0x03,0x03,0x05,0x04,0x05,0x0a,0x05,0x05,0x0a,0x15, 0x0e,0x0c,0x0e,0x0e,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0xff,0xc0,0x00,0x11,0x08,0x00,0x64,0x00,0x64,0x03,0x01, 0x11,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x04, 0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06, 0x07,0x08,0x03,0x04,0x09,0x01,0x02,0xff,0xc4,0x00,0x40,0x10,0x00,0x01,0x03,0x03, 0x02,0x04,0x02,0x06,0x07,0x06,0x04,0x07,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, 0x00,0x05,0x11,0x06,0x21,0x07,0x12,0x31,0x41,0x13,0x61,0x08,0x22,0x51,0x71,0x81, 0x91,0x09,0x14,0x15,0x23,0x32,0xa1,0xb1,0x16,0x17,0x24,0x25,0x42,0xc1,0x26,0x34, 0x82,0xb2,0x33,0x52,0x53,0x62,0x92,0xd1,0xf0,0xff,0xc4,0x00,0x1a,0x01,0x01,0x00, 0x03,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, 0x02,0x04,0x03,0x05,0x06,0xff,0xc4,0x00,0x28,0x11,0x00,0x02,0x02,0x01,0x04,0x01, 0x03,0x05,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x03,0x04, 0x12,0x21,0x31,0x05,0x13,0x41,0x51,0x06,0x22,0x32,0x61,0x71,0x14,0x81,0xe1,0xff, 0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xea,0x6d,0x00, 0x50,0x05,0x00,0xc5,0xe2,0xb7,0x18,0x2c,0xbc,0x25,0xb6,0x35,0x26,0xfa,0xe2,0x54, 0xfb,0xdc,0xc5,0xb6,0x39,0xc2,0x7d,0x54,0xfe,0x25,0x13,0xd8,0x0a,0xb4,0x63,0x65, 0x25,0x2d,0xa5,0x7b,0x85,0xf4,0x97,0xf0,0xfe,0x4a,0xe6,0xb8,0xbb,0x0e,0xa7,0x72, 0xdd,0x11,0x7c,0x8b,0x9d,0x11,0xa4,0xba,0x85,0x91,0xba,0xb9,0x41,0x20,0x90,0x06, 0xe7,0xc8,0xe6,0xac,0xb1,0xb7,0xd1,0x0f,0x22,0x5d,0x8f,0x2d,0x35,0xf4,0x82,0xf0, 0x37,0x52,0x25,0x1f,0xe2,0xf3,0x6b,0x5a,0xbf,0xa2,0xe5,0x0d,0xd6,0xb0,0x7c,0xcf, 0x29,0x4f,0xe7,0x51,0xe9,0xc8,0xb6,0xe4,0x4a,0x9a,0x6f,0x8e,0x7c,0x3b,0xd5,0xe1, 0x1f,0xb3,0x3a,0xe3,0x4a,0xdc,0x54,0xbf,0xc2,0x86,0x6e,0x2d,0x15,0x1f,0xf4,0xf3, 0x66,0xab,0xb5,0x93,0xb9,0x0f,0x56,0x9f,0x6d,0xf6,0xc3,0x8c,0x38,0x87,0x1b,0x3d, 0x14,0x82,0x08,0x3f,0x1a,0x82,0x4f,0x5a,0x75,0x0f,0x36,0x97,0x19,0x5a,0x5c,0x6d, 0x43,0x29,0x52,0x4e,0x41,0x1e,0x46,0x80,0xfa,0xa0,0x0a,0x00,0xa0,0x0a,0x00,0xa0, 0x0a,0x00,0x24,0x24,0x12,0xa2,0x00,0x1d,0x49,0xa0,0x39,0x59,0xe9,0x7d,0xc4,0x16, 0xb8,0xdf,0xab,0xee,0xac,0x59,0xef,0xec,0xc3,0x84,0xd3,0x8a,0x8f,0xcc,0xea,0x1d, 0xe5,0x0c,0x20,0x90,0x12,0x0a,0x50,0x76,0x27,0x2a,0x3d,0xb2,0xaa,0xd2,0xb0,0xbd, 0xaa,0x8c,0xaf,0x2a,0xbe,0x48,0x8d,0xbd,0x21,0x32,0xdb,0x06,0xdf,0x0a,0xc2,0x98, 0xf2,0xd8,0x89,0xce,0x47,0x81,0x21,0xb5,0xa9,0x44,0x94,0xee,0x53,0xcd,0x9c,0x9e, 0x5c,0xf4,0xef,0x5a,0xe1,0x14,0xb8,0x33,0xca,0x56,0xed,0x88,0xec,0xe9,0x47,0x34, 0x9a,0x17,0xfc,0x9e,0x54,0x22,0xa2,0x49,0x72,0x43,0x2a,0x0a,0xc1,0xed,0x92,0x3a, 0x55,0x94,0x12,0x1b,0xdb,0x13,0xae,0x16,0x9b,0x6d,0xd9,0x3f,0xc5,0xc4,0x6d,0x2b, 0xff,0x00,0xaa,0xc7,0xdd,0xab,0xdf,0xb6,0xc7,0xe2,0x0d,0x1c,0x13,0x0a,0x6d,0x1b, 0xfa,0x5e,0xe3,0x72,0xd1,0xae,0xa9,0x76,0x2d,0x43,0xa8,0xa3,0xa4,0xa4,0xa7,0xc2, 0x6e,0x72,0xdb,0x41,0x07,0xb1,0x09,0xc6,0x7f,0x4a,0xaa,0xc6,0x91,0x6f,0x55,0xb2, 0x40,0xe1,0xf7,0x1c,0x35,0xaf,0x0a,0x66,0x97,0x34,0xad,0xfe,0xe3,0x01,0xb1,0xba, 0xa2,0xa9,0x45,0x4c,0xaf,0x3f,0xf3,0x36,0xa1,0x8c,0xf6,0xcf,0xca,0x8f,0x1c,0x65, 0xd9,0x0a,0x6e,0x3d,0x31,0xf5,0x73,0xfa,0x4c,0x78,0xa9,0xa0,0x2e,0x51,0xd9,0xbc, 0x45,0xd2,0xfa,0x8a,0x23,0xec,0x89,0x0d,0x29,0xc8,0xcb,0x65,0xd2,0x82,0xa5,0x27, 0x0a,0x28,0x50,0x1c,0xc0,0xa4,0xf4,0x1d,0x30,0x71,0xbe,0x2b,0x2c,0xf0,0x24,0xcd, 0x11,0xcc,0xda,0xe4,0x7c,0xe9,0x8f,0xa5,0xee,0x0b,0x89,0x6c,0x6a,0xee,0x1f,0xbe, 0x8c,0xec,0xa5,0xdb,0xae,0x09,0x56,0x3d,0xc9,0x5a,0x07,0xeb,0x5c,0xde,0x13,0xaa, 0xc9,0x65,0xcd,0xe0,0x4f,0x1d,0xec,0x7c,0x7f,0xd2,0x5f,0x6e,0xe9,0x68,0xb7,0x18, 0x48,0x49,0x01,0xc8,0xf3,0x90,0x94,0xa9,0x04,0xe7,0x1b,0xa4,0x90,0x7a,0x7b,0x6b, 0x93,0x54,0x5d,0x3b,0x24,0x9a,0x82,0x42,0x80,0x28,0x06,0x17,0x1d,0x35,0x83,0x7a, 0x23,0x85,0xb7,0xdb,0x8b,0x8a,0x09,0x5a,0x99,0xfa,0xb3,0x63,0x38,0x25,0x4e,0x1e, 0x53,0x8f,0x30,0x92,0xa3,0xf0,0xab,0x41,0x5b,0xa2,0x93,0x74,0x8e,0x36,0xdc,0xae, 0x92,0x5d,0xd4,0x16,0x98,0x71,0xa3,0xb5,0x3e,0x75,0xda,0xe0,0x88,0x2d,0xa4,0x2c, 0xa1,0x01,0x44,0x15,0x15,0x12,0x01,0xce,0x31,0x93,0xd6,0xb6,0xb9,0x55,0x19,0x23, 0x1b,0x25,0x79,0x3c,0x31,0xd5,0x76,0x7b,0x72,0x62,0x4d,0xd3,0x6c,0x4f,0x40,0x90, 0x1f,0x75,0xf8,0xaf,0xa4,0xad,0xc4,0x81,0x8e,0x4e,0x62,0x52,0x40,0xeb,0xd0,0x77, 0xa9,0x71,0xe6,0xc8,0x53,0x4b,0x81,0xab,0x77,0x76,0xf9,0x67,0xb8,0xc9,0x7a,0x35, 0xba,0xf5,0x63,0x69,0x4b,0x2a,0x4b,0x4d,0x36,0xef,0x2b,0x63,0xd9,0xcc,0x06,0x0e, 0x3d,0xb9,0xa9,0x8b,0x69,0x72,0x43,0x49,0xbe,0x04,0xf4,0xeb,0x57,0xdd,0x57,0x87, 0x2e,0x44,0x39,0xae,0x9e,0xd2,0xda,0x69,0xe5,0x1f,0xfc,0x81,0x35,0x7d,0xe4,0x38, 0x82,0xee,0x90,0x1f,0xff,0x00,0x37,0x65,0xb7,0x93,0xdd,0x6d,0x29,0xc6,0xcf,0xc8, 0x2b,0x97,0xf2,0xab,0x6e,0x2a,0x91,0x89,0xc1,0x62,0x92,0x94,0x85,0xb5,0x76,0x8b, 0x8e,0x85,0x2f,0xa1,0xe4,0x8f,0x72,0x4a,0x53,0xfa,0xd3,0x72,0x1b,0x49,0x73,0x83, 0x36,0x3e,0x0a,0xea,0xb0,0xce,0x9c,0xe2,0xa6,0x9e,0x9f,0x7f,0xb9,0xc9,0x93,0x88, 0x77,0x12,0x55,0x19,0x6c,0xa4,0xa4,0x0f,0x0c,0x04,0x39,0x83,0x92,0x09,0xdc,0xf7, 0xae,0x19,0xa2,0xdf,0x29,0x9d,0x71,0xc9,0x2e,0x1a,0x27,0xbb,0xd7,0xd1,0x59,0xc2, 0x5d,0x4d,0x1d,0xb9,0xba,0x62,0xe3,0xa9,0x2d,0x2d,0xbe,0x80,0xe3,0x65,0x89,0x41, 0xc4,0xe0,0x8c,0x8d,0x96,0x92,0x7f,0x3a,0xc6,0xf2,0x4b,0xdc,0xd4,0xa1,0x1e,0xd1, 0x64,0x7d,0x1f,0x38,0x1b,0x0b,0x80,0x5a,0x25,0x5a,0x7a,0xd7,0x3d,0xeb,0x92,0x54, 0xf1,0x74,0xc8,0x79,0x01,0x0a,0x23,0x00,0x01,0x81,0xec,0x03,0xf3,0xaa,0xb7,0x65, 0xd2,0xa2,0x4f,0xa8,0x24,0x28,0x02,0x80,0xa7,0xff,0x00,0x48,0xae,0xb9,0x7e,0xcb, 0xa7,0xf4,0x46,0x9a,0x88,0x15,0xfc,0xe6,0x5c,0xb7,0xdc,0x57,0x40,0x03,0x2c,0x14, 0x80,0x4f,0x99,0x7c,0x7e,0x55,0xd3,0x0f,0xe4,0x72,0xcd,0xf8,0x94,0x1f,0x87,0xf6, 0xd7,0x27,0x71,0xbb,0x43,0x49,0x79,0x1c,0xb6,0xd8,0x9f,0x5c,0x98,0xb9,0x0b,0x01, 0x2d,0x25,0xcc,0x72,0x20,0x73,0x1d,0xb3,0xb9,0xc5,0x6a,0x6b,0xee,0x46,0x74,0xfe, 0xd6,0x5c,0xa9,0xb7,0x05,0xb8,0xdf,0x33,0x7e,0xb3,0x64,0x6c,0xa1,0xd3,0xe7,0x5d, 0x2c,0xcc,0xd3,0x1b,0xb3,0x65,0x07,0x36,0x57,0xad,0xef,0xde,0xa4,0x8a,0x1a,0xf7, 0xab,0x6d,0xb6,0xe2,0x95,0x22,0xe1,0x0a,0x24,0x84,0x9e,0xa1,0xd6,0x81,0xa1,0x68, 0xb6,0x86,0x2d,0xcf,0x87,0x5a,0x69,0xd2,0x4b,0x56,0xe6,0xe2,0xa8,0xf7,0x8a,0xb5, 0x33,0xfe,0xd2,0x2a,0x14,0x51,0x75,0x26,0x34,0xaf,0x1c,0x3a,0x89,0x09,0x97,0x1f, 0x85,0x71,0xb8,0xb2,0x94,0x0e,0x6f,0x0d,0x6a,0x4b,0x89,0x38,0xed,0x95,0x02,0x7f, 0x3a,0x34,0x5d,0x3b,0x33,0xf0,0x62,0xda,0x6e,0xfc,0x52,0xb0,0xb0,0x80,0x4a,0x11, 0x23,0xc7,0xf7,0x04,0x02,0xaf,0xed,0x51,0x3e,0x88,0x3b,0x15,0x61,0x85,0xf6,0x6d, 0x8e,0xdf,0x13,0x18,0x2c,0x47,0x6d,0xb3,0xef,0x09,0x02,0xbc,0xf6,0xed,0x9b,0xe2, 0xa9,0x1b,0xd5,0x04,0x85,0x00,0x50,0x05,0x01,0x54,0xbe,0x91,0x08,0xd6,0xff,0x00, 0xdd,0x8d,0x86,0x5c,0xa8,0xed,0x3b,0x70,0x6a,0xe2,0x5b,0x61,0xc5,0x01,0x96,0xdb, 0x53,0x6a,0x53,0x9b,0xf5,0x03,0x28,0x6f,0x3f,0x0a,0xeb,0x85,0x7d,0xc7,0x1c,0xdd, 0x1c,0xf8,0x6c,0x78,0x48,0x52,0x5b,0x52,0x94,0x39,0x53,0x95,0x63,0x1b,0x9c,0x9f, 0xec,0x2b,0x65,0x19,0x18,0xb9,0x1a,0x7c,0x68,0x6b,0x52,0xed,0x97,0x49,0xf0,0x96, 0x73,0xca,0x37,0xd8,0xe0,0x63,0x38,0xf3,0xcf,0xc3,0x1b,0x55,0xa9,0x15,0xe4,0x58, 0xfd,0xab,0xbf,0x30,0x8f,0xe0,0xb5,0x0a,0x2e,0x04,0x28,0x27,0x0e,0xe1,0x67,0xf0, 0xf3,0x77,0xcf,0x4e,0x9e,0xfa,0x50,0x3e,0x7f,0x78,0xf7,0x71,0x11,0x72,0x24,0xb1, 0x02,0x4b,0x28,0x29,0x4a,0xd4,0x32,0x85,0x0c,0xe4,0x0f,0x57,0x20,0x9e,0x87,0xa0, 0x35,0xcd,0xe4,0x8a,0x92,0x83,0xed,0x97,0x58,0xdd,0x6e,0x35,0xcf,0x12,0xa3,0xbf, 0xfe,0x62,0x1b,0x88,0xff,0x00,0xb9,0x0b,0x04,0x7c,0xb1,0x57,0x14,0x8d,0x2b,0xd6, 0xaa,0x87,0x70,0xb6,0x3e,0x88,0x8e,0x38,0x1c,0x23,0xf0,0xad,0x38,0x34,0xe4,0x9a, 0x43,0xd7,0xd1,0x06,0xce,0x9b,0x97,0x15,0x91,0x22,0x48,0x1e,0x0c,0x66,0x72,0xa2, 0x47,0x4e,0x65,0xa4,0x7e,0x9c,0xd5,0x4c,0xaf,0x82,0x62,0xad,0xd1,0xd4,0x78,0xba, 0xba,0x0c,0x9c,0x61,0x60,0x67,0xce,0xb0,0x1b,0x85,0x76,0x24,0x37,0x25,0x1c,0xcc, 0xa8,0x28,0x50,0x19,0x28,0x02,0x80,0x28,0x0a,0x3f,0xf4,0x92,0x5f,0x89,0x77,0x46, 0x59,0x9b,0x50,0x1c,0xad,0xc8,0x96,0xbc,0xf6,0x2a,0x52,0x10,0x8f,0xf6,0xae,0xb4, 0x60,0x5d,0xb3,0x3e,0x77,0xd2,0x29,0x46,0x14,0xf4,0x85,0x8c,0xed,0xce,0xa2,0x55, 0xd8,0x84,0xa4,0x6e,0x3f,0x3a,0xd3,0x74,0xac,0xcf,0x56,0xe8,0xd4,0xbf,0xaa,0x45, 0x9a,0x5c,0x56,0x5e,0x2c,0xa8,0xc8,0x6d,0x0e,0xa5,0x28,0x39,0x20,0x29,0x21,0x43, 0x38,0x3e,0xc2,0x36,0xed,0x55,0x84,0xf7,0x16,0x94,0x28,0xf6,0x67,0x8b,0x0e,0x27, 0xd6,0x1e,0x8e,0xf2,0x98,0x0a,0xe4,0x53,0x81,0x3e,0xa8,0x56,0x33,0x8c,0xfb,0x71, 0xbe,0x2a,0xca,0x69,0xba,0x23,0x6b,0xa3,0x59,0x2f,0x97,0xd9,0x2e,0x7a,0xe5,0x39, 0xeb,0x8c,0xd4,0x90,0x63,0x4b,0xe1,0xe4,0x82,0x85,0xa5,0x43,0x1b,0x62,0xa4,0x1e, 0x29,0x5c,0xa3,0x7a,0x02,0x7b,0xf4,0x6d,0x96,0x34,0xe6,0x9e,0xd4,0x57,0xd5,0xfa, 0xaa,0x5b,0xec,0xc6,0x6c,0xf9,0x8c,0x93,0xfa,0xd6,0x7c,0xef,0x8a,0x3a,0x62,0xfc, 0x8b,0x35,0xa1,0xf5,0xcb,0xf7,0x75,0xb6,0x12,0xb5,0x12,0x7c,0xeb,0x21,0xb0,0xb2, 0xba,0x1c,0x3a,0xab,0x70,0x5b,0xc4,0x9c,0x8e,0xf4,0x03,0x96,0x80,0x28,0x02,0x80, 0xe7,0x1f,0xa7,0xcd,0xf0,0x5d,0x38,0xe2,0xcc,0x34,0x29,0x1f,0xcb,0x60,0xc7,0x8e, 0xaf,0x13,0xf0,0xe4,0x85,0x3a,0x7e,0x3f,0x78,0x3e,0x15,0xab,0x02,0xe2,0xcc,0x99, 0x9f,0xdc,0x56,0x58,0x48,0x7a,0x43,0x8d,0xa6,0x2a,0x1d,0x5b,0xc4,0x65,0x2d,0xa5, 0x3e,0xb1,0x2a,0x51,0xc0,0x03,0xe2,0x36,0xae,0xb2,0x69,0x2e,0x4e,0x71,0x56,0xc4, 0x99,0x96,0xf7,0x60,0x6a,0x39,0x50,0xaf,0x0c,0x2d,0x13,0xd8,0x5a,0x9a,0x52,0x14, 0x73,0xe1,0xe1,0x44,0x29,0x38,0xec,0x72,0x37,0xf7,0x54,0x63,0xaa,0xb4,0x5a,0x77, 0xee,0x79,0x7b,0xba,0x4a,0x93,0x1d,0x16,0xb7,0x24,0x06,0x60,0x2d,0xf2,0xfa,0x92, 0x96,0xf7,0x5a,0xf1,0x83,0xeb,0x79,0x81,0xd3,0xdf,0x8c,0x55,0x54,0x13,0x76,0x1c, 0x9d,0x19,0x9a,0xbb,0xb7,0x68,0x69,0x58,0x82,0xd4,0xee,0x78,0xee,0x30,0x84,0x38, 0x01,0x09,0x2a,0x18,0xe7,0x19,0xfe,0xa1,0xd8,0xf9,0x0a,0x99,0xc5,0xb7,0xc1,0x30, 0x95,0x23,0x36,0x8d,0xd0,0xf7,0x7d,0x54,0xb9,0x2b,0x82,0xdb,0x78,0x41,0xe7,0x75, 0xc2,0xa3,0xc8,0x82,0xa3,0x9c,0x6c,0x33,0xf2,0x15,0x9f,0x57,0xaf,0xc5,0xa5,0x4b, 0xd4,0xed,0x9e,0xd7,0x86,0xfa,0x7b,0x55,0xe5,0xe4,0xff,0x00,0xc7,0x4a,0x97,0x6d, 0xba,0x5f,0xc3,0xcd,0x51,0xa7,0xe7,0x69,0x69,0x0d,0xb3,0x76,0x68,0x20,0x3a,0x09, 0x69,0xd4,0x2b,0x99,0x0e,0x63,0xae,0x0f,0xb4,0x6d,0x90,0x70,0x77,0x1e,0xd1,0x57, 0xd2,0x6b,0x71,0x6a,0xa3,0xbb,0x1b,0x39,0x79,0x9f,0x03,0xab,0xf1,0x39,0x16,0x3d, 0x54,0x6a,0xfa,0x7d,0xa7,0xfc,0x26,0x9d,0x03,0x1c,0xc5,0xe1,0x05,0x9d,0xa4,0x8c, 0x2e,0xe1,0x70,0x76,0x49,0xc7,0x70,0x91,0xc9,0x53,0x99,0xf2,0x79,0x98,0x57,0x25, 0x92,0xe0,0x7e,0x96,0x5b,0xce,0x30,0x54,0x92,0x7a,0x1a,0xcc,0x6a,0x45,0xbd,0xb5, 0xc3,0x10,0x60,0xb4,0xd2,0x46,0x30,0x37,0xa0,0x36,0xa8,0x02,0x80,0x28,0x0e,0x4c, 0x7a,0x4f,0x6a,0x1f,0xb7,0xb8,0xe7,0xad,0x67,0x82,0x16,0xdb,0x53,0x1f,0x64,0x29, 0x7b,0xe0,0x37,0xf7,0x43,0x94,0x7f,0xa0,0x7c,0xab,0x66,0x35,0x51,0x31,0x64,0x77, 0x22,0x2f,0x43,0x32,0x5d,0x52,0xd9,0x82,0xd3,0xd2,0x1f,0x56,0x19,0x42,0x1b,0x4f, 0x32,0x96,0x47,0x97,0xc3,0x35,0x69,0xb5,0x5c,0x91,0x1b,0xf6,0x10,0xed,0xf2,0x4c, 0x8b,0xa4,0x89,0x53,0x1c,0x79,0xeb,0x82,0x97,0x97,0x4b,0xc7,0x7c,0x8d,0xff,0x00, 0xb9,0x39,0xef,0x9a,0x45,0x24,0xb8,0x0d,0xf2,0x7d,0x5e,0x6f,0x52,0x75,0x03,0xd6, 0xe8,0xaf,0xfd,0x59,0x88,0xf6,0xd6,0x7c,0x14,0x04,0x7e,0x25,0x8e,0x65,0xa8,0x64, 0x7b,0xd6,0x4e,0x7d,0xd5,0x58,0x46,0x9d,0x96,0x94,0xbd,0x8f,0xbb,0xad,0xde,0xde, 0xde,0x9d,0x97,0x04,0x40,0x7d,0xfb,0xab,0xae,0x37,0xf5,0x77,0xc2,0xd5,0xca,0x84, 0x04,0xa8,0x29,0x3c,0xbd,0x37,0x51,0x49,0xe6,0x3d,0x39,0x76,0xf3,0x35,0x2d,0xc4, 0xa6,0xa8,0x90,0x38,0x29,0x63,0xe2,0x2a,0x60,0x49,0x99,0xc3,0xfb,0x25,0xc6,0xe5, 0x15,0x2a,0xe5,0x71,0xe6,0x5c,0xf0,0x47,0x38,0x1d,0x12,0xb2,0x40,0x27,0x04,0x64, 0x0c,0xf6,0xdb,0xa5,0x78,0x9e,0x6b,0x36,0x92,0x32,0x8f,0xab,0x97,0x64,0xbd,0xbf, 0xe9,0xf5,0x5f,0x4c,0x79,0x9c,0xfe,0x3f,0x7c,0x56,0x25,0x97,0x1c,0xbb,0x4f,0xe5, 0x74,0xd3,0xf9,0x1b,0x9c,0x4d,0xd5,0x1a,0x87,0x50,0x5d,0xc4,0x1d,0x6d,0x19,0xd8, 0x13,0x2d,0xea,0x52,0x0c,0x37,0xdb,0x28,0x71,0xb5,0x10,0x3f,0x16,0x40,0x39,0xc0, 0x1d,0xba,0x56,0xdf,0x19,0xa6,0xc7,0x8e,0x3e,0xac,0x25,0xbb,0x72,0xef,0xd8,0xe5, 0xf5,0x2f,0xd4,0x32,0xf2,0x4e,0x38,0xa3,0x89,0x63,0x8c,0x2e,0x95,0xb7,0xcb,0xee, 0xdb,0x2c,0x2e,0x8c,0xd3,0xca,0x16,0x4d,0x1f,0x6d,0x29,0x3f,0x73,0x01,0x0e,0xa8, 0x7b,0x14,0xe1,0xc9,0xae,0xf9,0x5d,0xb3,0xe7,0xb0,0xae,0x0b,0xa1,0xc1,0x9d,0x2a, 0x98,0x50,0xdb,0x79,0x68,0xc6,0x07,0xb2,0xb9,0x1d,0xc9,0x72,0x80,0x28,0x02,0x80, 0xc5,0x32,0x5b,0x70,0x21,0xbf,0x26,0x41,0x09,0x69,0x96,0xd4,0xe2,0xc9,0xec,0x90, 0x32,0x68,0x0e,0x2e,0x6a,0x3b,0xa2,0xaf,0x77,0xc9,0xf3,0xe4,0x9c,0xae,0x5c,0xa0, 0xa5,0x3c,0xb3,0xbe,0x56,0xa2,0xa2,0x31,0xf1,0x22,0xb7,0xc5,0x52,0xa3,0x04,0x9f, 0x22,0x53,0xd7,0x57,0xa1,0x0f,0x1a,0x2a,0xd4,0x97,0xf2,0xa5,0x21,0x48,0x49,0x24, 0x12,0x30,0x71,0xff,0x00,0xd9,0xf6,0x55,0x66,0x93,0x26,0x0c,0x40,0xb5,0x16,0xd0, 0x99,0x0f,0x17,0x3c,0x67,0x5c,0x05,0x4a,0x58,0x18,0x1f,0x0f,0x2c,0x00,0x2a,0x5c, 0x5e,0xda,0x17,0xcd,0x99,0x2f,0x77,0x64,0xea,0x2d,0x4c,0xe5,0xc1,0x9b,0x74,0x7b, 0x54,0x33,0x80,0x88,0xec,0x6c,0x91,0xb0,0xce,0x07,0xb3,0x6c,0xfb,0xc9,0xa4,0x15, 0x13,0x37,0x66,0x2d,0x47,0x2a,0xd4,0x9b,0x6d,0xbf,0xec,0xa7,0x9f,0x72,0xf4,0xb7, 0x56,0x24,0xb6,0x00,0xe4,0x42,0x42,0x87,0x26,0x08,0xdc,0xfa,0xbc,0xd9,0xcf,0x96, 0x2a,0xb1,0x6d,0xcb,0x92,0xcd,0x2a,0x2c,0x17,0x02,0xfd,0x2b,0xa2,0xf0,0xc3,0x45, 0x31,0xa7,0xb5,0x45,0xa2,0x64,0xa8,0xd1,0x56,0xb7,0x23,0xc8,0x84,0x10,0xa5,0x61, 0x6a,0x2a,0x29,0x5a,0x54,0x47,0x75,0x1d,0xf3,0xd0,0xe3,0x1b,0x6f,0xf3,0x1e,0x63, 0xc0,0x65,0xd4,0xe7,0x79,0xf0,0x49,0x5b,0xed,0x4b,0xf5,0xc7,0xec,0xf4,0x34,0x7a, 0xf8,0xe3,0xc7,0xb2,0x69,0xff,0x00,0xa2,0x3d,0xe2,0xd7,0x11,0xff,0x00,0x7e,0x3c, 0x4f,0x62,0xef,0x1a,0xde,0x2d,0xad,0xba,0x96,0x61,0x32,0xce,0x41,0x5a,0x92,0x14, 0x70,0xa5,0x91,0xb6,0x7d,0x6c,0x79,0x00,0x06,0xf8,0xaf,0x5b,0xc3,0xf8,0xf9,0x68, 0x70,0x7a,0x52,0x76,0xdb,0x6f,0x8e,0xb9,0xf8,0x32,0x6b,0x35,0x0b,0x3c,0xf7,0x24, 0x5c,0xbe,0x1d,0xe9,0x8f,0xaf,0xea,0x00,0x50,0x8f,0xbb,0x6c,0x21,0xb4,0x0f,0x60, 0x00,0x0a,0xd1,0x3f,0xc8,0xb6,0x25,0x51,0x2d,0xf6,0x9b,0xb6,0x26,0xd7,0x6b,0x69, 0xb4,0x80,0x09,0x03,0x35,0x43,0xa0,0xa9,0x40,0x14,0x01,0x40,0x35,0xf8,0xa8,0x1d, 0x3c,0x31,0xd5,0xe2,0x2e,0x7c,0x6f,0xb1,0xe5,0xf2,0x63,0xae,0x7c,0x15,0x62,0x84, 0x4b,0xa3,0x8d,0x12,0x1c,0x26,0x4a,0x96,0x32,0x49,0x52,0xd4,0x5d,0x57,0x55,0x80, 0x9c,0x6c,0x3b,0x6f,0x8f,0x95,0x7a,0x06,0x03,0x54,0x6a,0x29,0x50,0x2d,0xf3,0x63, 0x45,0x8d,0x19,0xdf,0xad,0x32,0x19,0x5a,0x9e,0x1b,0x80,0x15,0xcc,0x30,0x7a,0x8d, 0xc0,0x3f,0x01,0xec,0xae,0x73,0x85,0xbb,0x2f,0x19,0x52,0x34,0x34,0xd4,0x88,0x36, 0x99,0x71,0x95,0x7e,0x69,0xd9,0x91,0x12,0xf2,0x17,0x21,0xb6,0xc9,0x4a,0x9c,0x40, 0xfc,0x40,0x63,0xa6,0x7d,0xe3,0xde,0x2a,0x66,0x9d,0x08,0xb5,0x62,0x64,0x52,0x97, 0xe7,0xbc,0xf2,0x5a,0x53,0x31,0xca,0x94,0x5b,0x42,0xbb,0xed,0xb5,0x13,0x6a,0x21, 0xd3,0x66,0x7d,0x54,0xd4,0x2b,0x45,0xce,0x33,0x56,0xa9,0xad,0xcd,0x0f,0x47,0x6d, 0xe7,0x0b,0x7f,0xd2,0x54,0x90,0x4a,0x4f,0x5d,0xc1,0x38,0xc0,0x3e,0x47,0x04,0x10, 0x26,0x12,0x6d,0xf2,0x4c,0xd2,0x36,0xe2,0xeb,0x18,0x16,0xeb,0x1d,0xda,0x14,0x8b, 0x28,0x99,0x3e,0x5f,0x86,0x63,0x4e,0x0a,0x21,0x51,0xb9,0x54,0x09,0xe5,0x1e,0x63, 0x23,0xa8,0xeb,0xbe,0x6a,0x8e,0x0e,0xc9,0x52,0x42,0xdf,0x06,0x60,0x2e,0xf3,0xc4, 0x8b,0x22,0x5d,0x6c,0x20,0xfd,0x67,0xc7,0x53,0x69,0xe8,0x9e,0x5c,0xab,0x1f,0x95, 0x74,0x7c,0x2e,0x4e,0x6c,0xea,0x67,0x05,0xf4,0xa7,0x29,0x12,0x1c,0x47,0x53,0xcd, 0x9c,0x56,0x16,0x6e,0x8a,0xa5,0x44,0xe4,0x00,0x00,0x01,0xd0,0x54,0x12,0x14,0x01, 0x40,0x14,0x06,0x29,0x71,0x5a,0x9d,0x15,0xe8,0xd2,0x92,0x16,0xcb,0xc8,0x53,0x6b, 0x49,0xee,0x92,0x30,0x47,0xca,0x80,0xe3,0x7f,0x19,0x34,0x0c,0x9e,0x13,0xf1,0x12, 0xf9,0xa6,0xee,0xcd,0x2d,0x2e,0x45,0x71,0x49,0x61,0xc5,0x8f,0xf8,0xad,0x29,0x59, 0x42,0xd3,0xe4,0x53,0x8f,0x8f,0xba,0xb6,0x42,0x76,0x8c,0x52,0x85,0x3a,0x18,0xc9, 0x80,0xec,0x91,0x96,0xc6,0xde,0x62,0xaf,0x65,0x68,0xca,0xde,0x9a,0x79,0x69,0x2a, 0x2b,0xe5,0xf2,0xa8,0xdc,0x4d,0x1a,0x72,0x6c,0xee,0xb3,0x90,0xa1,0xce,0x9a,0x94, 0xc5,0x09,0xad,0xdb,0xa3,0xc4,0x98,0xdb,0xcf,0xb0,0x16,0xc8,0x58,0x53,0x89,0x4e, 0xc5,0x40,0x1d,0xc7,0xca,0xa5,0x7e,0x8e,0x79,0x54,0x9c,0x5a,0x8b,0xe6,0xb8,0x24, 0xbb,0x86,0xab,0xd1,0x0f,0xe9,0xa6,0xd8,0x79,0x9c,0xc8,0xd9,0x2a,0x42,0x54,0x9e, 0x5e,0x5c,0x1c,0xf2,0xa3,0x1c,0xc9,0x5e,0x71,0x82,0x30,0x00,0xd8,0x83,0xb9,0x23, 0xe3,0x71,0xe9,0x75,0x50,0x9a,0xd9,0x19,0x29,0xdf,0x77,0xc3,0xf9,0xb1,0x5f,0xd1, 0x07,0x4b,0x48,0xd4,0xdc,0x4b,0x43,0xa8,0x6d,0x4b,0x44,0x66,0xb0,0xa5,0x01,0xb0, 0x2a,0x3f,0xfa,0x0a,0xaa,0x65,0x95,0x23,0xed,0xa0,0xad,0xd1,0xd6,0x5d,0x17,0x65, 0x4d,0xa2,0xd0,0xda,0x79,0x70,0xa2,0x05,0x62,0x37,0x0e,0x0a,0x00,0xa0,0x0a,0x00, 0xa0,0x0a,0x01,0x87,0xc4,0x6e,0x06,0xe8,0x8e,0x2b,0xcc,0x87,0x37,0x5d,0x69,0xf8, 0x57,0x49,0xd0,0xd2,0x50,0xc4,0x87,0x0a,0x92,0xa4,0xa4,0x9c,0xe0,0xf2,0x91,0xcc, 0x33,0xbe,0x0e,0x40,0xde,0xa5,0x36,0xba,0x21,0xc5,0x3e,0xc6,0xec,0x6f,0x45,0xfd, 0x0b,0x0c,0x72,0xc5,0xd3,0xd6,0x46,0xd2,0x3a,0x01,0x11,0x04,0xfc,0xf1,0x4b,0x63, 0x6a,0x3c,0x99,0xe8,0xbf,0xa1,0x66,0xb6,0x52,0xee,0x9e,0xb2,0x12,0x7f,0xa8,0x44, 0x40,0x3f,0x30,0x29,0x6c,0x6d,0x44,0x79,0xab,0xbd,0x04,0xf4,0x75,0xe1,0xa5,0xaa, 0xce,0xd4,0x9b,0x53,0xc7,0x70,0xa8,0xae,0x92,0x33,0xe6,0x95,0x64,0x7c,0xb1,0x56, 0x53,0x68,0xa3,0xc7,0x16,0x56,0xfe,0x25,0xfa,0x12,0xea,0xbd,0x28,0xd3,0xcf,0xd9, 0x5b,0x45,0xf2,0x2a,0x72,0x7f,0x87,0x4f,0x2b,0xb8,0xf3,0x47,0x7f,0x81,0x27,0xca, 0xba,0x47,0x37,0xc9,0xce,0x58,0x9f,0xb1,0x57,0xdc,0xd0,0x77,0xab,0xc6,0xab,0x63, 0x4f,0x69,0xdb,0x54,0xa9,0xb7,0x99,0x0e,0xf8,0x48,0x86,0xd3,0x64,0xaf,0x9b,0xbe, 0x47,0x60,0x3b,0x93,0xd2,0xbb,0x39,0xa4,0xad,0x9c,0xb6,0x36,0xe8,0xe9,0xff,0x00, 0xa2,0x77,0xa2,0xf2,0x38,0x31,0xa4,0x99,0x37,0xdf,0x0d,0xfb,0xe4,0x9f,0xbd,0x96, 0xe2,0x77,0x01,0x47,0x1e,0xa2,0x4f,0xb0,0x6c,0x33,0xe5,0x59,0x67,0x37,0x26,0x69, 0xc7,0x8f,0x69,0x64,0x92,0x90,0x84,0x80,0x91,0x80,0x36,0x02,0xa8,0x74,0x3d,0xa0, 0x0a,0x00,0xa0,0x0a,0x00,0xa0,0x0a,0x00,0xa0,0x0a,0x00,0xa0,0x3e,0x5c,0x69,0x0e, 0x8c,0x3a,0x94,0xa8,0x79,0x8a,0x01,0x32,0x2e,0x94,0xb2,0xc2,0xba,0xbd,0x73,0x89, 0x6a,0xb7,0xb3,0x72,0x79,0x21,0x0e,0xcc,0x43,0x09,0x0e,0xb8,0x91,0xd0,0x29,0x58, 0xc9,0x1e,0xfa,0x01,0x56,0x80,0x28,0x02,0x80,0x28,0x02,0x80,0xff,0xd9 }; /* created by reswrap from file cy_ecom_b.jpg */ const unsigned char fxcj_icon_cy_ecom_b[]={ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x02,0x01,0x00,0x60, 0x00,0x60,0x00,0x00,0xff,0xe2,0x1c,0x6d,0x49,0x43,0x43,0x5f,0x50,0x52,0x4f,0x46, 0x49,0x4c,0x45,0x00,0x01,0x01,0x00,0x00,0x1c,0x5d,0x4c,0x69,0x6e,0x6f,0x02,0x10, 0x00,0x00,0x6d,0x6e,0x74,0x72,0x52,0x47,0x42,0x20,0x58,0x59,0x5a,0x20,0x07,0xce, 0x00,0x02,0x00,0x09,0x00,0x06,0x00,0x31,0x00,0x00,0x61,0x63,0x73,0x70,0x4d,0x53, 0x46,0x54,0x00,0x00,0x00,0x00,0x49,0x45,0x43,0x20,0x73,0x52,0x47,0x42,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf6,0xd6,0x00,0x01, 0x00,0x00,0x00,0x00,0xd3,0x2d,0x48,0x50,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x63,0x70,0x72,0x74,0x00,0x00, 0x01,0x50,0x00,0x00,0x00,0x33,0x64,0x65,0x73,0x63,0x00,0x00,0x01,0x83,0x00,0x00, 0x00,0x6c,0x77,0x74,0x70,0x74,0x00,0x00,0x01,0xef,0x00,0x00,0x00,0x14,0x62,0x6b, 0x70,0x74,0x00,0x00,0x02,0x03,0x00,0x00,0x00,0x14,0x72,0x58,0x59,0x5a,0x00,0x00, 0x02,0x17,0x00,0x00,0x00,0x14,0x67,0x58,0x59,0x5a,0x00,0x00,0x02,0x2b,0x00,0x00, 0x00,0x14,0x62,0x58,0x59,0x5a,0x00,0x00,0x02,0x3f,0x00,0x00,0x00,0x14,0x64,0x6d, 0x6e,0x64,0x00,0x00,0x02,0x53,0x00,0x00,0x00,0x70,0x64,0x6d,0x64,0x64,0x00,0x00, 0x02,0xc3,0x00,0x00,0x00,0x88,0x76,0x75,0x65,0x64,0x00,0x00,0x03,0x4b,0x00,0x00, 0x00,0x86,0x76,0x69,0x65,0x77,0x00,0x00,0x03,0xd1,0x00,0x00,0x00,0x24,0x6c,0x75, 0x6d,0x69,0x00,0x00,0x03,0xf5,0x00,0x00,0x00,0x14,0x6d,0x65,0x61,0x73,0x00,0x00, 0x04,0x09,0x00,0x00,0x00,0x24,0x74,0x65,0x63,0x68,0x00,0x00,0x04,0x2d,0x00,0x00, 0x00,0x0c,0x72,0x54,0x52,0x43,0x00,0x00,0x04,0x39,0x00,0x00,0x08,0x0c,0x67,0x54, 0x52,0x43,0x00,0x00,0x0c,0x45,0x00,0x00,0x08,0x0c,0x62,0x54,0x52,0x43,0x00,0x00, 0x14,0x51,0x00,0x00,0x08,0x0c,0x74,0x65,0x78,0x74,0x00,0x00,0x00,0x00,0x43,0x6f, 0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x31,0x39,0x39,0x38, 0x20,0x48,0x65,0x77,0x6c,0x65,0x74,0x74,0x2d,0x50,0x61,0x63,0x6b,0x61,0x72,0x64, 0x20,0x43,0x6f,0x6d,0x70,0x61,0x6e,0x79,0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x12,0x73,0x52,0x47,0x42,0x20,0x49,0x45,0x43,0x36,0x31,0x39, 0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x12,0x73,0x52,0x47,0x42,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d, 0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xf3, 0x51,0x00,0x01,0x00,0x00,0x00,0x01,0x16,0xcc,0x58,0x59,0x5a,0x20,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x6f,0xa2,0x00,0x00,0x38,0xf5,0x00,0x00,0x03, 0x90,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x62,0x99,0x00,0x00,0xb7, 0x85,0x00,0x00,0x18,0xda,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x24, 0xa0,0x00,0x00,0x0f,0x84,0x00,0x00,0xb6,0xcf,0x64,0x65,0x73,0x63,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x16,0x49,0x45,0x43,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f, 0x77,0x77,0x77,0x2e,0x69,0x65,0x63,0x2e,0x63,0x68,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x16,0x49,0x45,0x43,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f, 0x2f,0x77,0x77,0x77,0x2e,0x69,0x65,0x63,0x2e,0x63,0x68,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2e,0x49,0x45,0x43,0x20,0x36,0x31,0x39,0x36,0x36,0x2d,0x32, 0x2e,0x31,0x20,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x52,0x47,0x42,0x20,0x63, 0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x2d,0x20,0x73,0x52, 0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0x49,0x45, 0x43,0x20,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x20,0x44,0x65,0x66,0x61, 0x75,0x6c,0x74,0x20,0x52,0x47,0x42,0x20,0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73, 0x70,0x61,0x63,0x65,0x20,0x2d,0x20,0x73,0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2c,0x52,0x65,0x66, 0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x56,0x69,0x65,0x77,0x69,0x6e,0x67,0x20,0x43, 0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x49,0x45,0x43,0x36, 0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x2c,0x52,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x56,0x69, 0x65,0x77,0x69,0x6e,0x67,0x20,0x43,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20, 0x69,0x6e,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00, 0x13,0xa4,0xfe,0x00,0x14,0x5f,0x2e,0x00,0x10,0xcf,0x14,0x00,0x03,0xed,0xcc,0x00, 0x04,0x13,0x0b,0x00,0x03,0x5c,0x9e,0x00,0x00,0x00,0x01,0x58,0x59,0x5a,0x20,0x00, 0x00,0x00,0x00,0x00,0x4c,0x09,0x56,0x00,0x50,0x00,0x00,0x00,0x57,0x1f,0xe7,0x6d, 0x65,0x61,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x02,0x8f,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x73,0x69,0x67,0x20,0x00,0x00,0x00,0x00,0x43,0x52,0x54,0x20,0x63, 0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00, 0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00, 0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00, 0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00, 0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00, 0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00, 0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00, 0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01, 0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01, 0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01, 0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01, 0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02, 0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02, 0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02, 0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03, 0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03, 0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03, 0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04, 0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04, 0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05, 0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05, 0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06, 0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06, 0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07, 0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07, 0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08, 0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08, 0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09, 0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a, 0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a, 0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b, 0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c, 0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d, 0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e, 0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e, 0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f, 0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10, 0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11, 0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12, 0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13, 0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14, 0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15, 0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16, 0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17, 0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19, 0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a, 0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b, 0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c, 0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e, 0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f, 0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20, 0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22, 0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23, 0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25, 0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26, 0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28, 0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29, 0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b, 0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c, 0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e, 0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30, 0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31, 0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33, 0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35, 0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37, 0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39, 0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b, 0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d, 0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f, 0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41, 0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43, 0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45, 0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47, 0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49, 0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b, 0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e, 0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50, 0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52, 0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55, 0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57, 0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a, 0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c, 0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f, 0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61, 0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64, 0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66, 0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69, 0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c, 0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f, 0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71, 0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74, 0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77, 0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a, 0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d, 0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80, 0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83, 0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86, 0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89, 0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d, 0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90, 0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93, 0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97, 0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a, 0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d, 0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1, 0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4, 0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8, 0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab, 0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf, 0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3, 0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6, 0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba, 0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe, 0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2, 0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6, 0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca, 0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce, 0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2, 0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6, 0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda, 0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde, 0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2, 0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7, 0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb, 0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef, 0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4, 0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8, 0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd, 0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0x63,0x75,0x72,0x76,0x00, 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00, 0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00, 0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00, 0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00, 0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00, 0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00, 0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01, 0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01, 0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01, 0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01, 0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01, 0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02, 0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02, 0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02, 0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03, 0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03, 0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03, 0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04, 0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04, 0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05, 0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05, 0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06, 0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06, 0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07, 0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07, 0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08, 0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09, 0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09, 0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a, 0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b, 0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b, 0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c, 0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d, 0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e, 0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f, 0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10, 0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10, 0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11, 0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12, 0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13, 0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14, 0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16, 0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17, 0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18, 0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19, 0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a, 0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b, 0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d, 0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e, 0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f, 0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21, 0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22, 0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23, 0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25, 0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26, 0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28, 0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a, 0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b, 0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d, 0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e, 0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30, 0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32, 0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34, 0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35, 0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37, 0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39, 0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b, 0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d, 0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f, 0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41, 0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43, 0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45, 0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48, 0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a, 0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c, 0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e, 0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51, 0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53, 0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55, 0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58, 0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a, 0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d, 0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f, 0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62, 0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64, 0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67, 0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a, 0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d, 0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f, 0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72, 0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75, 0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78, 0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b, 0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e, 0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81, 0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84, 0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87, 0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a, 0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d, 0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91, 0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94, 0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97, 0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b, 0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e, 0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2, 0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5, 0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9, 0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac, 0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0, 0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4, 0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7, 0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb, 0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf, 0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3, 0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7, 0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb, 0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf, 0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3, 0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7, 0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb, 0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf, 0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3, 0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8, 0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec, 0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0, 0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5, 0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9, 0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe, 0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0x63,0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00, 0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00, 0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00, 0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00, 0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00, 0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00, 0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00, 0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01, 0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01, 0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01, 0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01, 0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01, 0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02, 0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02, 0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02, 0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03, 0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03, 0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03, 0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04, 0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04, 0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05, 0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05, 0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06, 0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06, 0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07, 0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07, 0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08, 0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09, 0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09, 0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a, 0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b, 0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c, 0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c, 0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d, 0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e, 0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f, 0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10, 0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11, 0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12, 0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13, 0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14, 0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15, 0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16, 0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17, 0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18, 0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19, 0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a, 0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c, 0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d, 0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e, 0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20, 0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21, 0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22, 0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24, 0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25, 0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27, 0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28, 0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a, 0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c, 0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d, 0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f, 0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31, 0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32, 0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34, 0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36, 0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38, 0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a, 0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c, 0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e, 0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40, 0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42, 0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44, 0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46, 0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48, 0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a, 0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d, 0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f, 0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51, 0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53, 0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56, 0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58, 0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b, 0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d, 0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60, 0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62, 0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65, 0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68, 0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a, 0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d, 0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70, 0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73, 0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76, 0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79, 0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c, 0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f, 0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82, 0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85, 0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88, 0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b, 0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e, 0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92, 0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95, 0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98, 0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c, 0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f, 0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3, 0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6, 0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa, 0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad, 0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1, 0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5, 0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8, 0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc, 0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0, 0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4, 0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8, 0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc, 0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0, 0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4, 0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8, 0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc, 0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0, 0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4, 0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9, 0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed, 0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1, 0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6, 0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa, 0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff, 0x6d,0xff,0xff,0xff,0xc0,0x00,0x11,0x08,0x00,0xc8,0x00,0xc8,0x03,0x01,0x11,0x00, 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xdb,0x00,0x84,0x00,0x03,0x02,0x02,0x03,0x02, 0x02,0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05, 0x0a,0x07,0x08,0x06,0x08,0x0c,0x0b,0x0d,0x0d,0x0c,0x0b,0x0c,0x0c,0x0e,0x0f,0x14, 0x11,0x0e,0x0f,0x13,0x0f,0x0c,0x0c,0x11,0x18,0x11,0x13,0x15,0x15,0x16,0x17,0x16, 0x0d,0x11,0x19,0x1a,0x18,0x16,0x1a,0x14,0x16,0x16,0x15,0x01,0x03,0x03,0x03,0x05, 0x04,0x05,0x0a,0x05,0x05,0x0a,0x15,0x0e,0x0c,0x0e,0x0e,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xff,0xc4,0x01,0xa2, 0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02, 0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02, 0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71, 0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33, 0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a, 0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53, 0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73, 0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92, 0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9, 0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7, 0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4, 0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa, 0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02, 0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01, 0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22, 0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62, 0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28, 0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a, 0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a, 0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89, 0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7, 0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5, 0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3, 0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa, 0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfd,0x4d, 0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x19,0x82,0x2e,0xe7, 0x21,0x54,0x77,0x27,0x02,0x80,0x05,0x3b,0xc6,0x50,0x86,0x1e,0xa0,0xe6,0x80,0x14, 0x8c,0x75,0xa0,0x04,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00, 0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00, 0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x08,0xaf,0x2f,0x20,0xd3,0xad,0x27,0xba, 0xbe,0x95,0x21,0xb7,0x81,0x0c,0x92,0x48,0xe7,0x01,0x54,0x0c,0x92,0x68,0x03,0xe2, 0xef,0x8b,0x7f,0xb4,0xc1,0xd4,0xaf,0x6e,0xef,0x9a,0xe9,0xec,0xf4,0x5b,0x62,0x45, 0xbc,0x25,0xb6,0xe4,0x0f,0xe2,0x3e,0xe7,0x19,0xf6,0xad,0xe2,0xa3,0x15,0xa9,0xcd, 0x26,0xe4,0xcf,0x92,0x7c,0x43,0xfb,0x68,0x7c,0x43,0xf1,0x4f,0x88,0x97,0x4b,0xf8, 0x5f,0x75,0x7d,0x09,0x66,0x22,0x05,0xb5,0x05,0xa4,0x94,0x8e,0xe0,0x7f,0x8d,0x4d, 0xb9,0x9e,0x85,0xec,0xae,0xce,0xc2,0xff,0x00,0xf6,0xd8,0xf8,0xd5,0xe0,0x68,0x22, 0xbb,0xb3,0xd5,0xad,0x75,0x6b,0x38,0x2d,0xe3,0xfb,0x6c,0x57,0x6b,0xe6,0x49,0x1c, 0x9d,0x19,0x8e,0x7b,0x64,0x80,0x71,0x90,0x0f,0xa5,0x69,0xec,0x1a,0x57,0x64,0x2a, 0x97,0x76,0x4c,0xe8,0xfc,0x2b,0xff,0x00,0x05,0x63,0xf1,0x3c,0x01,0x17,0xc5,0x1e, 0x12,0xd2,0xef,0xc7,0xf1,0x3d,0xbc,0x86,0x36,0xfc,0xba,0x54,0xfb,0x23,0x4e,0x76, 0x7a,0xb7,0x87,0x3f,0xe0,0xab,0x5e,0x07,0xbc,0xda,0xbe,0x25,0xf0,0xce,0xb5,0xa7, 0x39,0xea,0xd1,0x32,0xc8,0x07,0xe1,0x52,0xe9,0x31,0xa9,0x9e,0xa7,0xe1,0xaf,0xf8, 0x28,0x4f,0xc1,0x5f,0x11,0x84,0x12,0x78,0x8e,0x5d,0x2e,0x46,0xfe,0x0b,0xfb,0x76, 0x8f,0x1f,0x8d,0x4b,0x83,0x43,0xe7,0x47,0xa9,0xf8,0x7b,0xe3,0xe7,0xc3,0x9f,0x15, 0x05,0xfe,0xc1,0xf1,0x9e,0x81,0x74,0x5b,0xa2,0x8b,0x95,0x53,0xf9,0x1c,0x52,0xe5, 0x63,0xe6,0x47,0x6b,0x67,0xa8,0xda,0x6a,0x29,0xbb,0x4f,0xbb,0xb6,0xba,0x53,0xce, 0x61,0x91,0x5f,0xf9,0x54,0xd8,0xab,0x96,0x48,0xda,0x09,0x6e,0x00,0xe4,0x93,0xda, 0x80,0x21,0xb3,0xbd,0xb7,0xd4,0x60,0x13,0x69,0xd7,0x10,0x5d,0x42,0x7a,0x49,0x03, 0x87,0x53,0xf8,0x8a,0x02,0xf7,0x25,0xe9,0xd6,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02, 0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a, 0x00,0xf9,0xf3,0xf6,0xb9,0xf8,0x81,0x2e,0x97,0xe1,0xdb,0x7f,0x0a,0xe9,0x12,0x11, 0x75,0xa8,0x0f,0x36,0xec,0xa9,0xe5,0x61,0x07,0xe5,0x5f,0xf8,0x11,0x1f,0x92,0xfb, 0xd6,0x94,0xe1,0xcc,0xee,0x65,0x52,0x56,0xd0,0xfc,0xa7,0xf8,0xe9,0xe3,0x3b,0xed, 0x73,0x51,0x7d,0x2f,0x4d,0x79,0x4d,0x84,0x4d,0x86,0x28,0x4e,0x1f,0x1f,0xe2,0x79, 0xfa,0x62,0x89,0x35,0x70,0x8a,0xea,0x5f,0xf8,0x45,0xe1,0xff,0x00,0xf8,0x46,0xa1, 0x82,0xfe,0xf9,0x47,0xda,0xa7,0x53,0x72,0xe4,0x8e,0x52,0x35,0x52,0xca,0xb9,0xf7, 0xc0,0x27,0xea,0x3d,0x2b,0xaa,0x94,0x39,0x63,0x73,0x9a,0xac,0xae,0xec,0x49,0xa5, 0x6a,0x04,0xbc,0x72,0xdf,0x03,0x3c,0x72,0x02,0x25,0x8d,0xbf,0x8e,0x36,0xc8,0x65, 0x3f,0x50,0x48,0xae,0x85,0x1b,0xab,0x33,0x3b,0xd9,0x9c,0x8e,0x9f,0xf0,0xd8,0x45, 0xab,0xdd,0x7f,0x6a,0xce,0x0e,0x9b,0x14,0x84,0x42,0x62,0x61,0xbe,0xe1,0x73,0xf2, 0x9e,0x3e,0xe8,0xc6,0x33,0xdf,0xf9,0xd6,0x6a,0x9e,0xba,0x9a,0x3a,0xbd,0x8e,0xca, 0xda,0xd7,0x4d,0xb1,0x84,0x45,0x69,0xa6,0xe9,0xe8,0x8b,0xd3,0x30,0x2b,0x9f,0xcc, 0x82,0x4d,0x69,0xc8,0xac,0x67,0xcc,0xca,0x97,0xbe,0x1e,0xd1,0x35,0x20,0xde,0x7d, 0x90,0xb6,0x90,0xff,0x00,0xcb,0x5b,0x42,0x63,0x23,0xf0,0xe8,0x7f,0x2a,0x97,0x04, 0xc7,0xce,0xd1,0xcb,0xea,0x1f,0x0e,0x6f,0x6d,0xe4,0x32,0x78,0x7f,0x50,0x8a,0xed, 0x4f,0x44,0x90,0xf9,0x32,0x0f,0xd7,0x07,0xf3,0x15,0x0e,0x9b,0x45,0xaa,0xb7,0xdc, 0x76,0x93,0xae,0x7c,0x47,0xf0,0xb5,0xc2,0x8d,0x22,0xf3,0xc5,0x56,0x4c,0xa7,0x8f, 0x22,0x79,0x0a,0xfe,0x84,0x8a,0x8e,0x4f,0x22,0xfd,0xa2,0x3d,0xaf,0xc2,0xff,0x00, 0xb4,0x27,0xc5,0xcb,0x0d,0x16,0xea,0xcf,0xc4,0x1e,0x34,0xd5,0x8d,0xa5,0xcc,0x2d, 0x01,0xb2,0x91,0xc3,0x39,0x56,0x18,0x25,0x9b,0xb7,0x07,0xa7,0x5a,0xa8,0xd1,0x57, 0xbb,0x44,0xca,0xaf,0x44,0x67,0xf8,0x47,0xe2,0x5f,0x8a,0xfc,0x19,0x7d,0x25,0xcf, 0x84,0xb5,0xbf,0xec,0xb9,0x21,0x7e,0x90,0x6a,0x0d,0x6e,0x48,0xf5,0x20,0x8d,0xa4, 0x7d,0x4d,0x69,0x28,0x29,0x6e,0x66,0x9b,0x5b,0x1f,0x53,0xfc,0x2e,0xff,0x00,0x82, 0x82,0x6b,0xd6,0x76,0x11,0xdb,0x7c,0x48,0xd2,0xed,0x75,0x46,0xc7,0xc9,0x79,0x13, 0x08,0xa4,0xe3,0xb3,0xed,0xca,0x9c,0xff,0x00,0x78,0x62,0xb0,0x96,0x17,0xb3,0x35, 0x8e,0x21,0xad,0xcf,0x40,0xb1,0xff,0x00,0x82,0x93,0x7c,0x33,0x4b,0xe6,0xb2,0xf1, 0x55,0xbe,0xb7,0xe1,0xfb,0xb4,0x20,0x3c,0x77,0x30,0x6f,0x51,0x9e,0x84,0x32,0xf0, 0x41,0xec,0x47,0x06,0xb9,0xe5,0x49,0xa3,0xa1,0x55,0x4c,0xf4,0x9f,0x0c,0xfe,0xd9, 0x3f,0x08,0xfc,0x55,0xb4,0x69,0xbe,0x34,0xd2,0x15,0xdb,0xf8,0x27,0x7f,0x2c,0xfe, 0xb5,0x1c,0x8c,0xa5,0x34,0x7a,0x5e,0x91,0xe3,0xff,0x00,0x0e,0x6b,0xca,0x1b,0x48, 0xd6,0xb4,0xbb,0xb0,0xdd,0x3c,0x9b,0x94,0x6c,0xfe,0xb4,0xac,0xd0,0xee,0x8d,0xe4, 0x75,0x91,0x72,0x87,0x20,0xf7,0x14,0x86,0x3b,0x1e,0x94,0x00,0x94,0x00,0x50,0x01, 0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x08,0xce,0xb1,0xa3,0x3c,0xac,0x15,0x14, 0x16,0x2c,0x4e,0x00,0x02,0x80,0x3f,0x31,0x7e,0x3f,0x7e,0xd0,0x92,0x6b,0xff,0x00, 0x10,0x35,0xd6,0xd3,0xac,0xa1,0xba,0x8e,0x49,0x5a,0x3f,0x32,0x76,0x61,0xb6,0x30, 0x36,0xa2,0xae,0x08,0x23,0xe5,0x03,0xf1,0x26,0xbb,0xa9,0xc6,0xd1,0x38,0x6a,0x36, 0xe5,0x73,0xc6,0x0d,0xc7,0x85,0x6e,0x22,0x5b,0xad,0x5f,0xc2,0x58,0x05,0xc1,0x2f, 0x69,0xa8,0xba,0x96,0xe7,0xba,0x36,0x78,0x3d,0x28,0xf6,0x30,0xec,0x0a,0xa4,0xfb, 0x9b,0x33,0xd8,0x78,0x6a,0xfd,0xef,0xc5,0x96,0xbb,0x3e,0x9b,0x2c,0xf1,0xbc,0x22, 0x2b,0xab,0x32,0x52,0x2d,0xdd,0x81,0x42,0x78,0x03,0x8e,0x95,0xbe,0x96,0xb1,0x93, 0xbb,0x66,0x44,0x5f,0x0c,0x2e,0x66,0x8d,0x46,0x93,0xae,0xf8,0x6f,0x50,0x00,0x00, 0x02,0x5c,0xf9,0x4c,0x7f,0x07,0x02,0xa9,0x58,0x9b,0xb2,0x2b,0xcf,0x86,0x5e,0x29, 0xb2,0x4d,0xc7,0x45,0xbb,0x9a,0x21,0xce,0xfb,0x6d,0xb3,0x2f,0xe6,0xa4,0xd5,0x58, 0x2e,0x73,0xd7,0x96,0x17,0x96,0x0e,0x45,0xfd,0xad,0xd5,0xbb,0x0e,0xa2,0x68,0x99, 0x7f,0x98,0xa9,0xb1,0x45,0x54,0x98,0x93,0xc3,0x0f,0xad,0x3d,0x84,0xc7,0x89,0x48, 0x61,0x83,0xc5,0x00,0x85,0x5b,0xa6,0x45,0xc0,0x63,0x83,0xda,0x81,0x5c,0x68,0x9c, 0xb0,0x50,0xc7,0x39,0x3d,0x49,0xa4,0xc6,0x8b,0x17,0xd6,0x6e,0x06,0x6e,0x74,0xdb, 0xd8,0xe6,0x57,0x62,0x64,0x95,0x32,0x8c,0x09,0xe3,0x6f,0x14,0x58,0x61,0x25,0xff, 0x00,0x96,0x0a,0x83,0xf7,0x70,0x00,0xfa,0x53,0x02,0x0f,0x1d,0xda,0x59,0x6b,0x7f, 0x0e,0x6f,0x2f,0x6e,0x11,0x97,0x55,0xd2,0xde,0x29,0x60,0x94,0x1c,0xee,0x81,0x9f, 0x64,0x88,0x47,0xb1,0x64,0x61,0xe9,0xcf,0xad,0x67,0x51,0x17,0x4d,0xd9,0x9e,0x15, 0x71,0x74,0xcc,0xc1,0x94,0x67,0x1d,0xeb,0x06,0xae,0x6b,0xce,0xcd,0x3d,0x1f,0xc5, 0xba,0x8e,0x94,0xdb,0xb4,0xfb,0xfb,0xeb,0x37,0x1d,0x1a,0x09,0xd9,0x3f,0x91,0xa5, 0xca,0x52,0x95,0xf7,0x3b,0xbf,0x0d,0xfe,0xd2,0xbf,0x12,0x7c,0x2d,0x22,0x1d,0x0b, 0xc6,0xda,0xfd,0xba,0xaf,0x44,0x37,0x25,0xd7,0xf2,0x6c,0xd2,0x70,0x4c,0xa4,0xcf, 0xb7,0xbf,0x64,0x6f,0xda,0xcf,0xe2,0x36,0xbd,0xa8,0x5b,0x5b,0x78,0xcb,0x55,0x93, 0xc4,0x71,0x5d,0xcd,0x0c,0x4b,0x1d,0xc2,0xa8,0x2b,0xb9,0xb6,0x9c,0x10,0xb9,0xe8, 0x73,0xd6,0xb9,0xa7,0x1b,0x32,0xf9,0xb5,0x3f,0x46,0x08,0xc3,0x11,0x52,0x68,0x21, 0x18,0x34,0x00,0x94,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x01,0xc1,0x7c,0x71,0xf1, 0x18,0xf0,0xe7,0xc3,0x7d,0x48,0xac,0x86,0x29,0xef,0xb6,0xd8,0xc4,0xc3,0xa8,0xf3, 0x38,0x63,0xf8,0x20,0x73,0xf8,0x55,0x45,0x5d,0x91,0x51,0xd9,0x1f,0x90,0x7e,0x27, 0xd5,0xa1,0xd4,0x2f,0xaf,0x67,0x8e,0x12,0xf3,0xdc,0xdc,0xc9,0x26,0xf1,0x90,0x63, 0xf9,0xce,0x3d,0x88,0xc6,0x3d,0xeb,0xba,0x3a,0x23,0x88,0xad,0x1d,0x9b,0xcf,0x71, 0x6a,0xd7,0x57,0x30,0x14,0xb7,0x60,0x5a,0x0d,0xe4,0x30,0x19,0xe8,0x78,0xe4,0xfa, 0x0c,0xd5,0x01,0xbb,0xe1,0x7b,0x4b,0x0d,0x5b,0xc4,0x76,0x91,0xf8,0x8a,0xe2,0x5b, 0x5d,0x3c,0xca,0x5e,0x62,0x8f,0xe5,0x96,0x1c,0x9c,0x6e,0xed,0xce,0x32,0x7a,0xe3, 0x35,0x33,0xbb,0x5e,0xee,0xe3,0x8b,0x57,0xf7,0x8d,0x2d,0x67,0x4a,0xd3,0xb5,0xbf, 0x1c,0x26,0x9f,0xa0,0x5d,0xc5,0x6b,0x61,0x2c,0xeb,0x19,0xbb,0x23,0xcc,0x54,0x5e, 0xed,0x8e,0x33,0xfa,0x73,0x59,0xa9,0x4e,0x30,0xbc,0xb7,0x2d,0xc6,0x32,0x9d,0x96, 0xc3,0x7c,0x67,0x63,0xff,0x00,0x08,0x6f,0x88,0xa6,0xb2,0xd1,0x75,0x1b,0x92,0xb1, 0x63,0x32,0x46,0xe5,0x0e,0x7e,0x81,0x8e,0x3e,0x99,0xad,0x29,0x4d,0xc9,0x5d,0xa2, 0x2a,0x45,0x45,0xd9,0x32,0xb5,0xb7,0xc4,0x8f,0x11,0xd9,0xae,0xd8,0xf5,0x6b,0xb9, 0x54,0x75,0x49,0xc8,0x94,0x7e,0x4d,0x9a,0xd7,0x98,0xcc,0xb0,0x3c,0x7f,0x25,0xe1, 0xff,0x00,0x89,0xd6,0x8b,0xe1,0xfd,0x43,0x3d,0x5a,0x4b,0x35,0x46,0x3f,0x8a,0xe2, 0xab,0x9c,0x39,0x02,0x4d,0x4f,0xc2,0x57,0x83,0xfd,0x3f,0xc3,0x32,0xda,0x93,0xd5, 0xac,0x2f,0x59,0x71,0xff,0x00,0x01,0x6c,0x8a,0x39,0xc3,0x97,0xcc,0x81,0xb4,0x4f, 0x06,0x5e,0x8c,0x41,0xaa,0x6b,0x9a,0x6b,0x1e,0x8b,0x73,0x6e,0x93,0x28,0xfc,0x54, 0x83,0x45,0xd0,0xac,0x57,0x7f,0x87,0xb6,0x73,0xb6,0x74,0x8f,0x15,0xe8,0x77,0x19, 0xe7,0x65,0xc7,0x99,0x03,0x7f,0xe3,0xc3,0x1f,0xad,0x3d,0x18,0xc9,0x07,0xc3,0x9f, 0x16,0xc1,0x11,0x6d,0x20,0x47,0x78,0x84,0x7f,0xcc,0x3e,0xf9,0x1f,0x23,0xe8,0x1b, 0x34,0xec,0x26,0xce,0x73,0x50,0xf0,0x96,0xbb,0xa4,0x82,0xda,0x96,0x91,0xa9,0xdb, 0xe3,0xa9,0x7b,0x76,0xc0,0xfc,0x71,0x45,0x85,0x74,0x75,0xbf,0x08,0xbc,0x07,0x0f, 0xc5,0x1f,0x1a,0x69,0x5e,0x0d,0xd4,0x5e,0x58,0x2d,0xb5,0xc0,0xd6,0x32,0xba,0x0f, 0x99,0x15,0x94,0x92,0xc0,0x7b,0x60,0x1f,0xc2,0xb3,0xaa,0xed,0x16,0xcd,0x29,0xab, 0xc9,0x23,0xd7,0xfc,0x45,0xff,0x00,0x04,0x96,0x7b,0x76,0x7f,0xf8,0x47,0xbc,0x69, 0x39,0x19,0xe1,0x2e,0xad,0xf0,0x0f,0xe5,0x9a,0xf3,0xfd,0xb3,0x3b,0x1d,0x14,0x79, 0x67,0x8a,0x3f,0xe0,0x98,0x9f,0x12,0xf4,0xc0,0xe7,0x44,0xbd,0xd1,0xf5,0x30,0x3a, 0x00,0xe6,0x36,0x3f,0x9d,0x35,0x5b,0xc8,0x5e,0xc4,0xf2,0xbd,0x77,0xf6,0x26,0xf8, 0xcb,0xe1,0xc7,0x22,0xe3,0xc1,0xf7,0x97,0x51,0xaf,0x57,0xb5,0x60,0xe0,0xd3,0xf6, 0x81,0xec,0xda,0x3e,0xb1,0xfd,0x87,0xbe,0x13,0x6b,0xda,0x7f,0xc4,0x1d,0x31,0x3c, 0x41,0xa2,0xea,0x3a,0x7c,0x7a,0x6b,0x8b,0x99,0x4d,0xd4,0x25,0x07,0xc8,0xbf,0x2f, 0x27,0xd5,0xb1,0x59,0xcd,0xdc,0x69,0x5d,0x9f,0xa5,0xe4,0xe4,0x03,0xd3,0x35,0x06, 0xa2,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x1f,0x2a,0x7e,0xdb,0x3e, 0x39,0x1a,0x7c,0xda,0x56,0x89,0x04,0x98,0x6b,0x5b,0x1b,0x9d,0x4a,0x55,0x07,0xbb, 0x29,0x48,0xff,0x00,0x41,0x27,0xe7,0x5b,0x51,0x57,0xbb,0x39,0xeb,0xbd,0x91,0xf9, 0xc8,0xed,0x0c,0x9a,0x8d,0x8c,0x36,0x81,0x9f,0x18,0x92,0x49,0x01,0x38,0x23,0x19, 0x20,0x83,0xd0,0xe7,0xf4,0xae,0xa3,0x9c,0xe2,0xbe,0x17,0x78,0x63,0xfe,0x16,0x77, 0xed,0x23,0x7d,0xa7,0x6a,0x32,0xdd,0xff,0x00,0x67,0x59,0xc3,0xba,0x48,0xa1,0x99, 0x90,0x16,0xc0,0xeb,0x83,0xea,0x4f,0xe5,0x58,0xaf,0x7a,0xa5,0x8e,0x8f,0x86,0x9d, 0xcf,0xad,0xaf,0xff,0x00,0x66,0x1d,0x24,0x28,0x3a,0x3e,0xa7,0xab,0xd9,0x36,0x33, 0x81,0x3e,0xf0,0x3f,0x06,0xcd,0x6f,0xca,0x8e,0x5f,0x69,0xe4,0x73,0x1a,0x97,0xec, 0xf1,0xaf,0x58,0x31,0x6d,0x27,0x5e,0x82,0x6d,0xa7,0x83,0x73,0x6c,0x33,0xf9,0xa9, 0x14,0x72,0xf9,0x87,0xb4,0x5d,0x51,0xc8,0xea,0xbf,0x09,0xbc,0x69,0x60,0xec,0xcd, 0x63,0xa7,0xdf,0xf7,0x26,0x19,0xd9,0x09,0xfc,0x18,0x1f,0xe7,0x46,0xa5,0x73,0x45, 0xf5,0x39,0xbb,0xdd,0x1b,0x5d,0xd3,0x49,0x17,0xde,0x1e,0xd5,0xa3,0x03,0xab,0x46, 0xab,0x28,0xff,0x00,0xc7,0x4e,0x68,0xbb,0xec,0x34,0x93,0xd9,0x99,0x72,0x6b,0x56, 0xd6,0xad,0x8b,0xc6,0x9e,0xd5,0x81,0xfb,0xb7,0x30,0xbc,0x78,0xfc,0xc5,0x1c,0xc8, 0x39,0x59,0x34,0x1a,0xbd,0xad,0xef,0x16,0xb7,0x30,0x4d,0xec,0x92,0x02,0x45,0x3b, 0xa2,0x5a,0x64,0xe5,0x89,0x19,0x00,0x9c,0xd5,0x5c,0x40,0x27,0xc0,0xf4,0xa2,0xe1, 0x61,0x12,0x76,0x8d,0xf7,0x44,0x59,0x48,0xf4,0x38,0xa2,0xf7,0x03,0x5a,0xc3,0xc6, 0xda,0xee,0x99,0x81,0x61,0xab,0xea,0x10,0x81,0xfc,0x22,0x76,0xc7,0xe4,0x4d,0x3b, 0x8e,0xc6,0xf6,0x9f,0xf1,0x87,0xc4,0x96,0x37,0x09,0x33,0x5c,0xdb,0xdc,0x49,0x19, 0xca,0x3c,0xd6,0xe8,0x5d,0x4f,0xb3,0x00,0x08,0xfc,0xe8,0xbd,0xf4,0x17,0x29,0xf4, 0x4f,0xec,0xe7,0xfb,0x49,0xf8,0xa3,0x5e,0xd7,0x26,0xd2,0xee,0xef,0xd9,0x2e,0x22, 0x81,0xa7,0x8d,0x24,0x76,0x92,0x29,0x42,0xfd,0xe5,0x2a,0xc4,0xe3,0x8f,0x43,0x58, 0x55,0x84,0x7b,0x1a,0x46,0x52,0x8e,0xcc,0xfb,0xbf,0xc3,0x1a,0x95,0xbf,0x8a,0x34, 0x0b,0x3d,0x45,0x62,0x58,0xcc,0xc9,0xf3,0xc6,0x39,0xda,0xc3,0x82,0x3f,0x3a,0xe2, 0x92,0xb3,0xb1,0xd9,0x17,0xcc,0xae,0x68,0x36,0x95,0x6e,0xdf,0xc0,0x3f,0x0a,0x45, 0x0f,0x82,0xc6,0x18,0x0e,0x63,0x40,0x28,0x02,0xc1,0xa0,0x04,0xa0,0x02,0x80,0x0a, 0x00,0x28,0x00,0xa0,0x05,0x03,0x26,0x80,0x3f,0x32,0x7f,0x6a,0xef,0x88,0x71,0xf8, 0xa3,0xe3,0x3f,0xc4,0x28,0x63,0xb8,0xfd,0xcd,0x82,0xc3,0xa5,0x2f,0x39,0x08,0x14, 0xa2,0xbf,0xfe,0x3c,0x64,0x35,0xd3,0x47,0xe1,0xf9,0x9c,0xb5,0xb7,0x3e,0x6f,0x12, 0x47,0x1e,0xa3,0x74,0x6d,0x55,0xbc,0xbb,0x78,0x18,0xb3,0x33,0x06,0x5d,0xc7,0xe5, 0xe0,0x8f,0xa8,0xad,0xee,0x62,0x3b,0xf6,0x12,0xb2,0x1a,0xbf,0x8f,0x3c,0x65,0xe2, 0x09,0xc6,0xe3,0x25,0xc7,0x96,0x8f,0xea,0x32,0x4f,0xf5,0x15,0x95,0x1d,0x5b,0x66, 0xd5,0xb4,0x8a,0x47,0xdd,0x32,0xde,0x04,0x1d,0xb0,0x07,0xa5,0x74,0x1c,0x6d,0x99, 0x97,0x37,0x23,0xcb,0xf9,0x4e,0x77,0x50,0x41,0x9b,0x35,0xc1,0x66,0x62,0x47,0x18, 0xa0,0x66,0x64,0xeb,0x14,0x83,0x12,0x46,0xa4,0xe6,0x80,0x31,0xf5,0x0d,0x26,0xc2, 0xec,0x30,0x9a,0xde,0x26,0x07,0xb3,0x2e,0x68,0x1a,0x6d,0x1c,0x7e,0xb1,0xf0,0xb7, 0xc3,0x3a,0xa1,0xff,0x00,0x49,0xd2,0xac,0x99,0x8f,0xf1,0x79,0x60,0x1a,0x56,0x4f, 0x73,0x55,0x51,0xa3,0x8f,0xd4,0x3e,0x05,0xe8,0x6a,0x0b,0x69,0xb2,0x5f,0x58,0x9e, 0xc2,0xde,0xe5,0xd4,0x7e,0x59,0xc5,0x2e,0x54,0x35,0x51,0xf5,0x30,0xae,0xfe,0x0e, 0xea,0x76,0x81,0x8e,0x99,0xe2,0x0b,0x83,0x8e,0x89,0x75,0x12,0x48,0x3f,0x90,0x34, 0x72,0xbe,0x8c,0xa5,0x34,0xfa,0x18,0x57,0x9e,0x0b,0xf1,0x85,0x80,0x1e,0x50,0xd2, 0x2f,0xd4,0x7a,0x07,0x88,0x9f,0xe7,0x45,0xa4,0x87,0xee,0xb3,0x2c,0xa6,0xb3,0x69, 0x71,0x1c,0x7a,0xc6,0x85,0x75,0x02,0x33,0x05,0x69,0xed,0xe5,0x59,0x11,0x33,0xc6, 0x48,0xe0,0xe3,0xf0,0xa5,0xcc,0xd6,0xe8,0x7c,0xa9,0xec,0xcb,0x92,0x83,0x04,0xa5, 0x18,0xe7,0x6b,0x10,0x48,0xad,0x11,0x07,0xab,0x7e,0xcd,0x36,0x0d,0x79,0xf1,0x0d, 0x6e,0x06,0x76,0xdb,0xdb,0xc8,0xe4,0x83,0xeb,0xc7,0xf5,0xac,0xaa,0x30,0x3f,0x53, 0x3e,0x16,0xd9,0x1b,0x1f,0x01,0x69,0x2a,0xf9,0xdc,0xe8,0xd2,0x9c,0xff,0x00,0xb4, 0xc4,0x8f,0xd3,0x15,0xc5,0x37,0x76,0x76,0xd3,0xf8,0x51,0xd5,0x54,0x96,0x29,0x39, 0xeb,0x40,0x09,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x0c,0xc5,0x14, 0xb2,0x8d,0xc4,0x02,0x71,0xeb,0x40,0x1f,0x88,0x36,0x1a,0xbd,0xdf,0x8b,0xbc,0x53, 0xe3,0xcd,0x53,0x56,0x72,0xb2,0x5f,0x6b,0xb2,0x06,0x24,0xe0,0x96,0x53,0x23,0xb0, 0x04,0xfb,0xb2,0xd7,0x4e,0x1d,0xde,0x29,0x9c,0xb5,0x9e,0xb6,0x20,0x48,0x67,0xbf, 0xd3,0x35,0xb5,0xd2,0x14,0xc9,0x28,0x4d,0xb0,0xf9,0x9c,0x6e,0x1e,0xff,0x00,0x8e, 0x06,0x7a,0x56,0xe6,0x48,0xeb,0xbf,0x62,0x8d,0x12,0x3f,0x87,0x3e,0x17,0xbf,0xb7, 0xf1,0x8d,0xe5,0x9e,0x93,0xa9,0x5c,0x5d,0x33,0x18,0x6e,0x64,0x03,0x23,0xa0,0x21, 0xba,0x1e,0x9e,0xb5,0x9d,0x28,0xb8,0xad,0x4b,0xad,0x25,0x2d,0x8f,0xaa,0x05,0xca, 0x5f,0x29,0x6b,0x19,0x6d,0xae,0x94,0xff,0x00,0x14,0x13,0x2b,0x8f,0xd0,0xd6,0xd7, 0x39,0xb9,0x0a,0x37,0x51,0xc9,0x13,0x8f,0x36,0x37,0x03,0xd4,0x8a,0x2e,0x2e,0x53, 0x32,0x69,0xca,0x82,0x41,0xc1,0x34,0x5c,0x56,0x2a,0x49,0x33,0x17,0xe4,0xf4,0xef, 0x9a,0x63,0xb1,0x4a,0xe2,0xe0,0x81,0xc8,0xeb,0x40,0x25,0x63,0x3e,0x69,0xd4,0xb3, 0x10,0x08,0xf4,0xe6,0x81,0x94,0x25,0x94,0x10,0x37,0x75,0x27,0xad,0x03,0xb1,0x4a, 0x69,0xb2,0x1b,0x6b,0x0a,0x63,0x29,0x4a,0xc7,0x68,0xda,0x29,0x81,0xce,0x78,0x9e, 0x51,0x0e,0x9e,0xe4,0xaf,0x2e,0xca,0xb8,0xf6,0xce,0x7f,0xa5,0x41,0xa2,0x3c,0xce, 0x67,0xde,0xe5,0xbb,0x93,0x9f,0xc6,0x98,0x8f,0xa1,0xff,0x00,0x64,0xad,0x1c,0xcb, 0x2e,0xb5,0x7a,0x57,0x24,0x94,0x81,0x4f,0xea,0x6b,0x29,0xbd,0x40,0xfd,0x3f,0xd2, 0x2c,0xc6,0x9f,0xa4,0x59,0x5a,0x81,0x8f,0x26,0x14,0x4f,0xc8,0x0a,0xe2,0x7a,0xb3, 0xbd,0x2b,0x22,0xd5,0x21,0x85,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00, 0x50,0x02,0x8e,0xbc,0xd0,0x07,0xe5,0x0f,0xed,0x17,0xf0,0xc7,0x4a,0xf8,0x61,0xf1, 0x3b,0x5f,0xd1,0xb4,0x98,0x9e,0xd2,0xd6,0x4b,0xa9,0xb5,0x49,0x50,0x9d,0xdc,0xcc, 0x46,0x08,0x07,0xf8,0x70,0xa0,0xe3,0xde,0xba,0x70,0xea,0xd1,0x39,0x2b,0x3d,0x4f, 0x1f,0xb6,0x76,0x11,0xa4,0xb1,0xb1,0x8c,0xb0,0x38,0x74,0x25,0x4e,0x3f,0x9f,0x35, 0xd1,0x63,0x1b,0x97,0xa7,0x95,0xd6,0x3b,0x62,0x5e,0x42,0xc2,0x20,0x4b,0x33,0x64, 0xe4,0x92,0x7f,0x96,0x28,0x4a,0xc2,0x66,0x8a,0xe9,0x7a,0xa5,0xb3,0x40,0xf0,0x80, 0x4c,0xa0,0xb2,0xb2,0xb8,0x1b,0x70,0x81,0xce,0xe2,0x7a,0x7c,0xa4,0x1f,0xc6,0xaa, 0xd6,0x15,0xcd,0x2b,0x5f,0x1d,0x78,0x97,0x45,0x51,0xe5,0xde,0xdf,0x24,0x6b,0xfd, 0xe9,0x18,0xaf,0x52,0x3d,0x48,0xea,0x0f,0xe4,0x69,0x58,0x66,0xa5,0xb7,0xc6,0xbd, 0x64,0x1d,0xb7,0x86,0x1b,0x9c,0x75,0x12,0x44,0xa4,0x9f,0xc8,0x03,0x45,0x83,0x73, 0x46,0x1f,0x8c,0xc9,0x2f,0xfc,0x7e,0x69,0xb1,0x9c,0xff,0x00,0x14,0x4e,0xc9,0xfa, 0x73,0x4a,0xc1,0x64,0x5e,0x83,0xe2,0x66,0x89,0x73,0xb4,0x48,0x2e,0xa0,0x6f,0xf8, 0x0b,0x0f,0xe6,0x3f,0x95,0x30,0xe5,0x45,0x9f,0xf8,0x49,0x74,0x8b,0xb0,0x44,0x7a, 0x84,0x2a,0x4f,0xfc,0xf5,0x52,0x9f,0xcc,0x52,0x05,0x11,0x0c,0x91,0xdc,0xa8,0x36, 0x92,0xc1,0x30,0x23,0xac,0x6e,0x1b,0xf9,0x51,0x71,0xf2,0x94,0xa7,0x46,0x41,0x96, 0x56,0xe7,0xda,0x8b,0x87,0x29,0x4e,0x59,0x58,0x1f,0xa0,0xa7,0x70,0xb1,0xc9,0x78, 0xca,0xe8,0x9b,0x74,0x40,0xdd,0x99,0x88,0xfd,0x07,0xf3,0xa0,0xab,0x59,0x1c,0x1b, 0x36,0x0f,0x1c,0xe7,0xd6,0xa9,0x08,0xfb,0x27,0xf6,0x37,0xd0,0x3c,0xdd,0x0b,0x4f, 0x0c,0xb8,0x37,0xda,0x88,0x24,0xff,0x00,0xb2,0x08,0xfe,0x80,0xd7,0x35,0x47,0x66, 0xd9,0x51,0x57,0x68,0xfd,0x0a,0xdc,0xac,0x72,0xac,0x0d,0x72,0x1d,0xc2,0xe2,0x80, 0x12,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x01,0x47,0x26,0x80, 0x3f,0x2b,0xff,0x00,0x6c,0x0d,0x61,0x75,0xaf,0x8e,0x5e,0x33,0xbf,0x9a,0x45,0x68, 0xad,0x27,0x5b,0x34,0x0c,0xb9,0x07,0xcb,0x45,0x18,0xcf,0x6e,0x73,0x8a,0xeb,0xa2, 0xad,0x13,0x8e,0xab,0xbc,0x8f,0x18,0xbc,0xb8,0x79,0xf4,0xa6,0xb6,0x85,0x7c,0xb7, 0x91,0xb2,0xec,0x48,0xfb,0xbc,0x76,0xf5,0x18,0xe2,0xb6,0xd4,0xc9,0x13,0x5d,0x2e, 0xc9,0xda,0x2e,0xc8,0x02,0x7e,0x43,0x15,0x42,0x66,0x9c,0x1e,0x2d,0xbc,0x8e,0x55, 0x37,0x6b,0xf6,0x80,0xb1,0xb4,0x48,0x43,0xed,0x31,0x2b,0x28,0x52,0x17,0x21,0x80, 0x1f,0x28,0x38,0x23,0xb9,0xf5,0xa7,0x72,0x79,0x6c,0x48,0x7c,0x57,0x1b,0xd8,0x0b, 0x29,0xad,0xa6,0xfb,0x23,0x88,0xe3,0x9d,0x54,0xa9,0x2d,0x1a,0x87,0x3b,0x97,0x18, 0x01,0x83,0x39,0x70,0x38,0x1c,0x63,0xb9,0xa2,0xfd,0x01,0xae,0xa6,0x8d,0xce,0xbf, 0xa4,0x5d,0xdd,0x5b,0xb0,0x95,0x0d,0xa2,0x49,0x3b,0xbc,0x6c,0x98,0x67,0xc1,0x90, 0xc6,0x0a,0x32,0x60,0x92,0x04,0x60,0x7c,0xd8,0xe7,0x04,0x53,0xba,0x04,0x9d,0x8a, 0x13,0x58,0xe9,0xfa,0x85,0xd4,0xed,0x65,0x1c,0x4b,0x6a,0xd2,0x21,0x49,0x63,0x6e, 0x5d,0x4a,0xae,0x02,0x80,0x70,0xae,0x4e,0x72,0xa4,0x1c,0x6e,0xc0,0xfb,0xb4,0xac, 0x34,0x63,0x47,0x0d,0xac,0xcf,0x28,0xb9,0xb7,0xb9,0xb4,0xd8,0x81,0xb1,0xe6,0x0f, 0xef,0x05,0xe8,0xcb,0xee,0x7b,0xf6,0xa9,0x93,0xb2,0x6c,0xb4,0xae,0xec,0x3f,0xc5, 0x1a,0x54,0x1e,0x1d,0xd4,0xd6,0xdf,0x4d,0xd5,0x21,0xd5,0x21,0x31,0x89,0x05,0xc5, 0xbf,0x00,0x64,0x91,0x8e,0x09,0xe7,0x8c,0xfe,0x35,0xc7,0x81,0xc5,0x4b,0x11,0x4f, 0x9e,0x70,0x71,0x77,0xd9,0x9b,0xe2,0x28,0xc6,0x94,0xb9,0x63,0x2b,0x99,0x62,0xfe, 0x55,0x6c,0xf9,0x8d,0x93,0xce,0x4f,0x35,0xda,0x61,0xb1,0x6e,0x0f,0x12,0xea,0x36, 0x84,0x79,0x37,0x52,0x81,0xc1,0xc6,0xe3,0x8f,0xcb,0x34,0xac,0x87,0x72,0xf4,0x5e, 0x3c,0xbf,0x07,0x17,0x18,0x94,0x7a,0x90,0x3f,0xc2,0x8b,0x0f,0x98,0xa9,0xaf,0xeb, 0xc9,0xab,0x42,0xbb,0x63,0x2b,0x21,0xe0,0x9c,0x00,0x00,0xfc,0xf9,0xa2,0xd6,0x07, 0x2b,0x9c,0xf1,0x46,0x3c,0xf1,0x4c,0x93,0xf4,0x13,0xf6,0x68,0xb1,0x5f,0x0f,0x78, 0x73,0xc3,0x86,0x41,0xb4,0xc5,0x6e,0x66,0x3f,0xef,0x10,0x7f,0xc6,0xb9,0x2a,0xbd, 0x0d,0x68,0xab,0xc8,0xfa,0x4a,0xd7,0xc5,0xc1,0x80,0xc3,0xd7,0x39,0xd6,0x6a,0xda, 0xf8,0xa0,0x39,0x19,0x6e,0x3e,0xb4,0x01,0xb7,0x67,0xaa,0xa5,0xc8,0x19,0x20,0xe6, 0x80,0x2f,0xfd,0x28,0x01,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0x69,0x16, 0x25,0x67,0x90,0xe1,0x54,0x16,0x24,0xf6,0x02,0x80,0x3f,0x1a,0x3e,0x27,0x6b,0x87, 0x5a,0xf1,0x9e,0xb9,0xab,0xdc,0x3a,0xc8,0x75,0x0d,0x4a,0x69,0x95,0x4e,0x79,0x0d, 0x23,0x60,0x8e,0xc7,0xa5,0x77,0x41,0x7b,0xa8,0xe1,0x93,0xbb,0x66,0x05,0xd3,0x7d, 0xb2,0x5d,0x36,0x08,0x10,0x46,0x15,0xd4,0xca,0xcc,0x06,0x49,0xef,0x83,0xd7,0x9f, 0x7a,0xb4,0xc9,0x23,0x69,0x4d,0xc5,0xd4,0x92,0x0e,0x4b,0x31,0x3f,0x5a,0x64,0x91, 0xdd,0x5f,0xc3,0x68,0x01,0x99,0x8a,0x8f,0xef,0x10,0x76,0xfe,0x7d,0x28,0xb8,0xd6, 0xc4,0x22,0xfe,0x37,0x00,0xa3,0x0e,0x69,0x8a,0xc4,0xa8,0xdb,0xd4,0x71,0x9a,0x06, 0x90,0x8c,0x88,0x41,0xdc,0x01,0xcf,0x5c,0x8e,0xb4,0x03,0x23,0x92,0x79,0x24,0x73, 0xe6,0x4b,0x2b,0xe4,0x63,0xe6,0x72,0x78,0x1d,0xb9,0xa0,0x2c,0x44,0xe4,0x81,0x40, 0xc0,0x5c,0x61,0x30,0x40,0xe2,0x80,0x18,0xcd,0xc7,0x4c,0x50,0x03,0x55,0xb2,0x39, 0xfd,0x68,0x01,0x0b,0x03,0xc0,0xf5,0xa0,0x09,0xac,0xed,0xda,0xf2,0xfa,0xda,0x04, 0xeb,0x24,0xaa,0xb8,0x1e,0xe6,0x93,0x03,0xef,0xbd,0x32,0xfd,0x3c,0x37,0xa5,0xe9, 0xf0,0x29,0x08,0x56,0x15,0x41,0xf8,0x01,0x5c,0x55,0x0d,0xe8,0x2d,0xce,0x8b,0x4e, 0xf1,0x6f,0x98,0x46,0x1f,0x3f,0x8d,0x64,0x74,0x9d,0x56,0x95,0xaf,0x34,0x85,0x70, 0xd9,0xcd,0x00,0x77,0xde,0x1c,0xd4,0x1e,0x56,0x5c,0x13,0x83,0x40,0x1e,0x83,0x6e, 0xc5,0xa0,0x42,0x68,0x01,0xf4,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x01,0xcb,0xfc, 0x52,0xd7,0x47,0x86,0x3e,0x1a,0x78,0xa7,0x55,0x63,0xb4,0xda,0x69,0xb7,0x12,0x03, 0xee,0x10,0xe3,0xf5,0xc5,0x0b,0x51,0x4b,0x44,0x7e,0x38,0xdd,0xaf,0x93,0x71,0x0c, 0x37,0x6c,0x1e,0x66,0x0c,0x42,0xe4,0x9d,0x87,0xa9,0xe0,0xf4,0xeb,0xd4,0x57,0xa0, 0x91,0xc1,0x71,0xb3,0x2f,0x99,0xad,0x89,0xac,0x94,0x25,0xb4,0x11,0x3b,0x67,0x1b, 0x4b,0x1c,0x71,0x9f,0xa7,0x03,0x3e,0xf4,0xee,0x03,0xb4,0xb8,0x42,0x5b,0x5d,0x4c, 0x46,0x5a,0x34,0xc8,0x07,0xdc,0x81,0xfd,0x6a,0x6a,0x3b,0x21,0xc1,0x6a,0x6c,0xdf, 0x69,0x16,0x10,0xfc,0x3d,0xb4,0xd6,0x52,0xee,0xe5,0xf5,0x6b,0x8d,0x42,0x5b,0x57, 0xb6,0x7d,0xbe,0x58,0x89,0x23,0x56,0xdc,0x06,0x49,0x39,0x2e,0x07,0x38,0x1d,0x7a, 0xd7,0x3d,0xf5,0x37,0xb1,0xe6,0x76,0x4e,0xb2,0xde,0xdc,0xc7,0x6b,0xc4,0x29,0x31, 0x45,0x03,0xa0,0xf6,0xfc,0x3a,0x7e,0x15,0xd5,0x07,0x74,0x61,0x25,0x66,0x76,0x96, 0xba,0x45,0xc5,0xe5,0xcd,0xa6,0x9f,0xa7,0xc5,0x3d,0xcd,0xf5,0xce,0x04,0x70,0x42, 0x40,0x62,0x4f,0x4e,0xbe,0xdc,0xd4,0x4a,0xa5,0x8a,0x50,0xba,0x30,0xf5,0xfb,0x4b, 0xff,0x00,0x0e,0xdf,0x4b,0x0d,0xe0,0x9e,0x29,0x21,0x97,0xc9,0xb8,0xb6,0xb8,0x00, 0x49,0x13,0x7e,0x18,0xc8,0xcf,0x1f,0x97,0x5c,0xd3,0x84,0xd4,0x82,0x51,0x68,0x65, 0x8c,0x92,0x5d,0xcc,0x40,0xed,0x5a,0x10,0x5b,0xb9,0x69,0x22,0x25,0x63,0x82,0x69, 0x70,0x39,0xd8,0x01,0x3f,0x96,0x73,0xfa,0x54,0xf3,0x21,0xf2,0xb2,0x9c,0x17,0xf0, 0xdc,0x20,0x68,0xdf,0x76,0x6a,0x84,0x4e,0xac,0xad,0xe9,0x40,0x08,0x40,0xcf,0x07, 0x9f,0x7a,0x00,0x8c,0xb6,0x1b,0xb7,0x14,0x01,0xd4,0x7c,0x2c,0xd3,0x0e,0xaf,0xf1, 0x03,0x45,0xb7,0x23,0x70,0x37,0x0a,0xc4,0x7b,0x0e,0x6a,0x27,0xb0,0x1f,0x51,0x7c, 0x46,0xf1,0x01,0xb4,0xd7,0x6d,0x6d,0xa2,0x6c,0x08,0xe0,0x0c,0x7e,0xa4,0xff,0x00, 0xf5,0x85,0x71,0xd4,0x5a,0x9d,0x34,0x95,0x90,0xbe,0x1d,0xd7,0x5e,0x57,0x50,0x49, 0xac,0xcd,0x93,0x3d,0x73,0xc2,0xd3,0x34,0xe5,0x73,0xcd,0x03,0x3d,0xa3,0xc2,0x16, 0x45,0x82,0x64,0x50,0x07,0xa1,0xa2,0x6c,0x45,0x5f,0x41,0x40,0x0b,0x40,0x05,0x00, 0x14,0x00,0x50,0x01,0x40,0x1e,0x35,0xfb,0x5f,0xeb,0x07,0x49,0xfd,0x9f,0x3c,0x4e, 0x91,0xe7,0xcd,0xbe,0x11,0x59,0x20,0x07,0x92,0x5e,0x45,0xcf,0xe8,0x0d,0x5c,0x15, 0xe4,0x8c,0xea,0xbb,0x45,0x9f,0x96,0xf2,0xb4,0x29,0xac,0x88,0xef,0x49,0x2c,0xaa, 0xbb,0xa4,0x1f,0x39,0x11,0xf6,0xc7,0xe5,0xd2,0xbb,0x4e,0x3b,0x94,0x62,0x92,0x41, 0x3e,0xa9,0x28,0x50,0x90,0x15,0x58,0xe3,0x03,0x3c,0x92,0x46,0x4f,0x3d,0x33,0x83, 0xc5,0x17,0xb8,0x89,0xec,0xe6,0x78,0x94,0x18,0x15,0x49,0x65,0x21,0x94,0xf4,0x60, 0x7b,0x1a,0x1a,0xba,0xb1,0x49,0xd8,0xc1,0xd5,0xae,0x2f,0x26,0x76,0x82,0xcd,0x63, 0xb7,0xcf,0x06,0x52,0x77,0x15,0xfa,0x0f,0xf1,0xac,0x7d,0x9b,0x34,0x73,0x43,0x74, 0xdd,0x12,0x2d,0x3a,0xd1,0x20,0x80,0xb1,0x6e,0x49,0x76,0x39,0x24,0x9e,0xa4,0xfb, 0xd7,0x42,0x56,0x46,0x4f,0x53,0xa8,0xd2,0x3c,0x51,0x07,0x86,0xbc,0x43,0x61,0xac, 0xcb,0x67,0xa6,0xea,0x66,0xdb,0x05,0xac,0xf5,0x25,0x2d,0x13,0xb0,0x18,0x05,0x80, 0x23,0x23,0xa1,0x1e,0xe3,0x9a,0xe6,0x9a,0xd4,0xda,0x2e,0xe8,0xe3,0x7c,0x59,0xe2, 0x79,0xfc,0x69,0xe2,0x7b,0x89,0x6d,0xfc,0xc9,0x5a,0xe2,0xe1,0xae,0x6e,0xa7,0x2c, 0xce,0xab,0x93,0xb8,0x28,0x63,0xcb,0x1c,0xe3,0xf0,0x15,0x54,0xd6,0xa2,0x9b,0xe8, 0x6b,0xe9,0x91,0x1b,0x7b,0x6b,0xa6,0x41,0xfb,0xdf,0x2c,0x95,0x3d,0xc7,0x23,0x3f, 0xa6,0x6b,0x4a,0x8e,0xc8,0x88,0x6e,0x74,0x56,0xfa,0x7e,0x85,0x1f,0xc2,0xdb,0x9b, 0xdb,0x99,0xac,0x5b,0xc4,0x4f,0xa8,0x46,0xb6,0xc9,0x1d,0xc3,0x79,0xc9,0x16,0x1b, 0xcc,0xdf,0x1f,0x4d,0xbc,0x29,0x07,0x1f,0xc5,0xd7,0x8c,0x57,0x3e,0xb7,0x37,0x3c, 0xea,0x5b,0x84,0xb9,0xd5,0xae,0xe4,0xb7,0xc0,0x56,0x65,0xdd,0xb7,0xa1,0x7d,0xa3, 0x77,0xeb,0x93,0xf5,0x26,0xba,0x69,0xbd,0x0c,0x27,0xb9,0xa5,0x00,0x25,0x72,0x41, 0xfa,0x8a,0xb2,0x4b,0x04,0x83,0xc9,0xcd,0x00,0x41,0x20,0xe7,0x82,0x47,0xbd,0x00, 0x7a,0xa7,0xec,0xd5,0xa7,0x8b,0xff,0x00,0x88,0xf1,0xcc,0xc3,0x2b,0x6d,0x0b,0xbe, 0x7d,0xfa,0x0a,0xca,0xa3,0xd0,0x0f,0x4b,0xf1,0xed,0xd9,0xbc,0xf1,0xae,0xa2,0x54, 0xe4,0x46,0xcb,0x10,0xc7,0xfb,0x20,0x0f,0xe7,0x9a,0xe4,0x96,0xac,0xeb,0xa7,0xa4, 0x4d,0xbf,0x07,0xda,0xb3,0xc8,0x9d,0x7b,0x54,0x1a,0x23,0xe8,0x0f,0x02,0x69,0xa5, 0xda,0x3c,0x83,0xda,0x81,0x9e,0xfb,0xe1,0x7d,0x3c,0x43,0x0a,0x96,0x1d,0x05,0x00, 0x74,0x24,0xe4,0xd0,0x02,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x07,0xcb,0x3f, 0xf0,0x50,0x3d,0x72,0x4b,0x4f,0x87,0x9e,0x1c,0xd2,0x6d,0x5c,0xac,0xb7,0xba,0x91, 0x98,0xed,0x38,0xc2,0xc4,0x84,0xe7,0xf3,0x61,0x5a,0x52,0x57,0x91,0x8d,0x6d,0x8f, 0xcf,0x68,0x9a,0xd5,0xb5,0x0b,0xb9,0x2e,0xf9,0x90,0x13,0xbc,0xb6,0x70,0xce,0x3a, 0x02,0x47,0x6c,0x67,0xa5,0x76,0x25,0x64,0x72,0x3d,0x4c,0xe8,0x5e,0x51,0xa5,0x4c, 0xd2,0xa3,0x46,0x26,0xb9,0x3b,0x15,0xba,0xed,0x51,0xc6,0x7f,0xef,0xaa,0x10,0xcd, 0x4b,0x2d,0x1a,0xe7,0x56,0x9f,0x4f,0xd3,0xb4,0xcb,0x77,0xbb,0xbd,0xbd,0x61,0x1c, 0x50,0x27,0x57,0x62,0x70,0x07,0xbe,0x4d,0x65,0x52,0x4e,0xf6,0x34,0x84,0x7a,0x94, 0x3e,0x29,0x78,0x12,0x5f,0x87,0xba,0xe6,0xa3,0xa6,0xdd,0xc9,0x6e,0x35,0x1d,0x3c, 0x2b,0x4a,0xf6,0xa4,0xf9,0x6e,0x4a,0x06,0x2b,0xc8,0x19,0xe0,0xe3,0x38,0xea,0x3d, 0x2a,0x69,0xcd,0x95,0x28,0xa3,0x2b,0x47,0x95,0xee,0xf6,0x13,0x9c,0x90,0x30,0x3d, 0x6b,0xa5,0xbb,0x18,0x92,0x6a,0xb1,0x34,0xc8,0x63,0x89,0x6d,0x5b,0x1f,0xc3,0x23, 0x1e,0x7f,0x10,0x2b,0x37,0x34,0xcb,0x50,0x66,0x5d,0x85,0xf0,0x8a,0x49,0x20,0x96, 0x1f,0x22,0x58,0xce,0x19,0x38,0xe3,0xf1,0xee,0x3d,0xea,0xe3,0x67,0xb1,0x2e,0xfd, 0x4d,0x54,0x90,0xb2,0x16,0x46,0x29,0x8f,0xe2,0xf4,0xa6,0xd5,0xc4,0x9d,0x8c,0x2b, 0xc8,0xee,0x2e,0xe4,0x68,0xe2,0xbe,0x8a,0x24,0xe8,0x4c,0x40,0x6e,0xff,0x00,0xeb, 0x56,0x5e,0xc8,0xd5,0x4c,0xbd,0xa5,0x68,0xa8,0x64,0xb5,0xb1,0xd3,0x90,0xc9,0x2c, 0xae,0x11,0x17,0x3c,0xb3,0x13,0xc7,0xea,0x6a,0xa7,0x25,0x4e,0x2e,0x4f,0x64,0x87, 0x42,0x8c,0xeb,0xd4,0x54,0xe0,0xae,0xdb,0xb2,0xf9,0x9e,0xe5,0xa6,0x7c,0x13,0xb0, 0xb1,0xb1,0x8d,0xb5,0x68,0xb5,0x3d,0x4a,0x42,0xb9,0x67,0xb6,0x6d,0x91,0x8e,0x48, 0x38,0xc0,0x24,0x8c,0x83,0xc9,0xc6,0x71,0x5f,0x23,0x5b,0x3e,0xc4,0x4d,0xde,0x94, 0x6c,0xbe,0xf3,0xf6,0x8c,0xb7,0xc3,0xcc,0xb6,0x94,0x79,0x71,0xb5,0x6f,0x3e,0xba, 0xd9,0x27,0xd8,0xc8,0xf1,0x2f,0xc1,0xc8,0xa6,0xb1,0x9a,0x7f,0x06,0x4f,0x76,0x2f, 0x22,0x53,0x27,0xf6,0x75,0xe9,0x04,0xca,0xa0,0x64,0xec,0x6c,0x0e,0x71,0xd8,0x8e, 0x7d,0x6b,0x7c,0x1f,0x10,0x4b,0x9d,0x43,0x10,0xb7,0xea,0x70,0xe7,0xfe,0x1b,0xd3, 0xa5,0x49,0xd6,0xc0,0x4a,0xf6,0xe8,0xf5,0xfc,0x4f,0x1a,0xfb,0x5f,0x98,0x7e,0x6e, 0x2b,0xea,0x8f,0xc8,0x64,0xac,0xec,0xcf,0xa1,0x3f,0x64,0xdb,0x10,0xd7,0xfa,0xcd, 0xf3,0x74,0x44,0x58,0xc1,0x3d,0xb3,0xc9,0xfe,0x55,0x9d,0x42,0x4d,0x92,0x4e,0xa9, 0xac,0xdd,0x5c,0x1e,0x7c,0xe9,0x9e,0x4f,0xc0,0x93,0x5c,0x6d,0x9d,0xa9,0x1e,0xad, 0xe0,0x7d,0x1c,0x93,0x1e,0x47,0x5a,0x92,0xcf,0xa2,0xbc,0x05,0xa2,0xed,0x58,0xc8, 0x5f,0x4a,0x00,0xf6,0x1b,0x28,0x05,0xbd,0xb2,0xa8,0x1d,0x45,0x00,0x4d,0x40,0x05, 0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x7c,0x29,0xff,0x00,0x05,0x0d,0xd7,0xa5, 0x93,0xc6,0xde,0x16,0xd2,0xec,0x99,0x89,0xb4,0xd3,0xe5,0x9d,0xd5,0x40,0x38,0xf3, 0x1b,0x6f,0x20,0xf1,0xd1,0x6b,0x7a,0x0a,0xf7,0x39,0xeb,0xbd,0x51,0xf1,0x9c,0x3f, 0x64,0x87,0x4e,0xba,0x99,0x59,0x8b,0xf2,0xea,0x01,0xf9,0x9d,0x8e,0x72,0x7d,0xce, 0x40,0xe3,0xde,0xba,0x76,0x39,0xc8,0xcb,0x48,0xfa,0x7e,0x9e,0x97,0x2a,0x12,0x56, 0x43,0x2b,0xa8,0xec,0x49,0xc7,0xf4,0x14,0x01,0x25,0xdd,0xf0,0x86,0xde,0x22,0xe5, 0xd5,0xa2,0xce,0xc9,0x13,0x9e,0x3a,0xe3,0xd7,0xaf,0xf3,0xac,0xaa,0x26,0xdd,0xd1, 0xa4,0x1f,0x46,0x73,0x7e,0x2c,0xd6,0xb5,0x4f,0x1c,0xdf,0xc9,0xf6,0xa9,0xae,0xae, 0x5e,0xe1,0x83,0x5d,0x5f,0x5d,0x39,0x67,0x90,0x0e,0xc3,0x3c,0xf4,0x00,0x64,0xf6, 0xa9,0x8c,0x5d,0xc7,0x29,0x69,0xa1,0xb1,0xa3,0xc4,0xb6,0x72,0x00,0xc4,0x00,0x54, 0xa8,0x63,0xd1,0x49,0x18,0x06,0xb6,0x96,0xa8,0xce,0x3b,0x9d,0x6e,0x83,0xe2,0xbd, 0x27,0x47,0xf8,0x6d,0xe2,0x6d,0x0e,0xfe,0xda,0x47,0xd5,0xf5,0x19,0xe3,0x78,0x64, 0x5b,0x74,0xc4,0x61,0x4a,0xe3,0xf7,0x84,0xe5,0x54,0x0d,0xff,0x00,0x28,0x1c,0x96, 0x53,0xb8,0x60,0x8a,0xe6,0xb5,0xcd,0xcf,0x28,0xb7,0xbd,0x5d,0x53,0x5a,0xba,0x96, 0xd3,0x0f,0x0c,0x2a,0xb0,0xf9,0x83,0xa3,0x30,0x24,0x9c,0x7d,0x33,0x8a,0xe8,0xa7, 0xa2,0x32,0x9b,0xd4,0xec,0x34,0xdb,0x09,0x6f,0xae,0x34,0xcd,0x3e,0xc9,0x90,0x5c, 0x5f,0xcc,0x91,0x2b,0xb1,0xc0,0x05,0x98,0x28,0xe7,0xb0,0xc9,0xa9,0xa9,0x27,0xb1, 0x50,0x8f,0x52,0x7f,0x8d,0x7e,0x09,0x4f,0x87,0xda,0xe6,0xa3,0xa3,0xc9,0x7c,0x75, 0x06,0xb4,0x81,0x67,0x4b,0xc3,0x17,0x96,0x49,0x2b,0xb8,0x60,0x64,0xfc,0xa4,0x7a, 0x9e,0x87,0xa0,0x35,0x10,0x9b,0x2a,0x49,0x33,0x92,0xf0,0xb6,0xab,0x3d,0x85,0xed, 0x8d,0xfc,0x0d,0x89,0xed,0xe4,0x49,0x90,0x37,0x42,0x41,0xce,0x0d,0x6b,0x5a,0x9a, 0xa9,0x07,0x07,0xb3,0x56,0x2b,0x09,0x89,0x96,0x1a,0xb4,0x2b,0x43,0x78,0xb4,0xfe, 0xe3,0xe9,0x9f,0x0c,0xfc,0x64,0x98,0xdb,0xa4,0x9e,0x1d,0xd5,0x61,0x81,0x78,0x26, 0xce,0xe0,0x26,0xf8,0xc8,0xdd,0xc1,0xc8,0xcb,0x01,0xb9,0xb0,0x47,0x18,0x3f,0x85, 0x7c,0x34,0xe9,0xe2,0x70,0x2f,0x95,0xad,0x3b,0xdb,0x43,0xfa,0x1b,0x05,0x88,0xc9, 0x38,0x92,0x9a,0xa9,0x27,0x69,0xbd,0xd5,0xec,0xd3,0xf4,0xf9,0x74,0x19,0xe2,0x6f, 0x8e,0x96,0x76,0x96,0x91,0x0d,0x41,0x6d,0xda,0xee,0xde,0x5f,0x36,0x24,0xb5,0x90, 0xb3,0xbb,0x64,0x9c,0x60,0xe7,0x00,0xe4,0x75,0x3c,0x00,0x3e,0x94,0xe3,0x4a,0xb6, 0x31,0x28,0x28,0xf5,0xdc,0xd3,0x13,0xfd,0x9d,0x90,0x46,0x78,0x8a,0x95,0xd3,0xbc, 0x6d,0xcb,0xa3,0x6f,0xb5,0xad,0xfe,0x47,0xcd,0x57,0x19,0xb9,0xb9,0x9a,0x79,0x02, 0xab,0xc8,0xed,0x23,0x04,0x18,0x00,0x93,0x9e,0x05,0x7d,0xd5,0x38,0xf2,0xc5,0x47, 0xb2,0x3f,0x9c,0xf1,0x35,0xbd,0xb5,0x49,0x54,0xb5,0xae,0xee,0x7d,0x31,0xfb,0x39, 0xdb,0x1d,0x2b,0xe1,0xae,0xb5,0xa8,0x91,0xb5,0xa4,0x32,0x15,0x23,0xd9,0x70,0x3f, 0x53,0x59,0x55,0x7a,0x99,0x41,0x5d,0xa3,0x63,0xc2,0xba,0x61,0x9a,0x54,0xc8,0x3d, 0xab,0x95,0x9d,0x88,0xf7,0xdf,0x01,0xe8,0xb9,0x31,0xe0,0x7a,0x52,0x28,0xfa,0x1f, 0xc1,0xda,0x50,0x86,0x14,0x25,0x7a,0x0a,0x00,0xeb,0xfe,0x94,0x00,0x94,0x00,0x50, 0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x07,0xe6,0x67,0xed,0xb7,0xe2,0x19,0x75,0x8f, 0x8e,0x9e,0x23,0x8e,0x17,0x61,0x6d,0x63,0x04,0x16,0x6c,0xe0,0x64,0x26,0xd4,0x04, 0xf3,0xd8,0xe5,0x8d,0x74,0xd1,0x5a,0x1c,0x95,0x5f,0xbc,0x7c,0xeb,0x78,0x90,0xe9, 0xba,0x20,0x7b,0x52,0xcf,0x31,0x6d,0x91,0xc6,0xa7,0x3c,0xe4,0x75,0x1d,0x79,0x19, 0x39,0xad,0xcc,0x89,0x6e,0x63,0x76,0xbd,0x8a,0x14,0x18,0x2b,0x1c,0x71,0xe3,0xdf, 0x03,0x3f,0xad,0x00,0x59,0xb4,0xf0,0xce,0xa7,0xe2,0xab,0xe9,0x6c,0x3c,0x3d,0x05, 0xe5,0xed,0xc4,0x48,0xce,0xd0,0xda,0x2a,0xb3,0x10,0x3a,0x90,0x08,0x24,0xe3,0xd0, 0x56,0x2e,0xa5,0x8d,0x14,0x3b,0x9c,0x54,0xb7,0x37,0x1a,0x4e,0xa0,0xb0,0x4c,0xcb, 0x34,0x72,0x02,0xd1,0xca,0x06,0x09,0x03,0xa8,0x23,0xd4,0x71,0xf9,0xd6,0xb0,0x97, 0x32,0x22,0x4a,0xc6,0xcd,0x9c,0xe6,0xe2,0x0c,0xbe,0x71,0xec,0x32,0x7f,0x2a,0x7b, 0x08,0xc3,0xd6,0x52,0x37,0x6c,0x5d,0x1b,0xd8,0x6d,0xdb,0x0b,0xf3,0x64,0x21,0xf6, 0x24,0x74,0xfa,0x56,0x7c,0xb1,0x6c,0xbb,0xb4,0x5c,0xd3,0xd2,0xda,0xd2,0xd9,0x62, 0xb2,0x54,0x44,0x03,0x80,0xa3,0x00,0x56,0xa9,0x58,0x8d,0xc9,0xef,0x2e,0xe5,0x86, 0x15,0xd9,0x19,0x91,0x53,0x95,0x2a,0x70,0x54,0xd6,0x73,0x8b,0x7a,0xa2,0xe3,0x2b, 0x18,0x3a,0xd5,0xde,0xad,0xe2,0xeb,0xa6,0xfe,0xd2,0x79,0x44,0x72,0x30,0x33,0xcd, 0x71,0x29,0x92,0x59,0x80,0xec,0x49,0xed,0xc7,0xbf,0x14,0x94,0x5d,0xf5,0x29,0xc8, 0xec,0x7c,0x01,0xf0,0xe3,0x59,0xf8,0x81,0xe2,0x28,0x34,0x7f,0x08,0xda,0x35,0xe5, 0xf4,0x8a,0x5b,0x1b,0x82,0xa4,0x68,0x3a,0xbb,0xb1,0xe1,0x54,0x7a,0xd6,0x38,0xdc, 0x75,0x2c,0x1d,0x27,0x56,0xb3,0xb2,0x43,0xa3,0x46,0x55,0xa5,0xc9,0x05,0xa9,0xee, 0xef,0xfb,0x06,0xf8,0x92,0xea,0xcf,0x73,0x78,0xb3,0xc3,0x0b,0x79,0x8c,0x8b,0x76, 0x8e,0x62,0xa0,0xfa,0x6f,0xdb,0xfd,0x2b,0xe4,0xa5,0xc6,0xb4,0x1c,0xad,0xc8,0xed, 0xf2,0x3d,0x98,0xe4,0xd3,0x4b,0x7d,0x4f,0x13,0xf8,0x89,0xf0,0x9f,0xc4,0x5f,0x07, 0xb5,0xa4,0xd3,0x7c,0x6f,0xa7,0xfd,0x92,0x49,0x94,0xbc,0x17,0x11,0xb8,0x92,0x1b, 0x85,0x1f,0xc4,0x8e,0x38,0x3f,0x4e,0xa3,0xb8,0x15,0xf4,0xf9,0x76,0x67,0x43,0x1d, 0x0e,0x6a,0x0e,0xff,0x00,0x9a,0x3c,0xbc,0x56,0x1e,0x74,0x65,0x69,0xa3,0x94,0xde, 0x09,0x20,0x1e,0xb5,0xe8,0xdc,0xe4,0x67,0xd6,0x7e,0x07,0xd3,0x7f,0xb1,0x3e,0x0a, 0x59,0xc0,0x38,0x7b,0xa5,0x4c,0xfb,0xee,0x6c,0x9f,0xd0,0x57,0x35,0x59,0x1a,0x52, 0x57,0x91,0xd7,0x78,0x23,0x47,0x2c,0xc8,0x48,0xeb,0x8a,0xe7,0x3a,0xd1,0xf4,0x4f, 0x80,0xb4,0x3c,0x08,0xc9,0x5f,0x4e,0x94,0x0c,0xf6,0xcd,0x2e,0xd4,0x5a,0xda,0xa8, 0x03,0x06,0x80,0x2d,0xd0,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x0a,0xbd, 0x45,0x00,0x7e,0x40,0xfc,0x72,0xd7,0x64,0xf1,0x5f,0xc4,0x8f,0x17,0x5c,0x4d,0x21, 0x16,0xd7,0x5a,0xb5,0xc1,0x59,0x00,0xc1,0x20,0x31,0x5d,0xa0,0xfb,0x85,0x15,0xd9, 0x4d,0x5a,0x28,0xe2,0x9b,0xbb,0x67,0x07,0x7e,0x91,0xdb,0xcf,0xa7,0x41,0x09,0x32, 0x49,0x74,0xc1,0x4a,0xa8,0xc8,0x0a,0x7b,0xe7,0xdb,0xa1,0xad,0x0c,0xc9,0x24,0xb9, 0xc6,0xa9,0x25,0xca,0x0c,0xfe,0xf4,0xb8,0x53,0xdf,0x9c,0x8a,0x06,0x4b,0x63,0xe2, 0x49,0x3c,0x2f,0x26,0xa5,0x36,0x9e,0x61,0x56,0xbc,0xb6,0x7b,0x65,0xb9,0x7e,0x1e, 0x04,0x72,0x37,0x6d,0xe7,0x86,0x2a,0x0a,0x93,0xe8,0xc7,0xd6,0xb9,0x9a,0xb1,0xbe, 0xe7,0x9f,0xc9,0x33,0xeb,0x7a,0xc7,0x99,0x6c,0x8d,0xf6,0x4b,0x75,0x2a,0xae,0x46, 0x37,0xb1,0xc6,0x48,0xf6,0x18,0x02,0xb5,0xa4,0xad,0xa9,0x13,0x3a,0x58,0xd3,0xec, 0xfa,0x4a,0xf9,0x67,0xe7,0x67,0xc3,0x1f,0x6c,0x71,0xfd,0x7f,0x2a,0x2a,0x04,0x0e, 0xbb,0xe3,0x26,0x95,0xe1,0x2f,0x0f,0x49,0xa4,0x47,0xe0,0xbb,0xc8,0x6f,0x6d,0xa4, 0xd3,0x55,0xf5,0x09,0x12,0x7f,0x35,0x4c,0x9c,0x86,0x3d,0x4e,0xdc,0x81,0x9c,0x70, 0x46,0x46,0x42,0x9a,0xc9,0x5d,0x33,0x4d,0xcf,0x2d,0xf0,0xe2,0x34,0xf0,0x5b,0x75, 0x3b,0xc0,0x23,0x3d,0xf3,0xd2,0xba,0xae,0x73,0xb3,0xaf,0xd2,0x7c,0x23,0xa9,0xf8, 0xc6,0xee,0xee,0xd3,0xc3,0x96,0x17,0x1a,0x8c,0x96,0x91,0x19,0xa5,0x58,0xa4,0x29, 0xb5,0x41,0x00,0x9e,0x08,0xc9,0xc9,0x00,0x0e,0x49,0x27,0x81,0x58,0xca,0xa3,0x46, 0xaa,0x08,0xe3,0x6e,0xe6,0x6d,0x3a,0xf2,0x05,0x8e,0x56,0x78,0x66,0x0d,0xb4,0x39, 0xcb,0x2b,0x0c,0x64,0x67,0xb8,0xe4,0x11,0xf8,0xd6,0x90,0x97,0x36,0xe4,0xce,0x36, 0x3e,0x9f,0xfd,0x88,0xfc,0x73,0xa5,0xf8,0x7f,0xc6,0x3a,0xc6,0x97,0xab,0xbc,0x16, 0xf7,0x9a,0xbd,0xbc,0x49,0x67,0x34,0xc7,0x01,0xde,0x36,0x24,0xc5,0x9e,0xc5,0xb2, 0x08,0xf5,0x2b,0x8f,0x4a,0xf9,0x3e,0x2f,0xc2,0xd4,0xa9,0x46,0x15,0x60,0xae,0xa1, 0x2b,0xb4,0x7a,0x79,0x4d,0x58,0xc6,0x6e,0x32,0x76,0xba,0x3e,0xd2,0x6b,0xd8,0x15, 0xcf,0xda,0x6d,0xdc,0xb1,0x23,0x3c,0x8c,0xf4,0x3d,0xfe,0xa7,0x35,0xf1,0x11,0xc5, 0x61,0xa7,0xfc,0x48,0x6e,0x7b,0x6e,0x9d,0x45,0xf0,0xc8,0xf0,0x5f,0xdb,0x77,0x5a, 0xd1,0x1b,0xe0,0xe5,0xb5,0x85,0xf1,0x8f,0xfb,0x4e,0x4d,0x4a,0x19,0x34,0xd8,0xdc, 0xe6,0x45,0x0a,0xa7,0xce,0x61,0xe8,0xb8,0x20,0x1e,0xd9,0xc5,0x7b,0x5c,0x2e,0xaf, 0x98,0x39,0x50,0x4d,0x41,0x47,0x5f,0xeb,0xd4,0xe2,0xcc,0xe5,0xfb,0x94,0xa6,0xfd, 0xeb,0x9f,0x0c,0xe9,0xb0,0xb5,0xcd,0xd4,0x11,0x28,0x24,0xc8,0xea,0xa0,0x7d,0x4d, 0x7e,0x94,0x7c,0xd9,0xf6,0xc5,0xed,0x97,0xd9,0xf4,0x2d,0x1b,0x4e,0x8c,0x60,0x26, 0x38,0x1f,0xec,0xa8,0x1f,0xd6,0xb9,0x2a,0x9b,0xd0,0x5d,0x4f,0x44,0xf0,0x26,0x8b, 0x93,0x1f,0xcb,0x59,0x1d,0x27,0xd1,0x5e,0x0a,0xd2,0x04,0x51,0xa7,0x14,0x01,0xdd, 0xe3,0x00,0x01,0xd0,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00, 0x66,0x78,0xa3,0x56,0x4d,0x07,0xc3,0x3a,0xb6,0xa5,0x33,0x6c,0x4b,0x4b,0x49,0x67, 0x2c,0x7b,0x6d,0x52,0x68,0x62,0x7a,0x23,0xf1,0x8f,0x5e,0xbd,0x93,0x57,0xb8,0x47, 0xb9,0x7d,0xa0,0x39,0x94,0x85,0xfe,0x32,0x49,0x23,0x3f,0x89,0xae,0xf8,0xab,0x23, 0x85,0xea,0x56,0x2e,0xb6,0x1e,0x20,0x8e,0xdd,0x5b,0x7b,0xc6,0x8d,0x2b,0x90,0xb8, 0xdb,0xb4,0x1f,0xcc,0x1c,0x70,0x6a,0x88,0xd8,0x82,0x37,0xc2,0x33,0x30,0x24,0x75, 0x20,0x52,0x6e,0xc8,0xa4,0x9b,0x32,0xaf,0xda,0xe6,0xe1,0x0a,0xc4,0x96,0xd2,0x8f, 0xf9,0xe7,0xb8,0xee,0x3f,0x4c,0x8c,0x66,0xb3,0xe7,0x4c,0xbe,0x46,0x66,0xda,0xea, 0x22,0x64,0x51,0x10,0xd9,0x8e,0x0a,0xe3,0x91,0x5a,0x5a,0xdb,0x12,0xdd,0xcd,0x59, 0x67,0x29,0x66,0x4b,0x48,0x91,0x29,0x18,0xf9,0xf1,0x83,0x4a,0x51,0xb8,0x45,0xd8, 0xe6,0xef,0x2c,0x25,0xd6,0x4f,0x97,0x79,0x74,0xbf,0x64,0xce,0x4c,0x70,0xf0,0x24, 0xfa,0x9f,0x4f,0x6a,0x85,0x0b,0x32,0xdc,0xee,0x6a,0x5a,0xb2,0xdb,0x4a,0xbe,0x56, 0x06,0xcc,0x15,0xad,0x0c,0xce,0x87,0xc2,0x9f,0x15,0x6e,0xfe,0x1a,0x5f,0xea,0x77, 0x7a,0x0b,0xda,0x47,0x3d,0xed,0xb3,0xdb,0x17,0xb8,0x42,0xcd,0x10,0x6e,0xa5,0x70, 0x47,0x23,0xb6,0x72,0x3a,0x1c,0x64,0x0a,0xc1,0xab,0x1b,0x5f,0x98,0xf3,0xb5,0x92, 0x5d,0x63,0x51,0x59,0xd1,0x1d,0x2d,0x6d,0xd4,0xac,0x7b,0xc6,0x0b,0xb1,0xc6,0x4e, 0x3f,0x0a,0xd2,0x9a,0xea,0x4c,0xd9,0xb9,0x6c,0x92,0x24,0x6b,0xf7,0xc3,0x75,0x50, 0x80,0x93,0xf5,0xe2,0xb4,0x95,0xba,0x90,0x8e,0xde,0xd3,0xe3,0xe7,0xc4,0x9d,0x0a, 0xc8,0x5a,0xda,0xf8,0xaf,0x5b,0x8a,0xd5,0x46,0xd5,0x37,0x0a,0x24,0xda,0x3d,0x03, 0x30,0x24,0x7e,0x75,0xe3,0x55,0xc8,0xb0,0x15,0x65,0xcd,0x2a,0x6a,0xff,0x00,0x77, 0xe4,0x76,0x47,0x19,0x5e,0x1a,0x73,0x1c,0xb6,0xad,0xaf,0x6a,0x7e,0x28,0xbf,0x6b, 0xff,0x00,0x12,0xea,0x37,0x7a,0xad,0xeb,0x8c,0x19,0xee,0xa4,0x2e,0xd8,0xf4,0x19, 0xe8,0x3d,0xab,0xd1,0xc3,0x61,0x29,0xe1,0xe3,0xc9,0x4a,0x29,0x2f,0x23,0x9a,0xa5, 0x59,0x54,0x77,0x93,0xb9,0xb3,0xf0,0xe6,0xc7,0xfb,0x5b,0xc6,0xda,0x35,0xb0,0x5c, 0x83,0x72,0xa4,0xe3,0xd0,0x1c,0xff,0x00,0x4a,0xdd,0xec,0x66,0x7d,0xa9,0xf6,0x3f, 0xb6,0x6a,0x56,0xaa,0x07,0x08,0x99,0xfc,0xcf,0xff,0x00,0x5a,0xb8,0xea,0xee,0x75, 0x50,0x56,0x47,0xb3,0xf8,0x07,0x43,0xc9,0x8c,0x95,0xac,0xcd,0x8f,0x75,0xd0,0xec, 0xc5,0xad,0xa8,0x38,0xc7,0x14,0x01,0xa3,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40, 0x05,0x00,0x14,0x01,0xe6,0x9f,0xb4,0xb5,0xf3,0xe9,0xdf,0x01,0x7c,0x6d,0x3c,0x24, 0xab,0x8d,0x3d,0xd3,0x23,0xb6,0xe2,0x07,0xf5,0xa1,0x6e,0x89,0x9e,0xc7,0xe4,0x8d, 0xd1,0x97,0x55,0xd4,0xa2,0x2e,0xe1,0x15,0x46,0xd4,0x88,0x1e,0x01,0x3d,0x7e,0x83, 0x8e,0x95,0xe8,0x23,0x84,0xad,0x6b,0x34,0x71,0x4f,0xa8,0xac,0x4c,0x1c,0xc5,0x10, 0x4d,0xe0,0x63,0x25,0xb1,0xfd,0x33,0x40,0x86,0x47,0x2e,0xeb,0x49,0xe3,0x53,0xf3, 0x90,0x08,0xf7,0xc1,0xe4,0x7f,0x9f,0x4a,0x8a,0x9b,0x17,0x0d,0xce,0x97,0xc6,0x7e, 0x2c,0xf0,0xc5,0xe7,0x80,0xf4,0x6d,0x3f,0x45,0x82,0xe2,0xce,0xef,0x4d,0x72,0xf2, 0x3c,0xf0,0x22,0xee,0x0e,0x83,0xcd,0x66,0x94,0x31,0x2f,0x99,0x14,0x15,0x04,0x0d, 0xab,0xc7,0xd7,0x0b,0x6b,0x73,0x54,0x79,0x46,0x94,0xed,0x7f,0x39,0xb9,0x60,0x51, 0x2e,0x25,0x67,0x00,0xf1,0xf2,0x93,0xc7,0xe7,0xd7,0xf1,0xae,0x98,0xec,0x62,0xf5, 0x67,0xa5,0x78,0x23,0xc1,0x72,0xf8,0xef,0xc5,0x8b,0xa3,0xda,0xdd,0x25,0x8a,0xa4, 0x2d,0x2c,0x97,0x2d,0x11,0x90,0xaa,0xa8,0x1d,0x14,0x72,0x49,0x25,0x40,0x03,0xd6, 0xb1,0x9c,0x8d,0x62,0x92,0x38,0x3f,0x13,0xd8,0x0d,0x1f,0x56,0x96,0x1c,0xc4,0xb7, 0x30,0x5d,0x35,0xac,0xad,0x17,0xdd,0x97,0x04,0x8c,0xfb,0xf2,0xbd,0x7d,0x0d,0x5d, 0x39,0x0a,0x6a,0xc2,0xe9,0x71,0x99,0xbc,0xc7,0x73,0xf2,0x27,0x24,0x9e,0x82,0xb5, 0x93,0x48,0xcd,0x2b,0x92,0xde,0x69,0x73,0xcf,0x6b,0x15,0xda,0x28,0x16,0xf2,0x48, 0xd1,0x24,0x92,0x42,0x44,0x6e,0xea,0x01,0x2a,0x1f,0x27,0x90,0x19,0x7b,0x77,0x1d, 0x2b,0x2e,0x73,0x4e,0x4b,0x19,0xb0,0xde,0x09,0x09,0x42,0x86,0x36,0x56,0xda,0xca, 0x7b,0x11,0xda,0xb6,0x56,0x33,0x66,0xf5,0x94,0x36,0xf7,0xda,0xbe,0x9d,0x69,0x73, 0x70,0x2d,0x2c,0xe7,0x96,0x24,0x96,0x73,0xd1,0x15,0x88,0x0c,0xc7,0xe9,0x93,0xf9, 0x57,0x3c,0x9b,0x6c,0xd6,0x3b,0x1e,0x93,0xf1,0xb3,0xc0,0x3a,0x0f,0xc3,0xab,0x3d, 0x16,0xe7,0xc2,0x57,0x17,0x42,0x6b,0xa6,0x91,0x5e,0x39,0x64,0x12,0xab,0xa2,0x9c, 0x06,0xcf,0xbf,0x1c,0x74,0x21,0xba,0x70,0x6a,0x52,0x63,0x4e,0xe7,0x8f,0xde,0xcb, 0x0f,0xf6,0x93,0x9b,0x05,0x58,0xe1,0x92,0x34,0x90,0xc4,0xbd,0x23,0x72,0x3e,0x65, 0x1e,0xd9,0xe4,0x7b,0x11,0x5b,0xd3,0x77,0x46,0x53,0xdc,0xf5,0x2f,0xd9,0xdb,0x4e, 0xfb,0x77,0xc4,0x08,0xa6,0x61,0x91,0x6d,0x0b,0xc9,0x9f,0x7e,0x83,0xf9,0xd3,0x91, 0x27,0xda,0x9e,0x1b,0xd2,0xcd,0xc6,0xa0,0x18,0x8e,0x81,0x47,0xe9,0x5c,0x33,0x77, 0x67,0x6d,0x35,0x68,0xa3,0xdf,0xfc,0x0d,0xa3,0x79,0x71,0xc7,0xc5,0x49,0x67,0xa4, 0x22,0x08,0xd0,0x28,0xed,0x40,0x0b,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05, 0x00,0x14,0x01,0xe7,0x1f,0xb4,0x85,0x83,0x6a,0x7f,0x02,0x3c,0x6d,0x6f,0x10,0xcb, 0x9d,0x39,0xdc,0x0f,0xf7,0x70,0x7f,0xa5,0x0b,0x72,0x67,0xb3,0x3f,0x22,0xae,0x0c, 0xba,0x9e,0xa0,0x1e,0x22,0xb6,0xd0,0x42,0x9f,0x74,0xff,0x00,0x0f,0x4f,0x4e,0x71, 0x9e,0x9f,0x5a,0xf4,0x0e,0x16,0x53,0xb6,0x74,0x1a,0x6d,0xd3,0x42,0x17,0x2f,0x3e, 0xd2,0x47,0x39,0x2b,0x9c,0xf3,0xdf,0x92,0x28,0x12,0x77,0x33,0xe4,0x56,0x00,0x93, 0x90,0x0d,0x0d,0x5c,0xa4,0xec,0x67,0xdd,0x69,0xc9,0x77,0xff,0x00,0x1f,0x45,0xa6, 0x50,0x73,0xb1,0xd8,0x91,0xf9,0x54,0x7b,0x34,0x3e,0x76,0xc7,0x3a,0xec,0x2b,0xe5, 0x80,0x02,0xf4,0x02,0xae,0xd6,0x24,0xb9,0x6b,0xe2,0x4d,0x4b,0x43,0xbd,0x8e,0xf7, 0x45,0x9e,0xf6,0xce,0xf5,0x14,0xaa,0xdc,0x5a,0x48,0x63,0x70,0x08,0xc1,0xe4,0x10, 0x47,0x1c,0x56,0x52,0x8b,0x4e,0xe8,0xd2,0x32,0xd3,0x53,0x9f,0x16,0xb7,0x5a,0x85, 0xf0,0xb8,0xbd,0xc4,0x71,0xc7,0x9d,0x91,0xe7,0x24,0x93,0xfc,0x44,0xd3,0x84,0x5e, 0xec,0x52,0x95,0xcd,0x7b,0x52,0xb0,0xda,0xcd,0x08,0xc2,0x96,0xc1,0x19,0xee,0x41, 0xe9,0x55,0x3d,0x50,0x41,0xd9,0x9d,0x97,0x8c,0x7c,0x7b,0xa1,0xdd,0xfc,0x34,0xd0, 0x74,0xab,0x6b,0x2b,0x64,0xd4,0xed,0xd4,0x7d,0xb2,0xe5,0xad,0x92,0x2f,0xb3,0xec, 0x2c,0xa3,0x63,0x0c,0x17,0x32,0x2e,0xc2,0xe5,0xb3,0xf7,0x00,0x1d,0xeb,0x1b,0x1a, 0x6a,0x79,0x2d,0x8d,0xc4,0x97,0x2c,0xf7,0x0c,0x08,0x33,0x48,0x5c,0x29,0xea,0x17, 0xb6,0x6b,0xa2,0x0a,0xc8,0xc6,0x4e,0xec,0xd0,0xb9,0xba,0x96,0x34,0xca,0x32,0x02, 0x79,0xda,0xfd,0x2a,0x65,0x0b,0x95,0x19,0x34,0x53,0x92,0xe7,0x54,0xba,0x01,0x23, 0x30,0x44,0xbd,0x03,0x60,0xb1,0x03,0xda,0x97,0x23,0x0e,0x72,0xf5,0x8d,0x90,0xb3, 0x88,0x2b,0x3b,0x4b,0x21,0x39,0x67,0x6e,0xa4,0xd6,0x91,0x56,0x44,0xb7,0x73,0xe8, 0x7f,0xd9,0x6b,0x4c,0xf3,0x6f,0xb5,0x6b,0xc2,0xa4,0x10,0xb1,0xc2,0xa7,0xea,0x72, 0x6a,0x24,0xc4,0x7d,0xbf,0xe0,0x7d,0x1b,0xcc,0x98,0x36,0xde,0xa7,0xbd,0x70,0xb3, 0xbd,0x68,0x8f,0x7a,0xf0,0xdd,0x80,0xb6,0xb6,0x0c,0x40,0xe9,0x40,0xcd,0x9a,0x00, 0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x33,0xfc,0x45,0xa3, 0xa7,0x88,0x7c,0x3f,0xa9,0xe9,0x73,0xe3,0xcb,0xbd,0xb6,0x92,0xdc,0xe7,0xfd,0xa5, 0x23,0xfa,0xd0,0x26,0xae,0x7e,0x32,0x78,0xab,0xc3,0x57,0x7e,0x1d,0xd7,0xf5,0x6d, 0x36,0xf3,0xfd,0x1a,0x5b,0x2b,0x87,0xb6,0x93,0x7b,0x6c,0x39,0x04,0x8c,0x7e,0x38, 0xae,0xe8,0x3e,0x68,0xdc,0xe1,0x6a,0xcc,0xc5,0x31,0xc7,0x6d,0xa4,0xda,0x24,0x40, 0x00,0xdb,0x9f,0x0a,0x3b,0x13,0x81,0xfc,0xaa,0x9b,0x11,0x41,0xce,0x54,0xf7,0x1e, 0x94,0x5e,0xe0,0x40,0xe0,0x1f,0xbb,0x9c,0x50,0x04,0x2d,0x1b,0x13,0x95,0x52,0x7d, 0x85,0x01,0x61,0x44,0x53,0x05,0x19,0x53,0x8f,0xa5,0x17,0x1d,0x86,0x95,0x60,0x7e, 0x70,0x47,0xe1,0x40,0x58,0x64,0x91,0x2c,0x80,0x86,0xe8,0x7b,0x50,0x06,0x6d,0xd6, 0x8d,0x0c,0x8e,0x1a,0x54,0x32,0x60,0xe4,0x07,0x24,0x81,0x49,0x45,0x5c,0x7c,0xcc, 0xd0,0xf0,0xee,0x86,0x9a,0xbe,0xb1,0x6d,0x69,0x23,0xf9,0x69,0x2b,0x80,0xcc,0x3b, 0x28,0xe4,0xe3,0xdf,0x02,0xac,0xe3,0xc6,0xe2,0x3e,0xaf,0x46,0x55,0x52,0xbd,0x91, 0xef,0x5e,0x10,0xf8,0x78,0xda,0xae,0x90,0x66,0xf0,0xdd,0xb6,0x97,0x00,0x32,0xbc, 0x30,0x5b,0xc9,0x6e,0x64,0x79,0xd9,0x15,0x59,0xf7,0x3e,0xd2,0x07,0x0e,0xb8,0xdc, 0x46,0x4f,0x02,0xa5,0xb4,0x8f,0x89,0x8d,0x3c,0x4e,0x35,0x7b,0x49,0x54,0x77,0xbf, 0x9f,0xe9,0xb1,0x87,0xe3,0xcf,0x85,0x71,0xad,0xd5,0xfe,0x95,0x7b,0x65,0x67,0xa3, 0xf8,0xa2,0xd2,0x36,0x94,0x0b,0x36,0x5d,0x92,0x10,0x37,0x79,0x72,0x2a,0xf0,0x18, 0x81,0x90,0x78,0x23,0x23,0x3d,0x69,0x5f,0xaa,0x3a,0x30,0xb8,0xec,0x4e,0x02,0xba, 0xa3,0x5e,0x57,0x8b,0x7e,0xb6,0x3c,0x4a,0x19,0xc4,0xb1,0xab,0x0c,0x8c,0x8c,0xe0, 0xd6,0x87,0xdc,0x2d,0x4f,0xad,0x7f,0x65,0x2d,0x15,0x8f,0x87,0xa2,0x7c,0x1d,0xf7, 0x57,0x45,0xbf,0xe0,0x2b,0x5c,0xf5,0x5d,0x8a,0x82,0xbb,0x47,0xdd,0x5e,0x04,0xd1, 0x02,0x2a,0x12,0xb5,0xc8,0x77,0x1e,0xa9,0x04,0x42,0x18,0x55,0x47,0x6a,0x00,0x7d, 0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x00,0xe3,0xa5, 0x00,0x7e,0x7b,0x7f,0xc1,0x40,0x7e,0x0a,0x4d,0xa0,0x78,0x8d,0xbc,0x6f,0xa2,0xc2, 0x5b,0x48,0xd5,0xca,0xad,0xf2,0x20,0xe2,0x3b,0x80,0x3a,0x9f,0xf7,0x87,0x3f,0x5c, 0xd6,0xd4,0xa7,0x6d,0x19,0xcf,0x56,0x17,0xd5,0x1f,0x1c,0x4b,0x78,0x66,0x58,0x94, 0x00,0x16,0x35,0xd8,0x00,0x1d,0xb9,0x3f,0xd6,0xb7,0x6c,0xc5,0x22,0x5b,0x6b,0x63, 0x36,0x32,0xbf,0x95,0x17,0x02,0xda,0x69,0x00,0x9e,0x45,0x17,0x02,0xcc,0x1a,0x4a, 0x67,0xe6,0x20,0x7e,0x14,0xae,0x87,0xb1,0x69,0xf4,0xd8,0x90,0x61,0x48,0xa3,0x99, 0x01,0x42,0xe7,0x4c,0x57,0x38,0x00,0x66,0x8b,0xa1,0x19,0x73,0x69,0xbe,0x53,0x64, 0x0a,0xa1,0x95,0xa5,0xb5,0x27,0xb5,0x3b,0x8b,0x72,0x9a,0x99,0xb4,0xe9,0xd2,0x7b, 0x66,0x64,0x92,0x36,0x0c,0xac,0x3b,0x11,0xd2,0xaa,0xe6,0x55,0x29,0xc6,0xa4,0x5c, 0x24,0xb4,0x67,0x5d,0xa5,0x7c,0x57,0x6d,0x3e,0x32,0x05,0xce,0xa3,0xa5,0xc8,0xcc, 0xae,0xeb,0x6a,0xed,0xe5,0xbb,0xa9,0xca,0xb6,0x01,0xea,0x0f,0x23,0x23,0x8a,0x7c, 0xd6,0x3e,0x52,0xae,0x49,0x88,0xa2,0xff,0x00,0xd9,0xdd,0xd7,0xad,0x99,0x4b,0x5d, 0xf8,0xb7,0x2d,0xfb,0xb7,0xd8,0xcd,0xd5,0xdd,0xd9,0x80,0x5b,0x2d,0xdc,0xc0,0x2f, 0x96,0x81,0x76,0x8c,0x77,0x24,0x0e,0x07,0xff,0x00,0x5a,0x93,0x77,0x2e,0x86,0x47, 0x5a,0xad,0x48,0xcf,0x12,0xf4,0x5f,0x7b,0xb1,0xc5,0x5a,0x40,0xd2,0x4b,0x14,0x36, 0xe0,0xb3,0xb9,0x08,0x8a,0x3b,0x93,0xc0,0xa6,0xdd,0x91,0xf5,0x67,0xe8,0xe7,0xec, 0xd5,0xe0,0x07,0xd2,0xb4,0x4b,0x15,0x91,0x30,0x2d,0xa2,0x11,0xe7,0xd5,0xcf,0x2d, 0xfc,0xeb,0x8a,0xa4,0xae,0x6f,0x46,0x3d,0x4f,0xaf,0x7c,0x2f,0xa6,0x0b,0x68,0x15, 0x8a,0xe3,0x02,0xb2,0x3a,0x4e,0x84,0x9c,0x9a,0x00,0x4a,0x00,0x28,0x00,0xa0,0x02, 0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0xc9,0xf1,0x67,0x85,0x34,0xbf, 0x1c,0x78,0x76,0xfb,0x43,0xf1,0x3d,0xaa,0x5e,0x69,0xb7,0x91,0x98,0xe5,0x89,0xbf, 0x42,0x0f,0x62,0x3a,0x83,0x40,0x9a,0xb9,0xf2,0x4c,0x9f,0xf0,0x4d,0xff,0x00,0x08, 0xe9,0xf7,0xd3,0x5c,0x4d,0xe2,0x3f,0x10,0xdd,0xdb,0x17,0x2d,0x1d,0xb2,0xa4,0x51, 0xed,0x5e,0xc0,0xb6,0x09,0x3f,0xa5,0x57,0x3b,0x23,0xd9,0x23,0x4a,0xd3,0xf6,0x35, 0xf0,0x56,0x96,0x71,0x16,0x95,0x71,0x73,0x8f,0xe2,0xb8,0xb8,0x76,0xcf,0xe4,0x45, 0x1c,0xec,0xae,0x44,0x6a,0xc1,0xfb,0x2d,0x78,0x46,0x31,0x81,0xe1,0xdb,0x13,0xfe, 0xf2,0xb1,0xfe,0x66,0x97,0x33,0x0e,0x48,0xf6,0x1d,0x3f,0xec,0xab,0xe0,0xe9,0x97, 0x0f,0xe1,0xdb,0x21,0xee,0x9b,0x94,0xfe,0x86,0x8e,0x66,0x1c,0x8b,0xb1,0x89,0xa9, 0x7e,0xc7,0x5e,0x10,0xb9,0x56,0xf2,0x74,0xeb,0xab,0x52,0x7f,0x8a,0x0b,0x97,0x18, 0xfc,0x09,0x22,0x9f,0x3b,0x13,0x82,0x67,0x09,0xe2,0x1f,0xd8,0x86,0xdc,0x86,0x7f, 0x0f,0xeb,0x17,0xb6,0xed,0xda,0x3b,0xb8,0x96,0x45,0x3f,0x88,0xc1,0xfe,0x74,0xf9, 0xd9,0x2e,0x92,0xe8,0x79,0x27,0x8b,0xbf,0x65,0xef,0x1b,0x78,0x6d,0x5d,0xd3,0x4f, 0x4d,0x56,0xdd,0x79,0xf3,0x2c,0x1b,0x79,0xc7,0xfb,0x87,0x0d,0xf9,0x03,0x56,0xaa, 0x58,0x87,0x49,0xa3,0xca,0xef,0x7c,0x35,0x2d,0xac,0xef,0x0d,0xdc,0x12,0xc1,0x32, 0x1c,0x34,0x72,0xa9,0x56,0x07,0xdc,0x1e,0x95,0xa2,0x9d,0xcc,0xdc,0x5a,0x31,0xef, 0xb4,0x66,0x88,0x9d,0xcb,0xc5,0x5a,0x64,0x9c,0xd6,0xa1,0xa7,0x88,0xd8,0xed,0x02, 0xa9,0x31,0x34,0x63,0x4a,0xe9,0x19,0x3c,0x0c,0xfa,0x55,0x08,0xf6,0xaf,0xd9,0x6b, 0xe1,0x0d,0xff,0x00,0xc4,0x8f,0x1a,0x43,0xa8,0x1b,0x72,0xd6,0x56,0x8d,0x95,0x76, 0x1f,0x29,0x7f,0x5f,0xa0,0xfe,0x78,0xac,0x2a,0xd4,0xb6,0x85,0xc6,0x1c,0xce,0xc7, 0xea,0x4f,0x80,0x3c,0x11,0x16,0x8b,0x63,0x6f,0x6f,0x02,0x10,0x91,0xae,0x32,0x47, 0x24,0xf7,0x26,0xb9,0x4e,0xc8,0xab,0x2b,0x1e,0x93,0x0c,0x42,0x08,0xc2,0x2f,0x6a, 0x06,0x3a,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02, 0x80,0x0a,0x00,0x28,0x00,0x65,0x0c,0x30,0xe0,0x11,0xef,0x40,0x11,0x9b,0x58,0x49, 0xe6,0x31,0x40,0x00,0xb5,0x88,0x74,0x41,0x40,0x07,0xd9,0xa2,0xfe,0xe0,0xa0,0x04, 0x6b,0x38,0x5b,0xac,0x62,0x80,0x20,0x97,0x48,0xb6,0x94,0x72,0xa0,0x7e,0x14,0x01, 0x9f,0x75,0xe1,0x48,0x27,0x53,0xb5,0x54,0xd0,0x07,0x9f,0xf8,0xe3,0xe0,0x7e,0x83, 0xe3,0x08,0x19,0x35,0xfd,0x2a,0xda,0xf3,0x8e,0x24,0x65,0xc3,0xaf,0xd1,0x87,0x23, 0xf3,0xa1,0x3b,0x09,0xab,0x9f,0x34,0x7c,0x49,0xfd,0x8c,0xae,0xad,0xa3,0x9a,0x7f, 0x03,0xce,0x6e,0x94,0x64,0xfd,0x8a,0xec,0x80,0xff,0x00,0x45,0x7e,0x87,0xf1,0xc7, 0xd6,0xb4,0x8c,0xec,0x66,0xe9,0xa6,0x7c,0x7f,0xf1,0x03,0xc2,0x77,0x9e,0x14,0xbf, 0x9a,0xcf,0x57,0xb5,0x9e,0xce,0xea,0x22,0x43,0xc3,0x3a,0x15,0x65,0xfc,0x0d,0x6f, 0x19,0x5c,0xc1,0xab,0x16,0x3e,0x06,0x7e,0xcd,0xfe,0x26,0xf8,0xf7,0xe2,0x45,0x8f, 0x47,0xb6,0x96,0xd7,0x41,0x85,0xc0,0xbb,0xd5,0x25,0x52,0x23,0x41,0xdd,0x54,0xff, 0x00,0x13,0x7b,0x0a,0x89,0xd6,0xb6,0x88,0xb8,0xd3,0x6c,0xfd,0x55,0xf8,0x45,0xf0, 0x4b,0x47,0xf8,0x61,0xe1,0xbb,0x5d,0x27,0x40,0xb7,0x11,0xc3,0x0a,0x80,0xd2,0xb0, 0xf9,0xa4,0x23,0xb9,0xae,0x7f,0x36,0x74,0x25,0x63,0xd4,0xa0,0xb7,0x4b,0x64,0x0b, 0x18,0xe9,0xde,0x81,0x92,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05, 0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14, 0x00,0x50,0x01,0x40,0x05,0x00,0x29,0x39,0x18,0x6e,0x45,0x00,0x57,0x9a,0xc2,0x09, 0xc7,0xce,0x80,0x50,0x07,0x29,0xe2,0xef,0x83,0xde,0x11,0xf1,0xec,0x51,0xc7,0xe3, 0x4d,0x07,0x4a,0xd6,0x52,0x23,0x94,0xfb,0x64,0x01,0xca,0xfd,0x0f,0x5f,0xc2,0x81, 0x58,0xdd,0xd0,0x7c,0x29,0xa5,0x78,0x67,0x4e,0x82,0xc3,0x42,0xb1,0xb5,0xb0,0xb2, 0x81,0x76,0xc5,0x6d,0x6d,0x10,0x8d,0x10,0x7b,0x01,0xc5,0x03,0x35,0x47,0x03,0x0a, 0x30,0x3d,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40, 0x05,0x00,0x7f,0xff,0xd9 }; /* created by reswrap from file cy_ecom_plus_s.jpg */ const unsigned char fxcj_icon_cy_ecom_plus_s[]={ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x01,0x2c, 0x01,0x2c,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03, 0x03,0x02,0x03,0x03,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07, 0x08,0x06,0x08,0x0c,0x0b,0x0d,0x0d,0x0c,0x0b,0x0c,0x0c,0x0e,0x0f,0x14,0x11,0x0e, 0x0f,0x13,0x0f,0x0c,0x0c,0x11,0x18,0x11,0x13,0x15,0x15,0x16,0x17,0x16,0x0d,0x11, 0x19,0x1a,0x18,0x16,0x1a,0x14,0x16,0x16,0x15,0xff,0xdb,0x00,0x43,0x01,0x03,0x03, 0x03,0x05,0x04,0x05,0x0a,0x05,0x05,0x0a,0x15,0x0e,0x0c,0x0e,0x0e,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xff,0xc0, 0x00,0x11,0x08,0x00,0x28,0x00,0x28,0x03,0x01,0x11,0x00,0x02,0x11,0x01,0x03,0x11, 0x01,0xff,0xc4,0x00,0x1a,0x00,0x00,0x02,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x09,0x04,0x07,0x08,0x00,0x05,0xff,0xc4,0x00, 0x30,0x10,0x00,0x01,0x03,0x02,0x04,0x04,0x03,0x08,0x03,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x11,0x00,0x06,0x12,0x31,0x07,0x08,0x21,0x41, 0x13,0x14,0x51,0x09,0x22,0x32,0x42,0x61,0x81,0xa1,0xc1,0x16,0x33,0x92,0xb1,0xff, 0xc4,0x00,0x18,0x01,0x00,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0xff,0xc4,0x00,0x1c,0x11,0x00,0x03, 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, 0x11,0x02,0x03,0x31,0x04,0x21,0x32,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11, 0x03,0x11,0x00,0x3f,0x00,0x6a,0x58,0x00,0xcb,0xdc,0xc3,0x71,0xca,0x05,0x33,0x3e, 0x3f,0x96,0x23,0xe6,0x4c,0xd9,0x40,0x91,0x49,0x61,0xb5,0xc8,0x7a,0x8a,0xd0,0x52, 0x52,0xb7,0x53,0xac,0x6b,0xba,0x54,0x0f,0xba,0x53,0x60,0x7a,0x75,0x38,0xa4,0x9b, 0x29,0x45,0xe8,0x1b,0x17,0x8b,0x79,0xa1,0x9d,0x2a,0xa2,0x71,0xc0,0x3e,0x94,0x9d, 0x21,0xaa,0xbd,0x32,0x0b,0xe9,0x27,0xd0,0xa9,0xa4,0x25,0x5e,0x9f,0x37,0x7c,0x28, 0x54,0x41,0x9e,0x43,0xe3,0x7f,0x12,0x6a,0x39,0x9e,0x8f,0x02,0x75,0x53,0x86,0xf9, 0x96,0x9f,0x2a,0x6b,0x2c,0x3c,0xba,0x73,0x2f,0x47,0x90,0x1b,0x52,0xc0,0x5a,0x92, 0x0b,0xcb,0x17,0x48,0x25,0x56,0xb7,0x6c,0x10,0x4f,0x28,0xd4,0x18,0x44,0x1d,0x80, 0x05,0x63,0xc4,0x5e,0x62,0x2a,0xd9,0x63,0x8e,0x5c,0x49,0xa9,0xd1,0x18,0xa5,0xcb, 0x66,0x7d,0x61,0x71,0x8a,0xe5,0xa1,0x6a,0xba,0x23,0x95,0x32,0xde,0x92,0x95,0x26, 0xd7,0x4a,0x6f,0x8d,0xb9,0xf4,0x78,0xf0,0x5b,0xe4,0xb7,0x28,0x2b,0x5f,0xe6,0x3b, 0xf9,0x2a,0xb4,0x66,0x4c,0xbb,0x19,0xfd,0x36,0x05,0x28,0x91,0x60,0x08,0xfa,0x14, 0x9f,0xce,0x3a,0x33,0xf5,0x4f,0x51,0xcd,0xaf,0x8a,0xff,0x00,0x3a,0x81,0x0f,0x2d, 0xd3,0xe0,0x67,0x4e,0x3c,0x50,0xe4,0x50,0x69,0x86,0x03,0x14,0x88,0x8f,0xcd,0x79, 0xa0,0x12,0x3c,0x65,0xdd,0x2d,0xa4,0x1d,0x3b,0xf5,0x71,0x3d,0xbd,0x4e,0xd7,0xc6, 0x5d,0xba,0x67,0x6d,0x34,0xa1,0xb7,0x0e,0x5a,0xe4,0x9a,0xd6,0xa8,0xd4,0x29,0xf2, 0x04,0xa8,0x4c,0xba,0x92,0x48,0x52,0x41,0xeb,0xbd,0xf1,0xcc,0x68,0x43,0xcd,0x15, 0xd6,0x72,0xb6,0x59,0xab,0xd6,0xa6,0x5b,0xcb,0xd3,0xa1,0xbd,0x31,0xcb,0x9f,0x95, 0xb4,0x15,0x1f,0xc0,0xc0,0x02,0x2c,0x9d,0x52,0x54,0xe9,0x4d,0x3b,0x3d,0xc6,0x8b, 0xcf,0xbc,0x5c,0x79,0xe7,0x52,0xa1,0x72,0x7a,0x92,0xa2,0x3b,0x5c,0x93,0xd0,0x5f, 0x7f,0xa6,0x2c,0xd2,0x1e,0x7a,0x65,0xaa,0x7a,0x9a,0x65,0x25,0x4a,0x72,0x64,0xc0, 0x34,0x79,0x90,0x0a,0x88,0xd8,0x90,0xae,0xfe,0xf5,0x82,0xd4,0x6d,0xbf,0xd7,0x09, 0xd9,0xf8,0x34,0x6b,0xbf,0x67,0x15,0x28,0x4b,0xcd,0xb9,0xfa,0xb4,0x11,0xe2,0xa5, 0x98,0xac,0x41,0x42,0x9e,0x48,0x24,0x07,0x56,0xa5,0x2b,0x6e,0x80,0xdd,0x84,0xed, 0x89,0x56,0x2a,0x2e,0x8e,0xba,0x32,0x3c,0xaa,0xb2,0xaa,0x52,0x50,0x4f,0xf5,0xa8, 0xa7,0xf7,0xfb,0xc0,0x66,0x04,0x73,0x3b,0x4c,0xae,0xd6,0x79,0x7e,0xcf,0xb4,0xfc, 0x93,0x11,0xc9,0xf5,0x79,0x74,0xa7,0x58,0x6e,0x33,0x44,0x6a,0x75,0x0a,0x16,0x75, 0x29,0xf5,0x3e,0x19,0x5d,0x86,0xe4,0xd8,0x0d,0xf0,0x21,0xaf,0x44,0xb7,0x58,0xa3, 0xd6,0xb2,0xfb,0xda,0xaa,0xf4,0xba,0xcd,0x31,0xe6,0xee,0x2f,0x26,0x3b,0xac,0x94, 0x7a,0xfc,0x40,0x5b,0x16,0x68,0x0d,0x99,0xfe,0x19,0x6f,0xc2,0x5a,0x14,0x96,0xee, 0x52,0x85,0xa5,0x2b,0x1b,0x77,0x04,0x75,0xfb,0xe1,0x35,0x54,0x13,0x55,0x41,0x8c, 0xfb,0x35,0x32,0xef,0x92,0xe0,0xe5,0x72,0xae,0xe2,0x6c,0xaa,0x85,0x6d,0xc4,0x85, 0xdb,0xe2,0x43,0x4d,0x36,0x07,0xd8,0x29,0x6e,0x61,0x32,0x74,0x6e,0xbc,0xbf,0x11, 0x51,0x60,0x02,0xe0,0xb2,0x9c,0x3a,0xed,0xe8,0x3b,0x61,0x12,0x4c,0x9f,0x17,0xcf, 0x41,0x93,0x18,0x9d,0x21,0xe6,0xd4,0xdd,0xfd,0x2e,0x2d,0x80,0x0a,0x53,0x30,0xf2, 0xfa,0xcd,0x5d,0xdd,0x72,0xa2,0x32,0xfa,0x86,0xcb,0x65,0xd2,0x83,0xfa,0xc0,0x00, 0xb2,0xf9,0x5b,0xcb,0x69,0x5a,0x95,0x59,0xcb,0x31,0xaa,0x48,0x3b,0xa2,0x74,0x64, 0x49,0x49,0xff,0x00,0x40,0xe0,0xa0,0x5a,0x3c,0x36,0xc8,0xf1,0xa8,0x10,0xe3,0xd3, 0xe9,0xd4,0xe6,0x69,0x94,0x98,0x69,0xb3,0x31,0x23,0xc7,0x0c,0x34,0x81,0x7b,0xe9, 0x4a,0x00,0x00,0x0b,0x92,0x7a,0x0f,0xfb,0x80,0x0b,0x28,0x0c,0x00,0x7f,0xff,0xd9 }; /* created by reswrap from file cy_ecom_plus_n.jpg */ const unsigned char fxcj_icon_cy_ecom_plus_n[]={ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x01,0x2c, 0x01,0x2c,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03, 0x03,0x02,0x03,0x03,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07, 0x08,0x06,0x08,0x0c,0x0b,0x0d,0x0d,0x0c,0x0b,0x0c,0x0c,0x0e,0x0f,0x14,0x11,0x0e, 0x0f,0x13,0x0f,0x0c,0x0c,0x11,0x18,0x11,0x13,0x15,0x15,0x16,0x17,0x16,0x0d,0x11, 0x19,0x1a,0x18,0x16,0x1a,0x14,0x16,0x16,0x15,0xff,0xdb,0x00,0x43,0x01,0x03,0x03, 0x03,0x05,0x04,0x05,0x0a,0x05,0x05,0x0a,0x15,0x0e,0x0c,0x0e,0x0e,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xff,0xc0, 0x00,0x11,0x08,0x00,0x64,0x00,0x64,0x03,0x01,0x11,0x00,0x02,0x11,0x01,0x03,0x11, 0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x04,0x03,0x01,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x05,0x06,0x08,0x02,0x07,0x09,0x03,0x01, 0xff,0xc4,0x00,0x3f,0x10,0x00,0x01,0x03,0x03,0x02,0x03,0x05,0x05,0x05,0x06,0x04, 0x07,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x12,0x07,0x21, 0x31,0x08,0x13,0x22,0x41,0x51,0x14,0x61,0x71,0x91,0xa1,0x09,0x15,0x32,0x81,0xb1, 0x16,0x18,0x23,0x42,0x92,0xa2,0x24,0x33,0x34,0x52,0x62,0x72,0x93,0xb3,0xc1,0xe1, 0xf0,0xff,0xc4,0x00,0x19,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0xff,0xc4,0x00,0x29, 0x11,0x01,0x00,0x02,0x01,0x03,0x04,0x00,0x04,0x07,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x02,0x11,0x03,0x04,0x21,0x12,0x31,0x41,0x51,0x05,0x14,0x32,0xf0, 0x13,0x15,0x61,0x81,0x91,0xa1,0xd1,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11, 0x03,0x11,0x00,0x3f,0x00,0xea,0x8d,0x01,0x40,0x50,0x41,0xb8,0xc1,0xc4,0x87,0xb8, 0x69,0xa6,0x04,0xdb,0x5d,0xb7,0xef,0x7b,0xa3,0xee,0x77,0x51,0xa2,0x15,0xec,0x49, 0xf3,0x52,0x94,0x70,0x70,0x90,0x3e,0x64,0x81,0xcb,0x39,0xa2,0xc4,0x65,0x5c,0x27, 0x76,0xd9,0xd7,0x9a,0x75,0x0d,0xae,0xe9,0xc3,0x38,0xf7,0x94,0xa9,0x64,0x29,0x16, 0xc9,0x6b,0x69,0x48,0x1e,0xa7,0x72,0x55,0xf0,0xab,0x86,0xe6,0x8f,0x58,0x7f,0x68, 0xfd,0xa2,0x39,0x09,0xd5,0x7c,0x37,0xd6,0xb6,0xb3,0xfc,0xc5,0x94,0xa1,0xf4,0xa7, 0xf3,0x3b,0x69,0x86,0x7a,0x52,0x6b,0x57,0xda,0x2d,0xc1,0xd9,0xeb,0x4a,0x2e,0x13, 0x6f,0xd6,0x95,0x9f,0xc5,0xed,0x96,0xe5,0x60,0x7f,0x49,0x34,0xc1,0xd3,0x29,0xdd, 0x97,0xb6,0x0f,0x06,0xaf,0xfb,0x7d,0x87,0x88,0x16,0x36,0xca,0xba,0x09,0x65,0x71, 0xbf,0xee,0x25,0x34,0xc2,0x62,0x53,0xfb,0x47,0x12,0xb4,0x96,0xa0,0x09,0xfb,0x8f, 0x54,0x69,0xf9,0xe5,0x5d,0x04,0x79,0xed,0x2c,0x9f,0xc8,0x2b,0x35,0x13,0x09,0x18, 0x20,0x8c,0x8e,0x62,0x80,0xa0,0x28,0x03,0x40,0x50,0x14,0x05,0x05,0x5a,0xe3,0xc7, 0x1f,0xad,0x36,0x0e,0x25,0xca,0xb0,0x4c,0xd8,0xb3,0x6e,0x69,0xb4,0x2f,0x3e,0x4b, 0x5a,0x42,0xcf,0xd1,0x49,0xab,0x10,0xdd,0x6b,0xc2,0x25,0x13,0x8c,0x9a,0x4e,0xe4, 0x07,0xb4,0x21,0x8e,0x7d,0x72,0x05,0x5c,0x2f,0x4c,0x9e,0x1e,0x99,0xa4,0xa7,0x24, 0xfb,0x6c,0x5e,0xe0,0x1e,0x59,0x75,0xb2,0x91,0x9e,0x5e,0xbf,0x11,0xf3,0x14,0xc1, 0xc9,0xbe,0x5f,0x0f,0x74,0x25,0xf5,0x24,0x38,0x98,0x6b,0x07,0xc9,0x40,0x1f,0xd6, 0x9c,0xaf,0x54,0xa2,0xf7,0x7e,0xcb,0x7a,0x1e,0xef,0x95,0x31,0x16,0x06,0x4f,0x9a, 0x50,0x07,0xe9,0x4c,0xa7,0x52,0x19,0x2f,0xb1,0xb5,0x9a,0x24,0xa1,0x22,0xce,0x03, 0x6b,0x19,0x23,0x0b,0x38,0xe9,0x8e,0x99,0xc5,0x32,0xb9,0x86,0xce,0xec,0xab,0xc3, 0x7d,0x43,0xc3,0xee,0x32,0xc7,0x8e,0xcd,0xca,0x68,0xb4,0x3b,0x6f,0x92,0xb9,0x30, 0xbb,0xd3,0xdd,0x29,0x29,0xd8,0x12,0xa2,0x8e,0x99,0x0b,0x5a,0x70,0x7a,0xf3,0x34, 0x94,0xb4,0xc6,0x17,0x5e,0xb2,0xe6,0x28,0x03,0x40,0x50,0x14,0x05,0x07,0x28,0xee, 0xcd,0xb3,0xc6,0x3e,0xd3,0x77,0xa1,0x2c,0xba,0xe4,0x0b,0x8d,0xea,0x52,0x96,0x5b, 0x56,0x09,0x61,0xb2,0xac,0x60,0xf9,0x78,0x50,0x00,0x3e,0xfa,0xeb,0xa7,0x5c,0xce, 0x17,0x52,0xf3,0x5a,0xf0,0xda,0x17,0x2e,0xcb,0xfa,0x6b,0x7a,0x8d,0xb6,0x76,0xa1, 0x85,0xe9,0xb1,0xe4,0xb8,0x3c,0xbd,0x53,0x5e,0xaf,0xc0,0xac,0xbc,0x71,0xba,0xbc, 0x3d,0x67,0x68,0x1d,0x53,0x01,0x9f,0x68,0x87,0xae,0xdd,0x5a,0x52,0xb0,0x15,0xf7, 0x8d,0xb1,0xb5,0x15,0x9e,0xb8,0x52,0x81,0x05,0x43,0x38,0xeb,0xe6,0x91,0xe8,0x2a, 0x7c,0xb4,0x4f,0x69,0x5f,0x9c,0x98,0xef,0x08,0xae,0xa5,0x95,0xad,0x23,0x3a,0x37, 0xdc,0xf4,0xcc,0xe5,0x7f,0x13,0x6f,0xb3,0x15,0x47,0x58,0xdc,0xad,0xc4,0x8d,0xc0, 0xe7,0x04,0xf2,0xce,0x40,0x03,0x1e,0x43,0x13,0xe4,0xed,0xe2,0x57,0xf3,0x0a,0x47, 0x78,0x46,0x5d,0xd6,0x9c,0x41,0x82,0x12,0x11,0x05,0xa7,0x42,0x36,0xe5,0xc8,0xcf, 0xa1,0x45,0x47,0x68,0x1c,0xf0,0x7c,0xcf,0x3e,0x9e,0x75,0x27,0x69,0xa9,0x0d,0xc6, 0xff,0x00,0x4a,0x59,0xfe,0xf0,0x3a,0xb2,0xc0,0xd7,0x79,0x79,0x85,0x31,0x86,0x81, 0x00,0xad,0xc4,0xf8,0x73,0xf1,0xae,0x57,0xd2,0xbd,0x23,0x36,0x87,0x6a,0x6b,0xe9, 0x5e,0x71,0x59,0x59,0x1e,0xc8,0x9c,0x5a,0x5e,0xae,0xb8,0xcf,0xbc,0xdc,0x22,0xa9, 0xe2,0xfa,0xcd,0xb1,0x97,0x02,0xb1,0xdd,0x21,0xa6,0xd4,0xfb,0xca,0xe9,0xcf,0x39, 0x69,0x38,0xf5,0x02,0xb9,0x4c,0x37,0x6f,0xd1,0x70,0x92,0xa0,0xb4,0x05,0x20,0xe5, 0x24,0x64,0x1a,0xcb,0x0f,0xb4,0x01,0xa0,0x28,0x0a,0x06,0x0e,0x20,0x6a,0x31,0xa4, 0x34,0x2e,0xa1,0xbe,0x29,0x49,0x47,0xdd,0xd6,0xf7,0xe5,0x02,0xae,0x99,0x42,0x14, 0xa1,0xf5,0x02,0x8b,0x0e,0x3f,0x68,0x0e,0x20,0x4e,0xe1,0xe6,0xa1,0x6e,0xf7,0x6c, 0x8f,0x12,0x54,0xb0,0xd2,0x9b,0xdb,0x2c,0x28,0xa7,0xc5,0x8c,0x9e,0x44,0x1c,0xf2, 0xeb,0x5d,0x6b,0x69,0xac,0xe6,0x17,0x52,0x95,0xb4,0x62,0x5b,0x6a,0x37,0x6b,0xf9, 0x24,0x1f,0xbd,0x74,0xbc,0x65,0x28,0xf5,0x5c,0x39,0xcb,0x6f,0x9f,0xae,0x14,0x95, 0x7e,0xb5,0xda,0x37,0x13,0xe9,0xe6,0x9d,0xac,0x78,0x92,0xff,0x00,0xde,0xa6,0xc7, 0x25,0x95,0x07,0x61,0xea,0x28,0x2f,0x11,0x8c,0xe5,0xa7,0x91,0xfa,0x83,0xf4,0xae, 0x91,0xb9,0xaf,0x98,0x72,0xb6,0xce,0xde,0x24,0xde,0xbe,0x31,0xe9,0x0b,0xc2,0x7f, 0xc6,0xce,0x50,0x70,0x8c,0x15,0x49,0x88,0xa4,0x92,0x33,0xd3,0xc2,0x08,0x15,0xda, 0x37,0x34,0x79,0xad,0xb2,0xd4,0xf5,0x97,0x81,0xbe,0xe9,0x0b,0x8a,0x91,0xec,0xd7, 0x1b,0x5a,0x8a,0x4e,0x52,0x91,0x23,0x66,0x0e,0x3d,0x09,0x15,0xde,0x37,0x14,0xf1, 0x2f,0x3d,0xf6,0x97,0x8e,0xf5,0x43,0x78,0xc7,0x75,0x8e,0xde,0x96,0x81,0x0e,0x0c, 0x86,0x9f,0x43,0xb2,0x77,0x78,0x1c,0x0b,0xe4,0x90,0x4e,0x72,0x3d,0xea,0x15,0xe6, 0xde,0x5e,0x26,0xb1,0x11,0xed,0xeb,0xf8,0x76,0x9c,0xd6,0xd3,0x33,0x1e,0x16,0x6f, 0xb1,0x85,0xad,0x36,0x7e,0x16,0xc4,0x9c,0xf8,0x08,0x0b,0x87,0x2e,0x5e,0xe3,0xfe, 0xe9,0x12,0x83,0x29,0xfe,0xc8,0xab,0xf9,0xd7,0x82,0x1f,0x56,0xdd,0xd7,0x66,0xce, 0xa6,0xcd,0xaa,0x28,0x65,0x5b,0xd2,0x96,0xd2,0x9c,0x9e,0xb9,0x03,0x15,0xcd,0x82, 0xca,0x00,0xd0,0x14,0x05,0x06,0x88,0xed,0xbd,0xa9,0x86,0x9b,0xec,0xdf,0xa9,0xd2, 0x17,0xb1,0xdb,0x89,0x62,0xdc,0x8f,0x7f,0x78,0xea,0x77,0x8f,0xe8,0x0b,0xab,0x0b, 0x0e,0x56,0xb2,0x93,0x21,0xc2,0x84,0x14,0xee,0x08,0x5b,0x84,0xa9,0x61,0x20,0x04, 0xa4,0xa8,0xf5,0xf3,0xc0,0x3c,0xbc,0xfa,0x56,0x9a,0x37,0xaa,0x72,0x15,0x21,0x4d, 0x65,0x40,0xa5,0x01,0x65,0x44,0x7a,0x92,0x3f,0xf1,0x45,0xee,0x26,0x95,0x40,0x75, 0x2d,0x4c,0x4b,0x8c,0xb8,0xa2,0x90,0x10,0xe2,0x4a,0x4f,0x88,0x65,0x3c,0x8f,0xa8, 0x20,0xfc,0x28,0x70,0x4e,0xa7,0xb3,0x9c,0x10,0x7e,0x04,0x53,0x24,0x4f,0xa7,0x89, 0x73,0xbc,0x40,0x50,0x1b,0x92,0x46,0x41,0x03,0x20,0xd1,0x79,0xf0,0x4e,0xe3,0xc1, 0x08,0x51,0x00,0x0c,0x0c,0xd0,0x75,0x1b,0x84,0x5a,0x69,0x7a,0x7b,0x41,0x68,0x6b, 0x35,0xbe,0x3b,0xee,0x32,0xe5,0xaa,0x0b,0x97,0x37,0x9d,0x4e,0xd0,0xd3,0x8d,0xa0, 0xad,0x29,0x4f,0x4c,0x82,0x5c,0x56,0x7a,0xf3,0x35,0x32,0xe7,0x32,0xb0,0xfa,0x3a, 0x49,0x5b,0x0f,0xb2,0xa3,0xf8,0x55,0xb8,0x7e,0x75,0x94,0x48,0xa8,0x03,0x40,0x50, 0x14,0x14,0xc3,0xed,0x34,0xd4,0xc6,0x26,0x88,0xd1,0xb6,0x04,0x2f,0x06,0x75,0xc1, 0xd9,0x8b,0x4e,0x7a,0xa5,0x96,0xc2,0x7f,0x57,0x87,0xca,0xac,0x2c,0x39,0xee,0xdc, 0x21,0x39,0x13,0x1d,0x12,0x99,0x8f,0xec,0xcd,0x07,0x76,0xb8,0xf6,0xc5,0x3b,0xe2, 0x4a,0x76,0xa0,0x7f,0x32,0xbc,0x59,0xc7,0xa0,0x26,0xb4,0xde,0x7d,0x1a,0xed,0xf1, 0xdd,0xb8,0xdc,0x17,0x1e,0x19,0x5a,0xe4,0xbc,0xfa,0x23,0xa0,0x1c,0x78,0xc9,0x03, 0x03,0xc8,0x0e,0x6a,0xc7,0xeb,0x43,0xbf,0x2c,0xb5,0x03,0xf3,0xdf,0xbe,0x29,0x17, 0xe7,0xd4,0xf4,0xf6,0x9d,0x58,0x74,0xb9,0xcd,0x5b,0xdb,0x1b,0x30,0x4e,0x48,0xe5, 0xd3,0x97,0xa0,0xa0,0xc2,0xe9,0x77,0x9c,0xd5,0x81,0x98,0x2f,0xb0,0xd3,0x51,0xd0, 0x5c,0x90,0xcb,0x9b,0x48,0x51,0x2b,0x01,0x3b,0xb2,0x47,0x34,0xf8,0x47,0x4f,0x7f, 0x5a,0x2c,0x92,0x31,0x29,0x11,0x23,0x29,0x85,0x30,0xa5,0x14,0xa5,0x28,0x4a,0xc6, 0x0e,0xdc,0x7c,0x3f,0xf5,0x59,0x9a,0xcc,0xcc,0x4b,0xad,0x2f,0x5a,0xd6,0xd1,0x31, 0x99,0x9f,0xeb,0xef,0xef,0x8c,0xc3,0x3d,0x33,0x6f,0x7b,0x50,0xea,0x28,0xb6,0xf6, 0xf7,0x6f,0xb8,0x4d,0x66,0x23,0x40,0x8f,0xf7,0x94,0xa3,0xa7,0xc4,0x9a,0xd3,0x96, 0x7c,0xbb,0x53,0x2a,0xd5,0x6d,0x61,0x80,0x9b,0x5a,0x4b,0x2b,0x8e,0x90,0x84,0x84, 0xa8,0x90,0xa4,0xa7,0x96,0x3e,0x42,0xb0,0xe4,0x76,0xd2,0x0f,0x77,0x53,0xf6,0x13, 0xf8,0xd3,0x8a,0x09,0xad,0x00,0x68,0x0a,0x02,0x83,0x9a,0x5f,0x69,0x3e,0xa9,0x17, 0x2e,0x35,0x59,0xec,0xed,0xac,0xf7,0x76,0xab,0x3a,0x0a,0xc6,0x79,0x05,0xba,0xb5, 0x28,0xff,0x00,0x6a,0x51,0xf4,0xad,0x43,0x55,0x54,0x62,0x20,0xbd,0x0d,0xd7,0x4b, 0xa3,0xda,0xc3,0xa9,0x4a,0x59,0x42,0x39,0x14,0x60,0xee,0x51,0x50,0x23,0x18,0x38, 0x18,0xc1,0xce,0x7c,0xb1,0x55,0xb7,0x86,0x99,0xb5,0xbb,0xa8,0x1f,0x43,0x30,0x1f, 0x8f,0x0d,0xd2,0x87,0xa4,0x77,0xaf,0xbe,0x1a,0x4e,0x10,0x14,0xbf,0xc4,0x73,0xe2, 0x21,0x3c,0xbc,0xc9,0x20,0x51,0x32,0x6a,0x2e,0x95,0xcc,0x52,0xbb,0xd7,0x14,0xb4, 0xb6,0x08,0x52,0xc0,0x3f,0x88,0xe4,0xe4,0x72,0xe7,0xe1,0x14,0x52,0xed,0x5e,0xbb, 0xd3,0x72,0x59,0xb5,0x6a,0xc2,0xf3,0x52,0x61,0x25,0xb8,0x69,0x8f,0x21,0x05,0x2b, 0x61,0x03,0x04,0x23,0x1e,0x98,0xfa,0x51,0x31,0xc1,0x44,0x6d,0x52,0xe4,0x48,0x6c, 0xb7,0x2a,0xcf,0x6e,0x98,0xdb,0x69,0x52,0x1b,0x71,0xc4,0xe7,0x39,0x0a,0x07,0xcc, 0x64,0x8d,0xf9,0xf8,0x84,0x9a,0xf0,0xea,0xec,0x7a,0xed,0x36,0xad,0xed,0x19,0xf5, 0xfb,0x7f,0x9f,0xc4,0xcc,0x3b,0xd7,0x5b,0x11,0x89,0x88,0x94,0xbb,0xb2,0x95,0x8c, 0xea,0x1e,0x3d,0x68,0x38,0xae,0xa4,0x38,0x91,0x73,0xf6,0xd7,0x00,0x39,0xf0,0xb4, 0x14,0xe9,0xfa,0x22,0xbd,0xce,0x18,0xc4,0x3a,0xd2,0xca,0x33,0xcc,0xe7,0x26,0xb0, 0xe6,0x77,0xb4,0xab,0xb8,0x9a,0xc2,0x87,0x92,0x85,0x04,0xfb,0x39,0x19,0xa0,0x0d, 0x01,0x40,0x50,0x71,0xbb,0xb5,0xd6,0xaf,0xfd,0xa9,0xed,0x1d,0xaf,0xa7,0x6f,0xdc, 0xdb,0x17,0x03,0x09,0xb2,0x0e,0x46,0xd6,0x10,0x96,0xb9,0x7e,0x68,0x26,0xb5,0x0e, 0x95,0x86,0x95,0xb8,0xcc,0x83,0xf7,0x78,0x5b,0x7b,0xdc,0x96,0x94,0xac,0xb8,0x1c, 0x4a,0x76,0xff,0x00,0xc3,0xb7,0xcf,0x3e,0xb9,0xaa,0xb2,0xce,0xdf,0x6f,0x8d,0x32, 0x14,0xb5,0xca,0x98,0xcc,0x47,0x23,0x47,0x4a,0xd0,0x85,0x12,0x0b,0xea,0xe4,0x36, 0xa4,0x03,0xd7,0xff,0x00,0xba,0x64,0x80,0x6b,0x8e,0x90,0xf3,0x92,0x4a,0x16,0x50, 0xa4,0xaf,0x6e,0xe5,0x2c,0x73,0x00,0x0f,0x5f,0x79,0x34,0x19,0x5e,0xd1,0x31,0x17, 0x82,0xd5,0xde,0x42,0xde,0x98,0x95,0xa9,0x6e,0x29,0x6a,0x0e,0x12,0xb0,0x31,0xcd, 0x41,0x47,0x77,0x5a,0x24,0x7a,0x3b,0xea,0x3d,0x51,0xa8,0x3f,0x65,0x2d,0xd6,0x1b, 0xcb,0x2d,0x35,0x6c,0xb6,0xad,0xc7,0xa3,0x02,0xde,0xc5,0x6e,0x56,0x4a,0xb2,0xac, 0x78,0xb1,0x93,0xf0,0xcd,0x73,0xa6,0xa5,0x6f,0xf4,0xce,0x59,0xad,0xe2,0xdc,0xc4, 0xb7,0xb7,0xd9,0xe3,0x60,0xf6,0xfe,0x39,0xaa,0x52,0x86,0xe6,0xed,0x16,0x59,0x0e, 0x6e,0xf4,0x5a,0xf6,0x34,0x0f,0xc9,0x6a,0xad,0xcb,0x56,0xec,0xe9,0x8c,0x76,0xf2, 0x2b,0x2e,0x65,0x8c,0x82,0x1c,0x46,0x3d,0x45,0x04,0xf9,0xa3,0x96,0x92,0x7d,0xd4, 0x19,0x1a,0x02,0x81,0x35,0xce,0xe0,0xd5,0xa6,0xdd,0x2e,0x74,0xc2,0x52,0xc4,0x56, 0x96,0xfb,0x84,0x79,0x25,0x20,0x93,0xf4,0x14,0x1c,0x19,0xbd,0xde,0xdd,0xbf,0xde, 0x67,0xdd,0x26,0x12,0xa9,0x13,0xe4,0x39,0x29,0xc3,0x9f,0xe6,0x71,0x45,0x67,0xea, 0x4d,0x6d,0xd4,0xdc,0xb7,0x07,0x53,0x40,0x99,0xd4,0x36,0xac,0xf8,0x00,0x27,0xcc, 0x72,0xa0,0x4e,0xb4,0x21,0x09,0x21,0xb2,0xa4,0x73,0x27,0xc2,0x7c,0xe8,0x12,0xa9, 0x04,0x38,0x16,0x1c,0x3b,0x82,0x4a,0x46,0x40,0xe4,0x0e,0x33,0xd3,0xe1,0x41,0xf6, 0xe7,0x3e,0x7d,0xd1,0x9e,0xea,0x74,0xa5,0x3e,0x8e,0x60,0x15,0x92,0x76,0xe7,0xae, 0x07,0xe5,0x5c,0xe9,0xa5,0x5a,0x7d,0x31,0x86,0x62,0x95,0x8e,0xd0,0xbc,0x5f,0x66, 0x75,0x8b,0xbc,0x77,0x5f,0xde,0xd4,0x9e,0x82,0x1c,0x04,0x2b,0xfe,0xa3,0x8a,0x1f, 0x44,0x56,0xe4,0xb2,0xf9,0xb0,0x8d,0x89,0xe7,0x59,0x60,0xb2,0x0b,0x26,0x44,0xa6, 0xd0,0x91,0x9e,0x7c,0xe8,0x27,0x09,0x4e,0xd4,0x01,0xe8,0x28,0x3e,0x9a,0x02,0x83, 0xce,0x4c,0x66,0xa6,0x47,0x75,0x89,0x4d,0xa5,0xd6,0x5d,0x41,0x43,0x8d,0xa8,0x64, 0x29,0x24,0x60,0x83,0xee,0xc5,0x07,0x28,0x78,0xe7,0xd8,0x63,0x51,0xe8,0x4d,0x5d, 0x71,0x47,0x0f,0xa6,0x5b,0xef,0x5a,0x7c,0xac,0xb9,0x19,0xb7,0xdf,0xee,0x64,0x30, 0x83,0xcc,0x36,0xbd,0xde,0x15,0x10,0x0e,0x37,0x64,0x67,0x19,0x20,0x1e,0x55,0xac, 0xb7,0x16,0x68,0xdb,0xc7,0x05,0xf5,0xcd,0xa3,0xfd,0x4e,0x9d,0x98,0xa4,0xf9,0xaa, 0x3a,0xdb,0x78,0x7f,0x62,0x8d,0x17,0x30,0x87,0xdc,0xec,0x77,0x5b,0x4e,0x45,0xd6, 0xd9,0x71,0x87,0xcf,0xab,0xf1,0xd6,0x81,0xf3,0x22,0xaa,0x9a,0x17,0x20,0x0e,0x5b, 0x80,0x3e,0x99,0xa0,0xf3,0x53,0x99,0xf3,0xa0,0xc0,0x2f,0x26,0x83,0xa6,0xdf,0x67, 0x36,0x99,0x55,0xa3,0x80,0x6f,0x5c,0xe4,0x36,0x5b,0x55,0xe6,0xee,0xfc,0x94,0x15, 0x0f,0xc6,0xda,0x02,0x5a,0x49,0x1e,0xec,0xa1,0x5f,0x23,0x59,0x96,0x2d,0x2b,0x55, 0x9e,0x42,0xa3,0x29,0x46,0x9e,0xb6,0xf7,0x2c,0xf7,0xee,0x8f,0x1a,0xba,0x67,0xd2, 0x81,0xea,0x80,0x34,0x05,0x01,0x41,0xa4,0x38,0x83,0x69,0x33,0xb5,0x1c,0xdd,0xdc, 0xf9,0x8c,0x7c,0x85,0x06,0xad,0xd4,0xbc,0x37,0x55,0xcd,0x27,0xbb,0x52,0x90,0x7c, 0x88,0xa0,0x82,0xcb,0xe1,0x3d,0xe1,0x92,0x7d,0x9a,0x53,0x84,0x7a,0x1a,0x06,0x49, 0x5c,0x1b,0x91,0x35,0x44,0x5d,0x6c,0xf6,0x89,0xe9,0x3d,0x7b,0xf8,0x88,0x51,0x3f, 0x99,0x15,0x73,0x26,0x58,0x47,0xec,0xb1,0xa3,0xef,0x8b,0xdb,0x78,0xd2,0x76,0xe6, 0x09,0xea,0xa8,0x85,0xc6,0x31,0xfd,0x0a,0x02,0x99,0x5c,0xc9,0xc2,0x0f,0x61,0x4e, 0x17,0x46,0xb8,0x33,0x2e,0x5c,0x1b,0xec,0xa6,0xd2,0x77,0x18,0x4e,0x5c,0x55,0xdd, 0x2f,0xdc,0xac,0x00,0xac,0x7b,0x82,0x87,0xc6,0x9d,0x4b,0xd5,0x2b,0x43,0xa5,0xe2, 0xc7,0xb4,0xda,0xe2,0xc0,0xb5,0xc5,0x8f,0x06,0x0c,0x56,0xd2,0xcb,0x11,0x63,0xa0, 0x21,0xb6,0x9b,0x48,0xc0,0x4a,0x40,0xe8,0x05,0x46,0x53,0x5b,0x15,0xb9,0x57,0x07, 0xc2,0x96,0x3f,0x84,0x83,0x93,0xef,0xa0,0x99,0x84,0x84,0xa4,0x04,0xf2,0x02,0x80, 0xa0,0x0d,0x01,0x41,0xf6,0x82,0x35,0xa8,0x34,0x5b,0x37,0x89,0x0a,0x92,0xdb,0x8a, 0x65,0xf2,0x39,0xe3,0x98,0x34,0x11,0x89,0x3a,0x0a,0x63,0x59,0xee,0xd4,0xdb,0x83, 0xdf,0xca,0x81,0xb9,0xdd,0x23,0x35,0xa2,0x4a,0xe2,0x95,0x7f,0xcb,0x83,0x40,0x95, 0x56,0x35,0xb7,0xfe,0x74,0x55,0xa3,0x1e,0xa9,0xa0,0xcd,0xbb,0x73,0x28,0xfe,0x40, 0x3f,0x2a,0x01,0xc8,0xad,0x82,0x0e,0x05,0x02,0xdb,0x74,0x72,0xeb,0xa8,0x69,0x91, 0x95,0xa8,0xe0,0x50,0x6c,0xcb,0x6c,0x24,0xc0,0x88,0x86,0x90,0x39,0x81,0xcc,0xfa, 0x9a,0x05,0x54,0x05,0x00,0x68,0x0a,0x02,0x80,0xa0,0x28,0x3e,0x14,0xa4,0xf5,0x00, 0xd0,0x60,0xa8,0xed,0xa8,0x73,0x40,0xa0,0x49,0x26,0xd3,0x11,0xd0,0x7b,0xc6,0x50, 0xaf,0x88,0xa0,0x6e,0x5e,0x98,0xb7,0x38,0x7c,0x51,0xc7,0xe4,0x48,0xa0,0x5d,0x6e, 0xb3,0x43,0x84,0xad,0xd1,0xd9,0x4a,0x55,0xeb,0x40,0xe5,0x40,0x50,0x14,0x01,0xa0, 0xff,0xd9 }; /* created by reswrap from file cy_ecom_plus_b.jpg */ const unsigned char fxcj_icon_cy_ecom_plus_b[]={ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x01,0x2c, 0x01,0x2c,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03, 0x03,0x02,0x03,0x03,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07, 0x08,0x06,0x08,0x0c,0x0b,0x0d,0x0d,0x0c,0x0b,0x0c,0x0c,0x0e,0x0f,0x14,0x11,0x0e, 0x0f,0x13,0x0f,0x0c,0x0c,0x11,0x18,0x11,0x13,0x15,0x15,0x16,0x17,0x16,0x0d,0x11, 0x19,0x1a,0x18,0x16,0x1a,0x14,0x16,0x16,0x15,0xff,0xdb,0x00,0x43,0x01,0x03,0x03, 0x03,0x05,0x04,0x05,0x0a,0x05,0x05,0x0a,0x15,0x0e,0x0c,0x0e,0x0e,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xff,0xc0, 0x00,0x11,0x08,0x00,0xc8,0x00,0xc8,0x03,0x01,0x11,0x00,0x02,0x11,0x01,0x03,0x11, 0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x04,0x03,0x01,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x05,0x06,0x02,0x07,0x09,0x08,0x01, 0xff,0xc4,0x00,0x43,0x10,0x00,0x01,0x03,0x03,0x03,0x01,0x04,0x08,0x04,0x03,0x04, 0x09,0x05,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x12,0x21,0x31, 0x07,0x13,0x41,0x51,0x08,0x14,0x22,0x61,0x71,0x81,0x91,0xa1,0x15,0x32,0xb1,0xc1, 0x09,0x16,0x42,0x23,0x62,0x92,0xa2,0x24,0x33,0x43,0x52,0x63,0x72,0x82,0xb2,0xd1, 0x34,0x53,0x93,0xc2,0xd2,0xff,0xc4,0x00,0x1a,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05, 0x06,0xff,0xc4,0x00,0x29,0x11,0x01,0x01,0x00,0x02,0x01,0x04,0x02,0x02,0x00,0x07, 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x03,0x12,0x21,0x31,0x41,0x04, 0x51,0x05,0x61,0x13,0x14,0x71,0xa1,0xb1,0xc1,0xf0,0x22,0x91,0xff,0xda,0x00,0x0c, 0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xea,0x8d,0x01,0x40,0x50,0x14, 0x05,0x01,0x40,0x1a,0x06,0x57,0x7b,0xdd,0xbf,0x4f,0xc1,0x72,0x6d,0xf6,0x74,0x4b, 0x74,0x34,0x7e,0x69,0x12,0x9d,0x4b,0x68,0x1f,0xf5,0x13,0x8a,0x0a,0x8c,0x4e,0xde, 0x3b,0x39,0x9c,0xf9,0x66,0x2e,0xb8,0xd2,0xeb,0x70,0x1c,0x14,0xfa,0xfb,0x63,0xf5, 0x34,0x5d,0x55,0xa2,0xdb,0xaa,0x2c,0xd7,0xac,0x7e,0x0d,0x76,0xb6,0x4f,0xcf,0x4f, 0x55,0x92,0x87,0x33,0xf4,0x26,0x88,0x93,0xfa,0xd0,0x06,0x80,0xc8,0x34,0x06,0x72, 0x28,0x0a,0x02,0x80,0xa0,0x28,0x0a,0x02,0x80,0xa0,0x28,0x0a,0x02,0x80,0xa0,0x28, 0x0a,0x02,0x80,0xa0,0x28,0x0a,0x01,0x47,0x03,0x8e,0xb4,0x1e,0x27,0xf4,0x85,0x8f, 0x70,0xed,0x5b,0x5a,0x3d,0x21,0xc5,0xba,0xe5,0x9e,0x0e,0x58,0x82,0xc6,0x7d,0x80, 0x9f,0xea,0x73,0x1e,0x6a,0x3c,0xe7,0xcb,0x03,0xc2,0xac,0x75,0xc7,0xb4,0x69,0xd9, 0x7d,0x94,0x3a,0x32,0x0b,0x3b,0x87,0x86,0x47,0x4a,0xd3,0x4d,0x57,0x7c,0xec,0x4f, 0x5a,0xa2,0xed,0x32,0x5d,0xbe,0x64,0x31,0x1d,0xc7,0x09,0x65,0x84,0x2d,0x48,0xee, 0xd0,0x30,0x12,0x39,0x18,0xcf,0x9f,0xbc,0xd1,0x34,0xc2,0x23,0x5d,0xb0,0xe9,0x42, 0x3f,0x09,0xbb,0x5f,0x19,0x4a,0x3a,0x08,0xb3,0xf6,0x8f,0xa0,0x22,0xa2,0x69,0x3d, 0x0b,0xd2,0x43,0xb7,0xdd,0x2e,0x41,0x72,0xf7,0xa9,0x9c,0x09,0x18,0x01,0xf0,0x5e, 0x4f,0xf9,0xb7,0x53,0x46,0xbf,0x4b,0x14,0x0f,0xe2,0x13,0xda,0xfd,0x94,0x81,0x75, 0x76,0x1c,0xb2,0x3c,0x26,0x40,0x6d,0x3f,0xf6,0xa1,0x26,0x9a,0x4d,0x45,0xce,0xcf, 0xfc,0x50,0xb5,0x43,0x1b,0x13,0x7b,0xd3,0x16,0x39,0x58,0xfc,0xc5,0xae,0xf1,0xb2, 0x7e,0x1e,0xd9,0xfd,0x2a,0x69,0x3a,0x62,0xfb,0x66,0xfe,0x28,0x96,0x17,0xca,0x53, 0x7c,0xd1,0xd3,0x23,0xf9,0xaa,0x34,0xdd,0xff,0x00,0x65,0x36,0x31,0xf5,0xa6,0x8e, 0x95,0xf6,0xcb,0xfc,0x46,0x3b,0x29,0xb9,0xec,0x4c,0xd1,0x7d,0xb7,0xad,0x5f,0xfb, 0x8c,0x21,0xc0,0x3e,0x25,0x2b,0x27,0xed,0x4d,0x25,0xc7,0x4d,0x81,0x67,0xf4,0xc1, 0xec,0x86,0xf6,0x13,0xea,0xfa,0xce,0x14,0x72,0xae,0xa2,0x63,0x0f,0x31,0x8f,0x9a, 0x90,0x13,0xf7,0xa6,0x93,0xa6,0xaf,0x16,0x7e,0xd6,0xb4,0x4d,0xfc,0x20,0xd9,0x75, 0x76,0x9b,0x9b,0xbf,0xf2,0xa5,0xab,0x83,0x44,0x9f,0x96,0xec,0xd4,0x4d,0x2d,0x4d, 0xba,0x97,0x90,0x95,0xb4,0xa4,0xad,0x0a,0x19,0x0a,0x49,0xc8,0x3f,0x3a,0x0c,0xa8, 0x0a,0x02,0x80,0xa0,0x28,0x0a,0x02,0x80,0xa0,0x28,0x0a,0x02,0x80,0x34,0x15,0xfd, 0x7b,0x7c,0x6e,0xc1,0xa5,0xa6,0xc9,0x71,0xc0,0xda,0x96,0x03,0x28,0x3f,0xde,0x57, 0x1c,0x7c,0xb2,0x7e,0x54,0x1a,0x31,0x12,0xed,0xef,0x24,0x8f,0xec,0x4d,0x5d,0x36, 0x15,0x6f,0x81,0x23,0xfa,0x10,0x41,0x3e,0x06,0x81,0x07,0x34,0xb5,0xbe,0x40,0x3e, 0xc0,0xe7,0xcc,0x53,0x66,0xcc,0x64,0xe8,0x18,0x0f,0x67,0xd8,0x41,0x27,0xc3,0x18, 0xa6,0xd7,0xaa,0xa2,0x26,0x76,0x51,0x0d,0xdc,0xed,0x42,0x73,0xee,0xa6,0xce,0xa4, 0x0d,0xc3,0xb1,0x86,0x1d,0xc8,0xee,0xc1,0x1f,0x0c,0xd5,0xdb,0x5d,0x4a,0x9d,0xd7, 0xd1,0xde,0xdd,0x2f,0x7f,0x7d,0x6d,0x88,0xe7,0xbc,0xb2,0x9a,0x6c,0xea,0x8a,0x6d, 0xdb,0xd1,0x7a,0xd2,0xee,0xe2,0x8b,0x6b,0x48,0x3f,0xf0,0x94,0xa4,0x7e,0x86,0x8b, 0xd9,0x50,0xb9,0xfa,0x2e,0x46,0x49,0x3e,0xae,0x99,0xad,0x1f,0x24,0xb9,0xbb,0xf5, 0xa2,0x6a,0x2a,0x93,0xfd,0x1b,0xe5,0xc5,0x59,0x31,0xa5,0xc8,0x46,0x0f,0x1b,0xdb, 0x07,0xf4,0x22,0x86,0x8d,0xed,0x9d,0x93,0xdc,0xec,0xae,0x48,0x33,0x9e,0x32,0x82, 0x80,0x08,0xc8,0x3e,0xce,0x33,0x9e,0x0e,0x6a,0x9d,0x29,0x4b,0x7b,0x3a,0x8b,0x4b, 0xbc,0x1d,0xd3,0xb7,0x2b,0xa5,0xad,0xd4,0x9c,0x85,0xc1,0x90,0xb6,0x4e,0x7f,0xe9, 0x23,0xef,0x51,0x75,0xe9,0xd0,0x8f,0x43,0x0e,0xd4,0x35,0x17,0x69,0x9d,0x99,0xcf, 0xfe,0x7c,0x90,0x67,0x5c,0xad,0x13,0xcc,0x21,0x39,0x78,0x0b,0x7d,0xbe,0xed,0x0b, 0x49,0x5e,0x3a,0xa8,0x6e,0xc6,0x7c,0x40,0x19,0xe7,0x24,0xca,0xe5,0x9c,0xd5,0xec, 0xf4,0x0d,0x46,0x45,0x01,0x40,0x50,0x14,0x05,0x01,0x40,0x50,0x14,0x05,0x01,0x41, 0xe5,0xcf,0x4d,0xee,0xd2,0xff,0x00,0x94,0x61,0x69,0x5b,0x3b,0x0e,0xed,0x76,0x5b, 0xaf,0x4c,0x71,0x20,0xff,0x00,0x4b,0x61,0x29,0x4e,0x7e,0x25,0x6a,0xff,0x00,0x0d, 0x58,0xde,0x0f,0x31,0xc2,0xed,0x95,0xc4,0x90,0x0b,0xa7,0xeb,0x5a,0x6f,0x4b,0x04, 0x1e,0xda,0x88,0xdb,0xb9,0xd3,0xf5,0xa1,0x71,0x4f,0xc2,0xed,0xa9,0x20,0x7b,0x4f, 0x0c,0x7b,0xcd,0x13,0xa5,0x79,0x8d,0xac,0xae,0xfd,0xe3,0x0d,0x2a,0xdf,0x29,0xd7, 0x1e,0x68,0xbc,0x84,0xb6,0x9d,0xe5,0x48,0x1b,0x49,0x3c,0x67,0x18,0xde,0x8c,0x83, 0x82,0x37,0x27,0x8e,0x45,0x44,0xd1,0x76,0xfb,0x4e,0x6d,0xb5,0x04,0xcc,0x4a,0xda, 0x27,0xc1,0xc4,0x94,0x9e,0x80,0xf8,0xfc,0x73,0x4d,0x1a,0x49,0x46,0xed,0x1a,0x03, 0xbc,0x77,0x88,0x1e,0x1c,0x2a,0xa6,0x8d,0x25,0x19,0xd6,0x30,0x5d,0x03,0x0b,0x4f, 0xce,0x9a,0x43,0x8f,0xc5,0xad,0xf2,0xf9,0xcb,0x64,0xfb,0xe9,0xa4,0x60,0xe4,0x7b, 0x74,0x91,0x94,0x84,0x7c,0x8d,0x4d,0x29,0x94,0x8d,0x37,0x02,0x46,0x70,0x94,0xe0, 0xd0,0xda,0x1e,0x56,0x82,0x80,0xf8,0x20,0xa1,0x07,0xe2,0x31,0x57,0xba,0xed,0x5c, 0xb9,0x76,0x55,0x15,0xc0,0x49,0x42,0x76,0xf5,0x27,0x15,0x62,0xf5,0x37,0x67,0xa1, 0xee,0x98,0x6e,0xcd,0xd9,0x08,0xb9,0xa5,0x01,0x0a,0xbe,0xcf,0x91,0x70,0x4f,0x9f, 0x75,0xbb,0xbb,0x6b,0xfc,0x88,0x07,0xfe,0xaa,0x95,0x8c,0xae,0xeb,0x78,0xd4,0x64, 0x50,0x14,0x05,0x01,0x40,0x50,0x14,0x05,0x01,0x40,0x50,0x14,0x1c,0xdb,0xf4,0xfa, 0xd4,0x86,0xef,0xdb,0xb1,0xb7,0xa1,0x59,0x45,0xa6,0xd8,0xc4,0x7c,0x0f,0x05,0xaf, 0x2e,0x9f,0xb2,0xd1,0x5a,0x8e,0xb8,0x76,0x8d,0x21,0xa0,0x74,0x3d,0xc7,0xb4,0x4b, 0xff,0x00,0xe1,0x36,0x47,0x58,0x65,0xf0,0xca,0x9f,0x53,0x8f,0x92,0x12,0x94,0xa7, 0x1e,0x5e,0x39,0x22,0xba,0x71,0xe1,0xd5,0x74,0xc7,0x2f,0x2f,0x44,0xda,0xef,0x3b, 0xd1,0xbb,0x5d,0x40,0x19,0x8c,0x20,0xcb,0x1f,0xf0,0x5f,0x00,0x9f,0xad,0x74,0xbf, 0x1f,0x2f,0x55,0xc3,0xf9,0xcc,0x7d,0xc4,0x04,0xce,0xcb,0x75,0xfd,0xac,0x1e,0xfa, 0xc5,0x39,0xc4,0x8e,0xa1,0xac,0x2f,0xf4,0x35,0x9b,0xc1,0x9c,0xf4,0xdc,0xf9,0x38, 0x7d,0xae,0xb2,0xfb,0x65,0xd5,0x09,0x13,0xbf,0x9b,0xf4,0xc5,0xc4,0x3c,0xec,0x77, 0x22,0x36,0xeb,0x09,0x4a,0x52,0xc3,0x4a,0x75,0x0e,0xa5,0x1b,0x1c,0x69,0x68,0x50, 0x49,0x40,0x4e,0x48,0xdc,0x53,0xb7,0x9c,0xa4,0x56,0x6f,0x1e,0x53,0xcc,0x6a,0x72, 0xe1,0x7c,0x57,0xd4,0x7a,0x47,0xc5,0x54,0xc6,0x19,0xbb,0x5a,0x67,0xb5,0x6d,0x88, 0xd3,0x8f,0xc5,0x6c,0x14,0x97,0x19,0x98,0x94,0xed,0x65,0x40,0xf1,0x94,0x14,0x25, 0xb4,0x28,0x7b,0xb2,0x3f,0x28,0xac,0xea,0xba,0x4b,0xbf,0x0b,0x22,0xfb,0x7f,0xd2, 0x92,0x24,0x5c,0x5b,0x12,0x51,0x21,0xa9,0x0d,0x08,0xd0,0x0b,0xf1,0xd6,0x11,0x19, 0x29,0x65,0xec,0x29,0xc4,0xa9,0x24,0x8c,0xac,0x30,0x08,0x6c,0xf0,0x4e,0xe0,0x70, 0x08,0x38,0x9e,0x5a,0xd5,0xf6,0x85,0x8f,0xda,0x4b,0x4f,0x5b,0xe3,0xaa,0xd0,0x6d, 0x93,0x6e,0x69,0x69,0xad,0xd0,0x04,0x84,0x90,0x84,0xfb,0x41,0x6b,0xde,0x95,0x24, 0xb8,0x49,0x4a,0x0e,0xd2,0x77,0x27,0x79,0xc8,0xe3,0x8d,0x14,0xbc,0x2e,0xd7,0xe1, 0xa2,0x0c,0x07,0x2e,0x3f,0xe8,0xab,0x93,0x25,0xd4,0x2d,0xc6,0x5d,0x52,0xfb,0xb6, 0x93,0xb3,0x9d,0xa7,0x39,0xe4,0xa8,0x7c,0x05,0x0d,0x6c,0xb3,0x5d,0xb6,0xa5,0xa9, 0x0b,0x4b,0x32,0x0b,0x8d,0x03,0x84,0xaf,0xa6,0xe1,0xe7,0x43,0x49,0xb8,0x5d,0xb7, 0xa4,0x80,0x0b,0xa4,0x67,0xc3,0x34,0x4e,0x94,0xf4,0x3e,0xd9,0xd9,0x70,0xe1,0x6e, 0x83,0x9f,0x7d,0x0e,0x96,0x7a,0x83,0xb5,0x86,0xdd,0xd3,0x77,0x31,0x11,0x41,0x52, 0x97,0x1d,0x6d,0xb2,0x94,0xf5,0x2b,0x50,0xda,0x9c,0x7b,0xf2,0x45,0x13,0x4f,0x6a, 0xe8,0x4d,0x3e,0xd6,0x93,0xd1,0x56,0x2b,0x2c,0x74,0x84,0xa2,0xdf,0x09,0x98,0xd8, 0x1d,0x32,0x94,0x00,0x4f,0xd4,0x56,0x6b,0x15,0x3b,0x51,0x05,0x01,0x40,0x50,0x14, 0x05,0x01,0x40,0x50,0x14,0x05,0x01,0x41,0xc8,0x4f,0x48,0x0d,0x4d,0xfc,0xd9,0xdb, 0x6e,0xb7,0xb9,0xa5,0x65,0xc6,0xdc,0xba,0xbc,0xd3,0x6a,0xeb,0xec,0x36,0x7b,0xb4, 0xfd,0x90,0x2b,0x51,0xa6,0xc5,0xf4,0x45,0xb4,0x77,0xb3,0xb5,0x0d,0xd5,0x49,0x04, 0x21,0x0d,0x45,0x42,0xbd,0xe4,0x95,0x1f,0xd1,0x3f,0x5a,0xf4,0xf0,0x4e,0xd6,0xbc, 0xdf,0x26,0xf8,0x8f,0x47,0xcb,0x8c,0xa7,0xd6,0x8d,0xbb,0x48,0x00,0xf5,0xf9,0x57, 0xa1,0xe3,0x35,0x5a,0x24,0x90,0x85,0xa1,0x4a,0xce,0x1c,0x38,0xdc,0x08,0x24,0xfe, 0x5c,0xd6,0x8b,0xb3,0x46,0xde,0x92,0xb7,0xda,0x8e,0xfb,0x05,0x6d,0x84,0x0d,0xce, 0x38,0x39,0x3c,0x75,0xf2,0xeb,0xc6,0x2b,0x5b,0xfa,0x63,0x5f,0x71,0x09,0xa8,0xa3, 0xdb,0x51,0x25,0x28,0x9b,0x02,0x03,0xcd,0x80,0x92,0xa0,0xe3,0x29,0x52,0x95,0x92, 0x73,0x8f,0x1e,0x30,0x3a,0x67,0xad,0x6a,0x6e,0xb3,0x75,0x14,0x7b,0xce,0x9d,0xd1, 0x53,0x72,0x65,0x69,0xd8,0xcd,0x34,0x94,0xee,0x5b,0x81,0xa2,0x9d,0xb9,0x50,0x09, 0xe9,0xe0,0x72,0x7e,0x9d,0x2a,0xf4,0x4b,0xe6,0x2f,0xf1,0xb2,0xc7,0xc5,0xad,0x6f, 0x73,0xec,0xdf,0x46,0x5d,0x57,0xde,0x5b,0x95,0x21,0x84,0x2d,0x7b,0x30,0xda,0xbd, 0x91,0xec,0x95,0x67,0xda,0x1d,0x36,0x82,0x73,0x9e,0x7e,0xb5,0x2f,0xc5,0xc2,0xf9, 0x89,0x3e,0x6f,0x27,0x99,0x92,0x0a,0x57,0x64,0x56,0x97,0x02,0x15,0x6f,0xbf,0x21, 0x01,0x7c,0x37,0xbf,0x6f,0xb7,0xd3,0x8f,0xcc,0x33,0xd4,0x7d,0x6b,0x1f,0xc9,0xe1, 0x7e,0xdb,0x9f,0x90,0xce,0x79,0xd2,0x36,0x4f,0x64,0x37,0x06,0x16,0x94,0xc4,0xba, 0xc7,0x71,0x6a,0xce,0xc4,0xab,0x29,0xce,0x3a,0xe0,0x73,0x9c,0x7c,0x6b,0x17,0xe1, 0x4f,0x55,0xd6,0x7e,0x4a,0xfb,0xc7,0xfb,0xa3,0x9c,0xd0,0x1a,0x92,0x39,0x3e,0xac, 0xe3,0x12,0x12,0x92,0x41,0xee,0xdc,0x1d,0x47,0x51,0xd6,0xb1,0x7e,0x16,0x5f,0x6e, 0xb3,0xf2,0x78,0x5f,0x57,0xfc,0xa0,0xee,0xd3,0x6f,0x1a,0x6a,0x52,0x23,0xdc,0x82, 0x9b,0x75,0x48,0x0b,0x09,0xcf,0x3b,0x7a,0x67,0xf5,0xaf,0x2f,0x27,0x1d,0xe3,0xba, 0xaf,0x5f,0x17,0x3c,0xe4,0xc7,0xab,0x15,0xcf,0xb0,0xb9,0xd2,0x75,0x9f,0x6c,0x3a, 0x36,0xcc,0xf9,0x2a,0x8e,0xf5,0xc9,0xa7,0x5e,0x04,0xf1,0xb1,0xb3,0xde,0x1c,0xff, 0x00,0x82,0xb1,0x1d,0x6e,0x4e,0x82,0x76,0x49,0x78,0x97,0x32,0x66,0xbf,0xd4,0x0a, 0x7d,0xe5,0x36,0x89,0xad,0x42,0x8a,0xd9,0x51,0xd8,0x92,0x91,0x95,0x60,0x74,0xe4, 0xaa,0x97,0xbf,0x66,0x2b,0x7c,0x46,0x90,0x99,0x51,0xdb,0x79,0xae,0x50,0xe2,0x42, 0xc7,0xc0,0xd6,0x19,0x29,0x40,0x50,0x14,0x05,0x01,0x40,0x50,0x14,0x05,0x01,0x41, 0x13,0xab,0x6f,0x88,0xd3,0x1a,0x5e,0xf1,0x78,0x7b,0x1b,0x2d,0xf0,0xde,0x96,0x77, 0x74,0x3b,0x10,0x55,0xfb,0x50,0x71,0x65,0xe9,0x2b,0x96,0xea,0xdf,0x7d,0x5b,0x9c, 0x74,0x97,0x16,0xa3,0xd4,0xa8,0x9c,0x93,0xf5,0xad,0xba,0x74,0xbd,0x13,0xe8,0xef, 0xda,0x5e,0x8e,0xd1,0x3a,0x45,0xd8,0x3a,0x86,0xf0,0xdd,0xbe,0xe4,0xfc,0xa5,0xba, 0xb4,0xba,0xcb,0x9b,0x71,0x80,0x13,0xed,0x04,0x91,0xd0,0x79,0xd7,0xa3,0x8f,0x93, 0x1c,0x66,0x9e,0x5e,0x7e,0x1c,0xb2,0xbb,0x8d,0xcf,0x13,0xb4,0x1d,0x29,0x7b,0x74, 0xae,0xd7,0xaa,0xac,0x4f,0x29,0x49,0xc0,0x47,0xae,0x21,0x18,0xe3,0xc7,0x24,0x1a, 0xeb,0x39,0x31,0xbe,0xde,0x6b,0xc5,0x9c,0xf4,0x95,0x52,0x9c,0x5c,0x6e,0xfa,0x04, 0x84,0xca,0x48,0xc0,0x3e,0xae,0xbe,0xf0,0x6d,0xc0,0x1c,0x63,0x3c,0xe7,0x27,0x35, 0xd6,0x59,0x5c,0xec,0xb0,0xc2,0x4a,0xae,0xe1,0x95,0xec,0x43,0x81,0x05,0x0a,0x29, 0xde,0x06,0xec,0x1c,0x81,0xd3,0xc4,0x02,0x0f,0x87,0x4a,0xd4,0xd3,0x9d,0xda,0x2a, 0xef,0xa8,0xe5,0xc1,0x49,0xef,0x61,0xf7,0x8d,0xa1,0x2a,0x5e,0xf2,0x92,0x92,0xa0, 0x3d,0xdf,0xd2,0x7d,0xc7,0x24,0xfc,0xeb,0x52,0x46,0x6e,0x56,0x2a,0xb2,0x2e,0x28, 0xbb,0x07,0xdb,0x7e,0x23,0x0c,0xa5,0x95,0x84,0x16,0xd3,0x85,0x24,0xe3,0x0b,0x1e, 0x03,0xa1,0x56,0x7e,0x39,0xeb,0x5b,0xd6,0x9c,0xed,0xda,0x12,0x4d,0x96,0x12,0x9a, 0x4b,0x69,0x43,0x88,0x42,0x77,0x80,0x94,0x38,0xa1,0xf9,0x93,0xb4,0xe7,0x9e,0x78, 0x24,0x73,0xd3,0x3c,0x56,0xb7,0x5c,0xee,0x32,0xa2,0x97,0xa6,0xa3,0xb4,0xea,0x14, 0xc3,0xef,0xa1,0xb0,0xbe,0xf0,0xb4,0xa0,0x85,0xa4,0xab,0x8e,0x79,0x1d,0x46,0x38, 0xf2,0x24,0x9a,0xde,0xd9,0xb8,0x7d,0x22,0x46,0x8f,0xee,0xdd,0x92,0xea,0xa7,0x2d, 0xc7,0x56,0x14,0x5b,0x3b,0x4a,0x76,0x2c,0x94,0xfb,0x5c,0x1e,0x4f,0xb3,0xf0,0xcf, 0xc0,0x56,0xba,0xdc,0xff,0x00,0x87,0xae,0xe7,0xd0,0x23,0x3b,0x15,0x32,0x0c,0x9e, 0xe7,0xbc,0x75,0xf5,0xba,0x4b,0x44,0xe3,0x04,0xf1,0xd4,0x0e,0x70,0x00,0xf9,0x54, 0xf2,0xb8,0xcb,0xed,0xa3,0xbb,0x5c,0x9b,0xeb,0x5a,0xe6,0x62,0x47,0xe5,0x8e,0xdb, 0x6c,0x0f,0x71,0x08,0x04,0xfd,0xd4,0x6b,0xe3,0xfc,0x9b,0xbe,0x4a,0xfd,0x17,0xc3, 0xc2,0x4e,0x28,0xd9,0x5e,0x85,0x56,0xd4,0xc9,0xed,0x86,0x55,0xd1,0xd0,0x3b,0xbb, 0x3d,0x9a,0x5c,0xad,0xde,0x4a,0x52,0x43,0x43,0xfe,0xf3,0xf4,0xae,0x0f,0x4e,0x5f, 0xa7,0xb9,0x7b,0x2a,0x8e,0x60,0xf6,0x31,0x69,0x79,0xc1,0x87,0xae,0xf3,0x5f,0xb8, 0xaf,0x3e,0x4a,0x51,0xc7,0xdb,0x15,0x7d,0xb1,0xed,0xb9,0xf4,0x8a,0x1c,0x46,0x9e, 0x87,0xdf,0x12,0x49,0x41,0x23,0x3e,0x09,0x24,0xe3,0xed,0x58,0xcb,0xcb,0x35,0x31, 0x50,0x14,0x05,0x01,0x40,0x50,0x14,0x05,0x01,0x40,0x50,0x69,0x7f,0x4c,0x7d,0x48, 0x34,0xcf,0xa3,0xae,0xae,0x70,0x38,0x10,0xec,0xd6,0x5b,0xb7,0xb7,0xef,0x2e,0xb8, 0x94,0xa8,0x7f,0x80,0xac,0xfc,0xa9,0x1a,0xc7,0xcb,0x94,0x8a,0x5e,0x33,0x8e,0x95, 0xb6,0xee,0x44,0xd4,0xbe,0x30,0x3e,0x94,0x67,0x64,0xd6,0x52,0xa1,0xc8,0x18,0xf8, 0x50,0x7d,0x62,0x53,0xb1,0x17,0xbe,0x2b,0xae,0xb0,0xb1,0xd1,0x4d,0x28,0xa4,0x8f, 0x98,0xa8,0x49,0xb4,0xf5,0xbf,0xb4,0xed,0x5d,0x69,0xdb,0xf8,0x76,0xa7,0xbf,0x33, 0x8e,0x40,0xf5,0xc5,0x91,0xf4,0x24,0xd6,0xa6,0x57,0xed,0x2e,0x18,0xfb,0x89,0x94, 0xf6,0xfb,0xad,0xc2,0x12,0x99,0x37,0x8f,0x5c,0x48,0xf0,0x91,0x1d,0xb5,0x67,0xe6, 0x12,0x0f,0xde,0xba,0x63,0xcd,0x9c,0xf1,0x5c,0xb2,0xe0,0xe3,0xcb,0xd1,0xec,0x7f, 0x48,0x4b,0xe3,0x7c,0x4e,0x81,0x6a,0x93,0xf0,0x4a,0xdb,0xfd,0x0d,0x74,0x9f,0x2b, 0x37,0x1b,0xf0,0xb8,0xef,0x78,0x93,0x63,0xd2,0x15,0x95,0xff,0x00,0xeb,0xac,0x4e, 0xa4,0xf8,0xa9,0x89,0x40,0xfd,0x8a,0x7f,0x7a,0xdc,0xf9,0x97,0xdc,0x73,0xbf,0x8f, 0x9e,0xa9,0xfb,0x5d,0xb9,0xe9,0xd9,0x20,0x7a,0xc3,0x57,0x48,0xbe,0x7b,0x9a,0x4a, 0xff,0x00,0x45,0x57,0x59,0xf3,0x31,0xf7,0x1c,0xef,0xe3,0xf3,0xf5,0x61,0xf3,0x3d, 0xa8,0xe9,0x89,0x5c,0x26,0xec,0x86,0x89,0xe8,0x1e,0x69,0xc4,0x7d,0xf6,0xe3,0xef, 0x5d,0x27,0xca,0xe3,0xbe,0xde,0x7c,0xbe,0x17,0x2c,0xf4,0x7d,0x1b,0x54,0x59,0xa7, 0xa8,0x08,0xb7,0x8b,0x5b,0x80,0x9c,0x12,0x24,0x24,0x7e,0xf5,0xd3,0x1e,0x6c,0x2f, 0xb7,0x1b,0xf1,0xb9,0x27,0x9c,0x6b,0xce,0xda,0xa2,0xe7,0xf8,0xa6,0xa4,0xba,0xcc, 0x4a,0xb7,0x87,0xa5,0x38,0xa4,0xab,0x3d,0x53,0xb8,0xe0,0xfd,0x2b,0xe3,0xe7,0x7a, 0xb2,0xb5,0xfa,0x0c,0x27,0x4e,0x32,0x3d,0x0d,0xe8,0x95,0x15,0x56,0xde,0xce,0x7b, 0x56,0xd4,0x29,0x1b,0x5c,0x31,0xa3,0xda,0xd9,0x57,0xf7,0x96,0x56,0xa3,0x8f,0x98, 0x4f,0xd6,0xa4,0x6e,0xbd,0xc7,0x3d,0xb6,0xf4,0xa6,0x97,0xd2,0xd6,0x64,0x27,0x2b, 0x8b,0x6e,0x69,0x94,0xa0,0x7f,0xbe,0x40,0xfd,0xea,0xcf,0x75,0x98,0xd9,0xda,0x72, 0xe4,0x99,0x10,0xdb,0x65,0x5c,0x2d,0xa4,0x84,0xe3,0xcc,0x01,0x8a,0xe6,0xca,0x6a, 0x80,0xa0,0x28,0x0a,0x02,0x80,0xa0,0x28,0x0a,0x02,0x83,0xc8,0x1f,0xc4,0x97,0x52, 0x18,0x3d,0x9d,0x69,0x6b,0x1a,0x15,0x83,0x70,0xb9,0xaa,0x4a,0x92,0x3c,0x50,0xcb, 0x7f,0xfe,0x9d,0x4d,0x58,0xb1,0xcf,0x50,0x4a,0x8e,0x00,0xc9,0xfd,0xab,0x4d,0x69, 0xf1,0x48,0x58,0xce,0x52,0xac,0x79,0xe2,0x8b,0xa2,0x45,0x5d,0x3c,0x78,0xa1,0xb2, 0x6b,0x73,0xa7,0x34,0x4a,0x4c,0xa8,0xe7,0x3c,0x50,0x60,0xa5,0x9f,0x0e,0x71,0x4d, 0x2e,0x98,0x15,0xd5,0xf0,0xb2,0x30,0x2e,0x71,0x4b,0x4b,0x58,0xa9,0xce,0x9f,0xa5, 0x44,0xfd,0xd6,0x0a,0x5f,0x14,0x36,0x49,0x44,0x1f,0x01,0xf4,0xa2,0xde,0xec,0x4a, 0xbc,0x41,0xa1,0x1e,0xe4,0xf4,0x54,0xd0,0x73,0xee,0x1e,0x8d,0xcd,0xc9,0x8b,0x11, 0x6e,0x41,0x9f,0xa8,0xcc,0xb9,0xef,0x02,0x3d,0x88,0xec,0x96,0xc7,0x4e,0xa7,0x38, 0x57,0x02,0x9b,0x61,0xe9,0x6b,0xad,0xea,0x1e,0xb1,0xd7,0x71,0x5f,0xb4,0x3c,0x24, 0x40,0x69,0x1b,0xd2,0xa4,0x82,0x38,0x48,0xe9,0x83,0xd3,0x9c,0x53,0xc4,0x4f,0x0b, 0xbd,0x82,0x51,0x8f,0x71,0x40,0xce,0x02,0x8e,0x0d,0x61,0x17,0xa4,0x9c,0xa7,0x34, 0x1f,0x68,0x0a,0x02,0x80,0xa0,0x28,0x0a,0x02,0x80,0x3c,0x50,0x73,0x9f,0xf8,0x90, 0xea,0x6f,0xc4,0x3b,0x58,0xd3,0xf6,0x66,0xd6,0x54,0x8b,0x6d,0xa7,0xbd,0x52,0x7c, 0x02,0xde,0x70,0xfe,0xcd,0xa7,0xed,0x5a,0x8d,0xe3,0xd9,0xe4,0x85,0x39,0xb5,0x2a, 0xf0,0xaa,0x6c,0xf2,0xdf,0x12,0x1c,0x8b,0x1d,0xea,0x5c,0xc9,0x4f,0x33,0x32,0x22, 0x59,0x31,0x59,0x48,0x4e,0xd7,0x8a,0xdc,0xda,0xa0,0x49,0x39,0xe1,0x39,0x3c,0x03, 0xef,0x23,0xc4,0x2b,0x97,0xe9,0xee,0xb1,0x69,0x96,0xe2,0x56,0xa0,0xe7,0x76,0x52, 0x92,0x4f,0x20,0x9e,0x01,0x1f,0x5a,0x1a,0x3a,0x4c,0x82,0xdb,0x68,0x0e,0x04,0xa8, 0x84,0x8d,0xc4,0x8e,0xa7,0x1c,0xd1,0x75,0x12,0x57,0x5b,0x25,0xc2,0xcd,0x0a,0x0c, 0xbb,0x9c,0x20,0xd4,0x69,0x89,0x25,0x87,0x12,0xea,0x54,0x14,0x40,0x4a,0x8a,0x4e, 0x09,0xda,0xa0,0x16,0x82,0x52,0x70,0x40,0x50,0xe3,0x9a,0x2d,0xa8,0x0f,0xc4,0x12, 0x6e,0x62,0x29,0x49,0x09,0x2c,0xf7,0xa4,0x8f,0x0e,0x70,0x07,0xcf,0x9f,0xa5,0x19, 0xb7,0x65,0x54,0xeb,0x40,0x64,0xb8,0x52,0x07,0x8a,0x93,0x42,0x5d,0x3e,0x29,0x43, 0x04,0x85,0xa5,0x43,0xe0,0x73,0x45,0xf2,0x49,0x87,0x44,0xb6,0x50,0xec,0x72,0x1c, 0x6d,0x43,0x29,0x50,0x3d,0x45,0x14,0x29,0x2b,0x1f,0xd0,0xbf,0x8e,0xda,0x26,0x88, 0xa9,0x79,0x3e,0xea,0x2b,0x15,0x2f,0x09,0x24,0x70,0x05,0x07,0x51,0x7b,0x01,0x66, 0xe5,0xa7,0x3d,0x1c,0xf4,0x7e,0x9d,0x85,0x1a,0x08,0x66,0x65,0xb1,0x32,0xde,0x5b, 0xae,0xa9,0xb7,0x02,0xdd,0x5a,0x9c,0xc7,0x09,0x23,0x18,0x50,0xa9,0x75,0xb6,0x2d, 0xee,0xb6,0x76,0x77,0xa3,0x24,0xe9,0x87,0x67,0xbf,0x70,0x95,0x1a,0x42,0xe4,0x28, 0x77,0x6d,0xb2,0x0e,0x1b,0x1e,0x3c,0x90,0x32,0x4f,0x1e,0x03,0xa5,0x2e,0x5b,0x4b, 0x57,0x78,0xeb,0xee,0x64,0x21,0x60,0xf4,0x55,0x65,0x1b,0x16,0x2a,0xc3,0x8c,0xa5, 0x43,0xc4,0x66,0x81,0x5a,0x02,0x80,0xa0,0x28,0x0a,0x02,0x80,0xa0,0x0d,0x07,0x23, 0xfd,0x30,0x75,0x37,0xf3,0x3f,0xa4,0x6e,0xb5,0x7d,0x27,0x2d,0xc6,0x94,0x98,0x28, 0xc1,0xc8,0x01,0x96,0xd2,0xd9,0xff,0x00,0x32,0x54,0x7e,0x75,0xa8,0xd4,0x8d,0x2c, 0xfa,0x56,0xa4,0x24,0xb4,0xf2,0x5a,0x57,0x92,0x91,0xb8,0x1a,0xad,0xeb,0x46,0x67, 0xd7,0x52,0x3d,0x93,0x09,0xcf,0x2f,0xcc,0x93,0xf5,0xa1,0x6e,0x8c,0x2e,0x68,0x93, 0x3c,0x33,0x15,0xe6,0xda,0x64,0x29,0xd4,0xac,0xa8,0x3b,0xbb,0x70,0x49,0xdd,0x80, 0x31,0xd7,0x20,0x51,0x37,0xb3,0x97,0xe6,0x77,0x65,0x41,0xf6,0x25,0x36,0x3a,0x13, 0xdd,0xe4,0x7d,0xa8,0x69,0x2d,0xa9,0x3b,0x42,0x7b,0x55,0xfa,0x82,0x2e,0xee,0x42, 0x65,0x30,0x58,0x11,0x98,0x6a,0x3c,0x61,0x1d,0x09,0x47,0xfc,0x89,0x01,0x39,0x3c, 0x64,0x80,0x09,0xea,0x72,0x79,0xa1,0x22,0xaf,0x09,0xc4,0xc9,0xbb,0xcf,0x92,0x82, 0x14,0xd8,0x4b,0x6c,0xa1,0x60,0xe4,0x2b,0x1c,0x9c,0x1f,0x1e,0x4d,0x0b,0xdd,0x77, 0xec,0xeb,0x50,0xdb,0x34,0xbe,0xaa,0x8f,0x72,0xd4,0x4c,0xc9,0x91,0x11,0x90,0x09, 0x65,0x98,0xed,0xbd,0xde,0x7b,0x49,0xdc,0x82,0x16,0x46,0x02,0x92,0x14,0x37,0x24, 0x85,0x02,0x47,0x86,0x45,0x16,0xaa,0x77,0xd9,0xe8,0x43,0x57,0x19,0x8c,0xb6,0x96, 0x51,0x87,0x1d,0x43,0x40,0x60,0x24,0x72,0x40,0xe3,0x8e,0x3a,0x71,0x43,0x7a,0x34, 0xb6,0x37,0xea,0xd6,0xb8,0x8d,0x0e,0x4a,0x1a,0x4a,0x7e,0xd4,0x89,0x7b,0x44,0xe5, 0xd6,0x0b,0x10,0x18,0x6d,0x71,0x94,0xea,0x89,0x20,0x25,0xc2,0xea,0x14,0x97,0x06, 0xdc,0x95,0x24,0x0e,0x52,0x01,0xe3,0x07,0x3f,0x11,0xd2,0xbc,0xdc,0x1c,0xd9,0x67, 0x7b,0xfd,0x7f,0xbf,0xfe,0x3e,0xb7,0xcf,0xf8,0x3c,0x7f,0x1f,0x09,0x97,0x1e,0xee, 0xef,0x9d,0xcb,0x2f,0x6d,0xee,0x49,0xde,0x6b,0xc6,0xae,0xf7,0xf7,0x3c,0x5a,0xdd, 0xd6,0x5b,0x9e,0xb7,0x6f,0x6d,0x2b,0x56,0xe5,0xbc,0x4a,0x8e,0x7a,0xa4,0x24,0xe4, 0x7d,0xc5,0x7a,0x5f,0x26,0xa4,0x19,0x69,0x53,0x5f,0x6a,0x3b,0x79,0x2a,0x79,0x41, 0xb4,0xe3,0xa9,0x24,0xe3,0xf7,0xa2,0xbb,0x47,0x6b,0xd0,0x0d,0xc0,0xd3,0xf6,0xa8, 0x6d,0x48,0xee,0x8c,0x38,0x6c,0xc6,0xd8,0x53,0xc0,0xd8,0x80,0x9f,0xdb,0xef,0x58, 0xbe,0x5c,0xa9,0xa9,0x85,0x22,0xd7,0x20,0xb3,0x23,0xaf,0x81,0x1d,0x08,0xf3,0xa0, 0x72,0xca,0x8a,0xb0,0x49,0xa0,0xd8,0x56,0x37,0xbb,0xd8,0x4d,0xe7,0xca,0x82,0x46, 0x80,0xa0,0x28,0x0a,0x02,0x80,0xa0,0x28,0x12,0x97,0x25,0xa8,0x51,0x9e,0x91,0x25, 0x41,0x0c,0xb2,0x82,0xe2,0xd6,0x7f,0xa5,0x23,0x92,0x7e,0x82,0x83,0x87,0xda,0xa6, 0xf8,0xe6,0xa5,0xd4,0xb7,0x5b,0xc4,0x92,0x4b,0xb7,0x09,0x8f,0x4b,0x56,0x4e,0x79, 0x71,0x65,0x5f,0xbd,0x69,0xd3,0xab,0xe9,0x0e,0xf2,0xba,0x60,0x13,0x55,0x13,0xd7, 0x85,0xe9,0x71,0xa2,0xec,0xc8,0xb1,0x09,0xca,0xd4,0x3d,0xfb,0xca,0xb8,0xaa,0x4b, 0x64,0x0d,0xbb,0x1b,0xd8,0x10,0x42,0x8a,0x4a,0x77,0x6f,0xc7,0x01,0x5e,0x27,0x1c, 0x0a,0x82,0x8f,0x2d,0x7d,0xed,0xfa,0xde,0xdf,0x5e,0xe9,0xb7,0x1e,0x3f,0x64,0x8f, 0xde,0xaa,0xc5,0x8b,0x4b,0x5a,0x95,0xa8,0xf5,0x14,0x2b,0x60,0x90,0x62,0x07,0xd4, 0x77,0xca,0x2d,0xa9,0x61,0xa4,0x00,0x54,0xa5,0x61,0x3c,0x9c,0x00,0x4e,0x05,0x16, 0x8d,0x55,0x65,0x7b,0x4d,0x6a,0x3b,0x85,0x9e,0x53,0xbd,0xf3,0x91,0x1d,0x2d,0x15, 0xa9,0x20,0x6e,0xe0,0x10,0x71,0x93,0x8c,0x82,0x0f,0x53,0x52,0x24,0xaa,0xc5,0xb1, 0xf4,0xcd,0x82,0xea,0xa4,0xa1,0xb7,0x5b,0x2f,0xb8,0x1b,0x4a,0xc7,0x01,0x21,0x47, 0x1d,0x2a,0xa9,0xf3,0x5a,0x71,0xe9,0x16,0xe9,0x17,0x18,0xb6,0xc9,0xde,0xa0,0xc2, 0x82,0x1e,0x96,0xc8,0x5f,0x74,0xda,0x8e,0x30,0x09,0x1c,0x03,0xc8,0xfa,0x8f,0x31, 0x41,0x0b,0x74,0x69,0x96,0xa3,0xa4,0x3c,0xec,0xb7,0x19,0x5b,0x88,0x6d,0x4d,0xa9, 0xcc,0xee,0xc9,0x03,0xf7,0xcf,0x14,0x4a,0x78,0xe3,0x4e,0x20,0x90,0xc4,0x86,0xc2, 0x47,0x01,0x0b,0x6c,0x9c,0x7b,0xb3,0x45,0x24,0x4c,0xb4,0xe7,0x02,0x23,0x9f,0x05, 0x94,0x7e,0xbd,0x69,0x6d,0xa9,0xd3,0x21,0xa7,0x76,0xe4,0x8b,0xab,0x4e,0xbe,0x10, 0xd0,0x8e,0xda,0x86,0xc0,0xbd,0xc4,0x95,0x11,0xcf,0xc3,0x8a,0x11,0xb2,0x3b,0x0a, 0xb1,0x7f,0x35,0x76,0xd1,0xa2,0x2d,0x45,0x3b,0xd3,0x22,0xef,0x1c,0x2d,0x27,0x9c, 0xa5,0x2a,0x0a,0x3f,0x64,0xd1,0x6d,0x76,0x1c,0xde,0x42,0x9c,0x24,0x1e,0x33,0x58, 0x72,0x21,0x74,0x90,0x99,0x91,0xd1,0xc0,0x2a,0x41,0xc8,0xa0,0x66,0xd2,0x70,0x3c, 0xa8,0x2e,0x1a,0x51,0xfc,0xb2,0xa4,0x1e,0xa0,0xd0,0x58,0x68,0x0a,0x02,0x80,0xa0, 0x28,0x0a,0x02,0x83,0x5b,0x7a,0x49,0xea,0x7f,0xe4,0xfe,0xc1,0xb5,0xd5,0xd1,0x2a, 0x09,0x71,0x16,0xa7,0x99,0x6c,0xff,0x00,0x7d,0xd1,0xdd,0xa7,0xfc,0xcb,0x14,0x83, 0x8d,0x44,0xed,0x01,0x23,0x20,0x01,0x81,0x8a,0xdb,0x66,0xef,0xc5,0x8e,0xf3,0xbf, 0x91,0xc4,0xa8,0x9e,0x0b,0x4e,0x11,0x9f,0x95,0x1a,0xa6,0xcb,0x8b,0xb0,0x90,0xdc, 0xb9,0x8d,0xff,0x00,0x75,0x58,0x57,0xeb,0x42,0x19,0x46,0x68,0x2e,0x74,0xb7,0x3b, 0xfe,0xf2,0x5b,0x69,0x4b,0x45,0x4e,0x27,0x09,0x09,0xfc,0xc0,0x60,0x7c,0x73,0xf3, 0xa1,0xb3,0x86,0x65,0x5c,0x61,0xbe,0x87,0xa2,0x16,0x90,0xf3,0x6a,0x0a,0x6d,0xd8, 0xef,0xec,0x5a,0x48,0xe8,0x41,0x1c,0x83,0xf3,0x14,0x08,0x4a,0xb8,0x4b,0xde,0xb7, 0x64,0xc5,0x94,0xb7,0x56,0x4a,0x8a,0xca,0xc2,0x8a,0x94,0x7c,0xce,0x7c,0x49,0xeb, 0xef,0xa1,0x4c,0xa0,0xa8,0x5a,0xad,0xd1,0xe3,0x4b,0x51,0x0e,0x21,0x3e,0xd2,0x82, 0x49,0x49,0x51,0xeb,0xcf,0xc6,0x84,0x5c,0x62,0x76,0xac,0xfb,0x1a,0x02,0x46,0x92, 0x40,0xb7,0x2e,0x0b,0xce,0x29,0xc4,0xbc,0xe1,0x21,0x68,0xdc,0xb6,0x96,0xac,0x0c, 0xed,0x24,0x96,0x50,0x02,0x88,0xc8,0x49,0x50,0xe8,0x78,0x89,0x22,0x8d,0x75,0x71, 0x2f,0x4a,0xb6,0x32,0x92,0x08,0x53,0xdd,0xe1,0xc1,0xcf,0x09,0x49,0xff,0x00,0xcd, 0x52,0xae,0x9a,0x76,0xe1,0x67,0x8d,0x6d,0x98,0x2e,0xed,0xc6,0x54,0xb5,0x2c,0xa8, 0x19,0x31,0x54,0xf6,0xf6,0xf6,0x11,0xb1,0xb2,0x95,0x0d,0x8b,0xdf,0x83,0xbb,0x8e, 0x31,0xcf,0x04,0x2b,0xe5,0xfc,0xee,0x2f,0x91,0x97,0x26,0x37,0x8a,0xde,0x9d,0x7a, 0xba,0xef,0xbf,0x37,0x72,0xee,0x6b,0xb6,0xbc,0x7e,0xbc,0x59,0xe9,0xe1,0xcf,0x8e, 0x61,0x7a,0xbf,0xc6,0xfb,0x7e,0xbe,0xaf,0xfa,0x4b,0xbb,0x0b,0x46,0x37,0x1f,0x50, 0x15,0x4b,0x69,0xf7,0x55,0xb9,0x56,0xa4,0xc7,0x5b,0xa0,0x25,0x29,0x6d,0x44,0x05, 0x15,0x84,0xe1,0x4a,0x56,0xd3,0x82,0x95,0x03,0xb4,0xa4,0x60,0x90,0x6b,0xe7,0xce, 0x6f,0xc9,0x5c,0xb8,0xbf,0xf3,0xa9,0xda,0x67,0xbd,0x5f,0x39,0x7a,0xd6,0xfb,0x6b, 0xea,0xcd,0x6f,0x7d,0xfb,0xbd,0x17,0x0f,0x8f,0x26,0x7d,0xf7,0xf5,0xe7,0xd4,0xbf, 0xdf,0xc7,0xdf,0xd3,0x58,0x44,0x5f,0x79,0x77,0x9c,0xb5,0x74,0x40,0x43,0x7c,0x7c, 0x37,0x7e,0xf5,0xfa,0x47,0xcd,0x8f,0x47,0xfa,0x0c,0x59,0x7f,0x19,0xf4,0x89,0xb4, 0xbe,0xa4,0xee,0x45,0xb2,0x1c,0xa9,0xc7,0xdc,0x43,0x65,0x09,0xff,0x00,0x32,0xc5, 0x17,0x2a,0xe9,0x3b,0x69,0xe3,0x81,0x9a,0xc3,0x99,0xd2,0x52,0x53,0xe3,0x9a,0x05, 0xda,0x48,0x03,0xa5,0x04,0xf6,0x9b,0x73,0x64,0xb5,0x24,0x9e,0xa2,0x82,0xde,0x39, 0x02,0x80,0xa0,0x28,0x0a,0x02,0x80,0xa0,0x0d,0x07,0x97,0x3f,0x88,0xb6,0xa8,0xfc, 0x17,0xb0,0x04,0x5b,0x9b,0x73,0x63,0x97,0x7b,0xac,0x78,0xe5,0x3f,0xef,0x21,0x19, 0x74,0xfd,0xdb,0x4d,0x58,0xb1,0xcb,0xf5,0xbb,0xb4,0xee,0x51,0xc0,0x1c,0xf3,0x5a, 0x6e,0x43,0x78,0x97,0x36,0x5a,0x9a,0xcb,0xa9,0x78,0xe5,0xb7,0x12,0xbf,0xec,0x1e, 0xee,0xdc,0xe0,0xe7,0xd9,0x50,0xe5,0x27,0xc8,0xe3,0x83,0xcd,0x15,0x25,0xab,0x75, 0x4c,0xcd,0x67,0xa8,0x26,0xdd,0xae,0x6b,0x71,0x4f,0x48,0x57,0xb2,0x95,0x38,0xa7, 0x3b,0xb6,0xd2,0x02,0x50,0x80,0xa5,0x64,0xa8,0x25,0x21,0x29,0xc9,0x39,0x38,0xc9, 0xe6,0x82,0xa7,0x68,0x7b,0xbc,0x13,0x5e,0x27,0x87,0x64,0xab,0x1f,0x04,0xfb,0x23, 0xec,0x05,0x12,0x36,0x26,0x8c,0xb2,0xe9,0x6b,0x86,0x8f,0xd4,0xd3,0xb5,0x55,0xc0, 0x31,0x74,0x8e,0xd2,0xbf,0x0f,0x8e,0x24,0xa5,0xb5,0x15,0x06,0x9c,0x50,0x3b,0x49, 0x05,0x7b,0x9c,0xee,0x90,0x36,0x85,0x63,0xda,0xdc,0x12,0x08,0x50,0x16,0xb5,0xbd, 0xf1,0xf2,0x8b,0x54,0x80,0x93,0x85,0x2c,0x04,0x0f,0x0e,0x54,0x40,0xfd,0xe8,0xb4, 0xf7,0xbf,0x52,0x42,0x52,0x95,0x1c,0x00,0x00,0x04,0xfb,0xbd,0xf4,0x16,0x0d,0x7b, 0xa0,0x2e,0x9d,0x9f,0xce,0x8d,0x1b,0x52,0x37,0x09,0xd5,0x49,0x43,0x8a,0x6d,0xd6, 0x50,0xad,0xaa,0xd8,0xb2,0xda,0xf0,0x56,0x84,0x92,0x02,0x92,0x40,0x50,0x05,0x2a, 0x18,0x29,0x51,0x07,0x35,0x36,0x4a,0xa5,0x36,0xa6,0x91,0x76,0x2c,0x36,0xc3,0x28, 0x4a,0x98,0xef,0x16,0x52,0x30,0x7a,0x9c,0x0c,0xfb,0xf1,0x54,0xb0,0xee,0x3d,0xa5, 0x53,0x5d,0x2d,0x5b,0x5b,0xb8,0xb8,0xe8,0x05,0x65,0x11,0xc9,0x70,0x80,0x3c,0x70, 0x06,0x70,0x3c,0xe8,0x68,0xdd,0x4c,0xb9,0x8c,0xb3,0x31,0xc3,0xe1,0x87,0x1b,0x06, 0x81,0x0b,0x62,0x1b,0x0d,0x3a,0xe3,0x6e,0x97,0x14,0xeb,0x85,0x4b,0x59,0x18,0xf6, 0x87,0x18,0xf8,0x71,0x8a,0x1a,0x7b,0x3f,0xf8,0x6f,0xd8,0xfb,0xfd,0x57,0xad,0xef, 0x4a,0x4f,0xb3,0x16,0xde,0xcc,0x44,0x2b,0xc9,0x4e,0xb8,0x49,0xfb,0x36,0x6a,0x5f, 0x0c,0xe4,0xf7,0x7b,0x43,0x18,0xe2,0xb2,0xc1,0x74,0x0f,0xa5,0x03,0x84,0x0c,0x50, 0x48,0xda,0x17,0xdd,0xcd,0x41,0x3f,0x0a,0x0b,0xab,0x67,0x28,0x04,0x79,0x50,0x65, 0x40,0x50,0x14,0x05,0x01,0x40,0x50,0x73,0xff,0x00,0xf8,0xa0,0xea,0x8d,0xd7,0x7d, 0x09,0xa7,0x5b,0x51,0xfe,0xc9,0x89,0x37,0x07,0x13,0xe6,0x56,0xa4,0x36,0x83,0xf2, 0xd8,0xe7,0xd6,0xb5,0x1a,0xc6,0x3c,0x2b,0xde,0x94,0x15,0xa8,0x1e,0x71,0xc6,0x6a, 0xb7,0x23,0xe4,0x6b,0x7c,0x8b,0xd3,0x8f,0x37,0x06,0xdc,0xe4,0xf7,0x1b,0x69,0x6f, 0xb8,0x86,0x63,0x97,0x0a,0x1b,0x4f,0x2a,0x59,0xda,0x32,0x12,0x07,0x52,0x78,0x14, 0x11,0x12,0x63,0xc3,0x43,0x2b,0x75,0x2d,0x21,0xa4,0xa5,0x25,0x5b,0x9b,0x52,0x80, 0xc0,0x19,0xf3,0xa0,0x4a,0x23,0x68,0x76,0xdd,0x10,0xb7,0xde,0x44,0x25,0xb0,0xa2, 0x86,0xb0,0x52,0x33,0xe1,0x83,0xfa,0xd0,0x64,0x50,0xf0,0x24,0x35,0x31,0xb2,0x7c, 0x9c,0x6b,0x9f,0x99,0x14,0x0c,0xe6,0x32,0xf4,0xa7,0x63,0x31,0x25,0xc8,0xc1,0x25, 0xc0,0xb1,0xb0,0x2b,0x2b,0x29,0xe7,0x1c,0xf4,0xf3,0xf9,0x51,0x29,0xc2,0x9c,0x90, 0xda,0xb7,0x2e,0x2b,0xc7,0x9f,0xcc,0xd9,0x0a,0xfd,0xe8,0xb0,0xea,0xff,0x00,0xac, 0x6e,0x1a,0x8a,0x68,0x95,0xa9,0xa5,0xce,0x99,0x29,0x28,0x0d,0x87,0x24,0xa0,0xe5, 0x29,0xc9,0x38,0xe0,0x60,0x0c,0x92,0x7d,0xe4,0x92,0x79,0x34,0x66,0x20,0xa1,0xbe, 0x1c,0xb8,0x4b,0x92,0xbf,0x65,0xa5,0x04,0x36,0xda,0xd5,0xc0,0x50,0x03,0x27,0x19, 0xf7,0x9a,0x34,0xdc,0xdd,0x85,0xf6,0xb1,0x65,0xec,0xe7,0xf1,0x26,0xf5,0x04,0x59, 0x6e,0x09,0x4f,0x30,0xf2,0x64,0xc4,0x09,0x51,0xc3,0x64,0x92,0xda,0xb2,0x0f,0x07, 0x23,0xc0,0xf8,0x83,0xd4,0x11,0x13,0xcb,0x5c,0x6a,0xdb,0xe8,0xbe,0x6a,0x2b,0xb5, 0xd8,0x24,0xa1,0x12,0xa4,0x38,0xf8,0x0a,0x4e,0xd3,0x8c,0xe7,0x2a,0xe4,0xfb,0x58, 0xe4,0x9c,0x9e,0x73,0xc9,0xaa,0x78,0x57,0xec,0x80,0xa6,0xd5,0x1b,0x78,0xf6,0x96, 0x9d,0xea,0xf8,0x9e,0x4f,0xeb,0x42,0x47,0x46,0x7f,0x87,0x4d,0x8b,0xd4,0xfb,0x22, 0xd4,0x57,0x65,0x8c,0x2e,0xe3,0x78,0x0d,0xa5,0x44,0x75,0x43,0x2d,0xe3,0xf5,0x70, 0xd4,0xc9,0x9c,0xde,0xb1,0x6d,0x38,0xac,0xb2,0x70,0x84,0xe3,0xe1,0x40,0xb8,0x1c, 0x0c,0xd0,0x2f,0x11,0x45,0x32,0x10,0x7a,0x1c,0xd0,0x5e,0x63,0x9c,0xb2,0x9f,0x85, 0x02,0x94,0x05,0x01,0x40,0x50,0x14,0x05,0x07,0x28,0x3f,0x88,0x1e,0xa8,0xfc,0x7f, 0xd2,0x52,0xf1,0x1d,0x0b,0xde,0xd5,0xa6,0x1c,0x58,0x09,0xc7,0x82,0xb6,0x77,0xaa, 0xfb,0xba,0x47,0xca,0xb5,0x1b,0xc5,0xe6,0x77,0xde,0x28,0x6c,0x14,0xa1,0x4b,0x07, 0xae,0xcc,0x64,0x55,0x69,0x9d,0xb7,0x56,0x4f,0xb0,0xac,0xae,0xd3,0x36,0xe1,0x6e, 0x51,0x5a,0x1c,0x25,0x92,0xa4,0xe5,0x48,0x39,0x41,0x3b,0x7a,0xe0,0xf2,0x05,0x04, 0x1d,0xe2,0x6a,0x64,0x5b,0xa4,0x37,0x1d,0x69,0x71,0xe7,0x86,0xc4,0xa5,0x3d,0x49, 0x51,0xc7,0x4f,0x81,0xfa,0x0a,0x25,0x3d,0x40,0xda,0xd2,0x12,0x01,0x01,0x20,0x0f, 0xa0,0xa2,0xae,0x5a,0x97,0x55,0x59,0x2e,0x3a,0x12,0xcb,0x69,0xb4,0xc3,0x53,0x77, 0x18,0xc5,0xa5,0x3c,0xb5,0x45,0x6d,0x1d,0xd1,0x4b,0x6b,0x4b,0xb8,0x74,0x1d,0xce, 0xf7,0xae,0x29,0x2e,0x1d,0xc0,0x6c,0xee,0xd2,0x91,0x9e,0xb4,0x1a,0xed,0xe7,0x3b, 0xcb,0xdc,0x54,0x9c,0x10,0xd3,0x4b,0x70,0xfc,0x4e,0x00,0xfd,0x0d,0x13,0xda,0x48, 0x08,0xdd,0xc2,0x4b,0x8e,0x3e,0x97,0xfb,0xc0,0x08,0x4b,0x60,0xa4,0x37,0x8e,0x4e, 0x77,0x64,0xab,0x3f,0xd3,0x8c,0x7b,0xe8,0xa9,0x0d,0x4b,0x68,0x6b,0x4f,0x4c,0x44, 0x58,0x77,0xcb,0x75,0xe5,0x2b,0x05,0x7d,0xed,0xb9,0x6a,0x53,0x69,0x49,0x3e,0xc6, 0x49,0x00,0x6e,0x23,0x92,0x9e,0x4a,0x7a,0x1f,0x68,0x10,0x09,0xa5,0x62,0xd9,0x25, 0x52,0x63,0x3a,0xa5,0x00,0xe0,0x71,0xf5,0xec,0x0a,0x48,0x3c,0x6e,0x38,0x03,0x34, 0x22,0xc3,0x23,0x41,0x4d,0xdc,0xe7,0xab,0xc0,0x89,0x35,0x4d,0x2d,0x4d,0x3d,0xea, 0x4e,0xee,0x53,0x2e,0x02,0x02,0x90,0xac,0x1e,0x08,0x2a,0x19,0xf0,0xea,0x73,0x80, 0x71,0xe3,0xc7,0xe7,0xf0,0xdd,0x6e,0xeb,0x73,0x73,0x72,0xcd,0xcb,0xee,0x7f,0xdb, 0xfd,0x77,0x70,0xc7,0xe4,0xe1,0x7f,0x5f,0xd7,0xfd,0x2a,0xf7,0x36,0x58,0x8b,0x15, 0xf3,0xfd,0xbe,0xd4,0xe5,0x2a,0x68,0x3c,0x48,0x57,0x38,0xc7,0x15,0xeb,0x97,0x7d, 0xdd,0xef,0x8d,0x9e,0x27,0x6a,0x50,0x03,0x7c,0x24,0x0e,0x00,0xaa,0xae,0xaa,0x7a, 0x1a,0xd8,0xbf,0x00,0xf4,0x6e,0xd1,0xcd,0xad,0x3b,0x5c,0x9a,0x97,0xe7,0xa8,0x79, 0xf7,0x8e,0xab,0x07,0xfc,0x29,0x4d,0x66,0xb1,0x97,0x96,0xf1,0x69,0x39,0x02,0xa3, 0x27,0x69,0x4e,0x28,0x33,0xdb,0xc0,0xa0,0x56,0x38,0x3d,0xfa,0x3c,0xf3,0x41,0x77, 0x87,0xfe,0xa0,0x67,0xca,0x81,0x6a,0x02,0x80,0xa0,0x28,0x0a,0x00,0x9e,0x68,0x38, 0x7b,0xdb,0x66,0xa9,0xfe,0x73,0xed,0x77,0x5a,0x5e,0xc2,0xf7,0xb7,0x36,0xf1,0x29, 0xd6,0xce,0x72,0x0a,0x3b,0xc2,0x13,0xf2,0xda,0x13,0x5a,0x8e,0x92,0x69,0x47,0x51, 0x3f,0x43,0xd6,0xaa,0xb1,0x52,0xbc,0x89,0xf9,0x9a,0x0c,0x0e,0x0a,0xb2,0x31,0x91, 0xe4,0x28,0x1b,0xb9,0x19,0xa7,0x17,0xb9,0x68,0x1b,0x8f,0x52,0x38,0x26,0x81,0x05, 0xc5,0x03,0xfd,0x5b,0xaf,0xa3,0xe0,0xbc,0xfd,0x8d,0x02,0x69,0x89,0xdd,0xba,0xe3, 0xa1,0xc5,0x2d,0xf5,0x00,0x9d,0xeb,0x03,0xa0,0xcf,0x18,0x1c,0x78,0x9a,0x24,0x8c, 0x56,0xa9,0x29,0xe4,0x86,0x57,0xf0,0x25,0x3f,0xf9,0xa2,0x91,0x5c,0xc7,0xd2,0x39, 0x8c,0x54,0xac,0x71,0xb5,0x63,0x06,0x81,0xbc,0x35,0x7e,0x1d,0x05,0x86,0x1f,0x2a, 0xde,0x84,0xfb,0x4b,0x42,0x49,0x19,0xf1,0xe9,0xef,0xa1,0x6a,0xc6,0x8e,0xd2,0x6e, 0x88,0x2e,0x14,0x5c,0x1a,0x40,0x74,0xee,0x7d,0x21,0xb4,0x36,0x24,0x12,0x41,0x57, 0x79,0x80,0x37,0xee,0xc0,0xdd,0x9e,0x4e,0x06,0x6b,0xc5,0x7f,0x1d,0xc1,0x75,0xbc, 0x7c,0x78,0xef,0x7b,0x7f,0x4f,0xad,0x7a,0xd6,0xb4,0xf3,0xdf,0x8b,0xc7,0x7d,0x78, 0xff,0x00,0xbb,0x7d,0x7e,0x95,0x4b,0xbb,0xa9,0x75,0x86,0x5b,0x69,0x49,0x57,0x78, 0xfa,0x13,0xec,0x9c,0xf0,0x0e,0xef,0xfe,0xbf,0x7a,0xf6,0x3d,0x16,0x24,0x14,0x49, 0x4e,0xc4,0x8f,0x68,0xf0,0x31,0xe7,0xe1,0x54,0x76,0x7f,0xb3,0x2b,0x10,0xd3,0x5d, 0x9c,0x69,0x1b,0x4a,0x13,0xb3,0xd4,0xad,0x11,0x5a,0x23,0xc8,0xf7,0x69,0x27,0xee, 0x4d,0x66,0xb9,0xd5,0xb9,0x91,0x8c,0x62,0xa2,0x1d,0xa4,0x73,0xc5,0x06,0x43,0x8f, 0x85,0x03,0x88,0x2d,0xef,0x92,0x81,0x8f,0x1a,0x0b,0x9c,0x61,0xb5,0xa1,0xf0,0xa0, 0x56,0x80,0xa0,0x28,0x0a,0x02,0x82,0xb7,0xda,0x55,0xfd,0x7a,0x53,0xb3,0xdd,0x51, 0x7a,0x64,0x94,0xbb,0x6f,0xb6,0x49,0x94,0x82,0x3c,0x14,0x86,0xd4,0xa1,0xf7,0x14, 0x1c,0x26,0x2f,0x29,0x41,0x2a,0x24,0x92,0x40,0xcd,0x6d,0xd5,0x80,0x3d,0x48,0xe0, 0x50,0x7c,0x2a,0xc7,0x5c,0xfc,0xe8,0x30,0x2e,0x70,0x49,0x38,0xf2,0xa0,0xc0,0xaf, 0x9e,0xb9,0xf2,0xa0,0x4c,0xab,0x9e,0x4e,0x28,0x31,0x52,0xf9,0xe7,0xed,0x40,0x8a, 0xd6,0x0e,0x47,0x5a,0x0c,0x14,0xaf,0x7e,0x7e,0x3e,0x34,0x18,0x15,0x80,0x3c,0xb1, 0x40,0x9a,0xb6,0x2c,0x7b,0x49,0x07,0xe5,0x40,0x92,0x58,0x6d,0xb5,0xee,0x43,0x68, 0x0a,0x3e,0x20,0x73,0x41,0x63,0xd0,0x36,0x55,0x6a,0x7d,0x75,0xa7,0x2d,0x08,0x04, 0x99,0xd7,0x16,0x23,0x60,0x73,0xf9,0x96,0x01,0xa4,0x1d,0xaf,0x53,0x41,0x2f,0x38, 0x96,0xc0,0x08,0x4a,0x8a,0x52,0x07,0x80,0x1d,0x2b,0x0e,0x47,0x2d,0xa3,0x09,0x19, 0xa0,0x58,0x74,0xc9,0xa0,0x33,0xce,0x28,0x25,0xec,0x91,0x4a,0xdd,0xde,0x73,0x8a, 0x0b,0x4a,0x46,0x12,0x28,0x3e,0xd0,0x14,0x05,0x01,0x40,0x50,0x47,0x6a,0x4b,0x14, 0x6d,0x51,0xa7,0xee,0x76,0x6b,0x98,0x26,0x1d,0xc2,0x2b,0xb1,0x1e,0x09,0xeb,0xb1, 0x69,0x29,0x38,0xf7,0xe0,0xd0,0x70,0xf3,0xb5,0x6e,0xcd,0x2f,0x3d,0x8f,0xeb,0xbb, 0xb6,0x94,0xd5,0x6c,0x29,0x99,0xb0,0x1c,0x29,0x43,0x84,0x61,0x32,0x1a,0x27,0xd8, 0x75,0x1e,0x69,0x50,0xc1,0xf8,0xe4,0x75,0x15,0xb7,0x59,0x76,0xa7,0x29,0x5e,0x63, 0xdf,0x41,0xf0,0x9c,0x1a,0x04,0x54,0xef,0x3c,0xd0,0x26,0x57,0xb8,0xd0,0x60,0xa5, 0x64,0xfb,0xbc,0x85,0x06,0x25,0x58,0x07,0xad,0x06,0x05,0xd3,0x8c,0x64,0x62,0x81, 0x35,0x2f,0x23,0x3f,0x6a,0x0c,0x37,0x7b,0xe8,0x31,0x24,0x1c,0xe2,0x80,0xcf,0x14, 0x1b,0xa3,0xd0,0xda,0xc3,0xfc,0xc7,0xe9,0x27,0xa2,0x5a,0x52,0x77,0x37,0x16,0x52, 0xa6,0xac,0x7b,0x9a,0x42,0x97,0xfb,0x50,0xae,0xb6,0xb2,0x8c,0x92,0x4f,0xc6,0xb0, 0xe4,0x74,0x9e,0x01,0xf3,0xf2,0xa0,0xfb,0x92,0x73,0x40,0xac,0x66,0x0c,0x87,0x42, 0x40,0xeb,0x41,0x6f,0xb7,0x43,0x11,0xda,0x1c,0x73,0x8a,0x07,0xb4,0x05,0x01,0x40, 0x50,0x14,0x05,0x00,0x7a,0x1a,0x0d,0x25,0xe9,0x1d,0xd9,0x9e,0x91,0xed,0x3e,0xcd, 0x16,0x16,0xbb,0xb2,0xc6,0xb8,0xad,0xb2,0xaf,0x57,0x95,0x92,0xdb,0xf1,0xf2,0x39, 0xd8,0xe2,0x70,0xa0,0x0f,0x88,0xce,0x0f,0x88,0xa4,0x59,0x74,0xf1,0x66,0xa9,0xf4, 0x30,0xd2,0x6c,0x29,0x46,0xc9,0x77,0xd4,0xb0,0xf9,0xf6,0x77,0x77,0x52,0x52,0x9f, 0x76,0x3d,0x83,0xf7,0xab,0xb5,0xea,0x6b,0xbb,0xaf,0xa2,0x23,0xe8,0xdd,0xf8,0x6e, 0xad,0x60,0x0f,0xe9,0x4c,0xdb,0x73,0x88,0xfa,0x94,0x29,0x75,0x77,0x17,0xa9,0x49, 0xb9,0x7a,0x35,0xea,0xb8,0x2b,0x57,0xaa,0xc8,0xb1,0x4f,0x00,0xf1,0xdd,0xcb,0xee, 0xc9,0xf8,0x07,0x02,0x4f,0xda,0xaf,0x65,0xea,0x56,0x6e,0x3d,0x8e,0x6b,0x6b,0x76, 0x4b,0xda,0x76,0x7b,0xa9,0x1d,0x4c,0x60,0x97,0x7f,0xed,0x26,0x8b,0xb5,0x52,0x7d, 0x9a,0xe5,0x6d,0x5a,0x93,0x71,0xb7,0x4e,0x8a,0x53,0xc1,0x0f,0x30,0xa4,0xe0,0xfc, 0xc5,0x34,0x23,0xbb,0xc4,0x83,0x8c,0x8c,0xf8,0x66,0x83,0x02,0xae,0x39,0xc6,0x28, 0x3e,0x15,0x13,0xd6,0x83,0x02,0x7c,0xa8,0x5b,0xa6,0x3b,0xb3,0xe3,0x41,0xf4,0x1c, 0x74,0xe2,0x85,0x9b,0x7a,0xff,0x00,0xf8,0x6c,0x68,0xc9,0x17,0x3e,0xd3,0xaf,0xfa, 0xa1,0xd6,0x55,0xea,0x16,0xab,0x72,0xa2,0xa5,0xe2,0x38,0x2f,0xbc,0x70,0x12,0x0f, 0x9e,0xd0,0xba,0x5f,0x0c,0xe5,0x5d,0x1d,0x6c,0x83,0xd2,0xb0,0xc1,0x64,0x9c,0x63, 0xc6,0x80,0xc6,0x78,0xa0,0xb1,0xd8,0x6d,0xf8,0x48,0x71,0x63,0x19,0xe7,0x9a,0x09, 0xfc,0x60,0x60,0x74,0xa0,0x28,0x0a,0x02,0x80,0xa0,0x28,0x0a,0x00,0xf4,0x34,0x1a, 0xbb,0xb5,0x3c,0xad,0xf8,0xc8,0x4e,0x7a,0x28,0xe3,0xe9,0x41,0xaa,0x67,0xdb,0x94, 0xe6,0x72,0x33,0xee,0xa0,0xac,0xdd,0x6d,0x0b,0xd8,0xa0,0x94,0xd0,0x6b,0xeb,0xe5, 0x9a,0x60,0x5a,0x8b,0x69,0x3f,0x4a,0x0a,0xd3,0xcd,0x4e,0x60,0x9c,0xb5,0x9f,0x95, 0x02,0x66,0xe5,0x28,0x00,0x97,0xd0,0xe2,0x90,0x06,0x02,0x54,0x49,0x4f,0xd0,0xf1, 0x40,0xc2,0x5d,0xba,0xcb,0x74,0xcf,0xe2,0xb6,0x5b,0x74,0x92,0x7a,0xa9,0xe8,0x8d, 0xa8,0xfd,0x4a,0x73,0x57,0xaa,0xae,0xd1,0x4e,0xf6,0x47,0xa0,0x6e,0xc4,0xfa,0xce, 0x9b,0x88,0xd6,0x7a,0x98,0xce,0x3a,0xd1,0xfb,0x2b,0xf6,0xa7,0x55,0x3a,0xa9,0x9b, 0xfe,0x8b,0x9a,0x0e,0xe8,0x09,0x86,0xbb,0xfd,0xbd,0x67,0xa7,0x73,0x31,0x2e,0x24, 0x7c,0x96,0x8c,0x9f,0xa8,0xa6,0xd7,0xa9,0x15,0x27,0xd0,0x95,0x89,0x89,0x51,0xb1, 0xea,0xd9,0x0d,0x9e,0xa9,0x4c,0xeb,0x7e,0x7e,0xe8,0x59,0xfd,0x2a,0xee,0x1d,0x48, 0x19,0xfe,0x82,0xbd,0xa0,0x37,0x93,0x66,0x9f,0xa6,0xee,0x69,0x3f,0x94,0x7a,0xc2, 0xd8,0x27,0xff,0x00,0x91,0x20,0x0f,0xad,0x5d,0xc6,0xba,0xa2,0x73,0x42,0xff,0x00, 0x0f,0x8d,0x67,0x78,0xb8,0xb6,0xad,0x7f,0x79,0xb1,0xe9,0xdb,0x60,0x39,0x70,0xc6, 0x90,0x26,0x3e,0xa1,0xe4,0x94,0xa3,0xd9,0x1f,0x12,0x45,0x37,0x12,0xe4,0xf7,0x97, 0x65,0xda,0x17,0x4f,0x76,0x55,0xa4,0xe1,0xe9,0x9d,0x09,0x0c,0xc4,0xb6,0x47,0x25, 0x6a,0x5a,0xce,0xe7,0x24,0x38,0x7f,0x33,0x8e,0x1f,0x15,0x1f,0xa0,0x03,0x02,0xb3, 0x6e,0xd9,0xb7,0x6b,0xeb,0x2e,0x64,0x0a,0x88,0x74,0x85,0x50,0x3f,0xb4,0xc1,0x54, 0xc9,0x03,0x23,0xd9,0x1d,0x68,0x2e,0x4c,0x34,0x19,0x6c,0x25,0x23,0xc2,0x81,0x4a, 0x02,0x80,0xa0,0x28,0x0a,0x02,0x80,0xa0,0x0f,0x43,0x41,0xae,0x7b,0x47,0x63,0x7c, 0x98,0xe4,0x80,0x40,0x06,0x82,0x8e,0xb8,0x49,0x58,0xe0,0x50,0x32,0x91,0x67,0x4b, 0x83,0x94,0x8a,0x08,0x89,0x7a,0x5d,0xb7,0x7f,0x32,0x07,0xce,0x82,0x1e,0x4e,0x87, 0x65,0x79,0xc3,0x63,0xe9,0x41,0x19,0x23,0xb3,0xb6,0x55,0xfe,0xc8,0x7d,0x28,0x23, 0xdd,0xec,0xd1,0xb5,0x9e,0x1b,0xc7,0xca,0x83,0x01,0xd9,0xa2,0x13,0x82,0x94,0x7d, 0xa8,0x1e,0x46,0xd0,0x5d,0xc7,0x44,0xf3,0xe5,0x8a,0x0b,0x3d,0xa3,0x4f,0x18,0xfb, 0x72,0x9a,0x0b,0x2b,0x10,0x42,0x13,0x82,0x05,0x06,0x45,0xb5,0x15,0x00,0x9a,0x68, 0x49,0xc0,0x41,0x6c,0xd0,0x4e,0xc6,0x3c,0x75,0xa0,0x92,0x86,0xca,0xa4,0x38,0x96, 0xdb,0xe4,0x9a,0x0b,0xb5,0xb2,0x02,0x62,0x32,0x90,0x00,0xe9,0xcd,0x03,0xea,0x02, 0x80,0xa0,0x28,0x0a,0x02,0x80,0xa0,0x28,0x0a,0x0a,0xde,0xae,0xb0,0xae,0xec,0xc0, 0x53,0x18,0xef,0x13,0xd3,0x3e,0x34,0x1a,0xf6,0x45,0xa6,0x54,0x45,0x10,0xfb,0x0b, 0x03,0xdc,0x28,0x1a,0x94,0x63,0xf3,0x03,0x9f,0x7d,0x06,0x25,0x90,0x73,0xe3,0x40, 0x99,0x8c,0x92,0x4f,0x02,0x83,0xe8,0x82,0x9c,0xf2,0x05,0x00,0x2d,0xcd,0xf8,0xa4, 0x50,0x02,0xd8,0x82,0x7f,0x28,0xa0,0xcd,0x36,0x94,0x67,0x94,0xd0,0x38,0x45,0xb5, 0x29,0x23,0x8a,0x0c,0x95,0x0c,0x63,0x00,0x60,0x50,0x26,0x22,0x00,0xae,0x45,0x03, 0x96,0x59,0x00,0xf0,0x38,0xa0,0x90,0x65,0x21,0x18,0xa0,0xb7,0xe9,0xbb,0x6e,0xc4, 0x07,0x5c,0x1e,0xd1,0xe9,0x41,0x64,0x03,0x03,0x02,0x80,0xa0,0x28,0x0a,0x02,0x80, 0xa0,0x28,0x0a,0x02,0x80,0xa0,0x08,0xcf,0x06,0x81,0xbb,0xf0,0x5b,0x7c,0x1d,0xc0, 0x7c,0xe8,0x22,0xa4,0x69,0xd6,0x1d,0xfc,0xcd,0x21,0x40,0xfb,0xa8,0x23,0x1f,0xd1, 0xd1,0x97,0x9c,0x36,0x53,0xf0,0xa0,0x60,0xee,0x89,0x19,0xcb,0x6b,0x58,0xf8,0xd0, 0x35,0x77,0x47,0xc8,0x40,0x3d,0xda,0xc2,0xbe,0x23,0x14,0x0d,0x17,0xa7,0x26,0xb5, 0xfe,0xcf,0x77,0xfc,0xb4,0x08,0xaa,0xdf,0x21,0xaf,0xce,0xca,0xd3,0xf2,0xa0,0x36, 0x29,0x3f,0x98,0x10,0x7d,0xf4,0x1f,0x41,0x00,0xf9,0x8a,0x0c,0x55,0x8f,0x85,0x02, 0x44,0xe5,0x54,0x19,0xa0,0x8c,0x50,0x4b,0xd9,0x60,0xaa,0x7c,0x94,0xf1,0xec,0x24, 0xe4,0x9a,0x0d,0x81,0x19,0x90,0xcb,0x49,0x03,0x03,0x03,0x8a,0x05,0xa8,0x0a,0x02, 0x80,0xa0,0x28,0x0a,0x02,0x80,0xa0,0x28,0x0a,0x02,0x80,0xa0,0x0d,0x07,0xc2,0x90, 0x7c,0x28,0x3e,0x16,0xd2,0x7a,0x8a,0x0c,0x4b,0x08,0x3d,0x52,0x28,0x30,0x54,0x44, 0x1f,0x0a,0x04,0xd7,0x6f,0x41,0x1d,0x01,0xf8,0xd0,0x36,0x76,0xcc,0xd3,0x9f,0x99, 0x09,0x3f,0x2a,0x06,0x0f,0xe9,0x88,0xce,0x7f,0xb3,0xc7,0xc2,0x81,0x8b,0x9a,0x3d, 0xb3,0xf9,0x54,0xb1,0x40,0x87,0xf2,0x49,0x27,0x3d,0xf2,0xfe,0x18,0xa0,0x71,0x1f, 0x46,0xb6,0x83,0xfd,0xa2,0xd6,0xba,0x0b,0x05,0xba,0xd4,0xd4,0x24,0x61,0xb4,0x81, 0x41,0x21,0x8c,0x0a,0x02,0x80,0xa0,0x28,0x0a,0x02,0x80,0xa0,0xff,0xd9 }; /* created by reswrap from file cy_pinpad_s.jpg */ const unsigned char fxcj_icon_cy_pinpad_s[]={ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x60, 0x00,0x60,0x00,0x00,0xff,0xe1,0x00,0x16,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d, 0x00,0x2a,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe2,0x1c,0x6d, 0x49,0x43,0x43,0x5f,0x50,0x52,0x4f,0x46,0x49,0x4c,0x45,0x00,0x01,0x01,0x00,0x00, 0x1c,0x5d,0x4c,0x69,0x6e,0x6f,0x02,0x10,0x00,0x00,0x6d,0x6e,0x74,0x72,0x52,0x47, 0x42,0x20,0x58,0x59,0x5a,0x20,0x07,0xce,0x00,0x02,0x00,0x09,0x00,0x06,0x00,0x31, 0x00,0x00,0x61,0x63,0x73,0x70,0x4d,0x53,0x46,0x54,0x00,0x00,0x00,0x00,0x49,0x45, 0x43,0x20,0x73,0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf6,0xd6,0x00,0x01,0x00,0x00,0x00,0x00,0xd3,0x2d,0x48,0x50, 0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x11,0x63,0x70,0x72,0x74,0x00,0x00,0x01,0x50,0x00,0x00,0x00,0x33,0x64,0x65, 0x73,0x63,0x00,0x00,0x01,0x83,0x00,0x00,0x00,0x6c,0x77,0x74,0x70,0x74,0x00,0x00, 0x01,0xef,0x00,0x00,0x00,0x14,0x62,0x6b,0x70,0x74,0x00,0x00,0x02,0x03,0x00,0x00, 0x00,0x14,0x72,0x58,0x59,0x5a,0x00,0x00,0x02,0x17,0x00,0x00,0x00,0x14,0x67,0x58, 0x59,0x5a,0x00,0x00,0x02,0x2b,0x00,0x00,0x00,0x14,0x62,0x58,0x59,0x5a,0x00,0x00, 0x02,0x3f,0x00,0x00,0x00,0x14,0x64,0x6d,0x6e,0x64,0x00,0x00,0x02,0x53,0x00,0x00, 0x00,0x70,0x64,0x6d,0x64,0x64,0x00,0x00,0x02,0xc3,0x00,0x00,0x00,0x88,0x76,0x75, 0x65,0x64,0x00,0x00,0x03,0x4b,0x00,0x00,0x00,0x86,0x76,0x69,0x65,0x77,0x00,0x00, 0x03,0xd1,0x00,0x00,0x00,0x24,0x6c,0x75,0x6d,0x69,0x00,0x00,0x03,0xf5,0x00,0x00, 0x00,0x14,0x6d,0x65,0x61,0x73,0x00,0x00,0x04,0x09,0x00,0x00,0x00,0x24,0x74,0x65, 0x63,0x68,0x00,0x00,0x04,0x2d,0x00,0x00,0x00,0x0c,0x72,0x54,0x52,0x43,0x00,0x00, 0x04,0x39,0x00,0x00,0x08,0x0c,0x67,0x54,0x52,0x43,0x00,0x00,0x0c,0x45,0x00,0x00, 0x08,0x0c,0x62,0x54,0x52,0x43,0x00,0x00,0x14,0x51,0x00,0x00,0x08,0x0c,0x74,0x65, 0x78,0x74,0x00,0x00,0x00,0x00,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20, 0x28,0x63,0x29,0x20,0x31,0x39,0x39,0x38,0x20,0x48,0x65,0x77,0x6c,0x65,0x74,0x74, 0x2d,0x50,0x61,0x63,0x6b,0x61,0x72,0x64,0x20,0x43,0x6f,0x6d,0x70,0x61,0x6e,0x79, 0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x73,0x52,0x47, 0x42,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x73,0x52,0x47,0x42,0x20,0x49, 0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xf3,0x51,0x00,0x01,0x00,0x00,0x00,0x01,0x16, 0xcc,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x6f, 0xa2,0x00,0x00,0x38,0xf5,0x00,0x00,0x03,0x90,0x58,0x59,0x5a,0x20,0x00,0x00,0x00, 0x00,0x00,0x00,0x62,0x99,0x00,0x00,0xb7,0x85,0x00,0x00,0x18,0xda,0x58,0x59,0x5a, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0xa0,0x00,0x00,0x0f,0x84,0x00,0x00,0xb6, 0xcf,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x49,0x45,0x43, 0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x69,0x65,0x63,0x2e, 0x63,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x49,0x45, 0x43,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x69,0x65,0x63, 0x2e,0x63,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0x49,0x45,0x43, 0x20,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x20,0x44,0x65,0x66,0x61,0x75, 0x6c,0x74,0x20,0x52,0x47,0x42,0x20,0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73,0x70, 0x61,0x63,0x65,0x20,0x2d,0x20,0x73,0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x2e,0x49,0x45,0x43,0x20,0x36,0x31,0x39,0x36,0x36,0x2d, 0x32,0x2e,0x31,0x20,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x52,0x47,0x42,0x20, 0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x2d,0x20,0x73, 0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2c,0x52,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x56, 0x69,0x65,0x77,0x69,0x6e,0x67,0x20,0x43,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e, 0x20,0x69,0x6e,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2c,0x52,0x65,0x66,0x65, 0x72,0x65,0x6e,0x63,0x65,0x20,0x56,0x69,0x65,0x77,0x69,0x6e,0x67,0x20,0x43,0x6f, 0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x49,0x45,0x43,0x36,0x31, 0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76, 0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x13,0xa4,0xfe,0x00,0x14,0x5f,0x2e,0x00, 0x10,0xcf,0x14,0x00,0x03,0xed,0xcc,0x00,0x04,0x13,0x0b,0x00,0x03,0x5c,0x9e,0x00, 0x00,0x00,0x01,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x4c,0x09,0x56,0x00, 0x50,0x00,0x00,0x00,0x57,0x1f,0xe7,0x6d,0x65,0x61,0x73,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x8f,0x00,0x00,0x00,0x02,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x69,0x67,0x20,0x00, 0x00,0x00,0x00,0x43,0x52,0x54,0x20,0x63,0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00, 0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00, 0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00, 0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00, 0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00, 0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00, 0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00, 0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01, 0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01, 0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01, 0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01, 0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01, 0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02, 0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02, 0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02, 0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03, 0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03, 0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03, 0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04, 0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04, 0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05, 0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05, 0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06, 0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06, 0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07, 0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07, 0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08, 0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09, 0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09, 0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a, 0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b, 0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c, 0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c, 0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d, 0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e, 0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f, 0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10, 0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11, 0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12, 0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13, 0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14, 0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15, 0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16, 0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17, 0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18, 0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19, 0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a, 0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c, 0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d, 0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e, 0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20, 0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21, 0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22, 0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24, 0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25, 0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27, 0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28, 0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a, 0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c, 0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d, 0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f, 0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31, 0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32, 0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34, 0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36, 0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38, 0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a, 0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c, 0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e, 0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40, 0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42, 0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44, 0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46, 0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48, 0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a, 0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d, 0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f, 0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51, 0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53, 0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56, 0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58, 0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b, 0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d, 0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60, 0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62, 0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65, 0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68, 0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a, 0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d, 0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70, 0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73, 0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76, 0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79, 0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c, 0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f, 0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82, 0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85, 0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88, 0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b, 0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e, 0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92, 0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95, 0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98, 0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c, 0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f, 0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3, 0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6, 0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa, 0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad, 0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1, 0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5, 0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8, 0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc, 0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0, 0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4, 0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8, 0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc, 0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0, 0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4, 0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8, 0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc, 0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0, 0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4, 0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9, 0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed, 0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1, 0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6, 0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa, 0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff, 0x6d,0xff,0xff,0x63,0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00, 0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00, 0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00, 0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00, 0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00, 0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00, 0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00, 0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01, 0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01, 0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01, 0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01, 0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02, 0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02, 0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02, 0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02, 0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03, 0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03, 0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04, 0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04, 0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04, 0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05, 0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05, 0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06, 0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06, 0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07, 0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08, 0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08, 0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09, 0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a, 0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a, 0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b, 0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c, 0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d, 0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d, 0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e, 0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f, 0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10, 0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11, 0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12, 0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13, 0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14, 0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15, 0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16, 0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17, 0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18, 0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a, 0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b, 0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c, 0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d, 0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f, 0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20, 0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21, 0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23, 0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24, 0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26, 0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27, 0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29, 0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a, 0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c, 0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e, 0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f, 0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31, 0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33, 0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35, 0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36, 0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38, 0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a, 0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c, 0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e, 0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40, 0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42, 0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44, 0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46, 0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49, 0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b, 0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d, 0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f, 0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52, 0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54, 0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56, 0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59, 0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b, 0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e, 0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60, 0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63, 0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66, 0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68, 0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b, 0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e, 0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71, 0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74, 0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76, 0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79, 0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c, 0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f, 0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82, 0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86, 0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89, 0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c, 0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f, 0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92, 0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96, 0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99, 0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c, 0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0, 0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3, 0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7, 0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab, 0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae, 0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2, 0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6, 0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9, 0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd, 0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1, 0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5, 0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9, 0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd, 0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1, 0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5, 0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9, 0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd, 0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1, 0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6, 0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea, 0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee, 0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3, 0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7, 0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc, 0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0x63, 0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00, 0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00, 0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00, 0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00, 0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00, 0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00, 0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00, 0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01, 0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01, 0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01, 0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01, 0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02, 0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02, 0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02, 0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03, 0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03, 0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03, 0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04, 0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04, 0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05, 0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05, 0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06, 0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06, 0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07, 0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07, 0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08, 0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08, 0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09, 0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a, 0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a, 0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b, 0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c, 0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d, 0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e, 0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e, 0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f, 0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10, 0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11, 0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12, 0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13, 0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14, 0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15, 0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16, 0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17, 0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19, 0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a, 0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b, 0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c, 0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e, 0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f, 0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20, 0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22, 0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23, 0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25, 0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26, 0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28, 0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29, 0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b, 0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c, 0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e, 0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30, 0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31, 0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33, 0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35, 0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37, 0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39, 0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b, 0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d, 0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f, 0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41, 0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43, 0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45, 0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47, 0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49, 0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b, 0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e, 0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50, 0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52, 0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55, 0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57, 0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a, 0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c, 0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f, 0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61, 0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64, 0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66, 0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69, 0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c, 0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f, 0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71, 0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74, 0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77, 0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a, 0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d, 0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80, 0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83, 0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86, 0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89, 0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d, 0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90, 0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93, 0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97, 0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a, 0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d, 0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1, 0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4, 0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8, 0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab, 0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf, 0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3, 0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6, 0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba, 0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe, 0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2, 0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6, 0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca, 0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce, 0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2, 0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6, 0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda, 0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde, 0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2, 0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7, 0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb, 0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef, 0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4, 0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8, 0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd, 0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0xff,0xdb,0x00,0x43,0x00, 0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x04,0x05,0x08, 0x05,0x05,0x04,0x04,0x05,0x0a,0x07,0x08,0x06,0x08,0x0c,0x0b,0x0d,0x0d,0x0c,0x0b, 0x0c,0x0c,0x0e,0x0f,0x14,0x11,0x0e,0x0f,0x13,0x0f,0x0c,0x0c,0x11,0x18,0x11,0x13, 0x15,0x15,0x16,0x17,0x16,0x0d,0x11,0x19,0x1a,0x18,0x16,0x1a,0x14,0x16,0x16,0x15, 0xff,0xdb,0x00,0x43,0x01,0x03,0x03,0x03,0x05,0x04,0x05,0x0a,0x05,0x05,0x0a,0x15, 0x0e,0x0c,0x0e,0x0e,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0xff,0xc0,0x00,0x11,0x08,0x00,0x28,0x00,0x28,0x03,0x01, 0x11,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x00,0x19,0x00,0x00,0x02,0x03, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x09,0x04, 0x06,0x08,0x02,0xff,0xc4,0x00,0x30,0x10,0x00,0x01,0x03,0x02,0x04,0x04,0x04,0x06, 0x02,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x11,0x00,0x06, 0x07,0x21,0x08,0x12,0x31,0x41,0x09,0x13,0x22,0x61,0x14,0x16,0x23,0x51,0x71,0x81, 0x45,0x91,0x62,0xa1,0xb1,0xff,0xc4,0x00,0x19,0x01,0x00,0x02,0x03,0x01,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x00,0x01,0x02,0x05, 0xff,0xc4,0x00,0x25,0x11,0x00,0x02,0x02,0x01,0x03,0x03,0x04,0x03,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x31,0x11,0x12,0x21,0x04,0x05,0x22, 0x13,0x41,0x51,0xf0,0x14,0x61,0x71,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11, 0x03,0x11,0x00,0x3f,0x00,0x69,0xb8,0x84,0x32,0x9f,0x15,0x5c,0x5a,0xd7,0x74,0x97, 0x39,0x41,0xca,0xfa,0x6d,0x16,0x8d,0x32,0xa0,0xdb,0x22,0x45,0x45,0xca,0x8d,0xd4, 0x1a,0x04,0x5d,0x08,0x4a,0x42,0x93,0x72,0x45,0x8d,0xef,0xb0,0x3f,0xd9,0xab,0xab, 0x77,0x2c,0x0d,0x96,0xed,0xe1,0x02,0xfa,0x27,0x88,0xde,0x75,0x82,0xd2,0x7e,0x6b, 0xc8,0x14,0x5a,0x9b,0x83,0x67,0x0d,0x3a,0x53,0xd1,0x53,0xf9,0x05,0x49,0x76,0xff, 0x00,0x8f,0xf7,0x82,0xbe,0x97,0xe1,0x98,0xfc,0x9f,0x94,0x5e,0xa9,0x1e,0x25,0xd9, 0x2c,0x45,0x75,0xec,0xdd,0x95,0xf3,0x25,0x34,0x21,0x5f,0xc7,0xf2,0x4c,0x01,0x1d, 0x39,0x95,0xba,0x08,0xdf,0xb0,0x07,0x18,0x9f,0x4e,0xe2,0xb5,0x35,0x1b,0xd3,0xe0, 0x3e,0x68,0x9f,0x10,0x39,0x2b,0x88,0x3a,0x24,0xda,0xae,0x98,0xd4,0x24,0x4e,0x8d, 0x09,0xd0,0xc4,0x90,0xfc,0x57,0x18,0x53,0x6b,0x22,0xe0,0x7a,0x80,0x07,0x6f,0xb1, 0x38,0x03,0x4d,0x64,0x32,0x7a,0x84,0x6c,0x51,0x62,0x8f,0xd7,0xe9,0x93,0xeb,0xba, 0xef,0x9e,0xa4,0x56,0x14,0x84,0xcb,0x45,0x5a,0x44,0x74,0xa5,0x0b,0x04,0x25,0xb6, 0xd6,0x50,0x81,0x7e,0xfe,0x90,0x30,0xf5,0x4b,0xc5,0x08,0xda,0xfc,0x98,0x3b,0x97, 0x11,0x6d,0xad,0x4b,0x77,0xcc,0x4a,0xaf,0xcc,0xa5,0xaa,0xe2,0xe7,0xef,0xfd,0xe0, 0x9a,0xe9,0xc1,0x8c,0x97,0x3d,0x0e,0x99,0x56,0x5e,0xb1,0x65,0x16,0x28,0xf5,0x39, 0xd1,0x1d,0x7e,0xa0,0xd3,0x6a,0x71,0xb7,0x88,0xfa,0x77,0xba,0xc1,0xf6,0x29,0x06, 0xfe,0xd8,0xab,0x1f,0x8b,0xd4,0xd4,0x57,0x3c,0x0d,0xd6,0x9d,0x0a,0x04,0x40,0xea, 0xe9,0x31,0xe2,0x32,0x1e,0x57,0x33,0x8a,0x8e,0x84,0xa7,0x9d,0x5f,0x73,0x6e,0xa7, 0x1c,0xe1,0xf2,0x5a,0xd6,0x96,0xd0,0xa5,0x2c,0x84,0xa5,0x22,0xe4,0x9e,0xc3,0x10, 0x82,0x5b,0xcf,0xd5,0xc5,0x66,0x1c,0xcb,0x98,0x6a,0xe5,0x43,0xcc,0x9f,0x35,0xe9, 0x00,0xa8,0x9b,0xfd,0x47,0x09,0xb8,0x1d,0xcf,0xaa,0xff,0x00,0xac,0x3c,0xb8,0x49, 0x08,0xe5,0xb6,0x56,0xe5,0x38,0xb1,0xf1,0x25,0x29,0x50,0x4b,0x65,0xb4,0x24,0xf3, 0x85,0x25,0x24,0xdb,0x75,0x11,0xd2,0xf7,0xe9,0xdb,0xa6,0x26,0xe2,0xd4,0x75,0x7a, 0x04,0x5d,0x2d,0xa3,0xcd,0xa0,0xea,0x32,0x7c,0x87,0xe2,0xbf,0x36,0x2c,0x35,0x3e, 0xd3,0x91,0x1d,0x0e,0xa4,0x29,0x64,0x36,0x37,0x1d,0x0f,0xac,0xed,0x85,0xe1,0xd4, 0xc6,0xfa,0xdc,0xa2,0x9a,0xe7,0xdc,0xe9,0x77,0x0e,0xd7,0x67,0x6f,0xbd,0x55,0x63, 0x4d,0xe9,0xaf,0x0f,0x55,0xf7,0xee,0x06,0x9b,0xa4,0x14,0xb9,0x94,0xec,0x99,0x11, 0x75,0x77,0x16,0xe4,0xa7,0xd2,0x16,0xae,0x63,0xd3,0x01,0x04,0x4e,0xd5,0x5a,0x93, 0xb4,0x6d,0x2f,0xcd,0xf3,0xe2,0x82,0xa7,0xa2,0xd1,0xe5,0xbc,0x80,0x3a,0xf3,0x25, 0x95,0x11,0xff,0x00,0x31,0x71,0xc9,0x52,0xc0,0x97,0xaa,0x53,0x12,0xa4,0x36,0x82, 0x40,0x3e,0x6a,0x4a,0xbd,0x17,0xdb,0x73,0x7b,0xf5,0x1d,0xb6,0x1d,0x6f,0x87,0x5e, 0x44,0x96,0x08,0x11,0xea,0x2a,0x89,0x51,0x8b,0x25,0xa6,0xa1,0xbc,0xe2,0x27,0x79, 0xcd,0xa1,0x4d,0x97,0x12,0x79,0x49,0x36,0xf2,0x8e,0xe5,0x07,0x6e,0xa3,0xdb,0xb9, 0xc6,0x27,0x1d,0xd1,0x71,0xfd,0x17,0xbd,0x43,0xc9,0x9a,0xcb,0x84,0xc8,0x2e,0xeb, 0x46,0xae,0xd7,0x6b,0x53,0x29,0xf4,0xb8,0x48,0x6d,0x4c,0x34,0xa4,0x53,0x62,0x98, 0xec,0x90,0x9e,0x6b,0x90,0x83,0xb8,0x27,0x95,0x24,0xdf,0x7c,0x29,0x57,0x4c,0xba, 0x6a,0x55,0x49,0xb7,0xfd,0xc8,0xc2,0xb7,0xd6,0x9e,0xfe,0x31,0xec,0x32,0x46,0x59, 0x4c,0x76,0x50,0xd3,0x40,0x25,0x08,0x01,0x20,0x0e,0xc0,0x62,0x05,0x39,0x99,0x11, 0x99,0xf1,0x1f,0x8b,0x35,0xa4,0x3d,0x1d,0xf4,0x29,0xb7,0x1a,0x58,0xb8,0x5a,0x48, 0xb1,0x07,0xd8,0x83,0x88,0x43,0x30,0xaf,0xc3,0xbf,0x4d,0x4b,0xef,0x2d,0x12,0xf3, 0x09,0x4a,0xd4,0x54,0x94,0xb8,0xfa,0x15,0xe5,0x83,0xd0,0x0f,0x4f,0x41,0xd3,0x7b, 0x9f,0x73,0x82,0x7a,0xb2,0x05,0xe9,0x44,0x1a,0xea,0x1f,0x87,0x14,0x9a,0x72,0x15, 0x51,0xd2,0x1c,0xc4,0xb3,0x50,0x66,0xeb,0x66,0x3c,0xfb,0x36,0xae,0x6f,0xf1,0x71, 0x22,0xc0,0xfe,0x47,0xef,0x1b,0x8d,0xcd,0x64,0x15,0xdd,0x2c,0x6c,0x8b,0x8c,0xb0, 0x1d,0xf8,0x4f,0xe1,0xcd,0xed,0x06,0xc9,0xef,0xfc,0xcb,0x31,0xaa,0x96,0x68,0xa9, 0xb9,0xf1,0x13,0xdf,0x68,0x92,0x84,0x28,0x8d,0x90,0x92,0x77,0x20,0x0e,0xfb,0x5c, 0xdf,0x03,0xb2,0x7b,0x98,0x4a,0x28,0x8d,0x31,0x51,0x88,0x76,0xc6,0x03,0x1f,0xff, 0xd9 }; /* created by reswrap from file cy_pinpad_n.jpg */ const unsigned char fxcj_icon_cy_pinpad_n[]={ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x60, 0x00,0x60,0x00,0x00,0xff,0xe1,0x00,0x16,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d, 0x00,0x2a,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe2,0x1c,0x6d, 0x49,0x43,0x43,0x5f,0x50,0x52,0x4f,0x46,0x49,0x4c,0x45,0x00,0x01,0x01,0x00,0x00, 0x1c,0x5d,0x4c,0x69,0x6e,0x6f,0x02,0x10,0x00,0x00,0x6d,0x6e,0x74,0x72,0x52,0x47, 0x42,0x20,0x58,0x59,0x5a,0x20,0x07,0xce,0x00,0x02,0x00,0x09,0x00,0x06,0x00,0x31, 0x00,0x00,0x61,0x63,0x73,0x70,0x4d,0x53,0x46,0x54,0x00,0x00,0x00,0x00,0x49,0x45, 0x43,0x20,0x73,0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf6,0xd6,0x00,0x01,0x00,0x00,0x00,0x00,0xd3,0x2d,0x48,0x50, 0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x11,0x63,0x70,0x72,0x74,0x00,0x00,0x01,0x50,0x00,0x00,0x00,0x33,0x64,0x65, 0x73,0x63,0x00,0x00,0x01,0x83,0x00,0x00,0x00,0x6c,0x77,0x74,0x70,0x74,0x00,0x00, 0x01,0xef,0x00,0x00,0x00,0x14,0x62,0x6b,0x70,0x74,0x00,0x00,0x02,0x03,0x00,0x00, 0x00,0x14,0x72,0x58,0x59,0x5a,0x00,0x00,0x02,0x17,0x00,0x00,0x00,0x14,0x67,0x58, 0x59,0x5a,0x00,0x00,0x02,0x2b,0x00,0x00,0x00,0x14,0x62,0x58,0x59,0x5a,0x00,0x00, 0x02,0x3f,0x00,0x00,0x00,0x14,0x64,0x6d,0x6e,0x64,0x00,0x00,0x02,0x53,0x00,0x00, 0x00,0x70,0x64,0x6d,0x64,0x64,0x00,0x00,0x02,0xc3,0x00,0x00,0x00,0x88,0x76,0x75, 0x65,0x64,0x00,0x00,0x03,0x4b,0x00,0x00,0x00,0x86,0x76,0x69,0x65,0x77,0x00,0x00, 0x03,0xd1,0x00,0x00,0x00,0x24,0x6c,0x75,0x6d,0x69,0x00,0x00,0x03,0xf5,0x00,0x00, 0x00,0x14,0x6d,0x65,0x61,0x73,0x00,0x00,0x04,0x09,0x00,0x00,0x00,0x24,0x74,0x65, 0x63,0x68,0x00,0x00,0x04,0x2d,0x00,0x00,0x00,0x0c,0x72,0x54,0x52,0x43,0x00,0x00, 0x04,0x39,0x00,0x00,0x08,0x0c,0x67,0x54,0x52,0x43,0x00,0x00,0x0c,0x45,0x00,0x00, 0x08,0x0c,0x62,0x54,0x52,0x43,0x00,0x00,0x14,0x51,0x00,0x00,0x08,0x0c,0x74,0x65, 0x78,0x74,0x00,0x00,0x00,0x00,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20, 0x28,0x63,0x29,0x20,0x31,0x39,0x39,0x38,0x20,0x48,0x65,0x77,0x6c,0x65,0x74,0x74, 0x2d,0x50,0x61,0x63,0x6b,0x61,0x72,0x64,0x20,0x43,0x6f,0x6d,0x70,0x61,0x6e,0x79, 0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x73,0x52,0x47, 0x42,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x73,0x52,0x47,0x42,0x20,0x49, 0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xf3,0x51,0x00,0x01,0x00,0x00,0x00,0x01,0x16, 0xcc,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x6f, 0xa2,0x00,0x00,0x38,0xf5,0x00,0x00,0x03,0x90,0x58,0x59,0x5a,0x20,0x00,0x00,0x00, 0x00,0x00,0x00,0x62,0x99,0x00,0x00,0xb7,0x85,0x00,0x00,0x18,0xda,0x58,0x59,0x5a, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0xa0,0x00,0x00,0x0f,0x84,0x00,0x00,0xb6, 0xcf,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x49,0x45,0x43, 0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x69,0x65,0x63,0x2e, 0x63,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x49,0x45, 0x43,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x69,0x65,0x63, 0x2e,0x63,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0x49,0x45,0x43, 0x20,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x20,0x44,0x65,0x66,0x61,0x75, 0x6c,0x74,0x20,0x52,0x47,0x42,0x20,0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73,0x70, 0x61,0x63,0x65,0x20,0x2d,0x20,0x73,0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x2e,0x49,0x45,0x43,0x20,0x36,0x31,0x39,0x36,0x36,0x2d, 0x32,0x2e,0x31,0x20,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x52,0x47,0x42,0x20, 0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x2d,0x20,0x73, 0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2c,0x52,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x56, 0x69,0x65,0x77,0x69,0x6e,0x67,0x20,0x43,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e, 0x20,0x69,0x6e,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2c,0x52,0x65,0x66,0x65, 0x72,0x65,0x6e,0x63,0x65,0x20,0x56,0x69,0x65,0x77,0x69,0x6e,0x67,0x20,0x43,0x6f, 0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x49,0x45,0x43,0x36,0x31, 0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76, 0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x13,0xa4,0xfe,0x00,0x14,0x5f,0x2e,0x00, 0x10,0xcf,0x14,0x00,0x03,0xed,0xcc,0x00,0x04,0x13,0x0b,0x00,0x03,0x5c,0x9e,0x00, 0x00,0x00,0x01,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x4c,0x09,0x56,0x00, 0x50,0x00,0x00,0x00,0x57,0x1f,0xe7,0x6d,0x65,0x61,0x73,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x8f,0x00,0x00,0x00,0x02,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x69,0x67,0x20,0x00, 0x00,0x00,0x00,0x43,0x52,0x54,0x20,0x63,0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00, 0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00, 0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00, 0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00, 0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00, 0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00, 0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00, 0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01, 0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01, 0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01, 0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01, 0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01, 0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02, 0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02, 0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02, 0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03, 0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03, 0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03, 0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04, 0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04, 0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05, 0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05, 0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06, 0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06, 0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07, 0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07, 0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08, 0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09, 0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09, 0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a, 0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b, 0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c, 0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c, 0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d, 0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e, 0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f, 0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10, 0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11, 0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12, 0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13, 0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14, 0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15, 0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16, 0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17, 0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18, 0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19, 0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a, 0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c, 0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d, 0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e, 0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20, 0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21, 0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22, 0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24, 0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25, 0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27, 0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28, 0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a, 0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c, 0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d, 0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f, 0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31, 0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32, 0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34, 0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36, 0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38, 0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a, 0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c, 0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e, 0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40, 0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42, 0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44, 0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46, 0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48, 0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a, 0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d, 0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f, 0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51, 0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53, 0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56, 0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58, 0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b, 0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d, 0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60, 0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62, 0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65, 0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68, 0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a, 0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d, 0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70, 0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73, 0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76, 0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79, 0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c, 0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f, 0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82, 0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85, 0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88, 0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b, 0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e, 0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92, 0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95, 0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98, 0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c, 0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f, 0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3, 0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6, 0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa, 0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad, 0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1, 0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5, 0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8, 0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc, 0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0, 0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4, 0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8, 0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc, 0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0, 0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4, 0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8, 0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc, 0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0, 0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4, 0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9, 0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed, 0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1, 0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6, 0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa, 0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff, 0x6d,0xff,0xff,0x63,0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00, 0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00, 0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00, 0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00, 0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00, 0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00, 0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00, 0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01, 0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01, 0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01, 0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01, 0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02, 0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02, 0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02, 0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02, 0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03, 0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03, 0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04, 0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04, 0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04, 0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05, 0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05, 0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06, 0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06, 0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07, 0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08, 0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08, 0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09, 0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a, 0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a, 0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b, 0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c, 0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d, 0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d, 0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e, 0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f, 0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10, 0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11, 0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12, 0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13, 0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14, 0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15, 0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16, 0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17, 0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18, 0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a, 0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b, 0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c, 0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d, 0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f, 0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20, 0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21, 0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23, 0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24, 0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26, 0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27, 0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29, 0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a, 0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c, 0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e, 0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f, 0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31, 0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33, 0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35, 0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36, 0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38, 0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a, 0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c, 0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e, 0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40, 0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42, 0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44, 0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46, 0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49, 0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b, 0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d, 0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f, 0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52, 0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54, 0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56, 0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59, 0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b, 0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e, 0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60, 0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63, 0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66, 0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68, 0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b, 0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e, 0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71, 0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74, 0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76, 0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79, 0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c, 0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f, 0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82, 0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86, 0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89, 0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c, 0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f, 0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92, 0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96, 0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99, 0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c, 0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0, 0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3, 0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7, 0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab, 0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae, 0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2, 0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6, 0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9, 0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd, 0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1, 0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5, 0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9, 0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd, 0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1, 0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5, 0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9, 0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd, 0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1, 0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6, 0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea, 0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee, 0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3, 0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7, 0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc, 0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0x63, 0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00, 0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00, 0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00, 0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00, 0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00, 0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00, 0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00, 0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01, 0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01, 0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01, 0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01, 0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02, 0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02, 0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02, 0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03, 0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03, 0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03, 0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04, 0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04, 0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05, 0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05, 0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06, 0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06, 0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07, 0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07, 0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08, 0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08, 0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09, 0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a, 0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a, 0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b, 0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c, 0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d, 0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e, 0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e, 0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f, 0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10, 0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11, 0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12, 0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13, 0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14, 0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15, 0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16, 0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17, 0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19, 0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a, 0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b, 0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c, 0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e, 0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f, 0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20, 0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22, 0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23, 0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25, 0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26, 0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28, 0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29, 0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b, 0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c, 0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e, 0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30, 0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31, 0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33, 0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35, 0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37, 0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39, 0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b, 0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d, 0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f, 0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41, 0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43, 0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45, 0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47, 0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49, 0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b, 0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e, 0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50, 0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52, 0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55, 0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57, 0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a, 0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c, 0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f, 0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61, 0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64, 0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66, 0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69, 0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c, 0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f, 0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71, 0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74, 0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77, 0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a, 0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d, 0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80, 0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83, 0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86, 0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89, 0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d, 0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90, 0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93, 0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97, 0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a, 0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d, 0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1, 0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4, 0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8, 0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab, 0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf, 0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3, 0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6, 0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba, 0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe, 0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2, 0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6, 0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca, 0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce, 0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2, 0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6, 0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda, 0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde, 0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2, 0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7, 0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb, 0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef, 0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4, 0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8, 0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd, 0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0xff,0xdb,0x00,0x43,0x00, 0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x04,0x05,0x08, 0x05,0x05,0x04,0x04,0x05,0x0a,0x07,0x08,0x06,0x08,0x0c,0x0b,0x0d,0x0d,0x0c,0x0b, 0x0c,0x0c,0x0e,0x0f,0x14,0x11,0x0e,0x0f,0x13,0x0f,0x0c,0x0c,0x11,0x18,0x11,0x13, 0x15,0x15,0x16,0x17,0x16,0x0d,0x11,0x19,0x1a,0x18,0x16,0x1a,0x14,0x16,0x16,0x15, 0xff,0xdb,0x00,0x43,0x01,0x03,0x03,0x03,0x05,0x04,0x05,0x0a,0x05,0x05,0x0a,0x15, 0x0e,0x0c,0x0e,0x0e,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0xff,0xc0,0x00,0x11,0x08,0x00,0x64,0x00,0x64,0x03,0x01, 0x11,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x03, 0x05,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x08, 0x09,0x01,0x02,0x04,0x05,0x06,0x03,0xff,0xc4,0x00,0x3d,0x10,0x00,0x01,0x03,0x03, 0x03,0x02,0x03,0x05,0x04,0x08,0x05,0x05,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, 0x00,0x05,0x11,0x06,0x12,0x21,0x07,0x31,0x08,0x41,0x51,0x13,0x14,0x61,0x71,0x81, 0x09,0x22,0x32,0xa1,0x15,0x23,0x42,0x82,0x91,0xa2,0xb1,0xc1,0x16,0x33,0x62,0x72, 0x92,0x52,0x53,0xc2,0xd2,0xe1,0xff,0xc4,0x00,0x1a,0x01,0x01,0x00,0x03,0x01,0x01, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x03, 0x05,0x06,0xff,0xc4,0x00,0x25,0x11,0x00,0x02,0x02,0x02,0x01,0x04,0x02,0x03,0x01, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x03,0x21,0x04,0x05,0x12, 0x31,0x41,0x13,0x51,0x06,0x22,0x61,0x71,0x32,0xff,0xda,0x00,0x0c,0x03,0x01,0x00, 0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0x94,0xec,0xd0,0x06,0x68,0x03,0x34,0x07,0x8c, 0xb9,0x8c,0xc0,0x8c,0xec,0x89,0xaf,0x36,0xc3,0x0d,0x24,0xa9,0x6e,0x38,0xad,0xa9, 0x48,0x1e,0x64,0xd0,0x1c,0x99,0xeb,0x2e,0x85,0x44,0xb4,0xc5,0x7f,0x57,0x69,0xf8, 0xf2,0x54,0x37,0x25,0x99,0x13,0x10,0xd2,0x88,0xf5,0xc2,0x88,0xa9,0x69,0xa2,0xaa, 0x49,0x9d,0x4c,0x1b,0x9c,0x4b,0xa3,0x21,0xdb,0x6c,0xb8,0xf2,0xda,0x23,0x21,0x6c, 0x38,0x16,0x0f,0xd4,0x1a,0x82,0xc9,0xd9,0x93,0x93,0x40,0x19,0xa0,0x0c,0xd0,0x06, 0x68,0x03,0x34,0x01,0x9a,0x00,0xcd,0x01,0x4a,0x00,0xa0,0x0a,0x01,0xa5,0x78,0xe9, 0xea,0xdd,0xce,0xc5,0x65,0x6b,0x4c,0xe8,0xed,0xcf,0xcf,0x28,0x12,0x1e,0x61,0xa3, 0x95,0x38,0xb3,0xfe,0x5a,0x30,0x39,0xc0,0xfc,0x47,0xf7,0x6b,0xac,0x22,0xeb,0xb9, 0x1c,0x72,0x4d,0x5d,0x32,0x3a,0x18,0xb4,0xdc,0xad,0xd1,0x64,0xcf,0xd6,0xcd,0xae, 0x45,0xf6,0xe4,0xe8,0x2f,0x2a,0x62,0x32,0x43,0x64,0x28,0xec,0x01,0x5f,0xbb,0x91, 0xf1,0xc7,0x95,0x6a,0xc5,0x8f,0xdb,0x38,0x64,0xc9,0xba,0x46,0x16,0x9d,0xb6,0x3f, 0xa6,0xa7,0x3f,0x26,0xd9,0x79,0xbb,0xc3,0x4f,0xb4,0x2a,0x61,0x10,0xa5,0x2d,0x92, 0xda,0x7c,0xb2,0xa0,0x41,0x24,0x7c,0x3f,0xbd,0x74,0x58,0x57,0xb2,0x1e,0x57,0xe8, 0x52,0x2d,0x7d,0x7e,0xea,0xb6,0x9b,0x4a,0x4e,0x92,0xea,0x6e,0xa9,0x8f,0xb4,0xf0, 0xc5,0xc6,0x47,0xbe,0x37,0xf2,0xfd,0x66,0x70,0x3e,0x86,0xaa,0xf0,0x45,0x92,0xb3, 0x34,0x28,0x5a,0x5f,0xc7,0x8f,0x5b,0xe0,0x32,0xec,0x7d,0x45,0x78,0xd3,0x77,0x14, 0x29,0xb5,0x21,0x0f,0x98,0x03,0xda,0xa4,0x91,0x80,0xa1,0xb7,0x6a,0x72,0x0f,0x3c, 0x83,0xf2,0xae,0x6b,0x8c,0xbd,0x92,0xf3,0xbf,0x42,0x8d,0xd3,0x6f,0xb4,0x3f,0x55, 0xda,0x52,0x63,0xf5,0x1a,0xd5,0x02,0xfc,0xd8,0x48,0x09,0x90,0xd9,0xf7,0x57,0xb7, 0x7f,0xab,0x09,0x29,0x23,0xe4,0x91,0xdf,0xe9,0x49,0x71,0x53,0xf0,0x4c,0x73,0xb5, 0xe4,0x50,0x2d,0xdf,0x6a,0x37,0x4d,0x1a,0x9e,0xb8,0x3a,0xca,0xc9,0xaa,0xf4,0xf4, 0xa4,0x2b,0x6a,0xc3,0x8c,0x21,0xf4,0xa4,0xf7,0xce,0x50,0xac,0x91,0x8c,0x10,0x71, 0xc8,0xac,0xef,0x0c,0x91,0xdd,0x65,0x4c,0x54,0x34,0xcf,0x8e,0x8e,0x87,0xea,0x95, 0x36,0x88,0x7a,0xf2,0xdd,0x11,0xe5,0xe3,0x0d,0x4f,0x69,0xd8,0xe7,0x27,0xcb,0x2b, 0x48,0x1f,0x9d,0x51,0xc1,0xa2,0xca,0x48,0x5c,0xa0,0xce,0x8d,0x73,0x88,0xd4,0xab, 0x73,0xed,0x4a,0x8c,0xea,0x77,0x36,0xf3,0x4a,0x0a,0x4a,0xc7,0xa8,0x23,0xbd,0x54, 0xb1,0xef,0x40,0x14,0x01,0x40,0x5a,0xe3,0x89,0x69,0xb5,0x2d,0xd5,0x04,0x21,0x20, 0xa9,0x4a,0x51,0xc0,0x00,0x79,0xd0,0x11,0x05,0xe2,0x1b,0x59,0xb9,0xae,0x7a,0xc9, 0xa8,0x2f,0x01,0x6b,0xd8,0xfb,0xf9,0x68,0xab,0xef,0x14,0xb6,0x02,0x52,0x94,0x80, 0x7d,0x33,0x8f,0xa5,0x6e,0xc6,0xaa,0x34,0x61,0x9b,0xb7,0x67,0x37,0x69,0xbe,0x2e, 0xdd,0x6d,0x94,0xca,0x65,0xdc,0xdb,0x7b,0x62,0x13,0x1d,0x2d,0x3d,0xb5,0xb0,0x7f, 0x68,0xac,0x79,0xf0,0x3b,0x7c,0xea,0xf6,0xfd,0x15,0xd7,0xb2,0xb7,0x9b,0xfb,0x3e, 0xfa,0xb4,0xc4,0x6a,0x2c,0xe8,0xa0,0x27,0x0e,0x4a,0x84,0xd2,0x56,0xa3,0x81,0x9c, 0x90,0x37,0x77,0xcf,0x9d,0x5a,0x32,0x95,0x6c,0x89,0x25,0x7a,0x30,0x04,0xcb,0x53, 0xe9,0x3e,0xf3,0x68,0x65,0xa3,0xeb,0x15,0xf7,0x10,0x7f,0x98,0xa8,0x7e,0x55,0x6e, 0xf2,0xb4,0x79,0x2e,0x25,0x91,0xe5,0x02,0xdb,0xb7,0x48,0x44,0x79,0x29,0x28,0x91, 0xff,0x00,0xa5,0x5b,0xb9,0x04,0x8b,0x5e,0xb3,0x45,0x94,0x41,0x8b,0x7a,0x80,0xda, 0x47,0x01,0x0f,0xc7,0x5b,0x24,0xfd,0x10,0x95,0x0f,0xce,0xa6,0xd0,0xd8,0xaa,0xe8, 0x7f,0x07,0xda,0x0f,0xaf,0xb1,0x63,0x3e,0xff,0x00,0x51,0xdc,0xb4,0xeb,0x37,0x93, 0xb5,0xfb,0x7b,0x6c,0xa5,0xe6,0x70,0x93,0xb1,0xb2,0x0f,0x04,0x65,0x21,0x1e,0x7d, 0xcd,0x64,0xcc,0xe4,0x9d,0xa5,0xa3,0xbe,0x35,0x16,0xa9,0xf9,0x36,0xd2,0x3e,0xc9, 0xed,0x73,0x63,0xbc,0x47,0x95,0x61,0xd5,0xf6,0x3b,0xa4,0x66,0x5c,0x0b,0xf6,0x72, 0x99,0x72,0x3a,0x88,0x1e,0x5c,0x6e,0x15,0x9f,0xe5,0xbf,0x27,0x75,0x8e,0x89,0x28, 0xe9,0xa6,0x96,0x5e,0x89,0xd0,0x36,0x2b,0x1b,0xe5,0x0a,0x7a,0x14,0x54,0x34,0xea, 0x91,0xd8,0xaf,0xba,0x88,0xf8,0x6e,0x26,0xb9,0x1d,0x12,0xa4,0x74,0xb4,0x24,0x28, 0x02,0x80,0x4c,0x3c,0x4e,0x6b,0x71,0xd3,0xbe,0x82,0x6b,0x5b,0xe0,0x24,0x38,0xd4, 0x05,0x47,0x6b,0x1d,0xfd,0xa3,0xc4,0x32,0x9c,0x7c,0x72,0xe0,0xa9,0x5e,0x48,0x97, 0x82,0x26,0xae,0x0b,0x54,0xfb,0xec,0xd9,0x07,0x68,0xde,0xf1,0x24,0xf7,0xce,0x4a, 0x8f,0xf7,0x1c,0x56,0xff,0x00,0x06,0x06,0x5d,0xee,0xf8,0x38,0x07,0x39,0xf2,0xab, 0x15,0x28,0xa6,0xb1,0xc9,0x18,0xa1,0x26,0x33,0xad,0x24,0x9f,0xc2,0x33,0xf2,0xa9, 0x0c,0xb0,0x30,0x82,0x0e,0x41,0xcf,0xce,0xa0,0x93,0xc4,0xb0,0x92,0xae,0x54,0xa0, 0x3b,0xfd,0x2a,0x48,0x16,0x5f,0x07,0xf6,0xa7,0xef,0x3d,0x63,0x86,0x86,0x14,0xe2, 0x02,0x1b,0xda,0xad,0xa7,0x19,0xdc,0xb4,0xa7,0x9f,0xe3,0x9f,0xa5,0x73,0xca,0xf4, 0x5e,0x2a,0xd9,0x2c,0x35,0x80,0xdc,0x52,0x80,0x28,0x02,0x80,0x28,0x04,0xd3,0xc4, 0xa5,0xa2,0xdd,0x7a,0xe8,0x4e,0xb4,0x8f,0x7f,0x68,0x3d,0x11,0xbb,0x7a,0xa4,0x84, 0x1c,0xf2,0xe3,0x44,0x38,0xdf,0x6f,0xf5,0xa1,0x35,0x31,0x56,0xd1,0x59,0xf8,0x64, 0x4b,0xa3,0x0d,0x38,0xe1,0x6d,0x58,0x42,0x94,0xa0,0x52,0x93,0x9c,0x60,0x60,0x13, 0xeb,0xcd,0x7a,0x14,0x60,0x66,0xca,0x2b,0x51,0x1c,0x42,0x4a,0xa7,0x25,0x95,0x24, 0x24,0x39,0xed,0x1b,0xce,0x3b,0xe7,0x1e,0xb8,0xe0,0x7f,0x1a,0xb5,0x15,0xd9,0x73, 0x96,0xa7,0x94,0xd8,0x53,0x6b,0x86,0xee,0x40,0x38,0x69,0xc2,0x49,0xce,0x47,0x18, 0xce,0x70,0x46,0x3e,0xa3,0xd6,0x94,0x11,0xae,0x54,0x67,0x3d,0xd9,0xd9,0x01,0xb5, 0x7b,0x06,0x94,0x12,0xb5,0xa5,0x41,0x40,0x13,0xdb,0x38,0xaa,0x3c,0x91,0x52,0x51, 0x6f,0x6c,0xe8,0xa2,0xda,0x72,0xf4,0x61,0x97,0xda,0x39,0xfb,0xd8,0x04,0xfa,0x1a, 0xb9,0x07,0x8b,0xdb,0x43,0x4b,0x5a,0x14,0x82,0x00,0xe0,0x05,0x0c,0xf3,0xf0,0xa0, 0x1c,0xff,0x00,0x80,0x2b,0x73,0x6d,0x6b,0x2b,0x85,0xde,0x60,0x09,0x65,0x95,0x21, 0xb0,0xa3,0xea,0x12,0xa5,0x7f,0x5d,0xb5,0xc3,0x3b,0xd1,0xd3,0x12,0xb9,0x12,0x25, 0x1a,0xff,0x00,0x0e,0x51,0x01,0xb7,0x46,0x4d,0x63,0x36,0x1b,0x04,0xa8,0x28,0x02, 0x92,0x08,0x3e,0x62,0x80,0xad,0x00,0x50,0x05,0x00,0x87,0xf8,0xd0,0xbf,0x7e,0x83, 0xf0,0xf5,0xa8,0x52,0x85,0x10,0xe4,0xe7,0x23,0xc4,0x4e,0x0e,0x33,0x97,0x52,0xa5, 0x7f,0x2a,0x55,0x5d,0x31,0x2b,0x92,0x39,0xe5,0x75,0x12,0x2d,0x72,0xa2,0x94,0x24, 0x61,0x59,0x40,0x00,0xa3,0x80,0x4a,0x95,0x9e,0x7f,0xe3,0x5b,0x51,0x89,0x96,0x5f, 0x03,0xf6,0x88,0x91,0xa4,0xac,0xb4,0xa6,0x5f,0x5a,0x9b,0x4a,0x72,0x37,0x12,0x93, 0x82,0x71,0x9f,0x53,0xe7,0xf1,0xaa,0xc7,0x25,0xba,0x2e,0xe1,0xa3,0xcd,0xc2,0xf3, 0x50,0x4c,0xa5,0xc7,0x75,0x6d,0x20,0x27,0xda,0x2d,0x29,0xc8,0x46,0xe0,0x48,0xc9, 0xf5,0x20,0x1e,0x3b,0x9c,0x1a,0xb7,0x7a,0xba,0x23,0xb5,0xd1,0x8f,0xef,0x46,0x53, 0x6a,0x74,0x97,0x14,0x33,0x8c,0x9c,0x9a,0x9b,0x20,0xf3,0x4c,0x80,0xf2,0x41,0x4a, 0xd2,0xa0,0x47,0x04,0x54,0x82,0xd2,0xbc,0x01,0x9c,0x50,0x0e,0x73,0xa0,0x77,0xaf, 0xf0,0x47,0x4e,0x22,0xcc,0xce,0xd7,0xae,0x73,0x9d,0x58,0x3e,0x65,0x29,0x01,0x3f, 0xd4,0x56,0x5c,0xec,0xed,0x87,0xcd,0x8e,0x67,0xa7,0xfa,0xb6,0x4d,0xe5,0x6d,0x6c, 0x5a,0x8e,0x71,0xe7,0x59,0x8d,0x43,0x8d,0xb3,0x25,0x62,0xdc,0xd7,0xb6,0x24,0xa8, 0x8c,0xf3,0x40,0x66,0xd0,0x05,0x00,0x50,0x0d,0x37,0xed,0x14,0xbe,0x88,0x9d,0x36, 0xd3,0xf6,0x90,0xac,0x2a,0x5c,0xf5,0xc8,0xe7,0xb6,0x1b,0x6c,0xa7,0x9f,0x86,0x5e, 0x15,0xdb,0x02,0xfd,0x8e,0x19,0xde,0x88,0xfb,0x20,0xad,0xf5,0x04,0xf2,0x33,0x82, 0x47,0xe1,0x21,0x09,0x07,0x23,0xf8,0x9a,0xd4,0xf4,0x66,0x4a,0xcc,0x0d,0x45,0x6c, 0x95,0x6a,0xbe,0xb0,0xcd,0xf1,0x82,0x97,0x9d,0x69,0x12,0x1a,0x42,0x96,0x0e,0xd0, 0xb4,0x05,0x25,0x44,0x0f,0x32,0x95,0x83,0xeb,0xcf,0x38,0xaa,0x63,0x69,0xbd,0x17, 0x9d,0xa3,0xca,0xf5,0x36,0x62,0x60,0x1b,0x79,0x79,0x71,0xed,0xd2,0x1c,0x41,0x74, 0xa5,0x00,0xee,0x52,0x01,0x03,0x9f,0x23,0x85,0x11,0xf5,0xf5,0xa7,0x6a,0x72,0x16, 0xd2,0x2a,0xd5,0xd7,0xf4,0x3c,0x75,0x29,0xb8,0x71,0xa5,0x85,0xb2,0xe3,0x29,0x4c, 0x80,0x0a,0x50,0x56,0x31,0xbc,0x73,0xc2,0x87,0x91,0xe7,0x07,0xcb,0x8a,0x99,0xc5, 0xb6,0x4c,0x25,0x46,0xcb,0x42,0xf4,0xe6,0xf3,0xac,0x53,0x25,0xeb,0x70,0x64,0xa5, 0xb5,0x92,0xe3,0x87,0x71,0x4e,0xe3,0xf7,0x88,0x01,0x20,0x9e,0x3e,0x5d,0xab,0x27, 0x2f,0xa8,0x63,0xe2,0xd4,0x64,0x9b,0x7f,0xc3,0xde,0xe8,0xbf,0x8d,0xf2,0x3a,0xb2, 0x94,0xf1,0xca,0x31,0x8a,0x75,0x72,0x74,0xaf,0xe8,0xc3,0xd5,0x9a,0x7e,0x76,0x92, 0xb8,0xa6,0x15,0xe1,0xa4,0xa5,0xc5,0x27,0x7b,0x6b,0x41,0xca,0x56,0x9f,0x51,0xc0, 0x3d,0xfc,0x88,0x06,0xbb,0x71,0x39,0x90,0xe4,0xc7,0xba,0x06,0x3e,0xb1,0xd1,0x79, 0x1d,0x2b,0x37,0xc3,0xc8,0xad,0xab,0x4d,0x3b,0x4d,0x7f,0x18,0xe0,0xad,0x56,0xf5, 0x37,0xa5,0xf4,0x55,0xb1,0xb1,0xca,0x20,0x09,0x0a,0x1f,0x17,0x55,0xb8,0xff,0x00, 0x4a,0xa6,0x67,0xb3,0x0e,0x15,0xa1,0xda,0x74,0x1f,0x49,0x28,0x25,0x95,0xb8,0x93, 0x80,0x07,0x71,0x5c,0x4d,0x03,0x8c,0x42,0x42,0x12,0x12,0x9e,0x00,0x18,0x14,0x05, 0x68,0x02,0x80,0x28,0x06,0x0f,0xf6,0x8c,0xdf,0x7d,0xe7,0x5c,0xe9,0x6b,0x3a,0x54, 0x90,0x22,0xc1,0x2f,0xe5,0x47,0x80,0x5d,0x70,0x83,0xf9,0x34,0x2b,0x46,0x05,0xe5, 0x99,0xb3,0xbd,0x8c,0xf9,0x2a,0x52,0x89,0x71,0x39,0x4f,0x0a,0x5f,0x3c,0x77,0x51, 0x1f,0xc3,0xb7,0xd2,0xbb,0xb7,0x48,0xe3,0x15,0xb3,0x4f,0x22,0x33,0xb6,0xfd,0x49, 0x22,0x25,0xd9,0xb5,0x7b,0xfb,0x04,0xb7,0x8d,0xe1,0x41,0x1c,0x90,0x40,0xc7,0x1d, 0xd3,0xf9,0x55,0x61,0x55,0x68,0xb4,0xaf,0xc3,0x0b,0xd5,0xee,0x65,0xd1,0x30,0xed, 0xb3,0x64,0x84,0x40,0x8a,0xb5,0xba,0xd3,0x7b,0x31,0x92,0xa2,0x14,0xa0,0x0e,0x3d, 0x40,0x3e,0x7d,0xbc,0xaa,0x23,0x15,0x76,0x89,0x93,0x75,0x45,0x6e,0x17,0xb6,0xdb, 0xb2,0x4d,0xb6,0x33,0x6f,0x69,0xf9,0x72,0x4b,0x5e,0xce,0x52,0x95,0x82,0xca,0x52, 0x14,0x14,0x07,0xc1,0x5b,0x81,0x3f,0xed,0xa4,0xa2,0xdb,0x11,0x92,0x48,0x55,0xfa, 0x2b,0xd2,0x8e,0xa5,0xdc,0xb4,0xda,0xae,0xda,0x1a,0x3c,0x44,0xdb,0x5d,0x59,0x0d, 0xae,0x64,0x8f,0x64,0x1e,0x5a,0x78,0x25,0x18,0x20,0xf0,0x46,0x33,0xc0,0xc8,0xf8, 0x71,0xf3,0x9d,0x6f,0x9f,0xc2,0x8e,0x45,0x0c,0xcd,0xa9,0x2f,0xaf,0x5f,0xe9,0xf5, 0x9f,0x8c,0xf5,0x6e,0x6f,0x4e,0x52,0xf8,0x63,0x19,0x42,0x5e,0x63,0x25,0x69,0xd7, 0xbf,0xf4,0xe0,0xb5,0xe9,0xd4,0xb3,0xb5,0x8b,0x96,0xbd,0x76,0xdb,0xec,0xde,0xe3, 0xb8,0x23,0xaa,0x33,0xa3,0x96,0xd4,0x71,0x8c,0x72,0x73,0x90,0x41,0x0a,0xc9,0xc8, 0xc6,0x09,0x18,0xaf,0x5f,0xa6,0x43,0x04,0x71,0x77,0xe0,0x76,0xa5,0xbb,0xfb,0x3c, 0xdf,0xc8,0x3a,0xcf,0x23,0xa9,0x66,0x4f,0x3c,0x54,0x7b,0x55,0x28,0xc5,0x52,0x5e, 0xff,0x00,0xbe,0x47,0x69,0xa5,0xf4,0xd7,0xbe,0xea,0x96,0x98,0x6d,0x39,0x6a,0x23, 0x4c,0xc7,0x47,0xc9,0x28,0x1f,0xdf,0x35,0x7c,0x8f,0x67,0x99,0x89,0x7e,0xa3,0xd3, 0xe9,0xc5,0x81,0x36,0x8b,0x3b,0x67,0x6e,0x14,0x47,0xa5,0x50,0xea,0x75,0xf4,0x01, 0x40,0x14,0x01,0x40,0x45,0xff,0x00,0x8d,0xbd,0x46,0x2e,0x9e,0x21,0x6f,0xa9,0x42, 0x90,0x51,0x05,0xa6,0xa3,0x27,0x77,0x39,0xd8,0xd2,0x49,0x00,0x7f,0xb9,0x4a,0x1f, 0x3a,0xd7,0x85,0x7e,0xb6,0x63,0xcc,0xff,0x00,0x61,0x05,0x6d,0xa9,0x0f,0x94,0xb1, 0x01,0xa7,0x9f,0x7c,0xa5,0x28,0x0d,0xa4,0x15,0x28,0x94,0xa7,0x27,0xb0,0xf2,0xc1, 0x3f,0x4a,0xb4,0xda,0xad,0x95,0x8a,0x7e,0x8e,0x76,0x0b,0xc1,0x57,0x19,0x0e,0xbd, 0xed,0x1c,0x92,0x73,0xed,0x14,0xb3,0x92,0x06,0x3f,0xfb,0xf9,0xd1,0x25,0x44,0xb6, 0xec,0xad,0xe6,0xf7,0x2f,0x50,0x5c,0xe2,0xb9,0x73,0x5b,0x29,0x4c,0x36,0x1b,0x8a, 0xd3,0x4d,0xa3,0x69,0x29,0x40,0x09,0x49,0x3c,0x0f,0x21,0xf5,0xc9,0x34,0x84,0x6b, 0x62,0x6c,0xb3,0x50,0x5d,0x22,0xcc,0xb5,0xc3,0x85,0x02,0xde,0xeb,0x77,0x16,0xe4, 0x38,0xe3,0xf3,0x14,0xe1,0x29,0x53,0x67,0x61,0x42,0x42,0x4f,0x09,0x23,0x0b,0x19, 0x1d,0xf7,0xf3,0xda,0xa2,0x29,0xa9,0x16,0x6d,0x34,0x2c,0x5d,0x28,0xf1,0x45,0xa9, 0xfa,0x5b,0xa6,0x1a,0xb0,0xb3,0x6d,0x8b,0x77,0x80,0xc2,0x94,0x63,0x87,0x1d,0x53, 0x6b,0x64,0xa8,0x95,0x14,0xf1,0x9d,0xc0,0xa8,0x93,0x8c,0x67,0x24,0xf3,0xe4,0x3c, 0x2e,0xa5,0xd0,0x61,0xca,0xcd,0xf3,0x42,0x6e,0x32,0x7e,0x6b,0xc3,0x36,0x71,0xb9, 0xb2,0xc7,0x0e,0xc7,0x1b,0x46,0x82,0xd9,0xaa,0xee,0x1d,0x62,0xeb,0x7d,0xbe,0xf9, 0xa8,0x03,0x26,0x6c,0xc9,0x6d,0x2d,0x6d,0xb0,0x9c,0x21,0x08,0x69,0x20,0x04,0x8c, 0xf3,0xc2,0x50,0x3b,0xd7,0xab,0xc1,0xe1,0xc3,0x87,0x85,0x61,0x83,0xba,0xfb,0xfe, 0xec,0xc9,0x9f,0x33,0xcb,0x37,0x36,0x3f,0x4e,0x8b,0xe9,0x33,0x36,0xe6,0xa9,0x2e, 0x23,0x3e,0xd1,0xd2,0xbc,0xe3,0xd4,0xd5,0x1b,0xb6,0x69,0x8a,0xa5,0x43,0xa3,0x8c, 0xc2,0x63,0x30,0x86,0xd0,0x30,0x12,0x31,0x50,0x49,0xe9,0x40,0x14,0x01,0x40,0x14, 0x04,0x4b,0x78,0xb4,0x84,0xec,0x2f,0x10,0x9a,0xdd,0x87,0x86,0xc5,0x3d,0x37,0x70, 0x24,0x65,0x45,0x2e,0x04,0xa9,0x38,0xf4,0xc0,0x35,0xb3,0x0f,0xfc,0x98,0xb2,0xff, 0x00,0xd0,0x8f,0x1b,0xb4,0xeb,0x7c,0xb5,0x48,0xb5,0x49,0x76,0x1b,0xe1,0x44,0xa5, 0xd6,0x94,0x52,0xa4,0xe7,0x20,0xf2,0x08,0x3d,0x89,0x15,0x69,0x46,0xca,0xa7,0x46, 0x9e,0x02,0x95,0x6d,0x75,0x4e,0x25,0x29,0x90,0xb2,0x77,0x2b,0xda,0xf2,0x14,0x73, 0x9e,0x47,0xa7,0x96,0x3d,0x28,0xe3,0xaa,0x44,0xa9,0x6e,0xca,0xce,0x98,0xfd,0xdb, 0x50,0x4b,0xba,0xcf,0x66,0x34,0x72,0xfb,0xca,0x77,0xd8,0x47,0x4e,0x10,0x8c,0x92, 0x70,0x07,0x90,0xc9,0xe0,0x52,0x29,0xa4,0x4b,0x95,0xb3,0x1f,0x51,0x4e,0x81,0x22, 0x54,0x04,0x69,0xe8,0xf3,0x10,0x51,0x1d,0x02,0x53,0x8f,0x91,0xf7,0xde,0xc7,0xde, 0xdb,0x81,0xf8,0x72,0x78,0x1e,0x83,0xe3,0x4c,0x77,0x62,0x6d,0x1b,0x97,0xae,0x5a, 0xb2,0xd3,0xa5,0x6e,0x36,0xc4,0x43,0x2d,0x5a,0x67,0x38,0xdb,0xd2,0x14,0xe2,0x39, 0x4a,0x92,0x46,0x09,0xc0,0xc8,0xe7,0x1c,0x1c,0x54,0x3c,0x66,0x4c,0x5d,0x4b,0x8f, 0x92,0x7f,0x1c,0x26,0x9b,0xff,0x00,0x4e,0xef,0xc2,0xfd,0xa5,0x57,0x3e,0xa7,0x30, 0xe3,0x87,0xda,0x2d,0x86,0x96,0xe9,0x56,0x3b,0xa9,0x44,0x27,0xff,0x00,0x23,0x53, 0x91,0xd2,0x34,0xa5,0x6c,0x95,0x3e,0x92,0xe9,0xa4,0xda,0xad,0x48,0x75,0x48,0xc1, 0xda,0x31,0x58,0x4d,0xe2,0x85,0x40,0x14,0x01,0x40,0x14,0x01,0x40,0x32,0x0f,0x1f, 0xbd,0x0b,0xba,0xdc,0x2e,0x70,0xba,0x83,0xa3,0x6d,0xf2,0x2e,0x04,0xa1,0x11,0x6e, 0x6c,0x46,0x68,0xad,0x69,0x29,0xc8,0x6d,0xdc,0x01,0x92,0x30,0x42,0x4f,0xa6,0xd4, 0xfa,0xd7,0x6c,0x59,0x3b,0x74,0xce,0x19,0x61,0x7b,0x43,0x45,0xb7,0x74,0x4b,0x5b, 0xdd,0x10,0x16,0x74,0xad,0xf9,0xa0,0x79,0x1e,0xd6,0x22,0xdb,0xcf,0xfc,0x80,0xae, 0xbf,0x22,0xfb,0x39,0x2c,0x6c,0xcf,0x57,0x87,0xdd,0x5d,0x19,0x05,0x72,0xb4,0xc5, 0xe5,0x5c,0x7e,0xc4,0x72,0xbf,0xe9,0x9a,0x7c,0xa8,0x9f,0x8d,0xfd,0x1c,0x95,0xf3, 0x42,0xcf,0xb3,0x3a,0x5b,0xb8,0x40,0x9b,0x01,0xcf,0xfb,0x72,0x59,0x53,0x64,0xfd, 0x08,0xa9,0x53,0x4c,0xab,0x8d,0x1c,0xfb,0x96,0xe9,0x10,0x64,0x37,0x21,0x94,0x7e, 0xb1,0xa5,0x05,0xa7,0x70,0xe0,0x90,0x73,0x5d,0x13,0x39,0xe4,0xc6,0xa7,0x17,0x17, 0xed,0x1d,0x0d,0xdf,0xab,0xb2,0xe5,0x58,0xd3,0x6c,0x5d,0xb6,0x3a,0x54,0x94,0x16, 0xc3,0xa5,0x09,0x0a,0x09,0x29,0x29,0x23,0x76,0x32,0x53,0x83,0x9d,0xbd,0x89,0xe7, 0xbe,0x49,0x1f,0x3b,0x0e,0x89,0x35,0x28,0xa7,0x25,0x51,0x69,0xad,0x6f,0x43,0x80, 0xf0,0x0b,0xd3,0x29,0x77,0xbb,0x84,0xdb,0xfb,0xcc,0xab,0xdd,0x4a,0xc3,0x2d,0x2c, 0x8f,0xc5,0xb7,0x39,0xc7,0xd4,0xff,0x00,0x2d,0x70,0xcf,0x3f,0x47,0xd4,0xe1,0x8d, 0xbb,0x24,0xb6,0xdd,0x0d,0x30,0x21,0xb4,0xca,0x06,0x36,0x8e,0x6b,0x31,0xa8,0xc9, 0xa0,0x0a,0x00,0xa0,0x0a,0x00,0xa0,0x02,0x32,0x30,0x79,0x14,0x06,0x0b,0x96,0x38, 0x2e,0xac,0xad,0xc8,0xed,0x95,0x1f,0x3c,0x50,0x14,0x36,0x18,0x04,0x60,0xc6,0x6f, 0x1f,0x2a,0x03,0x55,0x78,0xe9,0xe5,0x8a,0xf9,0x19,0x71,0xee,0x50,0x23,0xc8,0x65, 0x7c,0x29,0xb7,0x5b,0x0b,0x49,0xf9,0x83,0x40,0x20,0x9d,0x49,0xf0,0x35,0xa5,0xb5, 0x2b,0x4f,0x3d,0xa5,0x01,0xb2,0xcb,0x56,0x48,0x0c,0x8d,0xcd,0x13,0xf1,0x41,0xed, 0xfb,0xa4,0x55,0xe3,0x36,0x8e,0x72,0xc6,0x98,0xd9,0x6d,0x1f,0x67,0x56,0xbc,0xd4, 0x1d,0x41,0x10,0xb5,0x29,0x89,0x69,0xd3,0x2c,0xac,0x29,0xdb,0xa3,0x4f,0xa5,0xc5, 0x3e,0x8f,0xfa,0x5b,0x40,0xfb,0xc0,0x9f,0x55,0x00,0x07,0xc7,0xb5,0x74,0xf9,0xb5, 0xa3,0x9a,0xc3,0xbd,0x92,0x1b,0xd3,0xae,0x9a,0x59,0x7a,0x65,0xa7,0x21,0x59,0xb4, 0xcc,0x46,0xe3,0xc4,0x8a,0xd8,0x6d,0x09,0x03,0x9e,0x3c,0xc9,0xf3,0x3f,0x1a,0xe0, 0xdd,0x9d,0xd2,0xad,0x23,0xac,0xa1,0x21,0x40,0x14,0x01,0x40,0x5d,0xb6,0x80,0x36, 0xd0,0x06,0xda,0x00,0xdb,0x40,0x1b,0x68,0x03,0x6d,0x00,0x6d,0xa0,0x0c,0x7c,0xe8, 0x03,0x6d,0x00,0x6d,0xa0,0x0d,0xb4,0x01,0xb6,0x80,0x36,0xd0,0x1f,0xff,0xd9 }; /* created by reswrap from file cy_pinpad_b.jpg */ const unsigned char fxcj_icon_cy_pinpad_b[]={ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x02,0x01,0x00,0x60, 0x00,0x60,0x00,0x00,0xff,0xe2,0x1c,0x6d,0x49,0x43,0x43,0x5f,0x50,0x52,0x4f,0x46, 0x49,0x4c,0x45,0x00,0x01,0x01,0x00,0x00,0x1c,0x5d,0x4c,0x69,0x6e,0x6f,0x02,0x10, 0x00,0x00,0x6d,0x6e,0x74,0x72,0x52,0x47,0x42,0x20,0x58,0x59,0x5a,0x20,0x07,0xce, 0x00,0x02,0x00,0x09,0x00,0x06,0x00,0x31,0x00,0x00,0x61,0x63,0x73,0x70,0x4d,0x53, 0x46,0x54,0x00,0x00,0x00,0x00,0x49,0x45,0x43,0x20,0x73,0x52,0x47,0x42,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf6,0xd6,0x00,0x01, 0x00,0x00,0x00,0x00,0xd3,0x2d,0x48,0x50,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x63,0x70,0x72,0x74,0x00,0x00, 0x01,0x50,0x00,0x00,0x00,0x33,0x64,0x65,0x73,0x63,0x00,0x00,0x01,0x83,0x00,0x00, 0x00,0x6c,0x77,0x74,0x70,0x74,0x00,0x00,0x01,0xef,0x00,0x00,0x00,0x14,0x62,0x6b, 0x70,0x74,0x00,0x00,0x02,0x03,0x00,0x00,0x00,0x14,0x72,0x58,0x59,0x5a,0x00,0x00, 0x02,0x17,0x00,0x00,0x00,0x14,0x67,0x58,0x59,0x5a,0x00,0x00,0x02,0x2b,0x00,0x00, 0x00,0x14,0x62,0x58,0x59,0x5a,0x00,0x00,0x02,0x3f,0x00,0x00,0x00,0x14,0x64,0x6d, 0x6e,0x64,0x00,0x00,0x02,0x53,0x00,0x00,0x00,0x70,0x64,0x6d,0x64,0x64,0x00,0x00, 0x02,0xc3,0x00,0x00,0x00,0x88,0x76,0x75,0x65,0x64,0x00,0x00,0x03,0x4b,0x00,0x00, 0x00,0x86,0x76,0x69,0x65,0x77,0x00,0x00,0x03,0xd1,0x00,0x00,0x00,0x24,0x6c,0x75, 0x6d,0x69,0x00,0x00,0x03,0xf5,0x00,0x00,0x00,0x14,0x6d,0x65,0x61,0x73,0x00,0x00, 0x04,0x09,0x00,0x00,0x00,0x24,0x74,0x65,0x63,0x68,0x00,0x00,0x04,0x2d,0x00,0x00, 0x00,0x0c,0x72,0x54,0x52,0x43,0x00,0x00,0x04,0x39,0x00,0x00,0x08,0x0c,0x67,0x54, 0x52,0x43,0x00,0x00,0x0c,0x45,0x00,0x00,0x08,0x0c,0x62,0x54,0x52,0x43,0x00,0x00, 0x14,0x51,0x00,0x00,0x08,0x0c,0x74,0x65,0x78,0x74,0x00,0x00,0x00,0x00,0x43,0x6f, 0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x31,0x39,0x39,0x38, 0x20,0x48,0x65,0x77,0x6c,0x65,0x74,0x74,0x2d,0x50,0x61,0x63,0x6b,0x61,0x72,0x64, 0x20,0x43,0x6f,0x6d,0x70,0x61,0x6e,0x79,0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x12,0x73,0x52,0x47,0x42,0x20,0x49,0x45,0x43,0x36,0x31,0x39, 0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x12,0x73,0x52,0x47,0x42,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d, 0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xf3, 0x51,0x00,0x01,0x00,0x00,0x00,0x01,0x16,0xcc,0x58,0x59,0x5a,0x20,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x6f,0xa2,0x00,0x00,0x38,0xf5,0x00,0x00,0x03, 0x90,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x62,0x99,0x00,0x00,0xb7, 0x85,0x00,0x00,0x18,0xda,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x24, 0xa0,0x00,0x00,0x0f,0x84,0x00,0x00,0xb6,0xcf,0x64,0x65,0x73,0x63,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x16,0x49,0x45,0x43,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f, 0x77,0x77,0x77,0x2e,0x69,0x65,0x63,0x2e,0x63,0x68,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x16,0x49,0x45,0x43,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f, 0x2f,0x77,0x77,0x77,0x2e,0x69,0x65,0x63,0x2e,0x63,0x68,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2e,0x49,0x45,0x43,0x20,0x36,0x31,0x39,0x36,0x36,0x2d,0x32, 0x2e,0x31,0x20,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x52,0x47,0x42,0x20,0x63, 0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x2d,0x20,0x73,0x52, 0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0x49,0x45, 0x43,0x20,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x20,0x44,0x65,0x66,0x61, 0x75,0x6c,0x74,0x20,0x52,0x47,0x42,0x20,0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73, 0x70,0x61,0x63,0x65,0x20,0x2d,0x20,0x73,0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2c,0x52,0x65,0x66, 0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x56,0x69,0x65,0x77,0x69,0x6e,0x67,0x20,0x43, 0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x49,0x45,0x43,0x36, 0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x2c,0x52,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x56,0x69, 0x65,0x77,0x69,0x6e,0x67,0x20,0x43,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20, 0x69,0x6e,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00, 0x13,0xa4,0xfe,0x00,0x14,0x5f,0x2e,0x00,0x10,0xcf,0x14,0x00,0x03,0xed,0xcc,0x00, 0x04,0x13,0x0b,0x00,0x03,0x5c,0x9e,0x00,0x00,0x00,0x01,0x58,0x59,0x5a,0x20,0x00, 0x00,0x00,0x00,0x00,0x4c,0x09,0x56,0x00,0x50,0x00,0x00,0x00,0x57,0x1f,0xe7,0x6d, 0x65,0x61,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x02,0x8f,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x73,0x69,0x67,0x20,0x00,0x00,0x00,0x00,0x43,0x52,0x54,0x20,0x63, 0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00, 0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00, 0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00, 0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00, 0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00, 0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00, 0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00, 0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01, 0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01, 0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01, 0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01, 0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02, 0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02, 0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02, 0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03, 0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03, 0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03, 0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04, 0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04, 0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05, 0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05, 0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06, 0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06, 0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07, 0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07, 0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08, 0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08, 0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09, 0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a, 0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a, 0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b, 0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c, 0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d, 0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e, 0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e, 0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f, 0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10, 0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11, 0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12, 0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13, 0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14, 0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15, 0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16, 0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17, 0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19, 0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a, 0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b, 0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c, 0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e, 0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f, 0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20, 0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22, 0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23, 0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25, 0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26, 0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28, 0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29, 0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b, 0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c, 0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e, 0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30, 0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31, 0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33, 0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35, 0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37, 0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39, 0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b, 0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d, 0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f, 0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41, 0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43, 0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45, 0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47, 0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49, 0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b, 0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e, 0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50, 0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52, 0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55, 0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57, 0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a, 0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c, 0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f, 0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61, 0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64, 0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66, 0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69, 0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c, 0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f, 0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71, 0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74, 0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77, 0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a, 0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d, 0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80, 0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83, 0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86, 0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89, 0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d, 0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90, 0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93, 0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97, 0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a, 0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d, 0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1, 0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4, 0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8, 0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab, 0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf, 0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3, 0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6, 0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba, 0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe, 0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2, 0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6, 0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca, 0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce, 0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2, 0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6, 0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda, 0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde, 0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2, 0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7, 0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb, 0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef, 0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4, 0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8, 0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd, 0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0x63,0x75,0x72,0x76,0x00, 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00, 0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00, 0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00, 0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00, 0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00, 0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00, 0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01, 0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01, 0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01, 0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01, 0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01, 0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02, 0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02, 0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02, 0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03, 0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03, 0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03, 0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04, 0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04, 0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05, 0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05, 0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06, 0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06, 0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07, 0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07, 0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08, 0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09, 0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09, 0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a, 0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b, 0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b, 0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c, 0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d, 0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e, 0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f, 0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10, 0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10, 0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11, 0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12, 0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13, 0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14, 0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16, 0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17, 0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18, 0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19, 0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a, 0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b, 0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d, 0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e, 0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f, 0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21, 0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22, 0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23, 0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25, 0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26, 0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28, 0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a, 0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b, 0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d, 0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e, 0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30, 0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32, 0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34, 0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35, 0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37, 0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39, 0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b, 0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d, 0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f, 0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41, 0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43, 0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45, 0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48, 0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a, 0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c, 0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e, 0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51, 0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53, 0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55, 0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58, 0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a, 0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d, 0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f, 0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62, 0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64, 0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67, 0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a, 0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d, 0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f, 0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72, 0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75, 0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78, 0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b, 0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e, 0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81, 0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84, 0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87, 0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a, 0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d, 0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91, 0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94, 0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97, 0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b, 0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e, 0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2, 0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5, 0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9, 0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac, 0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0, 0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4, 0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7, 0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb, 0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf, 0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3, 0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7, 0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb, 0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf, 0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3, 0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7, 0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb, 0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf, 0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3, 0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8, 0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec, 0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0, 0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5, 0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9, 0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe, 0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0x63,0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00, 0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00, 0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00, 0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00, 0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00, 0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00, 0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00, 0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01, 0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01, 0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01, 0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01, 0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01, 0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02, 0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02, 0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02, 0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03, 0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03, 0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03, 0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04, 0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04, 0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05, 0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05, 0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06, 0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06, 0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07, 0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07, 0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08, 0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09, 0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09, 0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a, 0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b, 0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c, 0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c, 0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d, 0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e, 0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f, 0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10, 0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11, 0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12, 0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13, 0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14, 0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15, 0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16, 0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17, 0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18, 0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19, 0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a, 0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c, 0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d, 0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e, 0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20, 0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21, 0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22, 0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24, 0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25, 0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27, 0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28, 0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a, 0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c, 0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d, 0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f, 0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31, 0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32, 0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34, 0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36, 0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38, 0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a, 0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c, 0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e, 0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40, 0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42, 0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44, 0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46, 0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48, 0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a, 0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d, 0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f, 0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51, 0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53, 0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56, 0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58, 0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b, 0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d, 0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60, 0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62, 0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65, 0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68, 0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a, 0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d, 0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70, 0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73, 0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76, 0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79, 0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c, 0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f, 0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82, 0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85, 0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88, 0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b, 0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e, 0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92, 0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95, 0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98, 0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c, 0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f, 0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3, 0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6, 0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa, 0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad, 0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1, 0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5, 0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8, 0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc, 0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0, 0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4, 0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8, 0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc, 0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0, 0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4, 0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8, 0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc, 0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0, 0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4, 0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9, 0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed, 0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1, 0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6, 0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa, 0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff, 0x6d,0xff,0xff,0xff,0xc0,0x00,0x11,0x08,0x00,0xc8,0x00,0xc8,0x03,0x01,0x11,0x00, 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xdb,0x00,0x84,0x00,0x03,0x02,0x02,0x03,0x02, 0x02,0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05, 0x0a,0x07,0x08,0x06,0x08,0x0c,0x0b,0x0d,0x0d,0x0c,0x0b,0x0c,0x0c,0x0e,0x0f,0x14, 0x11,0x0e,0x0f,0x13,0x0f,0x0c,0x0c,0x11,0x18,0x11,0x13,0x15,0x15,0x16,0x17,0x16, 0x0d,0x11,0x19,0x1a,0x18,0x16,0x1a,0x14,0x16,0x16,0x15,0x01,0x03,0x03,0x03,0x05, 0x04,0x05,0x0a,0x05,0x05,0x0a,0x15,0x0e,0x0c,0x0e,0x0e,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xff,0xc4,0x01,0xa2, 0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02, 0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02, 0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71, 0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33, 0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a, 0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53, 0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73, 0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92, 0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9, 0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7, 0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4, 0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa, 0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02, 0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01, 0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22, 0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62, 0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28, 0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a, 0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a, 0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89, 0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7, 0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5, 0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3, 0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa, 0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfd,0x4e, 0xdc,0x7d,0x4d,0x00,0x1b,0x8f,0xa9,0xa0,0x03,0x71,0xf5,0x34,0x00,0x6e,0x3e,0xa6, 0x80,0x0d,0xc7,0xd4,0xd0,0x01,0xb8,0xfa,0x9a,0x00,0x37,0x1f,0x53,0x40,0x06,0xe3, 0xea,0x68,0x00,0xdc,0x7d,0x4d,0x00,0x1b,0x8f,0xa9,0xa0,0x03,0x71,0xf5,0x34,0x00, 0x6e,0x3e,0xa6,0x80,0x0d,0xc7,0xd4,0xd0,0x01,0xb8,0xfa,0x9a,0x00,0x37,0x1f,0x53, 0x40,0x06,0xe3,0xea,0x68,0x00,0xdc,0x7d,0x4d,0x00,0x1b,0x8f,0xa9,0xa0,0x03,0x71, 0xf5,0x34,0x00,0x6e,0x3e,0xa6,0x80,0x0d,0xc7,0xd4,0xd0,0x01,0xb8,0xfa,0x9a,0x00, 0x37,0x1f,0x53,0x40,0x06,0xe3,0xea,0x68,0x00,0xdc,0x7d,0x4d,0x00,0x25,0x00,0x14, 0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x06,0x6f,0x88,0xbc,0x47,0xa7,0xf8, 0x57,0x4b,0x7b,0xfd,0x72,0xe1,0x6d,0xed,0xd4,0xe0,0x67,0xab,0xb7,0x60,0x07,0x73, 0x4d,0x26,0xf6,0x13,0x76,0x57,0x67,0x9c,0xdf,0x7e,0xd3,0x3e,0x0d,0xd1,0xed,0x9a, 0xe3,0x5d,0xb8,0x92,0xc2,0xdd,0x79,0xdf,0x21,0x5e,0x9f,0x9d,0x53,0x83,0x44,0x2a, 0x89,0x91,0xe8,0x5f,0xb5,0x97,0xc2,0x8f,0x10,0xc4,0xb2,0x59,0xf8,0xc7,0x4e,0x89, 0x1a,0x43,0x10,0x6b,0x8d,0xc8,0xa5,0xc0,0xce,0xdd,0xd8,0xc6,0x71,0xcf,0x5a,0x9b, 0x5c,0xae,0x74,0x7a,0x0e,0x8f,0xe3,0x9f,0x0e,0xf8,0x82,0x35,0x7d,0x0f,0x5d,0xd2, 0x6f,0x95,0xba,0x79,0x37,0x28,0xd9,0xfd,0x68,0xb3,0x43,0x52,0x4c,0xdc,0x5f,0x99, 0x41,0x5c,0x10,0x7a,0x11,0xcd,0x21,0x81,0x18,0xeb,0x40,0x09,0x40,0x05,0x00,0x14, 0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50, 0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x1d,0x07,0x3c,0x01,0xdc, 0xd0,0x07,0xc1,0x9f,0xb4,0xe7,0xed,0x07,0x1e,0xab,0xe2,0x3b,0xc9,0x21,0xb8,0x2b, 0xa0,0xe9,0x45,0xa1,0xb7,0x00,0xfc,0xb2,0xb8,0xfb,0xcf,0xf8,0xe0,0xfe,0x02,0xb5, 0x87,0xba,0xae,0x63,0x3f,0x79,0x9f,0x00,0xf8,0xb7,0xe2,0x1e,0xb7,0xf1,0x93,0xc5, 0x49,0x6d,0x1d,0xc3,0xc3,0x65,0xbc,0xec,0x46,0xce,0xd4,0x41,0xd5,0xd8,0x7f,0x4f, 0xc2,0x9c,0x53,0x9b,0xb0,0x3b,0x41,0x5c,0xec,0x75,0x3f,0x0e,0x68,0x3a,0x5d,0xa4, 0x7a,0x03,0x45,0x73,0x73,0x6a,0xa2,0x3b,0x99,0x5e,0x67,0x1e,0x6a,0xc8,0xea,0x32, 0xca,0x46,0x00,0xc0,0xe8,0x3f,0x3c,0xd7,0x54,0x69,0x23,0x99,0xd5,0x6f,0x53,0xcb, 0xaf,0x64,0xd6,0x7c,0x1b,0xe2,0x0b,0x8d,0x3e,0xcf,0x51,0xbd,0x8e,0x58,0xa4,0x02, 0x37,0xb6,0x95,0xd0,0xc8,0xa7,0x94,0x61,0x83,0xdc,0x10,0x7f,0x1a,0xcf,0x97,0x53, 0x7b,0xdd,0x5c,0xf5,0x9f,0x07,0x7c,0x47,0xf8,0xc9,0xa0,0x46,0x92,0xe9,0x7e,0x37, 0xd5,0x34,0xac,0x74,0x8a,0xe6,0xf1,0x9d,0xb1,0xee,0x30,0xd8,0xfa,0x1a,0xaf,0x63, 0x72,0x3d,0xaa,0x47,0xa6,0xe8,0xff,0x00,0xb6,0x97,0xed,0x07,0xe1,0x1c,0x6e,0xd6, 0x2c,0xbc,0x47,0x04,0x7d,0x4c,0x96,0xe9,0x2b,0x63,0xe8,0x30,0x7f,0x4a,0x87,0x40, 0xa5,0x5b,0xcc,0xec,0x3c,0x3d,0xff,0x00,0x05,0x61,0xf1,0x6e,0x9f,0x2f,0x95,0xe2, 0xcf,0x08,0xe9,0x17,0xc5,0x38,0x73,0x03,0xb4,0x2f,0x9f,0xa1,0xa8,0x74,0x51,0x6a, 0xa5,0xcf,0x56,0xf0,0xc7,0xfc,0x15,0x77,0xc1,0x17,0xfb,0x13,0xc4,0xde,0x16,0xd7, 0x74,0xd6,0x3d,0x5e,0x16,0x59,0x54,0x7e,0x15,0x2e,0x8b,0x2b,0xda,0x1e,0x91,0x27, 0xfc,0x14,0x2b,0xe1,0x7e,0xa1,0xe1,0x8d,0x42,0xfb,0xc2,0xb7,0x17,0xba,0x86,0xab, 0x6f,0x10,0x68,0xb4,0xd9,0xa1,0x68,0x8c,0x8c,0x4e,0x00,0x2d,0xc8,0x03,0xfc,0x28, 0x8d,0x09,0x49,0xd8,0x52,0xaa,0x92,0x1d,0xe0,0x1f,0xdb,0xe7,0xc0,0xde,0x27,0x92, 0x28,0x3c,0x57,0x67,0x7f,0xe1,0xb9,0x98,0x80,0x66,0x38,0xb8,0x80,0x1f,0x76,0x5f, 0x98,0x7f,0xdf,0x34,0xe5,0x87,0x92,0xdb,0x52,0x63,0x5d,0x3d,0xcf,0xa2,0xb4,0x3f, 0x11,0xe9,0x3e,0x27,0xd3,0xe1,0xbe,0xf0,0xee,0xa5,0x65,0xa9,0x5a,0x4c,0x37,0x24, 0xd6,0xd2,0xab,0xab,0x0f,0xc2,0xb1,0x6a,0xdb,0x9b,0x26,0x9e,0xc6,0x8e,0xe5,0xfe, 0xf0,0xa4,0x31,0x40,0xcf,0x42,0x0d,0x00,0x18,0x34,0x00,0x98,0xc7,0x5a,0x00,0x28, 0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x03,0xcd, 0xff,0x00,0x68,0x0f,0x1b,0x0f,0x05,0xfc,0x3b,0xbc,0x30,0xdc,0x25,0xb5,0xe6,0xa1, 0x9b,0x48,0xa4,0x66,0xc6,0xc5,0x23,0x2e,0xdf,0x82,0x83,0xf8,0x91,0x57,0x4e,0x1c, 0xd2,0xb1,0x9d,0x59,0xf2,0xc4,0xfc,0xc0,0xf8,0xb9,0xe1,0xbb,0xaf,0x1f,0x48,0x9a, 0x7f,0x85,0xef,0x74,0xab,0xab,0x48,0xc7,0xcf,0xb6,0xfa,0x24,0x67,0x63,0xd7,0x86, 0x61,0xec,0x3f,0x3f,0x5a,0xe8,0xa9,0x4e,0x4f,0x48,0x98,0x42,0xaa,0x5b,0x9c,0x5f, 0x87,0xbe,0x13,0x6a,0x7e,0x07,0xb3,0x2f,0x7f,0x61,0x3f,0xda,0x2f,0x58,0x2e,0xf4, 0x5f,0x33,0xcb,0x40,0xd8,0x00,0xb2,0xe4,0x0c,0x9e,0x7a,0xf4,0xc5,0x69,0x42,0x9b, 0x8d,0xdb,0x22,0xb5,0x45,0x2d,0x8a,0x7a,0xcd,0xd8,0xb8,0xf1,0x0e,0xa4,0xe5,0x80, 0x3e,0x79,0x45,0x07,0xae,0xd5,0x00,0x0f,0xe5,0x5b,0x43,0x63,0x2b,0x91,0xe2,0x07, 0xbc,0x86,0xfa,0x4b,0x78,0x9a,0xf6,0x28,0xc4,0x31,0xdc,0x11,0x96,0x0a,0x33,0x8f, 0xc7,0x92,0x33,0xd7,0x15,0x56,0x57,0xb8,0x73,0x12,0x35,0xd3,0x13,0xc1,0x34,0xc3, 0x71,0x12,0xf0,0xab,0x0c,0x31,0x18,0xa0,0x18,0xdd,0x41,0x6d,0x35,0x80,0xab,0xac, 0xda,0x5b,0xde,0xf6,0x0f,0x22,0xfc,0xe3,0xfe,0x04,0x30,0x7f,0x5a,0x4e,0x29,0x82, 0x6c,0xc5,0x6f,0x03,0xe8,0x0d,0x27,0x98,0x91,0x5f,0x47,0x8e,0x7c,0xb5,0xb8,0xc8, 0xfd,0x46,0x6a,0x3d,0x9a,0x1f,0x39,0xbb,0x61,0xf6,0x7b,0x18,0xa2,0xb6,0xd3,0xe1, 0x58,0x2d,0xc3,0x03,0xb4,0x72,0x49,0xf5,0x24,0xf5,0xfc,0x6a,0xad,0x6d,0x81,0xb6, 0xf5,0x63,0x7c,0x86,0x81,0x21,0x8e,0x6d,0x3e,0xc5,0x16,0x55,0xdc,0x93,0xf9,0x65, 0x24,0xda,0x7b,0x82,0xa4,0x67,0xea,0x68,0xb0,0x8e,0xab,0x47,0xf1,0xa6,0xa1,0xa2, 0x23,0x43,0xa6,0x6a,0x17,0xd6,0x70,0x48,0x7e,0x6f,0xb3,0x4e,0xd1,0xb0,0x23,0xa1, 0x0c,0x3a,0x1f,0x7f,0xcf,0x34,0x4a,0x29,0x85,0xec,0x26,0xad,0xfb,0x52,0x7c,0x6a, 0xf8,0x49,0xaa,0x5b,0x5b,0xc7,0xe3,0x6d,0x46,0xf2,0xc6,0xe2,0x11,0x73,0x69,0x2d, 0xe0,0x59,0x44,0xb1,0x12,0x47,0x3e,0x84,0x10,0x41,0x19,0xea,0x2b,0x96,0x54,0x92, 0x3a,0xa1,0x52,0xe8,0xeb,0x7c,0x2f,0xff,0x00,0x05,0x4c,0xf8,0x9f,0xa4,0xb2,0xa6, 0xbd,0x65,0xa1,0x6a,0xea,0xbc,0x12,0xd1,0x98,0x98,0xfe,0x22,0xb3,0x74,0x91,0x6a, 0xa7,0x99,0xeb,0xfe,0x1a,0xff,0x00,0x82,0xb5,0x5b,0x84,0x8f,0xfe,0x12,0xaf,0x03, 0xcc,0x0f,0xf1,0x35,0x95,0xd0,0xfd,0x03,0x54,0xba,0x45,0x29,0xb3,0xd6,0x3c,0x27, 0xff,0x00,0x05,0x3c,0xf8,0x53,0xe2,0x29,0x22,0x8a,0xfe,0xdf,0xc4,0x3a,0x6c,0xee, 0x70,0x11,0xed,0xbc,0xcf,0xd4,0x54,0x38,0x34,0x35,0x23,0xea,0x6f,0x0b,0xf8,0xb3, 0x4a,0xf1,0xa6,0x93,0x1e,0xa3,0xe1,0xbb,0xb8,0xee,0xed,0x5f,0x1f,0x32,0xf0,0x54, 0x91,0x9c,0x11,0xdb,0x82,0x2a,0x2f,0x72,0x93,0xb9,0xaf,0x8e,0x28,0x18,0x94,0x00, 0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x1f,0x04,0x7f,0xc1,0x41,0xfc, 0x67,0x36,0xad,0xe2,0x4d,0x37,0xc3,0xf6,0x73,0xec,0xb5,0xb2,0x05,0x24,0xf9,0x8e, 0xd2,0xc5,0x55,0xdc,0x9c,0x7f,0xbd,0x18,0xfc,0x2b,0xa6,0x82,0x39,0x6b,0xca,0xee, 0xc7,0xc6,0x09,0x79,0x15,0x93,0xdc,0x1b,0x88,0xa3,0x99,0xe3,0xc8,0x54,0xe1,0x95, 0x8f,0xf9,0xef,0x5d,0x37,0x30,0xb1,0xaf,0xa3,0x6b,0xfa,0x9e,0x89,0x61,0x6e,0xda, 0x6d,0xfd,0xe5,0xab,0x3a,0xb4,0x85,0x20,0x94,0xe0,0x9c,0x91,0xf8,0xf4,0xa7,0x7b, 0x09,0x9d,0xb6,0xb9,0xac,0x78,0xa3,0xc3,0xda,0x65,0x95,0xc7,0x8a,0xe2,0xd3,0xee, 0x85,0xcc,0x7b,0xfc,0x9b,0xeb,0x78,0x66,0x64,0x18,0xc8,0xdc,0x47,0x23,0x8e,0xdd, 0x45,0x45,0x3a,0xea,0x6d,0xa4,0xf6,0x2e,0x74,0x5c,0x55,0xd9,0x9f,0x7d,0x7b,0x65, 0x1d,0x95,0xad,0xcf,0x89,0x3c,0x11,0x67,0x0c,0x77,0x49,0xbe,0x39,0x21,0xf3,0x6c, 0xd9,0xc7,0x62,0x06,0x71,0x8f,0xc2,0xb4,0x8d,0x54,0xc8,0x74,0xda,0x32,0xda,0x2f, 0x05,0xdd,0x9f,0x9e,0xdf,0xc4,0x3a,0x61,0xff,0x00,0xa6,0x53,0x47,0x3a,0x8f,0xc0, 0x80,0x6a,0xee,0x2b,0x0c,0x3e,0x0f,0xf0,0xf5,0xd9,0xff,0x00,0x89,0x67,0x8a,0xe3, 0x84,0x9e,0x89,0xa8,0x59,0xba,0x7e,0xab,0x91,0x4e,0xe8,0x4e,0xe2,0x37,0xc3,0x1d, 0x46,0x63,0x9d,0x27,0x51,0xd0,0xf5,0x2f,0x41,0x05,0xea,0xa9,0x3f,0x83,0x62,0x8d, 0x04,0x67,0x5f,0x7c,0x3e,0xf1,0x35,0x84,0x7b,0xae,0x34,0x4d,0x47,0x60,0xfe,0x38, 0xe3,0xf3,0x17,0xf3,0x5c,0xd1,0x60,0xdc,0xc1,0x65,0x96,0xca,0xe5,0x45,0xe5,0xbc, 0x88,0x54,0xf2,0x92,0xa9,0x4c,0x8a,0x2c,0x52,0xd0,0x95,0xae,0x34,0xf4,0x89,0x8d, 0xb5,0xb5,0xcc,0x52,0xe7,0x2b,0xfe,0x91,0xbd,0x41,0xfa,0x11,0x9f,0xd6,0x81,0x15, 0x16,0x66,0x91,0xc0,0x6c,0xf5,0xa0,0x65,0xef,0x18,0xfc,0x3a,0xf1,0x57,0xc5,0x0f, 0x0f,0x58,0x9f,0x03,0x68,0xf7,0xda,0xe4,0xda,0x3c,0xb2,0xac,0xd0,0xda,0xae,0xe3, 0x1c,0x32,0x60,0x83,0x8f,0x4d,0xca,0xdf,0x9d,0x61,0x59,0xa8,0xea,0xcd,0x29,0xc5, 0xcb,0x63,0xc9,0x35,0x7f,0x85,0x9e,0x30,0xd1,0x19,0xbf,0xb6,0x7c,0x2f,0xae,0x59, 0x15,0xea,0x64,0xb6,0x6f,0xe9,0x58,0xaa,0x91,0x7d,0x4d,0x1c,0x24,0xba,0x1c,0xd5, 0xc3,0xdd,0x58,0xbf,0x97,0x75,0x14,0x91,0x30,0xec,0xea,0x46,0x3f,0x3a,0x1c,0x87, 0xaa,0x3a,0xaf,0x86,0x25,0xaf,0x7c,0x4d,0x00,0x18,0x2a,0xbc,0xfe,0x24,0xe2,0xa6, 0x4e,0xe5,0xa3,0xf6,0x9f,0xf6,0x35,0xd1,0xcd,0x87,0xc2,0x87,0xbb,0x91,0x76,0xb5, 0xed,0xd3,0x15,0x1d,0x32,0x88,0xa1,0x47,0xea,0x0d,0x73,0xb3,0x48,0x6c,0x7b,0xc6, 0x78,0xa4,0x58,0x94,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x04,0x57,0x77, 0x91,0x69,0xf6,0x93,0xdd,0x5e,0x30,0x48,0x20,0x8d,0xa5,0x91,0xcf,0xf0,0xaa,0x8c, 0x93,0xf9,0x0a,0x00,0xfc,0x97,0xfd,0xa2,0x3c,0x4b,0x71,0xe3,0x2f,0x17,0x25,0xf4, 0xb2,0x79,0x6d,0x24,0x72,0xdd,0x39,0x67,0x20,0x06,0x9a,0x46,0x6d,0xb9,0x1e,0xc3, 0x1f,0x85,0x76,0xc2,0x36,0x47,0x0c,0x9d,0xdd,0xcf,0x23,0xd3,0xe4,0x6b,0x78,0xad, 0x45,0x8b,0x18,0x04,0xaa,0xd2,0x31,0x50,0x09,0x2a,0x0e,0x00,0xfe,0x75,0xa2,0x24, 0xba,0xcc,0xe2,0x41,0x23,0xb6,0x5c,0x63,0x91,0xc6,0x3f,0x0a,0x62,0xb9,0xa9,0xab, 0xeb,0xf7,0xda,0xe2,0xdb,0x8d,0x5e,0xe5,0xe7,0x8e,0x05,0xf2,0xe3,0x46,0x03,0x0a, 0xbe,0x9c,0x62,0x95,0xad,0xb2,0x1d,0xcb,0x1e,0x2c,0xf1,0xa6,0xa3,0xe2,0xa4,0xb3, 0x4d,0x43,0x66,0xdb,0x58,0xfc,0xb4,0xda,0xbc,0xb6,0x3b,0x9f,0x5a,0x8a,0x74,0xe3, 0x0b,0xd9,0x15,0x39,0xb9,0xee,0x73,0x4e,0xd8,0xfb,0xd8,0xe6,0xb4,0xb9,0x9d,0x87, 0x24,0x9b,0x40,0xc0,0x38,0xf5,0x02,0x9d,0xc7,0x61,0xef,0x36,0xe0,0x30,0x70,0x45, 0x17,0x06,0xec,0x59,0xb5,0xd6,0xaf,0xb4,0xe7,0xdd,0x63,0x79,0x75,0x6c,0x47,0x4f, 0x2a,0x56,0x5f,0xe4,0x6a,0x93,0x15,0xcd,0x88,0xbe,0x24,0x78,0x81,0x13,0x6c,0xda, 0x94,0x97,0x49,0xfd,0xcb,0xa4,0x59,0x41,0xff,0x00,0xbe,0x81,0xa7,0xcd,0x61,0x59, 0x03,0xf8,0xde,0x1b,0xb3,0x8d,0x6b,0xc3,0xde,0x1d,0xbd,0x1d,0xd8,0x5b,0x79,0x2c, 0x7f,0x14,0x22,0x9f,0x33,0x0e,0x54,0x33,0xed,0xde,0x0e,0xbc,0x75,0x37,0x7e,0x1e, 0xbf,0xb1,0x71,0xce,0xeb,0x1b,0xf2,0x47,0xfd,0xf2,0xe0,0xff,0x00,0x3a,0x7c,0xc1, 0xca,0x7b,0x3f,0xec,0xf5,0xf1,0xdb,0xc2,0xdf,0x03,0xaf,0xb5,0x6b,0x8d,0x2e,0x2b, 0xdb,0xa5,0xd4,0xd2,0x28,0xa4,0x8f,0x51,0x8f,0x98,0xc2,0x92,0x7e,0x56,0x43,0xdf, 0x3d,0xc7,0x6a,0xc6,0xb4,0x15,0x43,0x4a,0x73,0x94,0x0f,0xb5,0x3e,0x1c,0xfc,0x4e, 0xf0,0xb7,0xc5,0xcb,0x5b,0x61,0xf6,0x48,0xe1,0x7b,0xb0,0x7c,0x92,0xf8,0x96,0x29, 0x48,0xea,0x01,0x23,0x83,0xec,0x45,0x71,0x54,0xa4,0xe2,0x74,0xc2,0xb2,0x96,0x86, 0xdf,0x88,0x3f,0x67,0x9f,0x03,0xf8,0x95,0x58,0x6b,0x5e,0x18,0xd0,0xee,0xf7,0x75, 0x32,0x5a,0xa6,0x7f,0x30,0x2b,0x2d,0x8d,0x8f,0x3e,0xba,0xfd,0x83,0xfe,0x13,0x4f, 0x74,0x67,0xb6,0xf0,0xbd,0xbe,0x9f,0x29,0x39,0x32,0x59,0x3b,0x46,0x7d,0x69,0xf3, 0x32,0x79,0x51,0xee,0xde,0x11,0xf0,0xad,0x97,0x83,0x34,0x0b,0x3d,0x27,0x46,0x8f, 0xc9,0xb3,0xb4,0x8c,0x47,0x1a,0x67,0x27,0x1e,0xe7,0xb9,0xef,0x48,0xa3,0x5e,0x80, 0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x03,0xca,0x7f,0x6a,0x6f,0x17, 0x8f,0x05,0xfc,0x0a,0xf1,0x3d,0xd8,0x93,0xcb,0x9a,0xea,0x24,0xb0,0x84,0xe7,0x04, 0xb4,0xcc,0x10,0xfe,0x4a,0x58,0xfe,0x15,0x51,0x57,0x92,0x44,0xc9,0xd9,0x33,0xf2, 0xbf,0xe2,0x5c,0xc6,0xf3,0x55,0xbc,0x95,0xe4,0x55,0xb7,0x48,0x62,0x84,0xa1,0x62, 0x37,0x80,0xa0,0x91,0xef,0xcb,0x57,0x76,0xe7,0x09,0x8f,0x08,0x55,0x9b,0xcb,0x55, 0xc1,0x8e,0x38,0xd7,0x38,0xe3,0x91,0x92,0x3f,0x5a,0xa4,0x22,0x69,0x14,0x82,0x3b, 0x7b,0xd0,0x48,0xa0,0x16,0x00,0x1e,0xc2,0x98,0xec,0x38,0xa9,0x0a,0x70,0x3a,0x0e, 0xa2,0x90,0xd6,0x83,0x55,0x3e,0x4f,0x9b,0x07,0x34,0xc5,0x72,0x29,0x20,0x46,0x53, 0xf2,0x8e,0x7a,0xd0,0x36,0xc8,0x5e,0xdd,0x15,0xf8,0x2e,0x38,0xec,0x7a,0x50,0x17, 0x1a,0x60,0x3c,0x80,0xde,0xdc,0x8a,0x05,0xa0,0xa6,0xd1,0xca,0xe7,0x2a,0x41,0xe8, 0x01,0xc5,0x05,0x58,0x85,0xd1,0xd7,0x80,0x84,0xf7,0xc8,0xa0,0x43,0x44,0x72,0x16, 0x38,0x52,0x76,0x82,0x48,0xee,0x05,0x17,0x18,0x82,0x4c,0x83,0x54,0x80,0xfb,0x0f, 0xf6,0x36,0x96,0xfa,0x6d,0x0e,0xc2,0xdc,0x3f,0xee,0xbf,0xb5,0x83,0x40,0x3b,0xae, 0x4a,0xee,0xc7,0xe5,0x5c,0xd5,0x35,0xb9,0x50,0xdd,0x1f,0xa1,0x4c,0x7e,0x63,0x8a, 0xe3,0x3b,0x83,0x39,0xea,0x28,0x00,0xcf,0x14,0x00,0x94,0x00,0x50,0x01,0x40,0x05, 0x00,0x14,0x00,0x50,0x01,0x40,0x1f,0x12,0x7f,0xc1,0x52,0x7c,0x6d,0x36,0x8b,0xe0, 0x0f,0x03,0x78,0x7a,0xc9,0x9c,0x49,0xac,0x6b,0x05,0xc8,0x5e,0xe2,0x35,0xda,0x07, 0xe7,0x26,0x7f,0x0a,0xa8,0x3f,0x78,0x99,0xec,0x7c,0x45,0xe2,0x48,0xcd,0xce,0xa2, 0xc6,0x76,0x06,0x3b,0x9b,0xa3,0xb2,0x22,0xc7,0x23,0x27,0x0a,0xd8,0xe9,0xd0,0x0a, 0xee,0xb1,0xc4,0xc9,0x55,0x01,0xba,0xb8,0x62,0xa5,0x4b,0xca,0xdc,0x1f,0x41,0xc0, 0xc7,0xe0,0x05,0x32,0x59,0x33,0x2e,0x32,0x76,0xe4,0xfb,0x53,0x16,0xc2,0x08,0xc4, 0x84,0xec,0xea,0x3a,0xfb,0x50,0x3b,0x8d,0x30,0x90,0x08,0xe8,0x07,0x5c,0xd0,0x21, 0xac,0x98,0xe0,0xf3,0x4c,0x11,0x0b,0x8d,0xab,0xcf,0x53,0xde,0x82,0x86,0x3a,0x12, 0xc4,0x9c,0xe2,0x82,0x77,0x11,0x46,0x5b,0x9e,0x07,0xbd,0x03,0x1c,0xdc,0x9c,0xf4, 0xef,0x40,0xc8,0x18,0xe4,0x6e,0x23,0x00,0x7b,0xd0,0x02,0xab,0xed,0x49,0x09,0xfe, 0xe1,0xe4,0x7b,0xf1,0xfd,0x68,0x03,0x35,0xba,0x9c,0x8c,0xd3,0x03,0xf4,0x0f,0xf6, 0x2f,0xf0,0xe1,0x8b,0x4e,0xf0,0xbf,0x98,0xbc,0x91,0x25,0xe3,0x71,0xf5,0x23,0xfa, 0x57,0x25,0x57,0xa3,0x66,0x94,0x95,0xe4,0x7d,0xa0,0x79,0x35,0xcc,0x76,0x09,0x40, 0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x1f,0x2a, 0x7f,0xc1,0x40,0xbe,0x15,0xc3,0xe3,0x7f,0x06,0x78,0x53,0xc4,0x93,0xce,0xd0,0x9f, 0x0b,0x6a,0x2d,0x78,0x54,0x2e,0xe1,0x22,0x95,0xc9,0x53,0xe9,0xca,0x0e,0x69,0xc1, 0x7b,0xc9,0x91,0x51,0xda,0x27,0xe7,0x8d,0xf5,0xb1,0x4b,0x98,0x16,0xe0,0xef,0x95, 0x55,0x8a,0x8d,0xc4,0x98,0xf9,0xe4,0x63,0xb7,0x5e,0xd5,0xe8,0x58,0xe1,0xb9,0x6d, 0x6e,0xa4,0xba,0x8e,0xe1,0xee,0x44,0x4c,0x55,0x41,0x07,0xcb,0x00,0xe4,0x90,0x3f, 0xc6,0x85,0xa0,0x0e,0x89,0x26,0x96,0xdd,0xe5,0x8e,0xd8,0xbc,0x31,0x60,0x3c,0x8a, 0x0e,0x17,0xd3,0x35,0x42,0xb8,0xe1,0x34,0x70,0x9d,0xb7,0x10,0xcd,0x1b,0x1e,0x71, 0x9c,0x1f,0xc8,0x8a,0x42,0x14,0xcb,0x6a,0xe3,0xe5,0x9e,0x45,0xf6,0x91,0x3f,0xc2, 0x8b,0x0c,0x8d,0xa3,0x05,0xbf,0x75,0x3c,0x4d,0xf4,0x6c,0x7f,0x3a,0x00,0x8d,0xad, 0xa4,0x50,0x58,0xc6,0xc4,0x7a,0x8e,0x69,0xd8,0x08,0x49,0xc1,0x21,0xce,0x31,0xc7, 0x22,0x81,0x88,0x50,0x16,0xc8,0xe7,0x34,0x0c,0x49,0x10,0xbf,0x4e,0xdd,0xc0,0xa0, 0x08,0x1e,0x3c,0x75,0xe6,0x80,0x22,0x98,0x6c,0x81,0xcf,0x66,0x21,0x46,0x7f,0x3a, 0x00,0xa7,0x12,0xf9,0xb2,0xa2,0x0e,0x59,0x98,0x2f,0x1e,0xf4,0x3d,0x80,0xfd,0x4c, 0xfd,0x96,0x34,0x41,0x61,0x6f,0x10,0x0a,0x00,0xb4,0xd3,0xa3,0x8b,0xe8,0xcd,0x8f, 0xf0,0x35,0xc3,0x51,0xe8,0x6f,0x41,0x6a,0xcf,0xa1,0xb1,0x59,0x1d,0x22,0x63,0x1d, 0x68,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x03, 0xc2,0x7f,0x6d,0x9d,0x61,0xb4,0xcf,0xd9,0xfb,0x57,0xb7,0x88,0x8f,0x33,0x51,0xb8, 0xb7,0xb3,0x50,0x7b,0xe5,0xc3,0x1f,0xd1,0x4d,0x5d,0x35,0x79,0x23,0x3a,0xae,0xd1, 0x3f,0x31,0x63,0x68,0x13,0x54,0x6f,0xb4,0x0f,0x35,0x94,0x0d,0xd2,0x02,0x5b,0x23, 0x07,0x68,0xe7,0xb6,0x7b,0x57,0x76,0xc7,0x11,0x0d,0xb1,0x90,0x41,0x73,0x2c,0x8a, 0x10,0x4b,0x3f,0xcb,0x18,0xe8,0xaa,0x07,0xff,0x00,0x5c,0x53,0x06,0x69,0x59,0xeb, 0x6d,0x61,0xa7,0xcd,0x66,0x21,0x56,0x86,0x6d,0xfb,0xd9,0x71,0xbf,0xe6,0x55,0x1c, 0x12,0x38,0xfb,0xbc,0xfa,0x86,0x3e,0xd5,0x49,0x91,0x6e,0xa6,0xbc,0xbe,0x2e,0xb3, 0x92,0xe2,0xf2,0xe1,0xed,0xfc,0xe7,0x95,0xde,0x44,0x86,0x78,0xce,0xdf,0xb8,0xe0, 0x29,0xcb,0x36,0x3e,0xf9,0xe4,0x60,0x70,0x08,0x00,0xd1,0x70,0xb5,0xc8,0xde,0x1d, 0x12,0x5d,0x39,0x53,0x4d,0x92,0xda,0x69,0x9b,0xcb,0x1b,0xe6,0x00,0x3a,0x06,0x2e, 0x48,0x60,0x59,0x70,0x57,0x72,0x29,0x20,0x30,0xf9,0x3a,0x62,0x8d,0x01,0x36,0x45, 0xa9,0x68,0x96,0x13,0x5f,0x32,0xe8,0xbe,0x73,0xc3,0x22,0x66,0x39,0x03,0x11,0x1e, 0x77,0xb2,0x9e,0x48,0x27,0x20,0x01,0x90,0x71,0x9c,0x36,0x38,0xc6,0x46,0x8a,0x4d, 0xb3,0x0c,0x5b,0x5a,0xc9,0x71,0x2a,0x43,0x73,0x70,0x86,0x25,0x66,0x2e,0xd1,0x0e, 0x76,0xfb,0x06,0xe3,0x34,0x87,0x62,0xcf,0x89,0xb4,0x9b,0xef,0x0b,0xde,0x43,0x6d, 0x7f,0x73,0x05,0xc1,0x96,0x21,0x32,0x34,0x4d,0xbc,0x6d,0x24,0x8e,0xe3,0xda,0xb8, 0xf0,0x78,0xd8,0x62,0xa2,0xe7,0x04,0xd5,0x9d,0xb5,0x37,0xaf,0x87,0x95,0x17,0xcb, 0x2e,0xc6,0x41,0xbe,0x24,0x9d,0xeb,0x19,0xfa,0x0c,0x7f,0x2a,0xec,0x31,0x10,0x5e, 0x00,0xc7,0x7a,0x37,0xb8,0x0d,0xff,0x00,0xd6,0xa0,0x07,0x2d,0xc4,0x12,0x9f,0x99, 0xdd,0x33,0xfd,0xe4,0xc8,0xfd,0x0d,0x00,0x45,0xa9,0x3c,0x7b,0x52,0x3b,0x67,0xf3, 0x71,0xcb,0x30,0x52,0x06,0x7d,0x39,0xa0,0x0b,0x9e,0x06,0xd3,0x1b,0x56,0xf1,0x8e, 0x8f,0x68,0x57,0x22,0x5b,0x94,0x04,0x7b,0x66,0x94,0xdd,0x90,0x1f,0xa8,0x9f,0x09, 0x75,0x04,0xd0,0xf4,0xdb,0xb2,0x08,0x53,0x2c,0x8a,0xa3,0xe8,0xa3,0x8f,0xe7,0x5c, 0x55,0x5e,0xa7,0x55,0x05,0xa1,0xe9,0x56,0xfe,0x2c,0x56,0xe8,0xc2,0xb2,0x36,0x35, 0x6d,0x75,0xf8,0xe6,0xc6,0xe2,0x0e,0x68,0x03,0x4e,0x39,0x56,0x65,0xdc,0x87,0xf0, 0xa0,0x07,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x7c,0x8f, 0xff,0x00,0x05,0x13,0xd7,0x1a,0x0f,0x05,0xf8,0x4f,0x48,0x82,0x4d,0x8f,0x73,0x7f, 0x25,0xd3,0x72,0x78,0x58,0xd3,0x00,0xf1,0xee,0xf5,0xb5,0x05,0x79,0x18,0xd7,0x7a, 0x1f,0x00,0xd9,0xdc,0x40,0xad,0x76,0xf3,0x47,0xe6,0x3f,0xcc,0x32,0xbf,0x30,0x77, 0xcf,0x73,0xf4,0xef,0x5d,0x77,0xb6,0xc7,0x29,0x0a,0x34,0x91,0xe9,0xd6,0xb1,0xce, 0x73,0x23,0x17,0x73,0x83,0x9c,0x73,0x8f,0xe9,0x4d,0x3b,0x89,0x8e,0x96,0x74,0x82, 0x2d,0xd3,0xbe,0xde,0x3a,0x9a,0x36,0x04,0x57,0x1a,0x84,0x32,0x8c,0xc4,0xea,0xc0, 0xf7,0x07,0xad,0x00,0xc7,0x24,0x82,0x51,0xc8,0x07,0x9e,0xb4,0xc4,0x85,0x03,0x68, 0x6d,0xa4,0xae,0xf1,0x86,0x00,0xe3,0x23,0xdf,0xd6,0x81,0xb0,0x9e,0xfa,0x79,0x9c, 0x79,0xf3,0xcb,0x21,0x0a,0x53,0x2e,0x72,0x71,0xd4,0x8c,0xf5,0xec,0x28,0x04,0xac, 0x56,0x76,0x20,0x7d,0x3b,0x52,0x18,0x82,0x61,0xb0,0x0d,0xa3,0x34,0xc0,0x6b,0xbe, 0x07,0x39,0xe2,0x80,0x1a,0x1b,0x23,0x9a,0x00,0x4d,0xdb,0xba,0x76,0xa0,0x0f,0x44, 0xfd,0x9f,0xf4,0xdf,0xed,0x2f,0x8a,0x3a,0x69,0x61,0x94,0x81,0x5e,0x53,0xf8,0x0a, 0x89,0xec,0x07,0xda,0x16,0xbe,0x2a,0x5b,0x09,0x9a,0xde,0x37,0x00,0x21,0xe4,0x7b, 0xd7,0x0c,0xf7,0x3b,0x29,0x2b,0x44,0xe9,0x34,0xcf,0x15,0x19,0x48,0xc3,0xfe,0xb5, 0x26,0x87,0x61,0xa3,0x6b,0x8f,0x2b,0x28,0x0c,0x68,0x03,0xd3,0x3c,0x3b,0x72,0xd3, 0x20,0xdc,0x7b,0x50,0x06,0xd9,0xeb,0x40,0x09,0x40,0x05,0x00,0x14,0x00,0x50,0x01, 0x40,0x05,0x00,0x7c,0x01,0xff,0x00,0x05,0x12,0xd6,0xde,0xf3,0xe2,0x4e,0x81,0xa7, 0x41,0x2f,0x97,0x1e,0x9b,0xa5,0x99,0x5c,0xee,0x23,0x0d,0x2b,0x9e,0x38,0xf5,0x09, 0x5d,0x14,0x16,0xe7,0x35,0x77,0xa9,0xf2,0x13,0xb4,0x2d,0xa3,0x48,0x6d,0x22,0xfd, 0xec,0x83,0xf7,0x60,0x8c,0x00,0x08,0xeb,0x9e,0xd8,0x3c,0xd7,0x46,0xc6,0x03,0xbe, 0xce,0xc6,0xe6,0xd6,0x09,0x9b,0xee,0x46,0x8a,0x4f,0xb9,0x19,0x3f,0xa9,0x34,0xee, 0x23,0xa4,0xf0,0xf6,0x91,0x61,0xab,0x6a,0x1a,0xdc,0x7a,0xb5,0xdd,0xc5,0x8c,0x56, 0x36,0x37,0x37,0x30,0x88,0x76,0xfe,0xf2,0x48,0xd7,0xe4,0x42,0x49,0x1d,0x4e,0x07, 0x19,0x3c,0xfe,0x23,0x96,0x52,0x6c,0xe8,0x4a,0xc7,0x99,0x6a,0x73,0x2a,0xeb,0x2a, 0x90,0x7c,0xb2,0x3c,0x45,0xe4,0x55,0x1d,0x70,0x70,0x0f,0xd4,0xff,0x00,0x4a,0xde, 0x9b,0xb9,0x9c,0xd5,0x8e,0x86,0xce,0xd8,0xc3,0xa7,0xc5,0x24,0x85,0xb7,0x48,0x4a, 0xa2,0xae,0x32,0x4d,0x39,0x4f,0x94,0x51,0x8d,0xc8,0xfc,0x59,0xa3,0x6a,0xde,0x14, 0xba,0x78,0xb5,0x48,0xae,0x6d,0x6e,0x23,0x55,0x91,0xed,0xae,0x42,0xe4,0xc6,0x7f, 0x89,0x48,0xeb,0xff,0x00,0xd6,0x3e,0x94,0xa1,0x52,0xe3,0x94,0x2c,0x50,0xb3,0x9e, 0x4b,0xb9,0x82,0xad,0x6a,0x41,0x72,0xe0,0xbc,0x44,0xaa,0x43,0x2c,0xa4,0x75,0xd9, 0x82,0x7f,0x2c,0xe4,0xfe,0x55,0x3c,0xc8,0x7c,0xac,0xa9,0x0d,0xf4,0x33,0xa0,0x31, 0xbe,0x73,0x54,0x22,0x60,0xca,0xc3,0x04,0xd0,0x02,0x10,0x01,0xc0,0x3c,0xd0,0x04, 0x7b,0xbd,0x31,0x9a,0x00,0xf7,0x4f,0xd9,0x43,0x4d,0xf3,0xbc,0x49,0xaa,0x5f,0x38, 0xc8,0x86,0x11,0x18,0x3e,0xe4,0xff,0x00,0xf5,0xab,0x2a,0x80,0x77,0x6f,0xe2,0xb7, 0xb9,0xd5,0xae,0x9c,0x31,0xc3,0x4c,0xc4,0x7d,0x33,0xc5,0x71,0x3d,0xce,0xd8,0xe8, 0xac,0x77,0xde,0x15,0xd5,0x9e,0xe0,0xae,0x4e,0x69,0x16,0x7b,0x3f,0x83,0xe2,0x6b, 0x86,0x8c,0x9f,0x6a,0x00,0xf6,0x9f,0x0f,0x5a,0xf9,0x36,0xc0,0x9f,0x4a,0x00,0xd6, 0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0xfc,0xc2,0xfd,0xb5, 0xf5,0x9f,0xed,0x5f,0x8e,0x3e,0x29,0xb9,0x76,0xff,0x00,0x46,0xb3,0x58,0x6c,0x76, 0xee,0x3f,0x30,0x44,0x5d,0xc3,0xf3,0x6e,0x95,0xd5,0x46,0x2b,0x94,0xe3,0xac,0xfd, 0xe3,0xc0,0xf5,0x0f,0xf4,0x8b,0x3b,0x58,0x6c,0x17,0x13,0xb4,0x80,0x33,0x11,0x8d, 0xa3,0x3c,0x63,0xd7,0x23,0x8c,0x56,0xd7,0xb1,0x9e,0xe3,0xe6,0x94,0x4b,0x7f,0x70, 0xd8,0xe0,0x31,0x03,0x3e,0x9d,0x05,0x31,0x14,0xf5,0xcb,0xf9,0xc3,0x7c,0x82,0xdd, 0xa6,0x60,0x32,0xcc,0x70,0x7e,0xa4,0x7a,0xd6,0x2e,0x9e,0xba,0x1a,0xa9,0xf7,0x32, 0x34,0xed,0x1d,0x62,0x96,0x6b,0xbb,0xb9,0x0d,0xc5,0xd4,0xd8,0xdc,0xe7,0xa0,0x03, 0xa0,0x03,0xb0,0x15,0xac,0x23,0x64,0x43,0x77,0x36,0xd6,0xee,0x3b,0x28,0x2d,0x8c, 0xc2,0x39,0x0d,0xb4,0x9b,0xc2,0x4c,0x09,0x47,0x19,0x07,0x07,0xdb,0x8f,0xc4,0x1a, 0xce,0xa2,0xea,0x5c,0x1f,0x43,0x3b,0xe2,0x47,0x8f,0x2e,0xfe,0x22,0xeb,0xd2,0x4d, 0x6f,0x6d,0x6f,0x14,0xd7,0x01,0x23,0x90,0x59,0xa3,0x2c,0x16,0xf1,0x28,0x03,0x6a, 0x02,0x4e,0x06,0x06,0x02,0x8e,0x06,0x7b,0x54,0x42,0x3a,0x95,0x37,0x64,0x4d,0xa4, 0x43,0xf6,0x7f,0x34,0xae,0x3c,0xdf,0x2d,0xb6,0x67,0xae,0x71,0xc5,0x6f,0x3d,0x8c, 0xe3,0xb9,0xbf,0x66,0x9e,0x1f,0x8b,0xe1,0xb6,0xa1,0x25,0xdc,0xb6,0x92,0x78,0x91, 0xef,0x62,0xfb,0x2a,0x29,0x94,0x4d,0x14,0x40,0x1f,0x30,0x9f,0xe0,0x2a,0x7e,0x5c, 0x77,0xc9,0x35,0xcd,0xad,0xcd,0x8f,0x3e,0xfb,0x4a,0xdd,0xea,0x57,0x73,0x5b,0xe3, 0x63,0xc8,0x32,0x57,0xa1,0x6c,0x0d,0xc7,0xfe,0xfa,0xcd,0x74,0xc3,0x63,0x19,0xee, 0x6a,0xc0,0x18,0x28,0x24,0x1a,0xb2,0x6c,0x4c,0xd8,0xc7,0x3d,0x68,0x02,0xbb,0x90, 0x0f,0x5a,0x00,0xfa,0x57,0xf6,0x69,0x87,0xfb,0x2f,0xc0,0x1a,0xfe,0xa8,0xe0,0x06, 0x66,0x7c,0x13,0xfe,0xca,0x1f,0xea,0x6b,0x0a,0x8e,0xc5,0x45,0x5d,0x94,0x74,0xa4, 0x69,0x25,0x4c,0x67,0x39,0xae,0x43,0xb0,0xf6,0x4f,0x02,0xd8,0x33,0x98,0xf2,0x0f, 0x38,0xa4,0x51,0xf4,0x7f,0x80,0xb4,0x93,0xb2,0x32,0x47,0xa5,0x00,0x7a,0xd5,0xb4, 0x42,0x08,0x15,0x40,0xc7,0x14,0x01,0x25,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00, 0x14,0x00,0xa0,0x85,0x39,0x63,0x80,0x39,0x24,0xd0,0x07,0xe3,0xe7,0xc6,0x5d,0x77, 0xfb,0x7b,0xc7,0x7e,0x20,0xd5,0x6e,0xdb,0xcc,0x8b,0x50,0xd5,0x66,0x92,0x34,0x2d, 0x9c,0xfc,0xec,0x14,0xe3,0xa7,0x41,0x5d,0x94,0xe3,0xa2,0x38,0x66,0xf5,0x67,0x1b, 0x29,0x13,0xea,0x9a,0x6f,0xd8,0xd0,0x47,0x1c,0x5f,0xbc,0x95,0xdb,0x82,0x48,0x19, 0x23,0xdf,0x90,0x4e,0x6b,0x42,0x48,0xf4,0xe4,0xdd,0x15,0xd4,0xce,0x33,0xb5,0x77, 0x63,0xea,0x40,0xfe,0xb4,0xa6,0xda,0x43,0x82,0xbb,0x37,0x7c,0x4f,0xf0,0xde,0x3d, 0x33,0xe1,0xf6,0x85,0xe2,0x2b,0xfb,0x8b,0x2b,0x91,0xab,0xcf,0x34,0x69,0x6b,0x00, 0x52,0xd0,0xac,0x61,0x4e,0x59,0xc1,0xe1,0x8e,0xef,0xbb,0xd4,0x60,0x67,0xae,0x2b, 0x9f,0x99,0xa6,0x6d,0x64,0xcf,0x3a,0xd0,0xe6,0x67,0x79,0x22,0x32,0x19,0x12,0x39, 0x5a,0x30,0xfe,0xb8,0x38,0xae,0xa4,0xee,0xae,0x62,0xf4,0x67,0x45,0x35,0x8d,0xcd, 0xd9,0x7b,0x7b,0x14,0x79,0x26,0x54,0x2c,0xcb,0x14,0x26,0x52,0xa0,0x75,0x24,0x0e, 0x80,0x77,0xa8,0x75,0x15,0xca,0x50,0x6c,0xe7,0x12,0xe6,0x5b,0x0b,0xcf,0x22,0xe5, 0x23,0x3b,0x86,0xe4,0x92,0x31,0x80,0xc3,0xbf,0x1d,0x8f,0xb5,0x54,0x64,0x9e,0xc2, 0x92,0xb1,0xad,0x09,0x69,0x50,0x95,0x0c,0x31,0xcf,0x1d,0x6a,0x9f,0x99,0x26,0x1e, 0xa7,0x6c,0x66,0x98,0xc7,0x75,0x77,0x71,0x14,0x6d,0xfc,0x3b,0x76,0x6e,0xfc,0x71, 0xcd,0x64,0xa9,0xa7,0xb1,0xa7,0x33,0x5b,0x9a,0xfe,0x1b,0xd0,0x53,0x55,0xd5,0x2c, 0x34,0x9d,0x2f,0x62,0x34,0xee,0x23,0x52,0x7a,0x2e,0x7a,0x93,0xf4,0x19,0x34,0xb1, 0x15,0x95,0x0a,0x52,0xa8,0xf6,0x48,0xea,0xcb,0xb0,0x53,0xc7,0x62,0x61,0x86,0x86, 0xf2,0x76,0x3e,0x85,0xd3,0x7e,0x08,0x58,0x5b,0xd8,0x23,0xdb,0xe8,0x33,0x6b,0x11, 0xed,0x05,0xae,0x24,0x99,0xf2,0x72,0x33,0xf7,0x55,0x80,0x1c,0x10,0x7b,0xe3,0x23, 0x9a,0xf8,0xf9,0xe6,0x58,0xea,0xaf,0x9a,0x1a,0x2f,0x23,0xf6,0xbc,0x37,0x0c,0x70, 0xf6,0x11,0x7b,0x1c,0x43,0xbc,0xb6,0xbc,0xaf,0xaf,0x4f,0x4d,0xce,0x2b,0xe2,0x2f, 0xc2,0x28,0xf4,0xdd,0x1e,0xe3,0x54,0xf0,0xe4,0x57,0x76,0x32,0xda,0xc6,0x66,0x9f, 0x4f,0xb8,0x25,0xc3,0x44,0x3a,0xbc,0x6c,0x79,0xe3,0xa9,0x07,0x3c,0x72,0x0d,0x77, 0xe5,0xd9,0xc5,0x57,0x51,0x51,0xc4,0x2d,0xf6,0x67,0xcf,0x71,0x3f,0x04,0xe1,0x69, 0xe1,0xe5,0x8c,0xcb,0x65,0x75,0x1d,0xd5,0xef,0xff,0x00,0x05,0x1e,0x34,0x97,0x3e, 0x67,0x2d,0x9e,0x6b,0xea,0x0f,0xc9,0xd9,0xf5,0x77,0xc3,0xe8,0xbf,0xb1,0xbe,0x01, 0xa1,0x1c,0x3d,0xdf,0x1f,0x5d,0xcf,0x8f,0xe4,0x2b,0x96,0xab,0x34,0xa4,0xbd,0xe0, 0xf0,0xbe,0x9a,0x67,0x9d,0x0e,0x2b,0x9d,0x9d,0x48,0xfa,0x03,0xc0,0x1a,0x19,0x26, 0x3c,0xaf,0xe9,0x48,0xa3,0xe8,0xdf,0x07,0xe9,0x42,0x08,0x10,0x91,0xd0,0x50,0x07, 0x56,0x4e,0x4d,0x00,0x25,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x01,0x87, 0xe3,0xbd,0x65,0x7c,0x3b,0xe0,0x8f,0x10,0x6a,0x92,0xb6,0xd1,0x67,0x61,0x3c,0xd9, 0xf4,0x2a,0x84,0x8a,0x04,0xf6,0x3f,0x1b,0x75,0x49,0x3c,0xab,0xf8,0x12,0xf7,0xe7, 0x91,0xb2,0xea,0xbb,0xb2,0x53,0x3c,0x9f,0xa6,0x73,0xd4,0x57,0x7a,0x47,0x03,0x2b, 0xbc,0x9b,0xf5,0x2b,0xd9,0xed,0xd4,0x45,0x69,0x1d,0xb9,0x58,0xd4,0xf0,0x58,0x93, 0x8c,0xe3,0xe8,0x69,0xa0,0x1b,0x68,0xed,0x04,0x6d,0xe5,0xa8,0x6d,0xca,0x43,0x29, 0xfe,0x21,0x4a,0x4a,0xea,0xc3,0x4e,0xcc,0xc0,0xd5,0x6f,0x6f,0x66,0x56,0xb6,0xb0, 0x5f,0x24,0x9c,0x8f,0x32,0x53,0xbb,0x66,0x7b,0x81,0xdc,0xd6,0x3e,0xcd,0x9a,0x73, 0xa2,0x4d,0x17,0x4a,0x4d,0x26,0xda,0x28,0xa2,0x25,0xf6,0x73,0xb9,0xb9,0xc9,0xea, 0x49,0xad,0xd6,0x88,0xc9,0x9d,0xb7,0x83,0xfe,0x22,0xa7,0x80,0xb5,0x6d,0x62,0xfe, 0x3b,0x74,0xbc,0xfb,0x7d,0x9c,0x96,0x85,0x5e,0x73,0x10,0x40,0xdc,0x90,0xd8,0x1c, 0x8c,0xf5,0x1c,0x67,0x03,0x91,0x5c,0xcd,0x74,0x66,0xe9,0xdc,0xf2,0xe4,0xbd,0x3a, 0xd6,0xb0,0x0d,0x90,0x2d,0x6b,0x6a,0xac,0xbe,0x76,0x38,0x91,0xdb,0x19,0xc7,0xa8, 0x18,0xad,0xa9,0x68,0x44,0xd9,0xd4,0x42,0xa1,0x2c,0xa0,0x4f,0x33,0xcb,0x12,0x4b, 0xb6,0x47,0x3f,0xc2,0x38,0xeb,0xf9,0x93,0x4a,0xa3,0xe8,0x10,0x35,0xbe,0x3b,0xe8, 0x7e,0x1f,0xf0,0x86,0xaf,0x7f,0x61,0xe1,0x1b,0xff,0x00,0xed,0x1d,0x2e,0x3b,0x55, 0x91,0x6e,0x0c,0xeb,0x2e,0xe9,0x30,0x48,0x39,0x5e,0x01,0x3f,0x29,0xc0,0xce,0x33, 0x8c,0xf6,0x19,0xc5,0xb4,0x5b,0x57,0x47,0x19,0xe1,0x6d,0x46,0xe3,0x4a,0xbc,0xb3, 0xbc,0xb6,0x6d,0x97,0x56,0xec,0xb2,0xa1,0x3c,0x80,0x47,0x38,0x35,0xb5,0x7a,0x51, 0xab,0x07,0x09,0x6c,0xd1,0x58,0x3c,0x54,0xf0,0xb5,0xa1,0x5e,0x9f,0xc5,0x17,0x74, 0x7b,0x9e,0x95,0xf1,0xba,0xde,0x28,0x91,0xd3,0x56,0xbd,0xd2,0x65,0x03,0x9b,0x69, 0x19,0xd9,0x17,0xd4,0x29,0xe4,0x11,0xc9,0xeb,0x5f,0x1d,0x53,0x2c,0xc5,0xe1,0xdd, 0xa9,0xea,0xbc,0xbf,0xc8,0xfd,0xe3,0x03,0xc6,0x19,0x0e,0x69,0x49,0x3c,0x74,0x54, 0x27,0xd6,0xeb,0xf1,0x4d,0x7f,0xc3,0x98,0xfe,0x35,0xf8,0xe5,0x36,0xbb,0xa5,0x49, 0x61,0xa7,0x91,0x71,0x23,0x42,0xd6,0xdf,0x6b,0x11,0x08,0xc2,0x46,0xc0,0x02,0x00, 0xe3,0x3c,0x0c,0x0e,0x2b,0xab,0x09,0x95,0xd7,0xa9,0x52,0x33,0xaf,0xa2,0x8f,0xde, 0x78,0xdc,0x41,0xc5,0x79,0x4e,0x17,0x09,0x57,0x0d,0x96,0x37,0x39,0x54,0xdf,0x7e, 0x55,0xe7,0xae,0xb7,0x3c,0x8d,0x61,0xe4,0x6d,0x18,0x24,0xe0,0x57,0xd5,0x9f,0x8b, 0x9f,0x5f,0xdf,0x59,0xff,0x00,0x65,0xfc,0x36,0xf0,0xd6,0x98,0xa3,0x05,0x82,0x12, 0x3e,0x8b,0xfe,0x26,0xb9,0x2a,0x33,0x6a,0x2b,0x56,0xcd,0xff,0x00,0x03,0x68,0xdb, 0xdd,0x09,0x5f,0x4a,0xc0,0xe9,0x47,0xd2,0x3f,0x0f,0xb4,0x3c,0x08,0xc9,0x5a,0x06, 0x7b,0x66,0x9d,0x6e,0x2d,0xad,0x54,0x01,0x82,0x68,0x02,0xcd,0x00,0x14,0x00,0x50, 0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x07,0x90,0xfe,0xd6,0x9a,0xd3,0x68,0x9f,0x00, 0x3c,0x54,0x62,0x38,0x9a,0xf2,0x38,0xec,0xa3,0xc1,0xea,0xd2,0x3a,0xae,0x3f,0x2c, 0xd5,0x43,0x56,0x88,0xa8,0xed,0x13,0xf2,0xb6,0x56,0x82,0x3d,0x60,0xa5,0xd7,0xef, 0x5a,0x35,0x50,0xcc,0xb9,0x6c,0x2f,0x38,0x1c,0xfa,0x1e,0xd5,0xdc,0x71,0x14,0x90, 0x4a,0x60,0xd4,0x26,0x91,0x56,0x34,0x9a,0x54,0x48,0xd0,0x76,0x50,0x09,0x3f,0xa8, 0x07,0x1e,0xf4,0x01,0x24,0xb0,0xa2,0x5a,0xc2,0xb2,0x1f,0xf5,0xc4,0xe7,0xa9,0xc0, 0x07,0x1d,0xba,0xfd,0x2b,0x39,0xca,0xda,0x22,0xe1,0x14,0xf5,0x65,0x2f,0x89,0xde, 0x10,0x1e,0x03,0xd5,0x6e,0x2d,0xa0,0xbd,0xb6,0x9a,0xe6,0xd1,0x51,0xe5,0x36,0xbb, 0xd5,0x0e,0xe0,0x09,0x46,0x56,0x00,0xab,0xae,0x79,0x18,0xe0,0x82,0x2a,0x69,0xcd, 0xdf,0x52,0xa7,0x15,0x6b,0xa2,0x86,0x8f,0x3c,0x97,0x0c,0x77,0x64,0x9c,0x66,0xb7, 0x7a,0x19,0x2d,0x48,0xb5,0x5b,0x77,0xbb,0x3f,0xbb,0x82,0xd6,0x6c,0x74,0x42,0xe4, 0x31,0xfc,0x48,0xc5,0x65,0xce,0x99,0xa7,0x23,0x2b,0xe9,0xfa,0x94,0x4f,0x08,0x58, 0xa3,0x31,0x91,0xf2,0x95,0x23,0x04,0x1f,0x4a,0xd5,0x23,0x32,0xd5,0xed,0xc3,0x43, 0x6f,0xb9,0x66,0x8e,0x20,0x7b,0x4b,0xd0,0xd4,0xca,0x37,0x2a,0x2e,0xc6,0x0b,0x69, 0xf2,0x6a,0xb3,0x46,0xda,0x85,0xd2,0xc9,0x6e,0x8d,0xbd,0x61,0x84,0x00,0xa4,0x8e, 0x84,0xfa,0xd4,0xc6,0x16,0xd4,0x72,0x9d,0xcf,0x68,0xf8,0x09,0xf0,0x2a,0xe7,0xe3, 0x37,0x88,0x2e,0xa0,0x8a,0xe8,0x69,0xba,0x55,0x8a,0x2b,0xde,0x5e,0x04,0xde,0xc3, 0x71,0x21,0x51,0x17,0xa1,0x63,0x83,0xd7,0x80,0x01,0x3e,0xd5,0xe4,0xe7,0x59,0xba, 0xcb,0xe9,0xab,0x2e,0x69,0x49,0xe8,0x8e,0xac,0x16,0x11,0xe2,0x24,0xee,0xec,0x96, 0xe7,0xd1,0xd7,0x5f,0xb1,0x07,0xc3,0xfb,0x8b,0x23,0x0a,0x6a,0x5e,0x2d,0xb5,0xb9, 0xe9,0xf6,0xb3,0x34,0x6e,0x03,0x7b,0xa6,0xc0,0x3f,0x0c,0x8a,0xf8,0xc7,0xc5,0x98, 0xe8,0xca,0xf3,0x82,0xb5,0xfb,0x33,0xdc,0x59,0x5d,0x06,0xac,0x9e,0xa7,0xcc,0x1f, 0x1b,0x3e,0x0b,0xea,0xdf,0x03,0xbc,0x47,0x0e,0x9d,0xab,0xcb,0x0d,0xfe,0x9d,0x7b, 0x19,0x96,0xc7,0x52,0x81,0x4a,0xa5,0xc2,0x03,0x82,0x0a,0x9f,0xba,0xc3,0x23,0x2b, 0xee,0x39,0x20,0xd7,0xda,0x64,0xf9,0xc5,0x3c,0xca,0x9b,0x94,0x55,0x9a,0xdd,0x1e, 0x26,0x33,0x09,0x2c,0x3c,0xac,0xce,0x43,0xc2,0x96,0x07,0x59,0xf1,0x16,0x99,0x66, 0xa0,0x9f,0x3a,0xe1,0x17,0x03,0xd3,0x35,0xec,0x37,0xa1,0xc2,0x7d,0x81,0xe2,0xab, 0x71,0x36,0xa3,0xa5,0xda,0x47,0xca,0xc1,0x0e,0x71,0xe9,0x93,0xfe,0x02,0xb8,0xea, 0xee,0x74,0x51,0x5a,0x1e,0x8d,0xe0,0x0d,0x0f,0x26,0x3f,0x97,0xd2,0xb3,0x3a,0x0f, 0xa4,0x7c,0x13,0xa3,0x88,0x62,0x42,0x57,0xa0,0xa0,0x0e,0xe0,0x8c,0x70,0x3a,0x0a, 0x00,0x4a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x0f,0x98,0x3f, 0xe0,0xa0,0x5a,0xab,0x43,0xf0,0xa3,0x47,0xd2,0xa2,0x6d,0xaf,0x7d,0xa9,0x87,0x3c, 0xe3,0xe5,0x89,0x19,0x8f,0xf3,0x15,0xa5,0x2f,0x88,0xca,0xb3,0xb2,0x3f,0x3a,0xa0, 0xba,0xb7,0x59,0xae,0xda,0x44,0x13,0x48,0x0b,0x02,0xdf,0x7b,0x7b,0x8c,0x72,0x7d, 0x78,0xae,0xcb,0x58,0xe3,0x6c,0xaf,0x6e,0xb2,0xa6,0x93,0x6c,0x97,0x5b,0x77,0xc9, 0x24,0x92,0x15,0x07,0x38,0x1c,0x00,0x3f,0x4a,0x60,0x2c,0xb7,0x0e,0x23,0x40,0x09, 0x57,0x84,0xee,0x8d,0xd7,0xaa,0x9f,0xff,0x00,0x58,0xac,0xa7,0x0b,0xea,0x8d,0x23, 0x2b,0x1c,0xbe,0xbd,0x2d,0xf7,0x89,0x2f,0x98,0x5d,0x34,0x82,0x37,0x97,0xce,0xb9, 0x9a,0x56,0xdc,0xf3,0x36,0x73,0xcf,0xd4,0xf2,0x4d,0x4c,0x22,0xef,0xa9,0x52,0x6a, 0xc6,0xb6,0x99,0x12,0xc1,0x0c,0xe8,0x08,0xcc,0x88,0x54,0x31,0xec,0x7f,0xcf,0x15, 0xa4,0xd5,0xd1,0x10,0xdc,0xe9,0xfc,0x47,0xf1,0x13,0x4a,0x6f,0x84,0x9a,0x4f,0x86, 0xc5,0x81,0xb4,0xbb,0xd3,0xee,0xe4,0xbb,0xb8,0xbe,0x93,0x6e,0x1c,0x1d,0xfd,0x0f, 0x5e,0x8c,0xa3,0x1f,0xec,0x75,0x39,0x00,0x61,0x6d,0x6e,0x6c,0x79,0x9e,0x88,0xef, 0x7a,0x0d,0xd4,0xa8,0x53,0xcf,0x91,0xa4,0x08,0xc3,0x9d,0xa4,0xf1,0xfe,0x35,0xd3, 0x1d,0x11,0x84,0xb7,0x3d,0x3f,0xe1,0xb7,0x80,0x5f,0xe2,0x57,0x8d,0x4e,0x85,0x6f, 0x7f,0xfd,0x9a,0xab,0x03,0xc8,0x6e,0x7c,0xad,0xff,0x00,0x77,0x03,0x9e,0x46,0x06, 0x4e,0x49,0x24,0x00,0x01,0xea,0x70,0x0e,0x12,0x93,0x6c,0xd9,0x24,0x91,0xe5,0xba, 0xd3,0xc7,0x6b,0xaa,0x5b,0x79,0x1b,0x44,0x92,0x97,0x47,0xf2,0xf8,0x57,0x03,0x04, 0x36,0x3f,0x3e,0x7b,0xf1,0x5a,0x53,0x6f,0x62,0x26,0xba,0x9e,0xf7,0xfb,0x2e,0x7c, 0x72,0xb3,0xf8,0x4d,0xae,0xdf,0xdb,0x78,0x90,0xca,0xba,0x26,0xac,0xb1,0x89,0x6e, 0x23,0x52,0xcd,0x6d,0x2a,0x67,0x6b,0xe3,0xa9,0x5c,0x31,0x07,0x1c,0xf7,0xaf,0x03, 0x88,0xf2,0x9a,0x98,0xda,0x71,0x9d,0x1f,0x8e,0x0f,0x4f,0x33,0xb7,0x2f,0xc5,0x2a, 0x12,0x6a,0x7b,0x33,0xec,0xdb,0x4f,0x8c,0x7e,0x16,0x9a,0xcb,0xed,0x96,0x9e,0x2a, 0xf0,0xdc,0xb6,0xa4,0x67,0xcc,0x37,0x71,0x0e,0x38,0xea,0x32,0x08,0xe8,0x3b,0x67, 0x8a,0xf8,0x45,0x3c,0x75,0x19,0x72,0x4a,0x9b,0xbf,0xf8,0x4f,0x6d,0xba,0x13,0xf7, 0x94,0xbf,0x13,0xe4,0xbf,0xda,0xf7,0xe3,0x7e,0x8d,0xf1,0x4a,0xef,0x44,0xd1,0x7c, 0x23,0x2a,0xea,0x16,0xba,0x54,0x93,0x4f,0x36,0xa0,0x8a,0x42,0x3c,0xb2,0x6d,0x1b, 0x53,0x3d,0x54,0x05,0xe4,0xf4,0x24,0xfb,0x57,0xd8,0x70,0xc6,0x5d,0x5e,0x83,0xa9, 0x88,0xae,0xac,0xe7,0xd0,0xf2,0xb3,0x2c,0x44,0x2a,0x72,0xc2,0x1a,0xa4,0x79,0xdf, 0xc0,0x9d,0x2c,0xdf,0x7c,0x48,0xd3,0x03,0x0c,0xac,0x1b,0xa6,0x3f,0x80,0xaf,0xac, 0x67,0x90,0x7d,0x59,0x1d,0x91,0xd4,0x3c,0x4b,0x2b,0x11,0x90,0x9b,0x63,0x1f,0x80, 0xae,0x29,0xbb,0xb3,0xb2,0x92,0xb4,0x4f,0x74,0xf8,0x7b,0xa1,0x73,0x19,0xdb,0xd2, 0xa4,0xd0,0xf7,0x7d,0x1a,0xd0,0x5a,0xda,0x2f,0x1c,0x91,0x40,0x17,0xa8,0x00,0xa0, 0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0xf8,0x73,0xfe,0x0a,0x2d, 0xae,0x35,0xc6,0xbb,0xe1,0x2d,0x1e,0x29,0x04,0x62,0xd6,0xda,0x6b,0xc7,0x62,0xc4, 0x60,0xbb,0x05,0x1d,0x3f,0xdd,0xad,0xe8,0x2b,0xb6,0xce,0x7a,0xec,0xf8,0x85,0x6e, 0xe1,0xfe,0xcb,0x9f,0xec,0xd0,0x86,0x99,0xc7,0xee,0xc1,0xe9,0xdf,0x27,0x3d,0x8e, 0x70,0x73,0x5d,0x3b,0x1c,0xcf,0x51,0xee,0x5a,0x35,0xb3,0x86,0x52,0x19,0xd6,0x15, 0xc9,0x1d,0xcb,0x7c,0xdf,0xd6,0x80,0x2c,0xd8,0xf8,0x5f,0x51,0xf1,0x54,0x9a,0x92, 0xe9,0x50,0xbc,0xe9,0xa7,0xdb,0xbd,0xcd,0xc1,0x12,0xf9,0x61,0x11,0x07,0x38,0xe4, 0x64,0xf0,0x70,0x39,0x27,0x07,0x02,0xb1,0x95,0x56,0x6c,0xa0,0xba,0x9c,0x4d,0xeb, 0xb6,0x9f,0x76,0x88,0x92,0xb3,0xc3,0x2a,0x92,0xbb,0xcf,0x2a,0x47,0x51,0x9e,0xfd, 0x45,0x69,0x09,0x73,0x2d,0x48,0x94,0x6c,0x6a,0xd9,0x92,0x2d,0x37,0xb2,0xef,0x07, 0xa0,0xce,0x01,0xa6,0xda,0x5b,0x89,0x2b,0x98,0xd7,0xf6,0xd0,0x2d,0xca,0x49,0x7d, 0x6d,0xfb,0xb2,0xc0,0x2b,0xee,0xde,0xa1,0xbb,0x7d,0x3f,0x11,0x51,0x1e,0x56,0xca, 0x77,0x48,0xb3,0x1c,0xea,0xd2,0x01,0x1f,0x61,0xd0,0x56,0xb6,0x20,0x5b,0xcd,0x4a, 0xfa,0xcd,0xf7,0xd9,0xee,0x12,0x32,0x94,0x2c,0x92,0x14,0x25,0x48,0xc1,0x07,0x1d, 0x46,0x38,0xac,0x9c,0x35,0xd0,0xd1,0x4b,0xa3,0x31,0xed,0xf4,0xf9,0xa5,0xba,0x6b, 0xbd,0x4a,0x45,0x69,0x4a,0xec,0x44,0x4e,0x91,0xaf,0xa0,0xff,0x00,0x1a,0xb8,0x46, 0xc4,0xc9,0xdd,0x9b,0x22,0xdb,0xc8,0x8d,0x55,0xc8,0x5d,0xdc,0xe5,0x86,0x4e,0x3d, 0x86,0x45,0x12,0x9a,0x43,0x51,0xb8,0xc9,0xb4,0x29,0x9a,0xe4,0x47,0xb0,0x34,0xed, 0x82,0x21,0x96,0x33,0x13,0xb7,0xd3,0x24,0xe7,0xdb,0xa6,0x6a,0x15,0x44,0xca,0xe4, 0x68,0x8e,0x09,0x90,0xa1,0x0a,0x0a,0x91,0xc1,0x52,0x39,0x06,0xb5,0x4b,0xb1,0x9b, 0x3d,0xbf,0xf6,0x60,0xd3,0x8d,0xd7,0x89,0xef,0xef,0x18,0x64,0x43,0x00,0x8c,0x13, 0xea,0xc7,0xfc,0x05,0x4c,0x84,0x7d,0x57,0xe1,0x1d,0x2b,0xed,0x37,0xef,0x29,0x1f, 0x7e,0x42,0x73,0xf8,0xd7,0x0b,0xd4,0xef,0x8a,0xb2,0x3e,0x8c,0xf0,0x2e,0x8b,0xe5, 0x47,0x19,0x2b,0x48,0x67,0xa2,0x85,0x08,0xa1,0x57,0xa0,0xa0,0x02,0x80,0x0a,0x00, 0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x01,0x47,0x5a,0x00,0xfc,0xeb,0xff,0x00, 0x82,0x85,0xc1,0x25,0xc7,0xc6,0x1b,0x30,0xcc,0x16,0x15,0xd2,0x23,0xc9,0x62,0x40, 0xc1,0x76,0xe3,0x8f,0x7a,0xde,0x82,0xbd,0xce,0x5a,0xdb,0x9f,0x24,0xdd,0xdc,0xac, 0xfa,0x6c,0x51,0xe9,0xf1,0x0f,0x31,0xdc,0x7c,0xf8,0xfb,0xab,0x91,0xd0,0xfd,0x32, 0x31,0x5d,0x3b,0x18,0xee,0x3f,0x53,0xb8,0x30,0xea,0x12,0x11,0xfc,0x07,0x60,0x23, 0xd1,0x78,0xfe,0x94,0x01,0x6f,0x4b,0xf8,0x8f,0xaa,0x78,0x4d,0x6e,0xd7,0x44,0xb9, 0x10,0xc5,0x72,0xc2,0x49,0x61,0x7b,0x74,0x98,0x33,0xed,0x65,0x0c,0x37,0x29,0xc1, 0xc3,0xb8,0x04,0x60,0x8d,0xc6,0xb9,0xe5,0x1b,0x69,0x63,0x64,0xd3,0x38,0x45,0x86, 0x7b,0xfb,0xc9,0x2e,0xae,0x93,0xca,0x89,0x57,0x64,0x31,0x93,0xc8,0x19,0xe4,0x9f, 0x73,0x5a,0xd3,0x56,0x22,0x6e,0xe7,0x53,0xa4,0xdc,0x59,0x2c,0xfa,0x51,0xd5,0x56, 0x47,0xd3,0xe3,0xb8,0x43,0x74,0x91,0xfd,0xe3,0x1e,0xe1,0xbb,0x1e,0xfb,0x73,0x8a, 0x9a,0x9b,0x95,0x02,0x4f,0x8d,0x1a,0xe6,0x81,0x7b,0xe2,0x5b,0xf7,0xf0,0x54,0x30, 0x45,0xa6,0xdc,0x24,0x51,0x44,0x90,0x42,0x61,0x47,0x93,0x6a,0xee,0x2a,0x87,0x95, 0x1b,0x81,0x3c,0xfa,0x66,0xa2,0x0a,0xcc,0xa9,0x3d,0x0c,0x0d,0x22,0x20,0x65,0x96, 0x49,0x41,0xda,0x8a,0x4e,0x3d,0x71,0x5d,0x12,0x76,0x46,0x31,0x57,0x67,0x55,0x71, 0xe0,0x0b,0xa9,0x3c,0x07,0xff,0x00,0x09,0x3c,0xf1,0xda,0x4b,0x6e,0x64,0x53,0xe5, 0xa3,0xc7,0xb9,0x22,0x2c,0xd1,0x96,0x6f,0x9b,0x78,0x3e,0x62,0x80,0x00,0x1c,0x8c, 0x9e,0xd5,0x87,0x33,0xb9,0xb5,0x96,0xc7,0x01,0x1d,0xce,0xcb,0xb9,0xe1,0x12,0x33, 0xa4,0x72,0x6d,0x05,0xba,0xe3,0x00,0x8c,0xfe,0x04,0x57,0x44,0x5d,0xd1,0x8c,0x95, 0x99,0xd3,0x68,0x3e,0x24,0x8b,0x43,0xf1,0x36,0x99,0xaa,0x4d,0x04,0x77,0x42,0xce, 0x68,0xe5,0x6b,0x77,0x38,0x0e,0x17,0xb0,0xcf,0xd3,0xf3,0xac,0x25,0x13,0x58,0xbb, 0xa3,0xa6,0xf8,0xe3,0xf1,0x77,0x4e,0xf8,0x83,0x7b,0xa6,0x5d,0x59,0xc7,0x2d,0x9c, 0x76,0x70,0x32,0x33,0x5c,0xe3,0x7b,0x33,0x36,0x78,0x20,0x9c,0x8f,0x41,0xea,0x4d, 0x4d,0xbb,0x0d,0x69,0xb9,0xe7,0x89,0x76,0xda,0x9d,0xcc,0xf7,0xae,0xa5,0x0d,0xc4, 0x86,0x42,0x0f,0x1d,0x7f,0xc7,0xaf,0xe3,0x5d,0x11,0xd8,0xc5,0xbb,0xb3,0xea,0x3f, 0xd9,0x57,0x4a,0xf2,0xf4,0x5b,0xdb,0xa6,0x5e,0x67,0xb9,0xda,0x0f,0xb2,0x8f,0xfe, 0xbd,0x67,0x53,0x44,0xc2,0x2a,0xed,0x1f,0x5d,0xfc,0x3e,0xd0,0xf7,0x18,0x89,0x5a, 0xe3,0x3b,0xcf,0xa0,0x7c,0x3d,0x62,0x2d,0x6d,0x54,0x91,0x83,0x8a,0x00,0xd5,0xa0, 0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x0f,0x81, 0xbf,0xe0,0xa4,0xba,0x0b,0xc5,0xe2,0xaf,0x0b,0xea,0xc8,0xac,0x22,0xb9,0xb1,0x92, 0xd9,0xd8,0x64,0x06,0x2a,0xd9,0xc1,0xfc,0x0d,0x6f,0x41,0xea,0xd1,0xcf,0x5c,0xf8, 0xcd,0x48,0x96,0xfb,0x4e,0x82,0xce,0x15,0x8d,0x11,0x81,0x91,0x8f,0x04,0xe3,0xb7, 0xb8,0xef,0xed,0x5d,0x28,0xe6,0xb1,0x56,0xeb,0xf7,0x92,0xb3,0xbe,0x7e,0x63,0x9a, 0x06,0x53,0x74,0xc1,0x39,0x19,0xc7,0xeb,0x40,0x10,0x4a,0x00,0x1c,0x8e,0x28,0x02, 0x36,0x88,0x32,0xed,0xf3,0x19,0x3d,0xd7,0x8a,0x4d,0x5c,0x69,0xd8,0xac,0x9a,0x4c, 0x09,0x72,0x26,0x90,0x99,0xa5,0x03,0x01,0x9c,0xe7,0x1f,0x4f,0x4a,0x51,0x8a,0x40, 0xe5,0x72,0xda,0x33,0x5b,0x92,0x50,0x03,0x90,0x41,0x07,0xb8,0xa6,0xd5,0xf4,0x04, 0xec,0xc6,0xea,0x7e,0x31,0xd6,0xa4,0xf0,0xe5,0xbe,0x81,0x11,0x9a,0x4d,0x36,0xde, 0xe1,0xee,0x62,0xb7,0x72,0xa1,0x16,0x56,0x00,0x16,0x24,0x72,0x78,0x1c,0x0e,0xd9, 0x38,0xc6,0x4d,0x67,0xca,0xf6,0x34,0xe6,0x46,0x06,0x9f,0xa7,0x4a,0x08,0x46,0x26, 0x59,0x9d,0xf7,0x31,0x51,0xf7,0x98,0xfa,0x56,0xd1,0x56,0x46,0x52,0x76,0xd5,0x9d, 0xaa,0x7c,0x2c,0xd4,0x2f,0x60,0x55,0xbe,0xb9,0xd3,0x6c,0xdc,0xff,0x00,0xcb,0x19, 0xdd,0x99,0x87,0xd7,0x68,0x20,0x50,0xd5,0xcf,0x9f,0xab,0xc4,0x98,0x68,0x3b,0x45, 0x39,0x79,0xa3,0x13,0x5a,0xf8,0x7b,0x73,0xe1,0x39,0x20,0x9b,0x55,0xb3,0x88,0xc3, 0x29,0x22,0x2b,0xb8,0x58,0x49,0x1b,0x9f,0x4d,0xdd,0x8f,0xb1,0xc1,0xa5,0x63,0xd0, 0xc0,0xe6,0x94,0x71,0x9f,0xc3,0x7a,0xae,0x8f,0x72,0x25,0x20,0x11,0x8e,0x07,0xa0, 0xaa,0x3d,0x03,0xed,0x3f,0xd9,0x9b,0x47,0x30,0xf8,0x37,0x4a,0x40,0x3e,0x69,0x83, 0xcc,0x7f,0x13,0x5c,0xd5,0x5e,0x85,0xd2,0x57,0x91,0xf6,0x4f,0x80,0x74,0x4d,0x89, 0x19,0x2b,0x5c,0xc7,0x69,0xea,0x71,0xc6,0x22,0x8d,0x55,0x7b,0x0a,0x00,0x5a,0x00, 0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0xf0,0x1f, 0xdb,0x63,0xe1,0x9c,0x9f,0x10,0xbe,0x0c,0x5d,0x5d,0x69,0xd0,0x99,0xb5,0x1d,0x11, 0xfe,0xdd,0x1a,0xa8,0xc9,0x68,0xf1,0x89,0x00,0xfc,0x39,0xff,0x00,0x80,0xd5,0xd3, 0x97,0x2c,0xae,0x67,0x56,0x37,0x47,0xe5,0xfb,0x5c,0xa4,0x7a,0x94,0xcf,0x1a,0x47, 0x0c,0x51,0xc6,0xe1,0x30,0x30,0x49,0x23,0x03,0x3e,0xfc,0xf5,0xae,0xdb,0x9c,0x66, 0x6b,0x9f,0x31,0xb8,0x39,0xf6,0xa9,0xb8,0xec,0x35,0xad,0x24,0x73,0xc6,0x71,0x4e, 0xe1,0x60,0x1a,0x5b,0xc8,0x70,0xdc,0x66,0x95,0xc2,0xc4,0xe9,0xe1,0xe2,0x57,0x27, 0x76,0x0f,0x7a,0x77,0x1d,0x88,0x67,0xd1,0x9a,0x2e,0x50,0x9e,0x3d,0x69,0x5c,0x2c, 0x53,0x7b,0x67,0x46,0xc3,0x0a,0x77,0x0b,0x11,0x4f,0x6b,0xb8,0x73,0x4e,0xe2,0x68, 0x93,0xc3,0xd7,0x91,0xe9,0x1a,0xdd,0xad,0xcd,0xd2,0x66,0x38,0xa4,0x0c,0x78,0xce, 0x3d,0xff,0x00,0x0e,0xbf,0x85,0x51,0xc7,0x8f,0xa3,0x2a,0xd8,0x79,0xd3,0x86,0xed, 0x1e,0xf1,0xe1,0x0f,0x18,0xf8,0x7f,0x4c,0xd2,0x92,0xdb,0xc4,0x3a,0x49,0xd5,0x21, 0x79,0xcc,0xce,0xf1,0x2c,0x6c,0x2e,0x10,0x94,0x23,0x2e,0x46,0xe5,0xda,0x15,0x80, 0x0a,0x70,0x7c,0xc3,0x9e,0x9c,0xa7,0x1b,0xf5,0x3e,0x2b,0x0d,0x5a,0x9d,0x18,0xfb, 0x2a,0xd0,0xd5,0x3d,0x4e,0x63,0xe2,0x16,0xbd,0xa4,0x36,0x99,0xe2,0x58,0xf4,0xd8, 0x16,0x0d,0x1e,0xea,0x05,0x5b,0x4b,0x43,0x9d,0xc9,0x26,0x01,0x4e,0xa4,0x92,0xca, 0xd9,0xcb,0x77,0xc1,0x3c,0x03,0x8a,0x4d,0x58,0xbc,0x24,0x79,0xb1,0xf1,0x96,0x1d, 0x59,0x5f,0xf0,0xeb,0x73,0xc6,0x2c,0x51,0xee,0xae,0x22,0x85,0x32,0xcc,0xec,0x11, 0x40,0xea,0x49,0xe2,0xa9,0x9f,0x7a,0x7e,0x92,0xfe,0xcf,0xfe,0x13,0x6b,0x6d,0x2e, 0xd2,0x32,0x9f,0x2d,0xb4,0x29,0x08,0xfa,0xe3,0x9a,0xe2,0xab,0x2b,0x9d,0x14,0x16, 0xec,0xfa,0xcb,0xc2,0xda,0x68,0xb5,0xb6,0x56,0x20,0x70,0x2b,0x23,0xa0,0xdd,0xa0, 0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80, 0x1b,0x24,0x69,0x34,0x4f,0x1c,0xc8,0xb2,0x46,0xea,0x55,0x91,0x86,0x43,0x03,0xd4, 0x11,0x40,0x1f,0x9a,0xbf,0xb5,0x1f,0xec,0x77,0xe2,0x6f,0x0a,0xf8,0xe6,0x6d,0x4b, 0xe1,0x86,0x87,0xa8,0x6b,0x7e,0x1f,0xd4,0xa4,0x32,0x47,0x15,0x84,0x46,0x46,0xb5, 0x73,0xc9,0x46,0x03,0x90,0x3d,0x0f,0x4c,0x56,0xb0,0xa9,0x6d,0x19,0x84,0xe9,0xf6, 0x3c,0xe7,0x49,0xfd,0x93,0x7e,0x25,0x5c,0x05,0x7b,0xef,0x0e,0xc9,0xa7,0x83,0xda, 0xf2,0x74,0x8c,0x8f,0xc3,0x24,0xd5,0xfb,0x54,0x4a,0xa4,0xd9,0xd5,0xd9,0xfe,0xc8, 0xbe,0x30,0x64,0x02,0x79,0x34,0xa8,0x8f,0xa1,0x95,0x9b,0xf9,0x2d,0x2f,0x6c,0x3f, 0x62,0xcb,0xa3,0xf6,0x43,0xf1,0x72,0x2e,0x62,0xbb,0xd2,0x18,0xfa,0x16,0x71,0xff, 0x00,0xb2,0xd2,0xf6,0xa3,0xf6,0x2f,0xb9,0x4e,0xf7,0xf6,0x5e,0xf1,0xed,0xaa,0x7e, 0xea,0xdf,0x4c,0xb8,0x03,0xb4,0x77,0x38,0x27,0xfe,0xfa,0x02,0x8f,0x6a,0x2f,0x64, 0xce,0x37,0x5e,0xf8,0x2b,0xe3,0x6d,0x15,0x4b,0xdf,0xf8,0x6f,0x50,0x31,0xaf,0x59, 0x20,0x51,0x28,0xff,0x00,0xc7,0x49,0xa6,0xa6,0x4f,0xb3,0x67,0x0b,0x7b,0xa3,0xbc, 0x72,0x34,0x73,0xc4,0xf1,0x48,0xbd,0x51,0xd4,0x82,0x3f,0x03,0x56,0xa6,0x88,0xb1, 0x9d,0x36,0x90,0xe3,0xa0,0xab,0x4e,0xe0,0x66,0x5e,0x69,0x44,0x82,0x0e,0x41,0xaa, 0x4c,0x9b,0x19,0x0c,0x6f,0x74,0xd2,0x45,0x9d,0xdd,0xc5,0xba,0x9e,0xab,0x1b,0x90, 0x0f,0xe1,0x4c,0xe6,0xad,0x84,0xa3,0x59,0xde,0xa4,0x53,0x33,0xa5,0x59,0x27,0xb8, 0x33,0xde,0xcf,0x2c,0xf2,0x0e,0x03,0xca,0xc5,0x88,0xfa,0x53,0xb1,0x74,0xa8,0x53, 0xa4,0xad,0x4e,0x29,0x1e,0xa1,0xfb,0x3c,0xf8,0x0e,0xe3,0xc7,0x7e,0x3c,0xb7,0x78, 0xa0,0x69,0x6d,0xac,0xdc,0x3e,0x31,0xc3,0xc8,0x7e,0xe8,0xfe,0xbf,0x85,0x67,0x56, 0x76,0x46,0xea,0x2d,0x9f,0xaa,0x5f,0x0c,0xfc,0x12,0xba,0x36,0x9d,0x6d,0x00,0x5c, 0x94,0x03,0x73,0x63,0xef,0x37,0x73,0x5c,0x6d,0xdc,0xed,0x8c,0x79,0x55,0x8f,0x59, 0x82,0x11,0x04,0x4a,0x8a,0x3a,0x0a,0x43,0x1f,0x40,0x05,0x00,0x14,0x00,0x50,0x01, 0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x10,0x19,0x48,0x6e, 0x86,0x80,0x32,0xae,0xfc,0x39,0x05,0xdb,0x96,0x60,0xa7,0x3e,0xb4,0x01,0x58,0x78, 0x3e,0xd9,0x4f,0x2a,0x94,0x00,0xf1,0xe1,0x4b,0x6c,0x7d,0xd5,0xa0,0x06,0x3f,0x84, 0x2d,0x9c,0x70,0xa9,0x40,0x14,0xee,0x3c,0x0b,0x04,0x83,0xe5,0x45,0xfc,0x28,0x03, 0x8c,0xf1,0x6f,0xc0,0xdd,0x0b,0xc5,0x30,0xb4,0x7a,0xee,0x93,0x65,0x7a,0x0f,0xf1, 0x4b,0x18,0xdc,0x3e,0x8d,0xd4,0x7e,0x74,0x05,0xae,0x78,0x07,0x8f,0x3f,0x62,0x7b, 0x29,0x0c,0x93,0x78,0x32,0xf2,0x6b,0x09,0x3a,0x8b,0x6b,0xac,0xc9,0x19,0xf6,0x0d, 0xf7,0x87,0xeb,0x56,0xa6,0xd1,0x9c,0xa9,0xa6,0x7c,0xdf,0xf1,0x07,0xe0,0x8f,0x88, 0xbc,0x0e,0xec,0x35,0xfd,0x36,0x58,0x63,0x07,0x0b,0x73,0x10,0xdf,0x13,0x7d,0x18, 0x7f,0x23,0x83,0x5a,0xc6,0xa5,0xcc,0xa5,0x4d,0xa3,0xc6,0xf5,0xed,0x39,0xad,0x0b, 0x79,0xaa,0x47,0xd6,0xb5,0x8c,0xae,0x66,0xd1,0x8b,0xe1,0x4f,0x07,0xeb,0x3f,0x10, 0x3c,0x4f,0x6d,0xa1,0x78,0x56,0xd2,0x5b,0xdb,0xeb,0x87,0x0a,0xa9,0x1a,0x93,0xb4, 0x77,0x27,0xd0,0x51,0x2a,0x8a,0x2b,0x50,0x50,0xb9,0xfa,0xa5,0xfb,0x35,0xfe,0xcd, 0x16,0x9f,0x09,0x3c,0x35,0x6d,0x04,0xc8,0xb3,0x6a,0x6e,0xa1,0xa7,0x9b,0x1d,0x18, 0xf5,0xc1,0xfe,0xb5,0xc6,0xe4,0xe5,0xab,0x3a,0xa1,0x0e,0x53,0xe8,0xeb,0x0d,0x3d, 0x2c,0x63,0x01,0x40,0xdc,0x29,0x16,0x5a,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0, 0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80, 0x0a,0x00,0x28,0x00,0xa0,0x05,0xce,0x3a,0x50,0x01,0x9c,0x8e,0x7f,0x5a,0x00,0x86, 0x6b,0x48,0xa7,0x18,0x91,0x07,0xd6,0x80,0x31,0x75,0x5f,0x06,0xd9,0xea,0x90,0x49, 0x0d,0xc4,0x30,0xcd,0x0c,0x80,0xab,0xc7,0x22,0x86,0x56,0x1e,0x84,0x1e,0xb4,0x01, 0xf3,0x47,0xc5,0x1f,0xf8,0x27,0xef,0x87,0x7c,0x75,0x7e,0x2e,0x7c,0x37,0xaa,0xdd, 0xf8,0x64,0xbb,0x66,0x58,0x23,0x84,0x4f,0x11,0x1f,0xec,0x82,0x41,0x5f,0xcc,0x8a, 0xb5,0x36,0x8c,0xdd,0x34,0xcf,0x55,0xf8,0x21,0xfb,0x30,0x78,0x43,0xe0,0x66,0x93, 0xf6,0x7f,0x0b,0xda,0x19,0x6f,0xa5,0x03,0xed,0x3a,0x9d,0xd6,0x1a,0x79,0xcf,0xb9, 0xfe,0x11,0xec,0x38,0xa8,0x7a,0xbb,0xb2,0xd2,0x4b,0x63,0xd7,0xa1,0x85,0x20,0x5d, 0xb1,0x28,0x1e,0xf4,0x0c,0x7d,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00, 0x50,0x01,0x40,0x0b,0xb4,0xfa,0x50,0x01,0xb4,0xfa,0x50,0x01,0xb4,0xfa,0x50,0x01, 0xb4,0xfa,0x50,0x01,0xb4,0xfa,0x50,0x01,0xb4,0xfa,0x50,0x01,0xb4,0xfa,0x50,0x01, 0xb4,0xfa,0x50,0x01,0xb4,0xfa,0x50,0x01,0xb4,0xfa,0x50,0x01,0xb4,0xfa,0x50,0x01, 0xb4,0xfa,0x50,0x01,0xb4,0xfa,0x50,0x01,0xb4,0xfa,0x50,0x02,0xed,0x3e,0xf4,0x00, 0x9b,0x4f,0xa5,0x00,0x1b,0x4f,0xa5,0x00,0x1b,0x4f,0xa5,0x00,0x1b,0x4f,0xa5,0x00, 0x1b,0x4f,0xa5,0x00,0x1b,0x4f,0xa5,0x00,0x1b,0x4f,0xa5,0x00,0x1b,0x4f,0xa5,0x00, 0x1b,0x4f,0xa5,0x00,0x1b,0x4f,0xa5,0x00,0x7f,0xff,0xd9 }; /* created by reswrap from file cy_secoder_s.jpg */ const unsigned char fxcj_icon_cy_secoder_s[]={ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x01,0x2c, 0x01,0x2c,0x00,0x00,0xff,0xe1,0x00,0x16,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d, 0x00,0x2a,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe2,0x1c,0x6d, 0x49,0x43,0x43,0x5f,0x50,0x52,0x4f,0x46,0x49,0x4c,0x45,0x00,0x01,0x01,0x00,0x00, 0x1c,0x5d,0x4c,0x69,0x6e,0x6f,0x02,0x10,0x00,0x00,0x6d,0x6e,0x74,0x72,0x52,0x47, 0x42,0x20,0x58,0x59,0x5a,0x20,0x07,0xce,0x00,0x02,0x00,0x09,0x00,0x06,0x00,0x31, 0x00,0x00,0x61,0x63,0x73,0x70,0x4d,0x53,0x46,0x54,0x00,0x00,0x00,0x00,0x49,0x45, 0x43,0x20,0x73,0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf6,0xd6,0x00,0x01,0x00,0x00,0x00,0x00,0xd3,0x2d,0x48,0x50, 0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x11,0x63,0x70,0x72,0x74,0x00,0x00,0x01,0x50,0x00,0x00,0x00,0x33,0x64,0x65, 0x73,0x63,0x00,0x00,0x01,0x83,0x00,0x00,0x00,0x6c,0x77,0x74,0x70,0x74,0x00,0x00, 0x01,0xef,0x00,0x00,0x00,0x14,0x62,0x6b,0x70,0x74,0x00,0x00,0x02,0x03,0x00,0x00, 0x00,0x14,0x72,0x58,0x59,0x5a,0x00,0x00,0x02,0x17,0x00,0x00,0x00,0x14,0x67,0x58, 0x59,0x5a,0x00,0x00,0x02,0x2b,0x00,0x00,0x00,0x14,0x62,0x58,0x59,0x5a,0x00,0x00, 0x02,0x3f,0x00,0x00,0x00,0x14,0x64,0x6d,0x6e,0x64,0x00,0x00,0x02,0x53,0x00,0x00, 0x00,0x70,0x64,0x6d,0x64,0x64,0x00,0x00,0x02,0xc3,0x00,0x00,0x00,0x88,0x76,0x75, 0x65,0x64,0x00,0x00,0x03,0x4b,0x00,0x00,0x00,0x86,0x76,0x69,0x65,0x77,0x00,0x00, 0x03,0xd1,0x00,0x00,0x00,0x24,0x6c,0x75,0x6d,0x69,0x00,0x00,0x03,0xf5,0x00,0x00, 0x00,0x14,0x6d,0x65,0x61,0x73,0x00,0x00,0x04,0x09,0x00,0x00,0x00,0x24,0x74,0x65, 0x63,0x68,0x00,0x00,0x04,0x2d,0x00,0x00,0x00,0x0c,0x72,0x54,0x52,0x43,0x00,0x00, 0x04,0x39,0x00,0x00,0x08,0x0c,0x67,0x54,0x52,0x43,0x00,0x00,0x0c,0x45,0x00,0x00, 0x08,0x0c,0x62,0x54,0x52,0x43,0x00,0x00,0x14,0x51,0x00,0x00,0x08,0x0c,0x74,0x65, 0x78,0x74,0x00,0x00,0x00,0x00,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20, 0x28,0x63,0x29,0x20,0x31,0x39,0x39,0x38,0x20,0x48,0x65,0x77,0x6c,0x65,0x74,0x74, 0x2d,0x50,0x61,0x63,0x6b,0x61,0x72,0x64,0x20,0x43,0x6f,0x6d,0x70,0x61,0x6e,0x79, 0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x73,0x52,0x47, 0x42,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x73,0x52,0x47,0x42,0x20,0x49, 0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xf3,0x51,0x00,0x01,0x00,0x00,0x00,0x01,0x16, 0xcc,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x6f, 0xa2,0x00,0x00,0x38,0xf5,0x00,0x00,0x03,0x90,0x58,0x59,0x5a,0x20,0x00,0x00,0x00, 0x00,0x00,0x00,0x62,0x99,0x00,0x00,0xb7,0x85,0x00,0x00,0x18,0xda,0x58,0x59,0x5a, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0xa0,0x00,0x00,0x0f,0x84,0x00,0x00,0xb6, 0xcf,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x49,0x45,0x43, 0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x69,0x65,0x63,0x2e, 0x63,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x49,0x45, 0x43,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x69,0x65,0x63, 0x2e,0x63,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0x49,0x45,0x43, 0x20,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x20,0x44,0x65,0x66,0x61,0x75, 0x6c,0x74,0x20,0x52,0x47,0x42,0x20,0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73,0x70, 0x61,0x63,0x65,0x20,0x2d,0x20,0x73,0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x2e,0x49,0x45,0x43,0x20,0x36,0x31,0x39,0x36,0x36,0x2d, 0x32,0x2e,0x31,0x20,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x52,0x47,0x42,0x20, 0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x2d,0x20,0x73, 0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2c,0x52,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x56, 0x69,0x65,0x77,0x69,0x6e,0x67,0x20,0x43,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e, 0x20,0x69,0x6e,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2c,0x52,0x65,0x66,0x65, 0x72,0x65,0x6e,0x63,0x65,0x20,0x56,0x69,0x65,0x77,0x69,0x6e,0x67,0x20,0x43,0x6f, 0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x49,0x45,0x43,0x36,0x31, 0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76, 0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x13,0xa4,0xfe,0x00,0x14,0x5f,0x2e,0x00, 0x10,0xcf,0x14,0x00,0x03,0xed,0xcc,0x00,0x04,0x13,0x0b,0x00,0x03,0x5c,0x9e,0x00, 0x00,0x00,0x01,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x4c,0x09,0x56,0x00, 0x50,0x00,0x00,0x00,0x57,0x1f,0xe7,0x6d,0x65,0x61,0x73,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x8f,0x00,0x00,0x00,0x02,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x69,0x67,0x20,0x00, 0x00,0x00,0x00,0x43,0x52,0x54,0x20,0x63,0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00, 0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00, 0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00, 0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00, 0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00, 0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00, 0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00, 0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01, 0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01, 0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01, 0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01, 0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01, 0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02, 0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02, 0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02, 0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03, 0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03, 0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03, 0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04, 0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04, 0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05, 0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05, 0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06, 0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06, 0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07, 0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07, 0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08, 0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09, 0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09, 0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a, 0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b, 0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c, 0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c, 0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d, 0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e, 0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f, 0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10, 0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11, 0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12, 0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13, 0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14, 0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15, 0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16, 0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17, 0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18, 0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19, 0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a, 0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c, 0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d, 0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e, 0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20, 0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21, 0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22, 0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24, 0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25, 0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27, 0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28, 0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a, 0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c, 0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d, 0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f, 0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31, 0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32, 0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34, 0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36, 0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38, 0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a, 0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c, 0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e, 0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40, 0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42, 0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44, 0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46, 0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48, 0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a, 0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d, 0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f, 0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51, 0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53, 0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56, 0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58, 0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b, 0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d, 0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60, 0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62, 0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65, 0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68, 0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a, 0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d, 0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70, 0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73, 0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76, 0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79, 0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c, 0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f, 0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82, 0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85, 0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88, 0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b, 0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e, 0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92, 0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95, 0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98, 0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c, 0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f, 0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3, 0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6, 0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa, 0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad, 0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1, 0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5, 0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8, 0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc, 0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0, 0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4, 0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8, 0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc, 0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0, 0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4, 0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8, 0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc, 0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0, 0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4, 0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9, 0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed, 0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1, 0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6, 0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa, 0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff, 0x6d,0xff,0xff,0x63,0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00, 0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00, 0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00, 0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00, 0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00, 0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00, 0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00, 0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01, 0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01, 0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01, 0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01, 0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02, 0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02, 0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02, 0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02, 0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03, 0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03, 0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04, 0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04, 0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04, 0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05, 0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05, 0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06, 0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06, 0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07, 0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08, 0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08, 0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09, 0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a, 0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a, 0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b, 0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c, 0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d, 0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d, 0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e, 0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f, 0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10, 0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11, 0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12, 0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13, 0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14, 0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15, 0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16, 0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17, 0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18, 0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a, 0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b, 0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c, 0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d, 0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f, 0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20, 0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21, 0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23, 0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24, 0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26, 0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27, 0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29, 0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a, 0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c, 0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e, 0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f, 0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31, 0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33, 0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35, 0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36, 0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38, 0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a, 0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c, 0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e, 0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40, 0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42, 0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44, 0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46, 0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49, 0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b, 0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d, 0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f, 0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52, 0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54, 0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56, 0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59, 0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b, 0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e, 0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60, 0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63, 0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66, 0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68, 0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b, 0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e, 0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71, 0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74, 0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76, 0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79, 0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c, 0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f, 0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82, 0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86, 0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89, 0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c, 0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f, 0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92, 0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96, 0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99, 0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c, 0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0, 0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3, 0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7, 0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab, 0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae, 0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2, 0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6, 0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9, 0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd, 0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1, 0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5, 0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9, 0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd, 0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1, 0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5, 0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9, 0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd, 0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1, 0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6, 0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea, 0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee, 0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3, 0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7, 0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc, 0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0x63, 0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00, 0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00, 0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00, 0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00, 0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00, 0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00, 0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00, 0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01, 0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01, 0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01, 0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01, 0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02, 0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02, 0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02, 0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03, 0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03, 0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03, 0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04, 0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04, 0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05, 0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05, 0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06, 0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06, 0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07, 0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07, 0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08, 0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08, 0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09, 0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a, 0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a, 0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b, 0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c, 0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d, 0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e, 0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e, 0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f, 0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10, 0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11, 0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12, 0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13, 0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14, 0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15, 0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16, 0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17, 0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19, 0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a, 0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b, 0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c, 0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e, 0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f, 0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20, 0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22, 0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23, 0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25, 0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26, 0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28, 0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29, 0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b, 0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c, 0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e, 0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30, 0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31, 0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33, 0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35, 0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37, 0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39, 0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b, 0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d, 0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f, 0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41, 0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43, 0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45, 0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47, 0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49, 0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b, 0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e, 0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50, 0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52, 0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55, 0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57, 0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a, 0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c, 0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f, 0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61, 0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64, 0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66, 0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69, 0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c, 0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f, 0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71, 0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74, 0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77, 0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a, 0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d, 0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80, 0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83, 0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86, 0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89, 0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d, 0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90, 0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93, 0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97, 0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a, 0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d, 0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1, 0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4, 0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8, 0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab, 0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf, 0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3, 0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6, 0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba, 0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe, 0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2, 0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6, 0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca, 0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce, 0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2, 0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6, 0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda, 0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde, 0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2, 0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7, 0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb, 0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef, 0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4, 0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8, 0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd, 0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0xff,0xdb,0x00,0x43,0x00, 0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x04,0x05,0x08, 0x05,0x05,0x04,0x04,0x05,0x0a,0x07,0x08,0x06,0x08,0x0c,0x0b,0x0d,0x0d,0x0c,0x0b, 0x0c,0x0c,0x0e,0x0f,0x14,0x11,0x0e,0x0f,0x13,0x0f,0x0c,0x0c,0x11,0x18,0x11,0x13, 0x15,0x15,0x16,0x17,0x16,0x0d,0x11,0x19,0x1a,0x18,0x16,0x1a,0x14,0x16,0x16,0x15, 0xff,0xdb,0x00,0x43,0x01,0x03,0x03,0x03,0x05,0x04,0x05,0x0a,0x05,0x05,0x0a,0x15, 0x0e,0x0c,0x0e,0x0e,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0xff,0xc0,0x00,0x11,0x08,0x00,0x28,0x00,0x28,0x03,0x01, 0x11,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x00,0x1c,0x00,0x00,0x01,0x04, 0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x02,0x05, 0x06,0x08,0x00,0x03,0x04,0x09,0xff,0xc4,0x00,0x2c,0x10,0x00,0x02,0x02,0x02,0x01, 0x03,0x02,0x04,0x06,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05, 0x11,0x06,0x00,0x12,0x21,0x13,0x31,0x07,0x14,0x41,0x51,0x15,0x22,0x23,0x32,0x61, 0x71,0x42,0x81,0x91,0xff,0xc4,0x00,0x17,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x02,0xff,0xc4,0x00, 0x20,0x11,0x00,0x02,0x02,0x02,0x02,0x02,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x02,0x03,0x11,0x31,0x04,0x32,0x12,0xb1,0x21,0x22,0x41,0xff, 0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xf5,0x4f,0xa0, 0x04,0x99,0xbe,0x62,0x72,0x7c,0xe7,0x91,0xd2,0x9a,0xbf,0xaf,0x4b,0x06,0xf5,0xa9, 0x45,0xe9,0xcc,0xd1,0x30,0xb0,0xf0,0xfa,0xf2,0xb6,0xc7,0xd9,0x24,0xae,0x07,0xd7, 0xc9,0xf3,0xe7,0xae,0xa1,0x1f,0x27,0x83,0x89,0xcf,0xc5,0x64,0x8a,0x5f,0xf8,0x90, 0x78,0xec,0x8b,0xf3,0x19,0x5c,0xe2,0x39,0x72,0x07,0x70,0x79,0x08,0x1f,0xc1,0x69, 0x8a,0x9f,0xec,0xa1,0xeb,0x65,0xc6,0x9b,0xd1,0x93,0xe4,0xc1,0x6c,0xe8,0x3f,0x1f, 0x28,0xe2,0xf0,0x92,0x65,0xe7,0xe5,0x16,0xac,0x57,0xa5,0x6a,0x9c,0x77,0x45,0xcc, 0x78,0x44,0x48,0xe6,0xb3,0x1c,0x5b,0xda,0xc6,0x36,0x74,0xe7,0x5a,0x27,0xc8,0xde, 0xb5,0xd7,0x16,0x53,0x2a,0xfb,0x23,0xba,0xee,0x8d,0x9d,0x58,0x7e,0xeb,0x23,0x53, 0x3a,0x00,0x42,0xf7,0xe0,0xc6,0xe7,0xf3,0x12,0x55,0xe3,0x96,0x2e,0xc7,0x94,0xc8, 0x4f,0x62,0x69,0xe0,0x30,0x15,0x59,0x22,0x55,0xae,0x76,0xaf,0x20,0x62,0x4f,0xa0, 0x9e,0x55,0x48,0xfc,0xc3,0x7d,0x54,0xda,0xd1,0x1a,0x4f,0x64,0x72,0xd3,0xf1,0xae, 0x41,0x25,0x11,0x9e,0xe3,0x59,0xaa,0xb6,0x6e,0xcc,0xd0,0x2a,0xfc,0x95,0x82,0x22, 0xd1,0xf0,0xce,0xf1,0x02,0x88,0x0e,0xc7,0x92,0x75,0xe7,0xec,0x09,0xeb,0x48,0xdf, 0x38,0xe9,0x99,0xca,0x88,0x4b,0x68,0x17,0xfc,0x59,0xe0,0x78,0x8e,0x69,0xc2,0x68, 0x60,0xbe,0x15,0x09,0x6f,0x8c,0xb7,0x22,0xa0,0xb9,0x38,0xcc,0xbd,0xa6,0x1a,0xb0, 0x49,0xdf,0x2b,0x1e,0xfd,0x15,0xed,0x0c,0xad,0xaf,0x73,0xe3,0x43,0x7a,0xea,0x5b, 0x74,0xad,0x5f,0x62,0xd7,0x44,0x6a,0xeb,0xfa,0x5c,0xd8,0x26,0x5b,0x10,0xc7,0x2a, 0x7e,0xd7,0x50,0xc3,0xfd,0xf5,0x99,0xa0,0x9b,0xb6,0xe2,0xc7,0xd3,0x9e,0xd5,0xb6, 0xec,0x82,0x08,0xda,0x59,0x1b,0xec,0xa0,0x6c,0x9f,0xf8,0x3a,0x02,0xb6,0x49,0x52, 0xeb,0x9b,0x17,0xee,0x60,0x60,0x9a,0x78,0xb1,0xca,0x9e,0xbe,0x3f,0x30,0xf0,0x59, 0x96,0x56,0x03,0xd4,0x0f,0xfb,0x15,0x0e,0xd9,0xcf,0x77,0x79,0x23,0xb7,0xdc,0x13, 0xe0,0x05,0x53,0x49,0x31,0x56,0x71,0x88,0xb5,0xf9,0xde,0x1e,0xad,0x2c,0x7b,0xb7, 0xe5,0x64,0xbe,0x80,0x90,0x4f,0x61,0x1f,0xac,0xee,0xeb,0xbd,0x0d,0x1f,0xf0,0x50, 0x3b,0x87,0x40,0x48,0xbe,0x1a,0x49,0xf8,0xd5,0xb8,0x2c,0x64,0xad,0xe5,0x6f,0x34, 0x38,0xa9,0x1b,0xbb,0x2d,0x53,0xe5,0xac,0x29,0x9e,0x55,0x0a,0xac,0x9d,0xab,0xa2, 0xa6,0xab,0x8d,0xf6,0x8d,0xef,0xc7,0x8f,0x7e,0x21,0x05,0x05,0x85,0xef,0x3e,0xca, 0xde,0x43,0x17,0x1c,0x90,0xbe,0x26,0x10,0x7d,0xd0,0x76,0xf5,0xd9,0x04,0xf2,0xbc, 0x74,0xd9,0x8e,0x31,0x97,0xa1,0x4d,0x91,0x67,0xb5,0x52,0x58,0x50,0xb9,0xd0,0xdb, 0x29,0x03,0x67,0xe9,0xef,0xef,0xd0,0x15,0xc3,0x2f,0x1f,0x11,0x8e,0xce,0x41,0x79, 0x0f,0x19,0x97,0x1d,0x66,0xe4,0x81,0xec,0x4a,0x98,0xd2,0xcf,0x33,0x82,0x48,0x66, 0x92,0x00,0xc4,0x9f,0x27,0xc9,0x3f,0x53,0xd0,0x1b,0x62,0xb9,0xc3,0xec,0xc9,0x6d, 0xa9,0x72,0xdb,0x78,0xab,0x56,0x60,0x58,0x08,0x97,0x2f,0x22,0x34,0x60,0x15,0xd1, 0x48,0xa7,0x62,0xaa,0x7f,0x2e,0xb6,0x17,0xce,0xce,0xfd,0xfa,0x8d,0x65,0x61,0x82, 0x59,0xc0,0xe4,0x59,0xa6,0xc8,0x5b,0x86,0xfc,0xb9,0x58,0x94,0xc5,0x46,0x2b,0xee, 0x51,0xbe,0x61,0x22,0x4d,0x96,0xda,0x00,0xa7,0xf5,0x24,0x90,0x12,0xa0,0x0d,0xa9, 0xe8,0x96,0x3e,0x00,0x5c,0xe3,0x51,0xba,0x63,0xcf,0xa8,0x35,0xb6,0xd8,0xea,0x81, 0xd9,0x86,0xd4,0x81,0xf5,0x1d,0x00,0x36,0xbf,0xc4,0x72,0x22,0x67,0x26,0x04,0x95, 0x36,0x74,0x7f,0x8e,0x80,0x6b,0x9f,0x8d,0x6b,0x62,0xd6,0x31,0x5b,0xfb,0x8c,0x1e, 0x80,0x79,0xe3,0x78,0x96,0xb5,0x6d,0x13,0xd2,0x31,0xc3,0x18,0x1e,0x35,0xa0,0x07, 0xdb,0xa0,0x08,0x71,0xa2,0xc6,0x81,0x50,0x68,0x0e,0x80,0xff,0xd9 }; /* created by reswrap from file cy_secoder_n.jpg */ const unsigned char fxcj_icon_cy_secoder_n[]={ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x01,0x2c, 0x01,0x2c,0x00,0x00,0xff,0xe1,0x00,0x16,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d, 0x00,0x2a,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe2,0x1c,0x6d, 0x49,0x43,0x43,0x5f,0x50,0x52,0x4f,0x46,0x49,0x4c,0x45,0x00,0x01,0x01,0x00,0x00, 0x1c,0x5d,0x4c,0x69,0x6e,0x6f,0x02,0x10,0x00,0x00,0x6d,0x6e,0x74,0x72,0x52,0x47, 0x42,0x20,0x58,0x59,0x5a,0x20,0x07,0xce,0x00,0x02,0x00,0x09,0x00,0x06,0x00,0x31, 0x00,0x00,0x61,0x63,0x73,0x70,0x4d,0x53,0x46,0x54,0x00,0x00,0x00,0x00,0x49,0x45, 0x43,0x20,0x73,0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf6,0xd6,0x00,0x01,0x00,0x00,0x00,0x00,0xd3,0x2d,0x48,0x50, 0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x11,0x63,0x70,0x72,0x74,0x00,0x00,0x01,0x50,0x00,0x00,0x00,0x33,0x64,0x65, 0x73,0x63,0x00,0x00,0x01,0x83,0x00,0x00,0x00,0x6c,0x77,0x74,0x70,0x74,0x00,0x00, 0x01,0xef,0x00,0x00,0x00,0x14,0x62,0x6b,0x70,0x74,0x00,0x00,0x02,0x03,0x00,0x00, 0x00,0x14,0x72,0x58,0x59,0x5a,0x00,0x00,0x02,0x17,0x00,0x00,0x00,0x14,0x67,0x58, 0x59,0x5a,0x00,0x00,0x02,0x2b,0x00,0x00,0x00,0x14,0x62,0x58,0x59,0x5a,0x00,0x00, 0x02,0x3f,0x00,0x00,0x00,0x14,0x64,0x6d,0x6e,0x64,0x00,0x00,0x02,0x53,0x00,0x00, 0x00,0x70,0x64,0x6d,0x64,0x64,0x00,0x00,0x02,0xc3,0x00,0x00,0x00,0x88,0x76,0x75, 0x65,0x64,0x00,0x00,0x03,0x4b,0x00,0x00,0x00,0x86,0x76,0x69,0x65,0x77,0x00,0x00, 0x03,0xd1,0x00,0x00,0x00,0x24,0x6c,0x75,0x6d,0x69,0x00,0x00,0x03,0xf5,0x00,0x00, 0x00,0x14,0x6d,0x65,0x61,0x73,0x00,0x00,0x04,0x09,0x00,0x00,0x00,0x24,0x74,0x65, 0x63,0x68,0x00,0x00,0x04,0x2d,0x00,0x00,0x00,0x0c,0x72,0x54,0x52,0x43,0x00,0x00, 0x04,0x39,0x00,0x00,0x08,0x0c,0x67,0x54,0x52,0x43,0x00,0x00,0x0c,0x45,0x00,0x00, 0x08,0x0c,0x62,0x54,0x52,0x43,0x00,0x00,0x14,0x51,0x00,0x00,0x08,0x0c,0x74,0x65, 0x78,0x74,0x00,0x00,0x00,0x00,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20, 0x28,0x63,0x29,0x20,0x31,0x39,0x39,0x38,0x20,0x48,0x65,0x77,0x6c,0x65,0x74,0x74, 0x2d,0x50,0x61,0x63,0x6b,0x61,0x72,0x64,0x20,0x43,0x6f,0x6d,0x70,0x61,0x6e,0x79, 0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x73,0x52,0x47, 0x42,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x73,0x52,0x47,0x42,0x20,0x49, 0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xf3,0x51,0x00,0x01,0x00,0x00,0x00,0x01,0x16, 0xcc,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x6f, 0xa2,0x00,0x00,0x38,0xf5,0x00,0x00,0x03,0x90,0x58,0x59,0x5a,0x20,0x00,0x00,0x00, 0x00,0x00,0x00,0x62,0x99,0x00,0x00,0xb7,0x85,0x00,0x00,0x18,0xda,0x58,0x59,0x5a, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0xa0,0x00,0x00,0x0f,0x84,0x00,0x00,0xb6, 0xcf,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x49,0x45,0x43, 0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x69,0x65,0x63,0x2e, 0x63,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x49,0x45, 0x43,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x69,0x65,0x63, 0x2e,0x63,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0x49,0x45,0x43, 0x20,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x20,0x44,0x65,0x66,0x61,0x75, 0x6c,0x74,0x20,0x52,0x47,0x42,0x20,0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73,0x70, 0x61,0x63,0x65,0x20,0x2d,0x20,0x73,0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x2e,0x49,0x45,0x43,0x20,0x36,0x31,0x39,0x36,0x36,0x2d, 0x32,0x2e,0x31,0x20,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x52,0x47,0x42,0x20, 0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x2d,0x20,0x73, 0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2c,0x52,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x56, 0x69,0x65,0x77,0x69,0x6e,0x67,0x20,0x43,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e, 0x20,0x69,0x6e,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2c,0x52,0x65,0x66,0x65, 0x72,0x65,0x6e,0x63,0x65,0x20,0x56,0x69,0x65,0x77,0x69,0x6e,0x67,0x20,0x43,0x6f, 0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x49,0x45,0x43,0x36,0x31, 0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76, 0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x13,0xa4,0xfe,0x00,0x14,0x5f,0x2e,0x00, 0x10,0xcf,0x14,0x00,0x03,0xed,0xcc,0x00,0x04,0x13,0x0b,0x00,0x03,0x5c,0x9e,0x00, 0x00,0x00,0x01,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x4c,0x09,0x56,0x00, 0x50,0x00,0x00,0x00,0x57,0x1f,0xe7,0x6d,0x65,0x61,0x73,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x8f,0x00,0x00,0x00,0x02,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x69,0x67,0x20,0x00, 0x00,0x00,0x00,0x43,0x52,0x54,0x20,0x63,0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00, 0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00, 0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00, 0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00, 0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00, 0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00, 0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00, 0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01, 0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01, 0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01, 0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01, 0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01, 0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02, 0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02, 0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02, 0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03, 0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03, 0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03, 0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04, 0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04, 0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05, 0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05, 0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06, 0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06, 0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07, 0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07, 0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08, 0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09, 0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09, 0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a, 0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b, 0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c, 0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c, 0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d, 0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e, 0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f, 0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10, 0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11, 0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12, 0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13, 0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14, 0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15, 0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16, 0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17, 0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18, 0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19, 0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a, 0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c, 0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d, 0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e, 0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20, 0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21, 0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22, 0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24, 0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25, 0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27, 0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28, 0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a, 0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c, 0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d, 0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f, 0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31, 0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32, 0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34, 0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36, 0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38, 0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a, 0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c, 0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e, 0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40, 0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42, 0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44, 0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46, 0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48, 0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a, 0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d, 0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f, 0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51, 0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53, 0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56, 0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58, 0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b, 0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d, 0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60, 0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62, 0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65, 0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68, 0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a, 0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d, 0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70, 0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73, 0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76, 0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79, 0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c, 0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f, 0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82, 0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85, 0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88, 0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b, 0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e, 0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92, 0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95, 0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98, 0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c, 0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f, 0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3, 0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6, 0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa, 0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad, 0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1, 0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5, 0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8, 0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc, 0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0, 0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4, 0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8, 0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc, 0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0, 0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4, 0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8, 0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc, 0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0, 0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4, 0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9, 0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed, 0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1, 0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6, 0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa, 0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff, 0x6d,0xff,0xff,0x63,0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00, 0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00, 0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00, 0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00, 0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00, 0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00, 0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00, 0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01, 0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01, 0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01, 0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01, 0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02, 0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02, 0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02, 0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02, 0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03, 0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03, 0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04, 0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04, 0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04, 0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05, 0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05, 0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06, 0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06, 0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07, 0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08, 0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08, 0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09, 0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a, 0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a, 0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b, 0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c, 0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d, 0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d, 0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e, 0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f, 0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10, 0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11, 0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12, 0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13, 0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14, 0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15, 0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16, 0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17, 0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18, 0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a, 0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b, 0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c, 0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d, 0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f, 0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20, 0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21, 0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23, 0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24, 0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26, 0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27, 0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29, 0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a, 0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c, 0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e, 0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f, 0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31, 0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33, 0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35, 0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36, 0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38, 0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a, 0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c, 0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e, 0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40, 0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42, 0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44, 0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46, 0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49, 0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b, 0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d, 0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f, 0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52, 0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54, 0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56, 0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59, 0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b, 0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e, 0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60, 0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63, 0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66, 0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68, 0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b, 0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e, 0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71, 0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74, 0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76, 0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79, 0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c, 0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f, 0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82, 0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86, 0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89, 0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c, 0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f, 0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92, 0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96, 0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99, 0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c, 0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0, 0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3, 0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7, 0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab, 0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae, 0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2, 0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6, 0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9, 0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd, 0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1, 0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5, 0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9, 0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd, 0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1, 0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5, 0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9, 0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd, 0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1, 0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6, 0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea, 0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee, 0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3, 0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7, 0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc, 0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0x63, 0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00, 0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00, 0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00, 0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00, 0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00, 0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00, 0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00, 0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01, 0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01, 0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01, 0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01, 0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02, 0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02, 0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02, 0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03, 0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03, 0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03, 0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04, 0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04, 0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05, 0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05, 0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06, 0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06, 0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07, 0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07, 0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08, 0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08, 0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09, 0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a, 0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a, 0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b, 0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c, 0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d, 0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e, 0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e, 0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f, 0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10, 0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11, 0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12, 0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13, 0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14, 0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15, 0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16, 0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17, 0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19, 0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a, 0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b, 0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c, 0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e, 0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f, 0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20, 0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22, 0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23, 0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25, 0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26, 0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28, 0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29, 0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b, 0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c, 0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e, 0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30, 0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31, 0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33, 0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35, 0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37, 0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39, 0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b, 0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d, 0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f, 0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41, 0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43, 0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45, 0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47, 0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49, 0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b, 0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e, 0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50, 0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52, 0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55, 0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57, 0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a, 0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c, 0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f, 0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61, 0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64, 0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66, 0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69, 0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c, 0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f, 0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71, 0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74, 0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77, 0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a, 0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d, 0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80, 0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83, 0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86, 0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89, 0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d, 0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90, 0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93, 0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97, 0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a, 0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d, 0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1, 0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4, 0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8, 0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab, 0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf, 0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3, 0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6, 0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba, 0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe, 0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2, 0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6, 0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca, 0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce, 0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2, 0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6, 0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda, 0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde, 0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2, 0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7, 0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb, 0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef, 0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4, 0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8, 0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd, 0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0xff,0xdb,0x00,0x43,0x00, 0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x04,0x05,0x08, 0x05,0x05,0x04,0x04,0x05,0x0a,0x07,0x08,0x06,0x08,0x0c,0x0b,0x0d,0x0d,0x0c,0x0b, 0x0c,0x0c,0x0e,0x0f,0x14,0x11,0x0e,0x0f,0x13,0x0f,0x0c,0x0c,0x11,0x18,0x11,0x13, 0x15,0x15,0x16,0x17,0x16,0x0d,0x11,0x19,0x1a,0x18,0x16,0x1a,0x14,0x16,0x16,0x15, 0xff,0xdb,0x00,0x43,0x01,0x03,0x03,0x03,0x05,0x04,0x05,0x0a,0x05,0x05,0x0a,0x15, 0x0e,0x0c,0x0e,0x0e,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0xff,0xc0,0x00,0x11,0x08,0x00,0x64,0x00,0x64,0x03,0x01, 0x11,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x04, 0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05, 0x06,0x07,0x01,0x02,0x04,0x08,0x09,0xff,0xc4,0x00,0x3e,0x10,0x00,0x01,0x03,0x04, 0x00,0x04,0x03,0x06,0x03,0x06,0x02,0x0b,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, 0x00,0x05,0x06,0x11,0x07,0x12,0x21,0x31,0x13,0x41,0x51,0x08,0x14,0x22,0x61,0x71, 0x81,0x15,0x32,0x91,0x16,0x42,0x72,0x92,0xa1,0xb1,0x52,0xa2,0x09,0x24,0x25,0x35, 0x36,0x53,0x64,0x83,0x93,0xa3,0xb2,0xff,0xc4,0x00,0x19,0x01,0x01,0x00,0x03,0x01, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04, 0x03,0x05,0xff,0xc4,0x00,0x23,0x11,0x01,0x01,0x00,0x01,0x04,0x02,0x02,0x03,0x01, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x11,0x31,0x12,0x41, 0x13,0x51,0x14,0x81,0xa1,0x22,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11, 0x03,0x11,0x00,0x3f,0x00,0xfa,0xa7,0x40,0x50,0x14,0x10,0xce,0x27,0x5f,0x27,0x5b, 0x60,0xd9,0xad,0xf6,0x39,0x2a,0x87,0x3a,0xf3,0x72,0x6e,0x0a,0x24,0xa1,0x29,0x52, 0x9a,0x40,0x42,0xdd,0x75,0x49,0x0a,0x04,0x73,0x78,0x6c,0xac,0x02,0x41,0xd1,0x20, 0xd0,0x32,0x23,0x17,0xc9,0x21,0x74,0xb6,0xe7,0x99,0x10,0x4e,0xc9,0x0d,0x4b,0x62, 0x23,0xe9,0xfd,0x4b,0x21,0x7f,0xe6,0xa0,0x62,0x57,0x11,0xf2,0x0b,0x6b,0xb2,0x5a, 0x56,0x63,0x86,0xca,0x4c,0x57,0x1d,0x69,0xef,0x7d,0xb4,0x3e,0xc1,0x6d,0x4d,0xf2, 0xf3,0xf3,0xba,0x1f,0xe4,0x1a,0xe7,0x47,0x5e,0x50,0x3e,0x21,0x40,0xf0,0xc7,0x12, 0x72,0xd6,0xe4,0x18,0xee,0x59,0x70,0xeb,0x93,0x89,0x25,0x24,0x41,0xc8,0x14,0x87, 0x09,0x1b,0xd8,0xf0,0xd4,0xc6,0x87,0x63,0xfb,0xfe,0x46,0x83,0xa8,0xf1,0x7e,0x7c, 0x45,0x72,0xdd,0xb0,0x3c,0xad,0xb0,0x3b,0xbd,0x11,0xc8,0x72,0x1b,0xfb,0x69,0xf0, 0xb3,0xfc,0x94,0x0b,0x37,0xc7,0x6c,0x61,0x27,0x57,0x26,0x72,0x6b,0x62,0xbc,0xfd, 0xf2,0xc3,0x35,0x28,0x1f,0xf7,0x03,0x45,0x1f,0xe6,0xa0,0x7d,0xc6,0x78,0x97,0x8a, 0xe6,0x73,0x5d,0x85,0x8b,0x64,0x16,0xab,0x94,0xe6,0x9b,0xf1,0x5c,0x88,0xc3,0xe9, 0x2e,0xb6,0x8d,0xeb,0x6a,0x47,0xe6,0x03,0x7e,0xa2,0x82,0x4d,0x40,0x50,0x14,0x05, 0x01,0x40,0x50,0x79,0x3e,0xd5,0x31,0xdc,0xfb,0xdb,0xff,0x00,0x2d,0x78,0xba,0xe2, 0xed,0xd8,0x5e,0x33,0x1a,0xde,0x84,0x05,0x1e,0x41,0x21,0xf3,0xe2,0x95,0x6b,0xb7, 0x37,0x2b,0x8b,0x4e,0xfe,0x5a,0xa8,0x16,0x4a,0x73,0x7b,0xf2,0xf9,0x9f,0x8e,0x6d, 0x2e,0xc7,0x5a,0x8a,0xd0,0x87,0x18,0x58,0x50,0x41,0xec,0x39,0x82,0xfd,0x35,0xe5, 0x5a,0x66,0x8c,0xac,0xf7,0x5a,0xca,0x67,0x9b,0x93,0xc4,0x32,0xf9,0xaf,0x18,0xad, 0xad,0xd7,0x1d,0x25,0x4b,0x5c,0x79,0x45,0xbf,0x10,0xec,0x12,0x54,0x9e,0x4d,0x13, 0xbd,0x1e,0xa6,0x9f,0x8f,0xf5,0x4f,0xc8,0xfb,0x86,0x59,0xf9,0x0e,0x11,0x62,0x70, 0x48,0x56,0x39,0x7c,0x80,0xf2,0x94,0xb2,0x0c,0x62,0xdb,0xa9,0x49,0x5a,0x79,0x55, 0xa0,0x56,0x7a,0x68,0x68,0x0d,0x68,0x79,0x01,0x49,0xb6,0xce,0xf4,0x5d,0xce,0x13, 0xb6,0x59,0xe2,0x5f,0x0e,0x64,0x45,0x31,0x67,0xdd,0xee,0x31,0x76,0x17,0xb5,0x48, 0x82,0xfb,0x2e,0x0e,0x60,0x46,0xfc,0x54,0xa0,0x75,0x00,0x9d,0x1e,0x6d,0xfc,0xfa, 0x54,0x5d,0xb6,0xa4,0xf4,0x99,0xb9,0xd3,0xfb,0x4d,0x6d,0x3c,0x4d,0xc2,0xee,0xcb, 0x6a,0x3d,0xab,0x2a,0xb0,0x48,0x79,0x5a,0x42,0x18,0xf7,0xe6,0xfc,0x55,0x1e,0xc0, 0x72,0x93,0xcc,0x4f,0xda,0xa9,0x96,0x96,0x73,0xb8,0xe9,0x35,0x70,0xbd,0x54,0x66, 0xfb,0x94,0x59,0x6d,0x5e,0xd3,0xfc,0x3a,0x81,0x7a,0xba,0x42,0xb6,0x3f,0xf8,0x45, 0xc8,0xb0,0x87,0xdc,0x08,0x54,0xa7,0x9e,0x72,0x3b,0x6d,0x34,0x9f,0x52,0x79,0x5d, 0x3c,0xbe,0x65,0x23,0xd2,0xb9,0xae,0xf4,0x4d,0x01,0x40,0x50,0x14,0x05,0x01,0x41, 0xe3,0xbf,0x64,0x88,0xb7,0x0b,0xf5,0xc7,0x8f,0x19,0xa4,0x88,0xee,0xb3,0x73,0xbe, 0x65,0x73,0x22,0x30,0xd3,0xe3,0x91,0x6d,0xa6,0x3f,0x30,0x42,0x0e,0xfb,0x68,0xb9, 0xca,0x7f,0x86,0x90,0xab,0x7d,0x58,0xdd,0xc2,0x33,0x49,0x40,0x86,0xef,0x2a,0x06, 0x80,0x47,0xc5,0xfd,0xab,0x64,0xd4,0xc7,0xed,0x8a,0xe9,0xe5,0xf4,0x8a,0x64,0x90, 0x84,0x56,0x8a,0xee,0x70,0xdd,0x25,0x3f,0x95,0x2e,0x36,0x47,0xce,0xba,0xe1,0x65, 0xe9,0xcf,0x29,0x67,0x71,0x54,0x5e,0x61,0xb1,0x3d,0xd2,0xe3,0x81,0xc4,0xab,0x7d, 0x39,0x16,0x7b,0x01,0xad,0x7e,0x95,0xab,0x19,0xc3,0x26,0x57,0x9a,0x6a,0x90,0x90, 0xd3,0x69,0x6f,0x99,0x6a,0x48,0x1d,0xd6,0x76,0x7f,0x5a,0xe9,0x14,0xa7,0x2e,0x1d, 0x59,0x63,0xde,0xb3,0xeb,0x13,0x0b,0x65,0xa7,0x00,0x94,0x87,0x4f,0x32,0x01,0xd8, 0x47,0xc6,0x7f,0xa2,0x4d,0x53,0x5f,0x2b,0x8e,0x9d,0xbf,0xf1,0x6d,0x0c,0x26,0x5a, 0x92,0x2a,0x0f,0x6b,0xcc,0xe5,0xc8,0xbe,0xda,0xb8,0xac,0x98,0x85,0x6a,0x56,0x34, 0xab,0x60,0x0d,0xa3,0xa9,0xe7,0x4b,0xa1,0xfe,0x83,0xd4,0x87,0x80,0xaf,0x07,0x2e, 0xde,0xf3,0xea,0x4d,0x59,0x02,0x80,0xa0,0x28,0x0a,0x02,0x82,0xa2,0xe0,0xf0,0x4c, 0xbc,0x4a,0x45,0xdd,0xa4,0xa5,0x22,0xf5,0x73,0x9d,0x74,0x49,0x48,0xd7,0x33,0x6e, 0xc8,0x71,0x4d,0x1f,0xfc,0x7e,0x1d,0x04,0xba,0x35,0xc1,0x32,0x61,0x35,0x25,0x09, 0x71,0xb4,0xb8,0x90,0xa4,0xa5,0xc1,0xa3,0xaf,0xa5,0x03,0x77,0xe2,0xcd,0x49,0x9c, 0xfc,0x64,0x3e,0xda,0xa4,0xb2,0x94,0xad,0xc6,0x81,0xea,0x84,0xab,0x7a,0x24,0x7c, 0xf4,0x68,0x12,0x93,0x6c,0x83,0x3b,0x7e,0xfd,0x06,0x1c,0x9d,0xf7,0xf1,0x59,0x4a, 0xbf,0xb8,0xab,0x4c,0xac,0xea,0xab,0x70,0x97,0xb8,0x65,0x99,0xc3,0x6c,0x5a,0xe3, 0xbf,0x79,0xb2,0x44,0x1b,0xff,0x00,0x92,0x54,0xd7,0xff,0x00,0x24,0x57,0x49,0xb8, 0xd4,0x9e,0xdc,0xf2,0xdb,0xe9,0xde,0xe1,0x3b,0x07,0x0a,0xf1,0xec,0x6a,0xf8,0xd5, 0xd2,0xcc,0xc4,0xa6,0x64,0x34,0x14,0x12,0x95,0xbc,0x56,0x91,0xcc,0x08,0x3d,0xfa, 0xf6,0x27,0xce,0xa7,0x3d,0xce,0x79,0xe3,0xe3,0x51,0x86,0xdb,0x0c,0x32,0xf2,0x8f, 0x9f,0x5e,0xea,0x78,0x93,0xfe,0x90,0x68,0xff,0x00,0x88,0xa1,0x4a,0x8c,0xfe,0x45, 0xef,0x29,0xdf,0x50,0xec,0x68,0x6e,0xad,0x24,0xfd,0x08,0x8a,0x47,0xd2,0xb3,0x5e, 0xda,0x3d,0x3e,0xb3,0xa5,0x41,0x69,0x0a,0x41,0x05,0x24,0x6c,0x11,0x56,0x43,0x34, 0x05,0x01,0x40,0x50,0x45,0xb8,0xa7,0x91,0xb9,0x88,0x70,0xd7,0x28,0xbd,0x46,0x3a, 0x91,0x06,0xdb,0x21,0xf6,0x00,0xee,0xa7,0x43,0x67,0x90,0x0f,0x99,0x56,0x87,0xde, 0x82,0xa5,0xcb,0xf8,0x2b,0x84,0x5c,0xb0,0x2c,0x66,0x36,0x7e,0x87,0x5a,0x8f,0x8c, 0xc1,0x44,0x58,0xd3,0x19,0x9e,0xf4,0x55,0x30,0x39,0x1b,0x41,0xd2,0x9b,0x52,0x76, 0x54,0x50,0x8e,0xfb,0xd9,0xd7,0xad,0x02,0x58,0xff,0x00,0x08,0x91,0x8b,0xd8,0xf2, 0x1b,0x5e,0x35,0x96,0x66,0xad,0x7e,0x24,0xd2,0x50,0xcc,0x89,0xd7,0x35,0xcc,0x5c, 0x02,0x9e,0x6f,0x89,0x9f,0x17,0x98,0x24,0x9e,0x6e,0xbd,0xf7,0xa1,0xe9,0x41,0x1f, 0xc3,0xb8,0x65,0xc4,0x0c,0x63,0x2c,0x62,0x7a,0xf8,0xa0,0x2f,0x56,0xb7,0x5e,0x41, 0xb8,0x46,0x99,0x63,0x8a,0x97,0xa5,0x21,0x03,0x41,0x25,0xf4,0x04,0xab,0x60,0x74, 0xd9,0xde,0x85,0x02,0x79,0xca,0x78,0xd0,0xe5,0xfd,0xc5,0x5a,0xad,0x3c,0x3c,0xbe, 0x58,0xa2,0x4f,0x12,0xe0,0xb2,0xa9,0x32,0x62,0xca,0xe5,0x49,0x25,0xb0,0xb5,0x7c, 0x49,0x27,0x44,0x6f,0x40,0x03,0xf4,0x24,0x50,0x48,0xb2,0xde,0x25,0xe6,0x38,0xae, 0x39,0x61,0x94,0x9e,0x1d,0x5c,0xef,0x97,0x09,0xb1,0xd6,0xab,0x83,0x36,0x59,0x8c, 0xb9,0xf8,0x7b,0xa0,0x27,0x49,0x1c,0xfa,0xf1,0x37,0xb3,0xdb,0xa7,0xc3,0xf3,0xa8, 0xb3,0x98,0xb6,0x36,0x4b,0x2d,0x9c,0xba,0xf8,0x71,0xc6,0x1f,0xda,0xdb,0x25,0xea, 0x4d,0xe7,0x18,0xcb,0xf1,0x97,0x2c,0xac,0x07,0xa4,0xaa,0xff,0x00,0x09,0x31,0xd2, 0xe8,0xd2,0x89,0xf0,0xca,0x56,0xa0,0xad,0x04,0x1d,0xfa,0x6c,0x7a,0xd3,0x19,0x64, 0xe2,0xa7,0x53,0x2c,0x72,0xca,0xdc,0x67,0x11,0x4f,0xfb,0x3d,0x7b,0x3a,0x5b,0xed, 0xb9,0x16,0x3d,0xc5,0x8b,0xbd,0xc2,0xe6,0xf5,0xf6,0x6d,0x8d,0x9d,0x41,0x5f,0x20, 0x65,0x95,0x3c,0xda,0x54,0xe2,0x87,0xc3,0xcc,0x49,0x2a,0x59,0xef,0xfb,0xe7,0xa5, 0x38,0x51,0xec,0xac,0x72,0x57,0xbc,0xdb,0x11,0xd7,0x65,0x3d,0x2a,0x43,0xad,0x01, 0x40,0x50,0x14,0x15,0x9f,0x1e,0xdd,0xf7,0x9c,0x66,0xc7,0x64,0x07,0x4a,0xbd,0x5f, 0xa0,0x45,0x3f,0x34,0x36,0xef,0xbc,0xb8,0x3e,0xed,0xc7,0x58,0xfb,0xd0,0x56,0xdc, 0x53,0xe1,0x9d,0xc7,0x26,0xc9,0x1d,0x99,0x65,0xe2,0x5e,0x57,0x8d,0xaa,0x62,0x12, 0xd0,0xb5,0xa1,0xc6,0x5e,0x86,0xa2,0x94,0xe8,0xf2,0xb2,0xe2,0x48,0xd9,0xd6,0xcf, 0xaf,0x5a,0x0d,0xa4,0x58,0x38,0x95,0x6b,0xc0,0xa1,0x43,0xc7,0x33,0x0b,0x35,0xdb, 0x26,0x62,0x52,0x95,0x22,0xe7,0x7b,0xb6,0x84,0xb7,0x21,0x93,0xcd,0xa4,0x72,0x32, 0x52,0x12,0x46,0xd3,0xf1,0x0e,0xfc,0xa7,0xd6,0x83,0x83,0x85,0xb1,0x38,0x97,0x8f, 0x48,0xb9,0x44,0xcd,0x2c,0xd8,0x49,0xb7,0x06,0x5e,0x97,0x1d,0x76,0x19,0x0f,0x85, 0xbf,0x29,0x4a,0x07,0x95,0x41,0xd2,0x42,0x42,0xb6,0xa2,0x4e,0xfb,0xfd,0x4d,0x04, 0x75,0x3c,0x67,0xce,0xa2,0x65,0x6c,0x4b,0xca,0xb8,0x4d,0x9b,0xc3,0x88,0xa6,0x3d, 0xd4,0xc5,0xb6,0x4b,0x8f,0x39,0x90,0xb2,0xb0,0x7c,0x52,0x41,0x49,0xed,0xd3,0xaf, 0x97,0xa7,0x5d,0x84,0xab,0x88,0x9e,0xd1,0xf8,0x9f,0x0c,0xb2,0x43,0x65,0xca,0x5d, 0xbb,0x41,0x5b,0x01,0x0b,0x72,0x52,0xad,0x92,0x1d,0x61,0x49,0x50,0x07,0xe1,0x71, 0x08,0x50,0x3a,0x07,0xaf,0xa1,0xac,0xbb,0x8f,0x9f,0xcb,0x1b,0xa3,0xc7,0x1e,0xf9, 0xfd,0x75,0xfd,0xfe,0x3a,0x61,0xe1,0xc5,0xf2,0x71,0xe7,0xbc,0x4e,0xb6,0x67,0x7e, 0xcd,0xb9,0x4d,0xef,0x0a,0xb8,0xb3,0x72,0x66,0xe3,0x11,0xcb,0x4b,0x2f,0xc7,0x42, 0xd0,0x3c,0x77,0xd4,0x18,0x00,0x05,0x80,0xad,0xed,0xd4,0xf9,0x55,0xf6,0xb7,0x56, 0xe9,0xcf,0x9e,0x49,0x97,0xbe,0x3a,0xfd,0x72,0x8d,0x4f,0x1f,0x2f,0xf1,0xd2,0xed, 0x9d,0x89,0x35,0x61,0xb2,0xc1,0x66,0xdc,0x39,0x59,0x8a,0xc2,0x18,0xe4,0x1d,0xb4, 0x94,0x80,0x3f,0xb5,0x77,0x50,0xe1,0x86,0xbd,0xca,0xda,0x9b,0x27,0xce,0x82,0x53, 0x40,0x50,0x14,0x05,0x05,0x3f,0xc5,0x39,0x66,0xe1,0xc5,0xcc,0x1e,0xd8,0x83,0xcc, 0x8b,0x7c,0x39,0xf7,0x77,0x07,0xf8,0x1c,0x21,0xb8,0xed,0x1f,0xba,0x5e,0x7f,0xf4, 0x34,0x15,0x15,0xea,0xc5,0xc6,0xf8,0x97,0x55,0x49,0xb3,0xe4,0x1c,0x3d,0xbf,0xb0, 0xcb,0xcb,0x72,0x33,0x37,0x7b,0x73,0xf1,0xd4,0xd8,0x3b,0x00,0x6d,0xa5,0xeb,0x61, 0x24,0x8d,0xeb,0xcc,0xfa,0x9a,0x07,0x8e,0x24,0xe5,0x9c,0x46,0xb2,0xc0,0x8f,0x0f, 0x15,0xc1,0x51,0x92,0xb5,0x2e,0xdc,0x04,0xb9,0xb6,0xeb,0xc2,0x21,0xbb,0x1a,0x49, 0x04,0x2b,0xc2,0x4b,0x89,0x3b,0x03,0xa1,0x07,0x60,0xf5,0xf9,0x50,0x6d,0x8c,0xf1, 0x6e,0x65,0xaf,0x87,0x33,0x2f,0x99,0xa6,0x19,0x99,0x5a,0xdc,0xb4,0x29,0xa8,0xab, 0x86,0xb6,0x93,0x32,0x54,0xa0,0x79,0x53,0xe2,0xa4,0x20,0xfc,0x43,0xae,0xc9,0xf9, 0x28,0xd0,0x37,0xf0,0xe3,0xda,0x53,0x15,0xce,0xb3,0x47,0xac,0x2d,0x5d,0xa5,0x33, 0x70,0x9c,0xe0,0xfc,0x3a,0xd7,0x2e,0xd5,0x26,0x3b,0xc1,0x29,0x41,0x52,0xc2,0x94, 0xa4,0x72,0xfe,0xe9,0x3d,0xfc,0x8f,0x5e,0xa0,0x00,0x91,0xdd,0xb8,0xe7,0x89,0xab, 0x23,0xb6,0x59,0xec,0xd7,0x7c,0x62,0xf0,0xe3,0xb2,0x5c,0x8b,0x3f,0xfd,0xaf,0x1d, 0x0b,0x83,0xc9,0xd0,0x95,0x36,0x49,0x52,0x8e,0xf6,0x35,0xa1,0xdb,0xbf,0x6d,0x82, 0xbc,0x4b,0x8d,0x12,0xe2,0x78,0x7d,0x61,0x82,0xdc,0x71,0x12,0xef,0x94,0x43,0x75, 0x68,0x60,0x00,0x95,0xb6,0xc0,0x5c,0xb2,0x7a,0x74,0x20,0x98,0xe9,0xeb,0xf3,0xa0, 0xbb,0xae,0x92,0xc4,0x88,0x8e,0x20,0x90,0x41,0xa0,0x69,0xc6,0x97,0xe0,0xc9,0x50, 0xf2,0x26,0x82,0x67,0x40,0x50,0x14,0x05,0x07,0x9f,0x32,0xd9,0xb7,0x29,0xbc,0x4c, 0xe2,0x0d,0xd7,0x1b,0x8f,0x1a,0x6d,0xd2,0xd5,0x6e,0x87,0x68,0x85,0x1a,0x4b,0x85, 0xb6,0xd6,0xf2,0x5b,0x5c,0x92,0x14,0xa0,0x3a,0x03,0xef,0x2d,0x83,0xfc,0x34,0x10, 0x0c,0x77,0x89,0x1c,0x4e,0x56,0x55,0x1a,0x2e,0x65,0xc3,0x19,0x51,0x20,0xcc,0x75, 0xb6,0x57,0x36,0x0d,0xe6,0x3c,0x96,0x23,0x0d,0xe8,0xb9,0xca,0x10,0x97,0x35,0xd7, 0x64,0x12,0x7b,0x74,0xd5,0x06,0x38,0x83,0xed,0x23,0x6e,0xc4,0x2f,0xab,0xb4,0x5c, 0x6d,0x19,0x8d,0xa0,0x41,0x98,0x94,0xbf,0x72,0x76,0xcc,0xb7,0x23,0x48,0x64,0x7e, 0x6f,0x0d,0x69,0xe6,0x24,0x1e,0x9d,0x74,0x3c,0xfb,0x77,0xa0,0x9a,0x2b,0x8e,0x18, 0x44,0x3c,0x6a,0xd1,0x7d,0xb9,0x64,0x76,0xeb,0x6d,0xb6,0xf4,0x95,0x2a,0x03,0xb7, 0x25,0xfb,0xaf,0x8c,0x12,0x74,0xae,0x8e,0x68,0x8d,0x6c,0x77,0xd5,0x03,0xde,0x23, 0x9a,0xd8,0x33,0x65,0xba,0xf6,0x33,0x3e,0xd9,0x71,0xf7,0x77,0x0a,0x7c,0x48,0xb2, 0x59,0x7f,0x63,0xb7,0x38,0x28,0x52,0xbe,0x13,0xe5,0xbd,0x1f,0x95,0x04,0x77,0x20, 0xe0,0xef,0x0c,0xf2,0xcb,0xbb,0xec,0x5f,0xf0,0xcb,0x04,0x99,0xce,0x28,0xa9,0x4f, 0x18,0x29,0x4a,0xd6,0x7b,0x92,0x56,0x91,0xbd,0xfd,0x4d,0x67,0x9b,0xac,0x2e,0xa7, 0xc5,0xed,0x1c,0xb7,0x7a,0xdb,0x16,0x2f,0x19,0x78,0x71,0x62,0xb3,0x30,0x98,0xf6, 0xfc,0x7a,0xcb,0x3e,0x62,0x23,0xa3,0xf2,0xb4,0x9d,0x33,0x19,0x91,0xfc,0xab,0x74, 0x7d,0xab,0x42,0x56,0xe2,0xa5,0x17,0x02,0x86,0xf7,0x40,0x5a,0x95,0xc9,0x30,0x7c, 0xcd,0x04,0xd9,0x3d,0x52,0x3e,0x94,0x19,0xa0,0x28,0x0a,0x0f,0x3f,0xe3,0x41,0x4c, 0x5f,0xf3,0x78,0xf3,0x09,0x17,0x31,0x7e,0x92,0xe4,0x94,0x2b,0xb8,0x42,0xf9,0x4b, 0x07,0xe8,0x58,0xf0,0xb4,0x7e,0x5a,0xf2,0x34,0x0f,0x20,0x28,0x1e,0xe6,0x81,0x47, 0x54,0x4a,0x89,0xd0,0x20,0xfa,0xd0,0x70,0x5e,0xb1,0xab,0x2e,0x4f,0x01,0xb8,0xf9, 0x25,0xa2,0xdb,0x75,0x61,0xb2,0x79,0x5a,0x99,0x1d,0x0e,0xa5,0x3b,0xef,0xa0,0xa0, 0x68,0x18,0xac,0xfc,0x19,0xc1,0xac,0xd1,0xef,0x51,0xec,0x38,0xcd,0xb6,0xd4,0xd5, 0xe6,0x22,0xa1,0x4e,0x10,0x11,0xe0,0x78,0xad,0x28,0x10,0x53,0xf0,0xeb,0x5d,0xcf, 0x51,0xaa,0x08,0x75,0x9f,0xd9,0x4f,0x1b,0xc7,0x6e,0xd1,0x27,0x62,0x59,0x36,0x7d, 0x63,0x4b,0x0f,0x21,0xd3,0x12,0x25,0xe9,0xcf,0x05,0xc0,0x92,0x0f,0x22,0x92,0xad, 0xed,0x27,0x5a,0x3d,0x7b,0x50,0x4c,0xb1,0xc5,0xfe,0x29,0xc7,0x4c,0xda,0x78,0xfc, 0x96,0xcb,0x65,0xba,0xd2,0x9f,0xe3,0x3e,0x2c,0x85,0xff,0x00,0x47,0x5a,0xfd,0x05, 0x05,0x8e,0xd2,0xce,0xba,0x9a,0x0e,0xa8,0x0a,0xff,0x00,0x5a,0x49,0x4f,0xad,0x04, 0xe9,0x93,0xb6,0x93,0xf4,0xa0,0xde,0x80,0xa0,0x28,0x2a,0x8e,0x30,0xf0,0xf2,0x16, 0x47,0x31,0x8b,0xa3,0x0f,0xcf,0xb5,0x5e,0x5b,0x6b,0xc1,0x4d,0xc6,0xda,0xf9,0x65, 0xd5,0x37,0xb2,0x42,0x17,0xae,0x8b,0x48,0x24,0x90,0x95,0x85,0x00,0x49,0x23,0x5b, 0x34,0x14,0xc4,0xab,0x47,0x10,0xec,0xab,0x22,0xdb,0x99,0xc9,0x9c,0xda,0x4f,0xc0, 0x8b,0xa5,0xba,0x33,0xa3,0xe8,0x7c,0x34,0x34,0xa3,0xfc,0xd4,0x1c,0xff,0x00,0xb7, 0x9c,0x4f,0xb6,0x1d,0xca,0xb3,0x62,0x17,0xa4,0xa7,0xba,0x59,0x32,0x20,0x29,0x43, 0xee,0x5e,0x14,0x0b,0xb5,0xc7,0x9b,0xc4,0x0f,0xf8,0x93,0x87,0x37,0xd6,0xd1,0xfe, 0x3b,0x4c,0xe8,0xf2,0xc7,0xfe,0xc5,0x34,0x7f,0xa5,0x03,0x9c,0x4f,0x68,0xec,0x41, 0xbf,0xf7,0xeb,0x19,0x45,0x88,0xff,0x00,0xd7,0x59,0x64,0xa9,0x3f,0xce,0xd2,0x16, 0x8f,0xeb,0xaa,0x07,0x17,0x3d,0xa2,0xb8,0x6a,0xc5,0xbd,0x72,0xd9,0xcb,0xad,0x53, 0x16,0x0e,0x93,0x0a,0x2a,0xcb,0xb2,0x9c,0x51,0xec,0x94,0xb2,0x07,0x39,0x27,0xb7, 0x6f,0xae,0xa8,0x3b,0xf8,0x43,0x6c,0xb8,0x26,0xd3,0x79,0xc8,0x72,0x48,0x6e,0x5b, 0x6e,0x59,0x25,0xc5,0x77,0x25,0x42,0x7b,0x5e,0x24,0x76,0x79,0x10,0xd3,0x2d,0xaf, 0x5f,0xbc,0x1b,0x6d,0x1b,0xf4,0x24,0xd0,0x58,0x2d,0x1d,0x8d,0x0f,0x3a,0x07,0xcb, 0x44,0x12,0xb5,0xa4,0x91,0xe7,0x41,0x2d,0x42,0x79,0x52,0x07,0xa0,0xa0,0xda,0x80, 0xa0,0x28,0x22,0x79,0xca,0xb9,0x1b,0x68,0xf9,0x50,0x41,0xdc,0x0d,0xb9,0xdd,0x20, 0xd0,0x20,0x60,0xb0,0xe1,0xea,0x84,0x9f,0xb5,0x02,0x6a,0xb0,0xc4,0x77,0xf3,0x36, 0x9e,0xb4,0x08,0xb9,0x87,0xc0,0x77,0x5c,0xcc,0xa0,0xfd,0xa8,0x36,0x81,0x87,0x5b, 0x60,0xcc,0x12,0xdb,0x88,0xc0,0x78,0x76,0x73,0x90,0x73,0x7e,0xb4,0x0f,0x9c,0xc5, 0x4a,0xea,0x7a,0x0a,0x07,0x4b,0x44,0x55,0x48,0x75,0x27,0x5d,0x05,0x04,0xde,0x04, 0x40,0xc3,0x60,0xeb,0x46,0x83,0xb2,0x80,0xa0,0x28,0x0a,0x06,0x1c,0xa2,0xd4,0xab, 0x93,0x1a,0x47,0x71,0x41,0x0a,0x77,0x1a,0x96,0xd7,0x64,0xef,0xed,0x41,0xcc,0xab, 0x4c,0xa6,0xbf,0x33,0x67,0x42,0x81,0x32,0xcb,0xa8,0x3d,0x50,0xae,0x94,0x07,0x3a, 0x87,0x70,0x68,0x33,0xe2,0x9f,0x9d,0x02,0xac,0x24,0xbc,0xe0,0x4a,0x77,0xd6,0x82, 0x77,0x60,0xb7,0x06,0x9b,0x49,0x22,0x81,0xfb,0xb7,0x6a,0x0c,0xd0,0x14,0x05,0x01, 0x41,0x82,0x01,0xef,0x40,0x9a,0xd9,0x41,0x1d,0x52,0x0d,0x07,0x3b,0x91,0x5a,0x50, 0xea,0x91,0x41,0xc6,0xed,0xb6,0x3a,0xb7,0xb6,0xc5,0x07,0x03,0xf6,0x88,0xaa,0xde, 0xdb,0x14,0x0d,0xcf,0xda,0x63,0x01,0xd1,0x24,0x50,0x6f,0x6e,0xb7,0xb2,0x87,0x41, 0x09,0xeb,0x41,0x30,0x88,0x80,0x86,0x47,0x28,0xa0,0x5a,0x80,0xa0,0x28,0x3f,0xff, 0xd9 }; /* created by reswrap from file cy_secoder_b.jpg */ const unsigned char fxcj_icon_cy_secoder_b[]={ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x02,0x01,0x01,0x2c, 0x01,0x2c,0x00,0x00,0xff,0xe2,0x1c,0x6d,0x49,0x43,0x43,0x5f,0x50,0x52,0x4f,0x46, 0x49,0x4c,0x45,0x00,0x01,0x01,0x00,0x00,0x1c,0x5d,0x4c,0x69,0x6e,0x6f,0x02,0x10, 0x00,0x00,0x6d,0x6e,0x74,0x72,0x52,0x47,0x42,0x20,0x58,0x59,0x5a,0x20,0x07,0xce, 0x00,0x02,0x00,0x09,0x00,0x06,0x00,0x31,0x00,0x00,0x61,0x63,0x73,0x70,0x4d,0x53, 0x46,0x54,0x00,0x00,0x00,0x00,0x49,0x45,0x43,0x20,0x73,0x52,0x47,0x42,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf6,0xd6,0x00,0x01, 0x00,0x00,0x00,0x00,0xd3,0x2d,0x48,0x50,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x63,0x70,0x72,0x74,0x00,0x00, 0x01,0x50,0x00,0x00,0x00,0x33,0x64,0x65,0x73,0x63,0x00,0x00,0x01,0x83,0x00,0x00, 0x00,0x6c,0x77,0x74,0x70,0x74,0x00,0x00,0x01,0xef,0x00,0x00,0x00,0x14,0x62,0x6b, 0x70,0x74,0x00,0x00,0x02,0x03,0x00,0x00,0x00,0x14,0x72,0x58,0x59,0x5a,0x00,0x00, 0x02,0x17,0x00,0x00,0x00,0x14,0x67,0x58,0x59,0x5a,0x00,0x00,0x02,0x2b,0x00,0x00, 0x00,0x14,0x62,0x58,0x59,0x5a,0x00,0x00,0x02,0x3f,0x00,0x00,0x00,0x14,0x64,0x6d, 0x6e,0x64,0x00,0x00,0x02,0x53,0x00,0x00,0x00,0x70,0x64,0x6d,0x64,0x64,0x00,0x00, 0x02,0xc3,0x00,0x00,0x00,0x88,0x76,0x75,0x65,0x64,0x00,0x00,0x03,0x4b,0x00,0x00, 0x00,0x86,0x76,0x69,0x65,0x77,0x00,0x00,0x03,0xd1,0x00,0x00,0x00,0x24,0x6c,0x75, 0x6d,0x69,0x00,0x00,0x03,0xf5,0x00,0x00,0x00,0x14,0x6d,0x65,0x61,0x73,0x00,0x00, 0x04,0x09,0x00,0x00,0x00,0x24,0x74,0x65,0x63,0x68,0x00,0x00,0x04,0x2d,0x00,0x00, 0x00,0x0c,0x72,0x54,0x52,0x43,0x00,0x00,0x04,0x39,0x00,0x00,0x08,0x0c,0x67,0x54, 0x52,0x43,0x00,0x00,0x0c,0x45,0x00,0x00,0x08,0x0c,0x62,0x54,0x52,0x43,0x00,0x00, 0x14,0x51,0x00,0x00,0x08,0x0c,0x74,0x65,0x78,0x74,0x00,0x00,0x00,0x00,0x43,0x6f, 0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x31,0x39,0x39,0x38, 0x20,0x48,0x65,0x77,0x6c,0x65,0x74,0x74,0x2d,0x50,0x61,0x63,0x6b,0x61,0x72,0x64, 0x20,0x43,0x6f,0x6d,0x70,0x61,0x6e,0x79,0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x12,0x73,0x52,0x47,0x42,0x20,0x49,0x45,0x43,0x36,0x31,0x39, 0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x12,0x73,0x52,0x47,0x42,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d, 0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xf3, 0x51,0x00,0x01,0x00,0x00,0x00,0x01,0x16,0xcc,0x58,0x59,0x5a,0x20,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x59,0x5a, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x6f,0xa2,0x00,0x00,0x38,0xf5,0x00,0x00,0x03, 0x90,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x62,0x99,0x00,0x00,0xb7, 0x85,0x00,0x00,0x18,0xda,0x58,0x59,0x5a,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x24, 0xa0,0x00,0x00,0x0f,0x84,0x00,0x00,0xb6,0xcf,0x64,0x65,0x73,0x63,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x16,0x49,0x45,0x43,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f, 0x77,0x77,0x77,0x2e,0x69,0x65,0x63,0x2e,0x63,0x68,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x16,0x49,0x45,0x43,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f, 0x2f,0x77,0x77,0x77,0x2e,0x69,0x65,0x63,0x2e,0x63,0x68,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2e,0x49,0x45,0x43,0x20,0x36,0x31,0x39,0x36,0x36,0x2d,0x32, 0x2e,0x31,0x20,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x52,0x47,0x42,0x20,0x63, 0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x2d,0x20,0x73,0x52, 0x47,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0x49,0x45, 0x43,0x20,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x20,0x44,0x65,0x66,0x61, 0x75,0x6c,0x74,0x20,0x52,0x47,0x42,0x20,0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x73, 0x70,0x61,0x63,0x65,0x20,0x2d,0x20,0x73,0x52,0x47,0x42,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x64,0x65,0x73,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2c,0x52,0x65,0x66, 0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x56,0x69,0x65,0x77,0x69,0x6e,0x67,0x20,0x43, 0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x49,0x45,0x43,0x36, 0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x2c,0x52,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x56,0x69, 0x65,0x77,0x69,0x6e,0x67,0x20,0x43,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20, 0x69,0x6e,0x20,0x49,0x45,0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00, 0x13,0xa4,0xfe,0x00,0x14,0x5f,0x2e,0x00,0x10,0xcf,0x14,0x00,0x03,0xed,0xcc,0x00, 0x04,0x13,0x0b,0x00,0x03,0x5c,0x9e,0x00,0x00,0x00,0x01,0x58,0x59,0x5a,0x20,0x00, 0x00,0x00,0x00,0x00,0x4c,0x09,0x56,0x00,0x50,0x00,0x00,0x00,0x57,0x1f,0xe7,0x6d, 0x65,0x61,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x02,0x8f,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x73,0x69,0x67,0x20,0x00,0x00,0x00,0x00,0x43,0x52,0x54,0x20,0x63, 0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00, 0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00, 0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00, 0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00, 0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00, 0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00, 0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00, 0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01, 0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01, 0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01, 0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01, 0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02, 0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02, 0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02, 0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03, 0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03, 0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03, 0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04, 0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04, 0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05, 0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05, 0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06, 0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06, 0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07, 0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07, 0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08, 0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08, 0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09, 0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a, 0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a, 0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b, 0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c, 0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d, 0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e, 0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e, 0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f, 0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10, 0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11, 0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12, 0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13, 0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14, 0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15, 0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16, 0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17, 0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19, 0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a, 0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b, 0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c, 0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e, 0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f, 0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20, 0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22, 0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23, 0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25, 0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26, 0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28, 0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29, 0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b, 0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c, 0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e, 0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30, 0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31, 0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33, 0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35, 0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37, 0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39, 0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b, 0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d, 0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f, 0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41, 0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43, 0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45, 0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47, 0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49, 0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b, 0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e, 0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50, 0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52, 0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55, 0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57, 0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a, 0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c, 0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f, 0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61, 0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64, 0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66, 0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69, 0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c, 0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f, 0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71, 0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74, 0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77, 0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a, 0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d, 0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80, 0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83, 0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86, 0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89, 0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d, 0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90, 0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93, 0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97, 0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a, 0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d, 0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1, 0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4, 0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8, 0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab, 0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf, 0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3, 0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6, 0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba, 0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe, 0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2, 0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6, 0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca, 0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce, 0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2, 0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6, 0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda, 0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde, 0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2, 0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7, 0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb, 0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef, 0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4, 0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8, 0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd, 0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0x63,0x75,0x72,0x76,0x00, 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00, 0x14,0x00,0x19,0x00,0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00, 0x3b,0x00,0x40,0x00,0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00, 0x63,0x00,0x68,0x00,0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00, 0x8b,0x00,0x90,0x00,0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00, 0xb2,0x00,0xb7,0x00,0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00, 0xdb,0x00,0xe0,0x00,0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01, 0x07,0x01,0x0d,0x01,0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01, 0x38,0x01,0x3e,0x01,0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01, 0x6e,0x01,0x75,0x01,0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01, 0xa9,0x01,0xb1,0x01,0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01, 0xe9,0x01,0xf2,0x01,0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02, 0x2f,0x02,0x38,0x02,0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02, 0x7a,0x02,0x84,0x02,0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02, 0xcb,0x02,0xd5,0x02,0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03, 0x21,0x03,0x2d,0x03,0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03, 0x7e,0x03,0x8a,0x03,0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03, 0xe0,0x03,0xec,0x03,0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04, 0x48,0x04,0x55,0x04,0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04, 0xb6,0x04,0xc4,0x04,0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05, 0x2b,0x05,0x3a,0x05,0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05, 0xa6,0x05,0xb5,0x05,0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06, 0x27,0x06,0x37,0x06,0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06, 0xaf,0x06,0xc0,0x06,0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07, 0x3d,0x07,0x4f,0x07,0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07, 0xd2,0x07,0xe5,0x07,0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08, 0x6e,0x08,0x82,0x08,0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09, 0x10,0x09,0x25,0x09,0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09, 0xba,0x09,0xcf,0x09,0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a, 0x6a,0x0a,0x81,0x0a,0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b, 0x22,0x0b,0x39,0x0b,0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b, 0xe1,0x0b,0xf9,0x0c,0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c, 0xa7,0x0c,0xc0,0x0c,0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d, 0x74,0x0d,0x8e,0x0d,0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e, 0x49,0x0e,0x64,0x0e,0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f, 0x25,0x0f,0x41,0x0f,0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10, 0x09,0x10,0x26,0x10,0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10, 0xf5,0x11,0x13,0x11,0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11, 0xe8,0x12,0x07,0x12,0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12, 0xe3,0x13,0x03,0x13,0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13, 0xe5,0x14,0x06,0x14,0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14, 0xf0,0x15,0x12,0x15,0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16, 0x03,0x16,0x26,0x16,0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17, 0x1d,0x17,0x41,0x17,0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18, 0x40,0x18,0x65,0x18,0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19, 0x6b,0x19,0x91,0x19,0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a, 0x9e,0x1a,0xc5,0x1a,0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b, 0xda,0x1c,0x02,0x1c,0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d, 0x1e,0x1d,0x47,0x1d,0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e, 0x6a,0x1e,0x94,0x1e,0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f, 0xbf,0x1f,0xea,0x20,0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21, 0x1c,0x21,0x48,0x21,0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22, 0x82,0x22,0xaf,0x22,0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23, 0xf0,0x24,0x1f,0x24,0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25, 0x68,0x25,0x97,0x25,0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26, 0xe8,0x27,0x18,0x27,0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28, 0x71,0x28,0xa2,0x28,0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a, 0x02,0x2a,0x35,0x2a,0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b, 0x9d,0x2b,0xd1,0x2c,0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d, 0x41,0x2d,0x76,0x2d,0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e, 0xee,0x2f,0x24,0x2f,0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30, 0xa4,0x30,0xdb,0x31,0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32, 0x63,0x32,0x9b,0x32,0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34, 0x2b,0x34,0x65,0x34,0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35, 0xfd,0x36,0x37,0x36,0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37, 0xd7,0x38,0x14,0x38,0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39, 0xbc,0x39,0xf9,0x3a,0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b, 0xaa,0x3b,0xe8,0x3c,0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d, 0xa1,0x3d,0xe0,0x3e,0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f, 0xa2,0x3f,0xe2,0x40,0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41, 0xac,0x41,0xee,0x42,0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43, 0xc0,0x44,0x03,0x44,0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45, 0xde,0x46,0x22,0x46,0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48, 0x05,0x48,0x4b,0x48,0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a, 0x37,0x4a,0x7d,0x4a,0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c, 0x72,0x4c,0xba,0x4d,0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e, 0xb7,0x4f,0x00,0x4f,0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51, 0x06,0x51,0x50,0x51,0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53, 0x5f,0x53,0xaa,0x53,0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55, 0xc2,0x56,0x0f,0x56,0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58, 0x2f,0x58,0x7d,0x58,0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a, 0xa6,0x5a,0xf5,0x5b,0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d, 0x27,0x5d,0x78,0x5d,0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f, 0xb3,0x60,0x05,0x60,0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62, 0x49,0x62,0x9c,0x62,0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64, 0xe9,0x65,0x3d,0x65,0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67, 0x93,0x67,0xe9,0x68,0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a, 0x48,0x6a,0x9f,0x6a,0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d, 0x08,0x6d,0x60,0x6d,0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f, 0xd1,0x70,0x2b,0x70,0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72, 0xa6,0x73,0x01,0x73,0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75, 0x85,0x75,0xe1,0x76,0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78, 0x6e,0x78,0xcc,0x79,0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b, 0x63,0x7b,0xc2,0x7c,0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e, 0x62,0x7e,0xc2,0x7f,0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81, 0x6b,0x81,0xcd,0x82,0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84, 0x80,0x84,0xe3,0x85,0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87, 0x9f,0x88,0x04,0x88,0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a, 0xca,0x8b,0x30,0x8b,0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d, 0xff,0x8e,0x66,0x8e,0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91, 0x3f,0x91,0xa8,0x92,0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94, 0x8a,0x94,0xf4,0x95,0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97, 0xe0,0x98,0x4c,0x98,0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b, 0x42,0x9b,0xaf,0x9c,0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e, 0xae,0x9f,0x1d,0x9f,0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2, 0x26,0xa2,0x96,0xa3,0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5, 0xa9,0xa6,0x1a,0xa6,0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9, 0x37,0xa9,0xa9,0xaa,0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac, 0xd0,0xad,0x44,0xad,0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0, 0x75,0xb0,0xea,0xb1,0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4, 0x25,0xb4,0x9c,0xb5,0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7, 0xe0,0xb8,0x59,0xb8,0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb, 0xa7,0xbc,0x21,0xbc,0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf, 0x7a,0xbf,0xf5,0xc0,0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3, 0x58,0xc3,0xd4,0xc4,0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7, 0x41,0xc7,0xbf,0xc8,0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb, 0x36,0xcb,0xb6,0xcc,0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf, 0x37,0xcf,0xb8,0xd0,0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3, 0x44,0xd3,0xc6,0xd4,0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7, 0x5c,0xd7,0xe0,0xd8,0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb, 0x80,0xdc,0x05,0xdc,0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf, 0xaf,0xe0,0x36,0xe0,0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3, 0xeb,0xe4,0x73,0xe4,0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8, 0x32,0xe8,0xbc,0xe9,0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec, 0x86,0xed,0x11,0xed,0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0, 0xe5,0xf1,0x72,0xf1,0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5, 0x50,0xf5,0xde,0xf6,0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9, 0xc7,0xfa,0x57,0xfa,0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe, 0x4b,0xfe,0xdc,0xff,0x6d,0xff,0xff,0x63,0x75,0x72,0x76,0x00,0x00,0x00,0x00,0x00, 0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00,0x0a,0x00,0x0f,0x00,0x14,0x00,0x19,0x00, 0x1e,0x00,0x23,0x00,0x28,0x00,0x2d,0x00,0x32,0x00,0x37,0x00,0x3b,0x00,0x40,0x00, 0x45,0x00,0x4a,0x00,0x4f,0x00,0x54,0x00,0x59,0x00,0x5e,0x00,0x63,0x00,0x68,0x00, 0x6d,0x00,0x72,0x00,0x77,0x00,0x7c,0x00,0x81,0x00,0x86,0x00,0x8b,0x00,0x90,0x00, 0x95,0x00,0x9a,0x00,0x9f,0x00,0xa4,0x00,0xa9,0x00,0xae,0x00,0xb2,0x00,0xb7,0x00, 0xbc,0x00,0xc1,0x00,0xc6,0x00,0xcb,0x00,0xd0,0x00,0xd5,0x00,0xdb,0x00,0xe0,0x00, 0xe5,0x00,0xeb,0x00,0xf0,0x00,0xf6,0x00,0xfb,0x01,0x01,0x01,0x07,0x01,0x0d,0x01, 0x13,0x01,0x19,0x01,0x1f,0x01,0x25,0x01,0x2b,0x01,0x32,0x01,0x38,0x01,0x3e,0x01, 0x45,0x01,0x4c,0x01,0x52,0x01,0x59,0x01,0x60,0x01,0x67,0x01,0x6e,0x01,0x75,0x01, 0x7c,0x01,0x83,0x01,0x8b,0x01,0x92,0x01,0x9a,0x01,0xa1,0x01,0xa9,0x01,0xb1,0x01, 0xb9,0x01,0xc1,0x01,0xc9,0x01,0xd1,0x01,0xd9,0x01,0xe1,0x01,0xe9,0x01,0xf2,0x01, 0xfa,0x02,0x03,0x02,0x0c,0x02,0x14,0x02,0x1d,0x02,0x26,0x02,0x2f,0x02,0x38,0x02, 0x41,0x02,0x4b,0x02,0x54,0x02,0x5d,0x02,0x67,0x02,0x71,0x02,0x7a,0x02,0x84,0x02, 0x8e,0x02,0x98,0x02,0xa2,0x02,0xac,0x02,0xb6,0x02,0xc1,0x02,0xcb,0x02,0xd5,0x02, 0xe0,0x02,0xeb,0x02,0xf5,0x03,0x00,0x03,0x0b,0x03,0x16,0x03,0x21,0x03,0x2d,0x03, 0x38,0x03,0x43,0x03,0x4f,0x03,0x5a,0x03,0x66,0x03,0x72,0x03,0x7e,0x03,0x8a,0x03, 0x96,0x03,0xa2,0x03,0xae,0x03,0xba,0x03,0xc7,0x03,0xd3,0x03,0xe0,0x03,0xec,0x03, 0xf9,0x04,0x06,0x04,0x13,0x04,0x20,0x04,0x2d,0x04,0x3b,0x04,0x48,0x04,0x55,0x04, 0x63,0x04,0x71,0x04,0x7e,0x04,0x8c,0x04,0x9a,0x04,0xa8,0x04,0xb6,0x04,0xc4,0x04, 0xd3,0x04,0xe1,0x04,0xf0,0x04,0xfe,0x05,0x0d,0x05,0x1c,0x05,0x2b,0x05,0x3a,0x05, 0x49,0x05,0x58,0x05,0x67,0x05,0x77,0x05,0x86,0x05,0x96,0x05,0xa6,0x05,0xb5,0x05, 0xc5,0x05,0xd5,0x05,0xe5,0x05,0xf6,0x06,0x06,0x06,0x16,0x06,0x27,0x06,0x37,0x06, 0x48,0x06,0x59,0x06,0x6a,0x06,0x7b,0x06,0x8c,0x06,0x9d,0x06,0xaf,0x06,0xc0,0x06, 0xd1,0x06,0xe3,0x06,0xf5,0x07,0x07,0x07,0x19,0x07,0x2b,0x07,0x3d,0x07,0x4f,0x07, 0x61,0x07,0x74,0x07,0x86,0x07,0x99,0x07,0xac,0x07,0xbf,0x07,0xd2,0x07,0xe5,0x07, 0xf8,0x08,0x0b,0x08,0x1f,0x08,0x32,0x08,0x46,0x08,0x5a,0x08,0x6e,0x08,0x82,0x08, 0x96,0x08,0xaa,0x08,0xbe,0x08,0xd2,0x08,0xe7,0x08,0xfb,0x09,0x10,0x09,0x25,0x09, 0x3a,0x09,0x4f,0x09,0x64,0x09,0x79,0x09,0x8f,0x09,0xa4,0x09,0xba,0x09,0xcf,0x09, 0xe5,0x09,0xfb,0x0a,0x11,0x0a,0x27,0x0a,0x3d,0x0a,0x54,0x0a,0x6a,0x0a,0x81,0x0a, 0x98,0x0a,0xae,0x0a,0xc5,0x0a,0xdc,0x0a,0xf3,0x0b,0x0b,0x0b,0x22,0x0b,0x39,0x0b, 0x51,0x0b,0x69,0x0b,0x80,0x0b,0x98,0x0b,0xb0,0x0b,0xc8,0x0b,0xe1,0x0b,0xf9,0x0c, 0x12,0x0c,0x2a,0x0c,0x43,0x0c,0x5c,0x0c,0x75,0x0c,0x8e,0x0c,0xa7,0x0c,0xc0,0x0c, 0xd9,0x0c,0xf3,0x0d,0x0d,0x0d,0x26,0x0d,0x40,0x0d,0x5a,0x0d,0x74,0x0d,0x8e,0x0d, 0xa9,0x0d,0xc3,0x0d,0xde,0x0d,0xf8,0x0e,0x13,0x0e,0x2e,0x0e,0x49,0x0e,0x64,0x0e, 0x7f,0x0e,0x9b,0x0e,0xb6,0x0e,0xd2,0x0e,0xee,0x0f,0x09,0x0f,0x25,0x0f,0x41,0x0f, 0x5e,0x0f,0x7a,0x0f,0x96,0x0f,0xb3,0x0f,0xcf,0x0f,0xec,0x10,0x09,0x10,0x26,0x10, 0x43,0x10,0x61,0x10,0x7e,0x10,0x9b,0x10,0xb9,0x10,0xd7,0x10,0xf5,0x11,0x13,0x11, 0x31,0x11,0x4f,0x11,0x6d,0x11,0x8c,0x11,0xaa,0x11,0xc9,0x11,0xe8,0x12,0x07,0x12, 0x26,0x12,0x45,0x12,0x64,0x12,0x84,0x12,0xa3,0x12,0xc3,0x12,0xe3,0x13,0x03,0x13, 0x23,0x13,0x43,0x13,0x63,0x13,0x83,0x13,0xa4,0x13,0xc5,0x13,0xe5,0x14,0x06,0x14, 0x27,0x14,0x49,0x14,0x6a,0x14,0x8b,0x14,0xad,0x14,0xce,0x14,0xf0,0x15,0x12,0x15, 0x34,0x15,0x56,0x15,0x78,0x15,0x9b,0x15,0xbd,0x15,0xe0,0x16,0x03,0x16,0x26,0x16, 0x49,0x16,0x6c,0x16,0x8f,0x16,0xb2,0x16,0xd6,0x16,0xfa,0x17,0x1d,0x17,0x41,0x17, 0x65,0x17,0x89,0x17,0xae,0x17,0xd2,0x17,0xf7,0x18,0x1b,0x18,0x40,0x18,0x65,0x18, 0x8a,0x18,0xaf,0x18,0xd5,0x18,0xfa,0x19,0x20,0x19,0x45,0x19,0x6b,0x19,0x91,0x19, 0xb7,0x19,0xdd,0x1a,0x04,0x1a,0x2a,0x1a,0x51,0x1a,0x77,0x1a,0x9e,0x1a,0xc5,0x1a, 0xec,0x1b,0x14,0x1b,0x3b,0x1b,0x63,0x1b,0x8a,0x1b,0xb2,0x1b,0xda,0x1c,0x02,0x1c, 0x2a,0x1c,0x52,0x1c,0x7b,0x1c,0xa3,0x1c,0xcc,0x1c,0xf5,0x1d,0x1e,0x1d,0x47,0x1d, 0x70,0x1d,0x99,0x1d,0xc3,0x1d,0xec,0x1e,0x16,0x1e,0x40,0x1e,0x6a,0x1e,0x94,0x1e, 0xbe,0x1e,0xe9,0x1f,0x13,0x1f,0x3e,0x1f,0x69,0x1f,0x94,0x1f,0xbf,0x1f,0xea,0x20, 0x15,0x20,0x41,0x20,0x6c,0x20,0x98,0x20,0xc4,0x20,0xf0,0x21,0x1c,0x21,0x48,0x21, 0x75,0x21,0xa1,0x21,0xce,0x21,0xfb,0x22,0x27,0x22,0x55,0x22,0x82,0x22,0xaf,0x22, 0xdd,0x23,0x0a,0x23,0x38,0x23,0x66,0x23,0x94,0x23,0xc2,0x23,0xf0,0x24,0x1f,0x24, 0x4d,0x24,0x7c,0x24,0xab,0x24,0xda,0x25,0x09,0x25,0x38,0x25,0x68,0x25,0x97,0x25, 0xc7,0x25,0xf7,0x26,0x27,0x26,0x57,0x26,0x87,0x26,0xb7,0x26,0xe8,0x27,0x18,0x27, 0x49,0x27,0x7a,0x27,0xab,0x27,0xdc,0x28,0x0d,0x28,0x3f,0x28,0x71,0x28,0xa2,0x28, 0xd4,0x29,0x06,0x29,0x38,0x29,0x6b,0x29,0x9d,0x29,0xd0,0x2a,0x02,0x2a,0x35,0x2a, 0x68,0x2a,0x9b,0x2a,0xcf,0x2b,0x02,0x2b,0x36,0x2b,0x69,0x2b,0x9d,0x2b,0xd1,0x2c, 0x05,0x2c,0x39,0x2c,0x6e,0x2c,0xa2,0x2c,0xd7,0x2d,0x0c,0x2d,0x41,0x2d,0x76,0x2d, 0xab,0x2d,0xe1,0x2e,0x16,0x2e,0x4c,0x2e,0x82,0x2e,0xb7,0x2e,0xee,0x2f,0x24,0x2f, 0x5a,0x2f,0x91,0x2f,0xc7,0x2f,0xfe,0x30,0x35,0x30,0x6c,0x30,0xa4,0x30,0xdb,0x31, 0x12,0x31,0x4a,0x31,0x82,0x31,0xba,0x31,0xf2,0x32,0x2a,0x32,0x63,0x32,0x9b,0x32, 0xd4,0x33,0x0d,0x33,0x46,0x33,0x7f,0x33,0xb8,0x33,0xf1,0x34,0x2b,0x34,0x65,0x34, 0x9e,0x34,0xd8,0x35,0x13,0x35,0x4d,0x35,0x87,0x35,0xc2,0x35,0xfd,0x36,0x37,0x36, 0x72,0x36,0xae,0x36,0xe9,0x37,0x24,0x37,0x60,0x37,0x9c,0x37,0xd7,0x38,0x14,0x38, 0x50,0x38,0x8c,0x38,0xc8,0x39,0x05,0x39,0x42,0x39,0x7f,0x39,0xbc,0x39,0xf9,0x3a, 0x36,0x3a,0x74,0x3a,0xb2,0x3a,0xef,0x3b,0x2d,0x3b,0x6b,0x3b,0xaa,0x3b,0xe8,0x3c, 0x27,0x3c,0x65,0x3c,0xa4,0x3c,0xe3,0x3d,0x22,0x3d,0x61,0x3d,0xa1,0x3d,0xe0,0x3e, 0x20,0x3e,0x60,0x3e,0xa0,0x3e,0xe0,0x3f,0x21,0x3f,0x61,0x3f,0xa2,0x3f,0xe2,0x40, 0x23,0x40,0x64,0x40,0xa6,0x40,0xe7,0x41,0x29,0x41,0x6a,0x41,0xac,0x41,0xee,0x42, 0x30,0x42,0x72,0x42,0xb5,0x42,0xf7,0x43,0x3a,0x43,0x7d,0x43,0xc0,0x44,0x03,0x44, 0x47,0x44,0x8a,0x44,0xce,0x45,0x12,0x45,0x55,0x45,0x9a,0x45,0xde,0x46,0x22,0x46, 0x67,0x46,0xab,0x46,0xf0,0x47,0x35,0x47,0x7b,0x47,0xc0,0x48,0x05,0x48,0x4b,0x48, 0x91,0x48,0xd7,0x49,0x1d,0x49,0x63,0x49,0xa9,0x49,0xf0,0x4a,0x37,0x4a,0x7d,0x4a, 0xc4,0x4b,0x0c,0x4b,0x53,0x4b,0x9a,0x4b,0xe2,0x4c,0x2a,0x4c,0x72,0x4c,0xba,0x4d, 0x02,0x4d,0x4a,0x4d,0x93,0x4d,0xdc,0x4e,0x25,0x4e,0x6e,0x4e,0xb7,0x4f,0x00,0x4f, 0x49,0x4f,0x93,0x4f,0xdd,0x50,0x27,0x50,0x71,0x50,0xbb,0x51,0x06,0x51,0x50,0x51, 0x9b,0x51,0xe6,0x52,0x31,0x52,0x7c,0x52,0xc7,0x53,0x13,0x53,0x5f,0x53,0xaa,0x53, 0xf6,0x54,0x42,0x54,0x8f,0x54,0xdb,0x55,0x28,0x55,0x75,0x55,0xc2,0x56,0x0f,0x56, 0x5c,0x56,0xa9,0x56,0xf7,0x57,0x44,0x57,0x92,0x57,0xe0,0x58,0x2f,0x58,0x7d,0x58, 0xcb,0x59,0x1a,0x59,0x69,0x59,0xb8,0x5a,0x07,0x5a,0x56,0x5a,0xa6,0x5a,0xf5,0x5b, 0x45,0x5b,0x95,0x5b,0xe5,0x5c,0x35,0x5c,0x86,0x5c,0xd6,0x5d,0x27,0x5d,0x78,0x5d, 0xc9,0x5e,0x1a,0x5e,0x6c,0x5e,0xbd,0x5f,0x0f,0x5f,0x61,0x5f,0xb3,0x60,0x05,0x60, 0x57,0x60,0xaa,0x60,0xfc,0x61,0x4f,0x61,0xa2,0x61,0xf5,0x62,0x49,0x62,0x9c,0x62, 0xf0,0x63,0x43,0x63,0x97,0x63,0xeb,0x64,0x40,0x64,0x94,0x64,0xe9,0x65,0x3d,0x65, 0x92,0x65,0xe7,0x66,0x3d,0x66,0x92,0x66,0xe8,0x67,0x3d,0x67,0x93,0x67,0xe9,0x68, 0x3f,0x68,0x96,0x68,0xec,0x69,0x43,0x69,0x9a,0x69,0xf1,0x6a,0x48,0x6a,0x9f,0x6a, 0xf7,0x6b,0x4f,0x6b,0xa7,0x6b,0xff,0x6c,0x57,0x6c,0xaf,0x6d,0x08,0x6d,0x60,0x6d, 0xb9,0x6e,0x12,0x6e,0x6b,0x6e,0xc4,0x6f,0x1e,0x6f,0x78,0x6f,0xd1,0x70,0x2b,0x70, 0x86,0x70,0xe0,0x71,0x3a,0x71,0x95,0x71,0xf0,0x72,0x4b,0x72,0xa6,0x73,0x01,0x73, 0x5d,0x73,0xb8,0x74,0x14,0x74,0x70,0x74,0xcc,0x75,0x28,0x75,0x85,0x75,0xe1,0x76, 0x3e,0x76,0x9b,0x76,0xf8,0x77,0x56,0x77,0xb3,0x78,0x11,0x78,0x6e,0x78,0xcc,0x79, 0x2a,0x79,0x89,0x79,0xe7,0x7a,0x46,0x7a,0xa5,0x7b,0x04,0x7b,0x63,0x7b,0xc2,0x7c, 0x21,0x7c,0x81,0x7c,0xe1,0x7d,0x41,0x7d,0xa1,0x7e,0x01,0x7e,0x62,0x7e,0xc2,0x7f, 0x23,0x7f,0x84,0x7f,0xe5,0x80,0x47,0x80,0xa8,0x81,0x0a,0x81,0x6b,0x81,0xcd,0x82, 0x30,0x82,0x92,0x82,0xf4,0x83,0x57,0x83,0xba,0x84,0x1d,0x84,0x80,0x84,0xe3,0x85, 0x47,0x85,0xab,0x86,0x0e,0x86,0x72,0x86,0xd7,0x87,0x3b,0x87,0x9f,0x88,0x04,0x88, 0x69,0x88,0xce,0x89,0x33,0x89,0x99,0x89,0xfe,0x8a,0x64,0x8a,0xca,0x8b,0x30,0x8b, 0x96,0x8b,0xfc,0x8c,0x63,0x8c,0xca,0x8d,0x31,0x8d,0x98,0x8d,0xff,0x8e,0x66,0x8e, 0xce,0x8f,0x36,0x8f,0x9e,0x90,0x06,0x90,0x6e,0x90,0xd6,0x91,0x3f,0x91,0xa8,0x92, 0x11,0x92,0x7a,0x92,0xe3,0x93,0x4d,0x93,0xb6,0x94,0x20,0x94,0x8a,0x94,0xf4,0x95, 0x5f,0x95,0xc9,0x96,0x34,0x96,0x9f,0x97,0x0a,0x97,0x75,0x97,0xe0,0x98,0x4c,0x98, 0xb8,0x99,0x24,0x99,0x90,0x99,0xfc,0x9a,0x68,0x9a,0xd5,0x9b,0x42,0x9b,0xaf,0x9c, 0x1c,0x9c,0x89,0x9c,0xf7,0x9d,0x64,0x9d,0xd2,0x9e,0x40,0x9e,0xae,0x9f,0x1d,0x9f, 0x8b,0x9f,0xfa,0xa0,0x69,0xa0,0xd8,0xa1,0x47,0xa1,0xb6,0xa2,0x26,0xa2,0x96,0xa3, 0x06,0xa3,0x76,0xa3,0xe6,0xa4,0x56,0xa4,0xc7,0xa5,0x38,0xa5,0xa9,0xa6,0x1a,0xa6, 0x8b,0xa6,0xfd,0xa7,0x6e,0xa7,0xe0,0xa8,0x52,0xa8,0xc4,0xa9,0x37,0xa9,0xa9,0xaa, 0x1c,0xaa,0x8f,0xab,0x02,0xab,0x75,0xab,0xe9,0xac,0x5c,0xac,0xd0,0xad,0x44,0xad, 0xb8,0xae,0x2d,0xae,0xa1,0xaf,0x16,0xaf,0x8b,0xb0,0x00,0xb0,0x75,0xb0,0xea,0xb1, 0x60,0xb1,0xd6,0xb2,0x4b,0xb2,0xc2,0xb3,0x38,0xb3,0xae,0xb4,0x25,0xb4,0x9c,0xb5, 0x13,0xb5,0x8a,0xb6,0x01,0xb6,0x79,0xb6,0xf0,0xb7,0x68,0xb7,0xe0,0xb8,0x59,0xb8, 0xd1,0xb9,0x4a,0xb9,0xc2,0xba,0x3b,0xba,0xb5,0xbb,0x2e,0xbb,0xa7,0xbc,0x21,0xbc, 0x9b,0xbd,0x15,0xbd,0x8f,0xbe,0x0a,0xbe,0x84,0xbe,0xff,0xbf,0x7a,0xbf,0xf5,0xc0, 0x70,0xc0,0xec,0xc1,0x67,0xc1,0xe3,0xc2,0x5f,0xc2,0xdb,0xc3,0x58,0xc3,0xd4,0xc4, 0x51,0xc4,0xce,0xc5,0x4b,0xc5,0xc8,0xc6,0x46,0xc6,0xc3,0xc7,0x41,0xc7,0xbf,0xc8, 0x3d,0xc8,0xbc,0xc9,0x3a,0xc9,0xb9,0xca,0x38,0xca,0xb7,0xcb,0x36,0xcb,0xb6,0xcc, 0x35,0xcc,0xb5,0xcd,0x35,0xcd,0xb5,0xce,0x36,0xce,0xb6,0xcf,0x37,0xcf,0xb8,0xd0, 0x39,0xd0,0xba,0xd1,0x3c,0xd1,0xbe,0xd2,0x3f,0xd2,0xc1,0xd3,0x44,0xd3,0xc6,0xd4, 0x49,0xd4,0xcb,0xd5,0x4e,0xd5,0xd1,0xd6,0x55,0xd6,0xd8,0xd7,0x5c,0xd7,0xe0,0xd8, 0x64,0xd8,0xe8,0xd9,0x6c,0xd9,0xf1,0xda,0x76,0xda,0xfb,0xdb,0x80,0xdc,0x05,0xdc, 0x8a,0xdd,0x10,0xdd,0x96,0xde,0x1c,0xde,0xa2,0xdf,0x29,0xdf,0xaf,0xe0,0x36,0xe0, 0xbd,0xe1,0x44,0xe1,0xcc,0xe2,0x53,0xe2,0xdb,0xe3,0x63,0xe3,0xeb,0xe4,0x73,0xe4, 0xfc,0xe5,0x84,0xe6,0x0d,0xe6,0x96,0xe7,0x1f,0xe7,0xa9,0xe8,0x32,0xe8,0xbc,0xe9, 0x46,0xe9,0xd0,0xea,0x5b,0xea,0xe5,0xeb,0x70,0xeb,0xfb,0xec,0x86,0xed,0x11,0xed, 0x9c,0xee,0x28,0xee,0xb4,0xef,0x40,0xef,0xcc,0xf0,0x58,0xf0,0xe5,0xf1,0x72,0xf1, 0xff,0xf2,0x8c,0xf3,0x19,0xf3,0xa7,0xf4,0x34,0xf4,0xc2,0xf5,0x50,0xf5,0xde,0xf6, 0x6d,0xf6,0xfb,0xf7,0x8a,0xf8,0x19,0xf8,0xa8,0xf9,0x38,0xf9,0xc7,0xfa,0x57,0xfa, 0xe7,0xfb,0x77,0xfc,0x07,0xfc,0x98,0xfd,0x29,0xfd,0xba,0xfe,0x4b,0xfe,0xdc,0xff, 0x6d,0xff,0xff,0xff,0xc0,0x00,0x11,0x08,0x00,0xc8,0x00,0xc8,0x03,0x01,0x11,0x00, 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xdb,0x00,0x84,0x00,0x03,0x02,0x02,0x03,0x02, 0x02,0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05, 0x0a,0x07,0x08,0x06,0x08,0x0c,0x0b,0x0d,0x0d,0x0c,0x0b,0x0c,0x0c,0x0e,0x0f,0x14, 0x11,0x0e,0x0f,0x13,0x0f,0x0c,0x0c,0x11,0x18,0x11,0x13,0x15,0x15,0x16,0x17,0x16, 0x0d,0x11,0x19,0x1a,0x18,0x16,0x1a,0x14,0x16,0x16,0x15,0x01,0x03,0x03,0x03,0x05, 0x04,0x05,0x0a,0x05,0x05,0x0a,0x15,0x0e,0x0c,0x0e,0x0e,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xff,0xc4,0x01,0xa2, 0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02, 0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02, 0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71, 0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33, 0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a, 0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53, 0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73, 0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92, 0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9, 0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7, 0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4, 0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa, 0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02, 0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01, 0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22, 0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62, 0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28, 0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a, 0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a, 0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89, 0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7, 0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5, 0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3, 0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa, 0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfd,0x53, 0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0xf3,0x5f,0x89,0xbf, 0x16,0xae,0xbc,0x29,0xe2,0x1d,0x33,0xc2,0xbe,0x0c,0xd2,0x53,0x5e,0xf1,0x66,0xa5, 0x6f,0x25,0xe4,0x76,0xd3,0x4f,0xe4,0xc1,0x6d,0x6e,0x84,0x2b,0x4b,0x2b,0xe0,0x9c, 0x6e,0x38,0x00,0x0c,0x93,0x9e,0x98,0xa0,0x0e,0x42,0x0f,0x8a,0x5f,0x18,0xf4,0x99, 0x65,0x6d,0x6b,0xe1,0xc6,0x81,0xac,0xc2,0x79,0x5f,0xec,0x9d,0x6c,0x44,0xc3,0xf0, 0x91,0x39,0xfc,0xe8,0x02,0x78,0xff,0x00,0x69,0x6d,0x53,0x4f,0x1f,0xf1,0x55,0x7c, 0x27,0xf8,0x87,0xa7,0xe3,0xef,0x3d,0x9c,0x30,0xde,0x20,0xfc,0x52,0x4c,0xfe,0x94, 0x01,0x66,0xdf,0xf6,0xbc,0xf8,0x76,0xaf,0xb3,0x5d,0x9b,0xc4,0x3a,0x03,0xf7,0x1a, 0xa6,0x8d,0x73,0x18,0x1f,0x52,0x10,0x8f,0xd6,0x80,0x3a,0x2d,0x1b,0xf6,0x8f,0xf8, 0x5f,0xaf,0x30,0x5d,0x33,0xc7,0xbe,0x17,0x67,0x3f,0xc1,0x2d,0xea,0x44,0xdf,0x93, 0x90,0x68,0x03,0xb6,0xd2,0xfc,0x45,0xa5,0x6b,0x89,0xbb,0x45,0xd4,0xf4,0xfd,0x41, 0x7d,0x6d,0x6e,0x12,0x41,0xff,0x00,0x8e,0x93,0x40,0x1a,0x34,0x00,0x50,0x01,0x40, 0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00, 0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x1f,0x3e,0xf8,0x58, 0x9f,0x13,0xfe,0xd4,0x1f,0x12,0xb5,0x87,0xf9,0xe1,0xd1,0x2c,0x2c,0x34,0x18,0x18, 0xf6,0x62,0x0c,0xf2,0x01,0xf8,0xb8,0xa0,0x0f,0x5e,0x68,0x80,0x38,0x22,0x80,0x18, 0x20,0x52,0x7a,0x50,0x07,0x9f,0xeb,0x1f,0x15,0x74,0xab,0x0f,0x88,0xd2,0x78,0x42, 0xee,0xc9,0xa7,0x92,0x2b,0x61,0x71,0x34,0xeb,0x2a,0xb1,0x8c,0x79,0x4f,0x29,0x26, 0x32,0x33,0xb0,0x2a,0x0c,0xbe,0x70,0x0c,0x88,0x31,0xcd,0x00,0x73,0x57,0xbe,0x2c, 0xf8,0x63,0xe2,0x0d,0x0e,0xdb,0x54,0xf1,0x9f,0x87,0x34,0xeb,0x6b,0x3b,0xa8,0x45, 0xc2,0x4b,0x7f,0x65,0x6f,0x70,0x0c,0x45,0xe3,0x40,0xc5,0xa3,0x2f,0xb7,0xe6,0x99, 0x06,0x0e,0x08,0xe7,0x20,0x60,0xd0,0x05,0x2f,0x13,0xfc,0x11,0xf8,0x1d,0x69,0x7e, 0x60,0xd6,0x34,0x8d,0x0b,0x4a,0xbc,0x66,0x45,0x06,0xd6,0x49,0x2d,0xdb,0x73,0x29, 0x75,0xc1,0x42,0x3a,0xa8,0x27,0xe9,0x40,0x0e,0xd3,0xbf,0x67,0xff,0x00,0x0a,0xb2, 0xdd,0x3f,0x80,0xbc,0x7d,0xe3,0x7d,0x24,0x5a,0x39,0x8e,0x61,0xa5,0xf8,0x9a,0x49, 0x12,0xdd,0x87,0x50,0xca,0xc5,0x82,0xe3,0x1d,0x0f,0xa5,0x00,0x58,0x9b,0xe1,0x9f, 0xc4,0xad,0x18,0x86,0xf0,0x97,0xc6,0x7f,0x11,0x32,0x8e,0x55,0x35,0x8d,0x3a,0xda, 0xf5,0x48,0xf7,0x24,0x02,0x68,0x01,0x23,0xbd,0xfd,0xa1,0x34,0x51,0xfb,0x9f,0x10, 0xfc,0x37,0xf1,0x12,0x8e,0xd7,0xba,0x6d,0xc5,0xa3,0xb7,0xe3,0x1b,0x11,0x40,0x13, 0xc7,0xf1,0x8f,0xe3,0x66,0x90,0xdf,0xf1,0x3a,0xf8,0x5b,0xe1,0xbd,0x69,0x07,0x56, 0xd1,0xf5,0xf1,0x11,0x3f,0x45,0x95,0x3f,0xad,0x00,0x59,0x8f,0xf6,0xa7,0xd6,0x74, 0xe1,0xff,0x00,0x15,0x6f,0xc1,0xcf,0x89,0x1a,0x7e,0x3e,0xf4,0x96,0x30,0xc3,0x7c, 0x83,0xf1,0x47,0xcf,0xe9,0x40,0x12,0x9f,0xdb,0x63,0xe1,0xa5,0x9c,0x4e,0xde,0x23, 0x93,0xc4,0x9e,0x1c,0x64,0xea,0xba,0xc6,0x8d,0x71,0x00,0x1f,0x56,0xda,0x54,0x7e, 0x26,0x80,0x3d,0xaf,0x40,0xd7,0xb4,0xff,0x00,0x14,0x68,0xd6,0x7a,0xae,0x81,0x77, 0x05,0xf6,0x9d,0x77,0x1a,0xcd,0x05,0xc4,0x0e,0x19,0x24,0x42,0x32,0x08,0x23,0xad, 0x00,0x68,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00, 0x50,0x01,0x40,0x05,0x00,0x7c,0xc1,0xff,0x00,0x05,0x1b,0xf8,0x89,0x77,0xf0,0xf7, 0xf6,0x65,0xd5,0x1b,0x44,0xbe,0xb9,0xd3,0xf5,0x2d,0x56,0xfa,0xda,0xc2,0x09,0xed, 0xa5,0x68,0xa4,0x40,0x5b,0xcc,0x72,0xac,0xa4,0x11,0xf2,0xc6,0xc3,0x8f,0x5a,0x4c, 0x0c,0xcf,0xf8,0x27,0xf6,0x89,0x7f,0x6f,0xfb,0x3d,0xd9,0x6b,0x3e,0x21,0xba,0xbb, 0xbf,0xd5,0x75,0xdb,0xc9,0x6f,0xae,0x2e,0xee,0xe4,0x69,0x25,0x94,0xe0,0x20,0x2c, 0xcc,0x49,0x63,0xf2,0xf5,0x34,0xc0,0xf6,0x5b,0xff,0x00,0x8a,0xbe,0x1c,0xd3,0x35, 0x6b,0xad,0x3f,0x50,0xb8,0xbb,0x86,0x6b,0x69,0x0c,0x52,0x49,0xf6,0x67,0x64,0xdc, 0x3a,0xe1,0x80,0x35,0x4a,0x0d,0xab,0x90,0xe6,0x96,0x85,0xab,0x3f,0x89,0x3e,0x14, 0xbe,0x38,0x83,0x5f,0xd3,0x83,0x1f,0xe1,0x95,0xfc,0xb3,0xff,0x00,0x8f,0x62,0x8e, 0x56,0x3e,0x64,0x52,0xd5,0x7c,0x0d,0xe1,0x5f,0x18,0x8b,0xb9,0x23,0x9e,0x36,0xb8, 0xbc,0x79,0x24,0x96,0xea,0xc6,0xec,0x79,0x8c,0x5e,0x0f,0xb3,0xb6,0x0e,0x4f,0x06, 0x3c,0x0c,0x63,0x19,0x00,0xe3,0x22,0xa7,0x62,0xae,0x55,0xb6,0xf8,0x2f,0xa6,0x43, 0x79,0xa7,0x4f,0x73,0x75,0x77,0x78,0xb6,0x5e,0x5a,0xac,0x53,0x41,0x0a,0xac,0x88, 0x8c,0xcc,0x15,0x82,0x22,0x83,0x92,0x57,0x27,0x19,0x3b,0x17,0x34,0x01,0xcf,0xd9, 0x7c,0x0b,0xbc,0xd0,0x7c,0x43,0x65,0xa8,0x69,0x3a,0xcb,0xdd,0xdb,0xda,0xdc,0xcb, 0x24,0x50,0x5c,0xcd,0x34,0x12,0x43,0x0b,0x2c,0x29,0x1c,0x6b,0x24,0x67,0x2e,0x23, 0x48,0x8a,0x80,0xc0,0x82,0x1b,0x9e,0x99,0xa0,0x0a,0x3a,0x0f,0xc2,0x7d,0x47,0xc1, 0x96,0x3a,0x94,0x72,0xbb,0xeb,0x73,0xde,0x41,0x6c,0xe2,0x64,0x95,0x03,0x43,0x70, 0x92,0x49,0x23,0xaa,0xab,0x80,0xad,0x0f,0x98,0xfb,0xc0,0x6e,0x7e,0x66,0x07,0xa0, 0xc0,0x06,0xde,0x83,0xa2,0x3a,0x5e,0x04,0xf1,0x5e,0x93,0x34,0xba,0x9f,0x9a,0x1e, 0x3b,0xdb,0x40,0x7e,0xcf,0x12,0x00,0x36,0xaa,0x10,0xc3,0xcb,0x51,0x82,0x36,0xe3, 0x9e,0xbc,0xe6,0x80,0x28,0xde,0x78,0x47,0xc4,0x37,0xde,0x1f,0xbd,0xff,0x00,0x84, 0x4f,0x59,0xba,0xd0,0x35,0x29,0x75,0x29,0x1d,0x24,0xbb,0x79,0x26,0x55,0xb6,0x57, 0x21,0x51,0x55,0x89,0x03,0x70,0x00,0xe7,0x1d,0x0d,0x00,0x77,0xe9,0x11,0x58,0x91, 0x64,0x25,0x98,0x28,0x05,0x8f,0xf1,0x1c,0x72,0x68,0x01,0x44,0x63,0x3c,0x0c,0x50, 0x05,0x3d,0x7e,0x1b,0x39,0x34,0x3b,0xff,0x00,0xed,0x98,0xa2,0xb9,0xb1,0x5b,0x79, 0x1a,0x78,0xa6,0x50,0xca,0xc8,0x14,0x92,0x08,0x3e,0xd4,0x01,0xe4,0xdf,0xf0,0x4e, 0x47,0xbb,0x9b,0xf6,0x67,0xb0,0x9a,0xef,0x72,0xd9,0xcd,0xa9,0xde,0xc9,0x61,0x11, 0xe9,0x15,0xbb,0x4a,0x4a,0xaa,0xfb,0x0c,0x9c,0x50,0x07,0xd4,0x14,0x00,0x50,0x01, 0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x1f, 0x9c,0xbf,0xf0,0x56,0xef,0x16,0x1b,0xab,0xaf,0x87,0x3e,0x0d,0xb7,0x62,0x5a,0x46, 0x9f,0x51,0x95,0x07,0x7c,0x95,0x8a,0x3f,0xfd,0xa9,0x49,0x8d,0x1f,0x64,0x7c,0x11, 0xf0,0xda,0x78,0x27,0xe0,0xf7,0x84,0x34,0xa6,0x5d,0x9f,0x63,0xd2,0xe1,0x32,0x02, 0x31,0x86,0x2b,0xb9,0xbf,0x52,0x69,0x88,0xe3,0x74,0x92,0x97,0xd6,0xa6,0xe6,0xe1, 0x72,0xf7,0x32,0x3d,0xc1,0xcf,0x39,0x2e,0xc4,0xff,0x00,0x5a,0xed,0x82,0xb2,0x38, 0xa6,0xee,0xc2,0xef,0x44,0xb2,0xb8,0x04,0x4f,0x6f,0x13,0xff,0x00,0xbc,0xa0,0xd5, 0x10,0x61,0x5e,0xf8,0x33,0x48,0x65,0x66,0x36,0xd1,0xc6,0x54,0x16,0xdd,0x18,0x2a, 0x78,0xfa,0x53,0xb2,0x0b,0xb4,0x67,0xe9,0xb6,0xad,0x1a,0xa3,0xe9,0x1a,0xce,0xb1, 0xa7,0x6f,0x6d,0xb1,0xaa,0xde,0xb0,0xdf,0xf4,0x1b,0x88,0x34,0x3a,0x71,0x7d,0x01, 0x54,0x92,0xea,0x69,0x9f,0x10,0xf8,0xb7,0x4b,0x88,0xb5,0x9f,0x8a,0xaf,0x25,0x45, 0xff,0x00,0x9e,0xe9,0x1c,0xc3,0xf5,0x15,0x3e,0xc2,0x2c,0xaf,0x6f,0x24,0x72,0xd7, 0xbf,0x1b,0x3e,0x23,0xe9,0xf7,0x6c,0x2d,0xa6,0xf0,0xe6,0xa1,0x18,0xfe,0x1b,0x9b, 0x36,0x46,0x23,0xea,0x8c,0x3f,0x95,0x57,0xd4,0xd3,0xea,0x47,0xd7,0x1a,0xe8,0x4d, 0x07,0xed,0x41,0xe2,0xcb,0x1d,0xbf,0xdb,0x5e,0x0a,0xd3,0x2e,0xc7,0x76,0xb1,0xd4, 0x1a,0x33,0xf9,0x32,0x9a,0x4f,0x02,0xfa,0x32,0x96,0x39,0x75,0x46,0x95,0xb7,0xed, 0x7b,0xa5,0xc6,0x40,0xd7,0x3c,0x1b,0xe2,0x7b,0x3f,0x56,0x81,0xa2,0x9c,0x0f,0xd4, 0x1f,0xd2,0xa1,0xe0,0xa6,0x5a,0xc6,0xc3,0xa9,0xaf,0x67,0xfb,0x5c,0x7c,0x36,0xb8, 0x20,0x5f,0xde,0xeb,0x1a,0x5b,0x74,0x3f,0x6c,0xd3,0x65,0x00,0x7e,0x2a,0x1a,0xb3, 0x78,0x4a,0x8b,0xa1,0x6b,0x17,0x4d,0xf5,0x3b,0x0f,0x0c,0x7c,0x67,0xf0,0x1f,0x8c, 0xef,0xa1,0xb2,0xf0,0xbf,0x8a,0xf4,0x7b,0xeb,0xe9,0x8e,0x23,0xb5,0x12,0xec,0x95, 0xcf,0x5c,0x04,0x60,0x09,0x35,0x9c,0xa9,0x4e,0x3b,0xa3,0x58,0xd5,0x84,0xb6,0x66, 0x5f,0xed,0x27,0xe2,0x43,0xe0,0xef,0x80,0x3f,0x10,0x35,0x64,0x6d,0x92,0x41,0xa3, 0x5c,0x2c,0x67,0x3f,0xc6,0xeb,0xb1,0x7f,0x56,0x15,0x99,0xa1,0xc4,0x7e,0xc1,0x5f, 0x1c,0xfc,0x09,0xae,0x7c,0x3a,0xf0,0xef,0xc3,0x1f,0x0c,0x5d,0x5f,0x0f,0x12,0xe8, 0x7a,0x66,0xfb,0xcb,0x7b,0x8b,0x66,0x44,0x62,0xac,0x03,0x95,0x7e,0x8d,0xf3,0x30, 0xf7,0xa5,0x71,0xd8,0xfa,0xce,0x98,0x82,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80, 0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0xfc,0xa2,0xfd,0xad,0x6f,0x5b,0xe2, 0xff,0x00,0xfc,0x14,0x0b,0x4b,0xf0,0xd5,0xb3,0x79,0xd0,0x58,0x4f,0x61,0xa5,0x01, 0x9c,0x81,0x8c,0x48,0xff,0x00,0xf8,0xf4,0xa7,0xf2,0xa5,0xd4,0x7d,0x0f,0xd2,0x5f, 0x19,0xdd,0x2e,0x8d,0xe0,0xdd,0x51,0xed,0xb0,0x9b,0x2d,0x9a,0x18,0x87,0xa1,0x61, 0xb1,0x7f,0x98,0xaa,0x8a,0xbb,0x26,0x4e,0xc8,0xf3,0xfb,0x28,0x7e,0xc9,0x6b,0x14, 0x4b,0xc0,0x44,0x0b,0x8f,0xa0,0xae,0xd3,0x86,0xe3,0xc8,0xdd,0xf7,0xa9,0x88,0xa1, 0x76,0x9e,0x6a,0xbc,0x6d,0x9c,0x30,0x23,0x2a,0x70,0x71,0xf5,0xa6,0x26,0x73,0x97, 0x5e,0x18,0xb3,0x2e,0xb2,0xbc,0xb7,0x05,0x90,0x1d,0xc4,0xb7,0xde,0x3d,0x8f,0x18, 0xc1,0x04,0x03,0xc0,0xed,0x56,0x9b,0x26,0xc7,0x1d,0xaf,0x5b,0x4b,0x72,0x62,0x86, 0x0b,0x88,0x82,0x47,0xdd,0x22,0xd9,0x83,0x91,0xf3,0x00,0x0f,0xde,0xe3,0x92,0x73, 0xd4,0xd6,0xd1,0x56,0x31,0x9b,0xb9,0xc9,0xcf,0xa3,0x6a,0x71,0x5d,0x79,0x90,0x5d, 0x08,0xf7,0x15,0x0e,0x56,0x42,0xdd,0x3b,0xf3,0x8e,0xa4,0x9f,0x97,0xa7,0x35,0xa2, 0x66,0x65,0xab,0x58,0xee,0x61,0x81,0x4e,0xa1,0x29,0x9e,0x46,0x00,0xb0,0x65,0x18, 0x53,0xdf,0x18,0xff,0x00,0x3c,0x53,0x13,0x20,0x9c,0x2c,0x8c,0x77,0x22,0x7f,0xdf, 0x35,0x4b,0x42,0x59,0x46,0x5d,0x3e,0xda,0x64,0x3e,0x64,0x48,0x4f,0xb8,0xaa,0x52, 0x64,0x72,0xa3,0xb6,0xf8,0x11,0xe1,0x1d,0x3e,0xf3,0xe2,0x65,0x85,0xdf,0xd8,0xe1, 0x32,0xd9,0x47,0x25,0xc2,0xbe,0xd1,0x94,0x21,0x76,0x8f,0xfd,0x0a,0xb9,0xb1,0x93, 0x6a,0x9b,0x3a,0xb0,0x70,0xbd,0x44,0xcd,0x4f,0xf8,0x28,0x56,0xbd,0xfd,0x95,0xfb, 0x3a,0xdc,0x69,0xea,0xdb,0x5f,0x58,0xd5,0x6c,0xec,0xb1,0xea,0xa1,0xfc,0xc6,0xfd, 0x23,0x35,0xe3,0x1e,0xc9,0xf1,0xff,0x00,0xfc,0x13,0xdb,0xc4,0x5f,0xd8,0x9f,0xb4, 0xef,0x86,0xde,0x46,0xda,0xba,0xaf,0xda,0xec,0xdb,0x3d,0xf7,0x44,0xcc,0x3f,0x55, 0x15,0x0b,0x72,0x99,0xfb,0x0b,0x56,0x48,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50, 0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x1f,0x95,0xdf,0x00,0x7c,0x1d,0xac, 0xeb,0xbf,0xf0,0x51,0x9f,0x16,0x5c,0xf8,0xce,0xd4,0xc3,0xa8,0x69,0x7a,0x9e,0xa1, 0x7f,0x70,0x8d,0xc8,0x04,0xb1,0x31,0x90,0x7d,0x0a,0xb2,0x60,0xfa,0x11,0x49,0x0d, 0x9f,0xa3,0xde,0x25,0xd1,0x17,0xc4,0xba,0x51,0xb1,0x92,0x76,0xb7,0x53,0x2c,0x72, 0x16,0x55,0xce,0x76,0xb6,0x70,0x7d,0xb2,0x2a,0xa2,0xec,0xee,0x4c,0x95,0xd5,0x8c, 0x59,0x7c,0x0d,0x38,0x1f,0xb9,0xba,0x85,0xfd,0x99,0x48,0xff,0x00,0x1a,0xdd,0x56, 0xf2,0x30,0x74,0x3c,0xca,0x73,0x78,0x37,0x52,0x8c,0x1f,0x2d,0x22,0x97,0xfd,0xd9, 0x07,0xf5,0xaa,0x55,0xa2,0xc8,0x74,0x64,0x63,0x5e,0x78,0x77,0x53,0xb6,0xcb,0x4b, 0x65,0x71,0x8f,0x55,0x5d,0xdf,0xca,0xad,0x54,0x8b,0xea,0x4b,0xa7,0x25,0xd0,0xe2, 0x7c,0x41,0x35,0xdc,0x65,0xe3,0x30,0x5c,0x47,0x8f,0xef,0x21,0x15,0xbc,0x1a,0x7d, 0x4c,0x26,0x9a,0xe8,0x71,0x72,0x4a,0x09,0x6c,0x9e,0x73,0xeb,0x5d,0x07,0x35,0xca, 0x73,0x12,0xd9,0x20,0xd3,0x02,0x9c,0xae,0xc0,0x60,0x74,0xa6,0x84,0xca,0x32,0xb9, 0x07,0x93,0xd7,0xb5,0x51,0x2d,0x95,0xa4,0x9b,0x27,0x9e,0x99,0xaa,0x48,0x96,0xcf, 0x69,0xfd,0x9b,0x34,0xe5,0x6d,0x47,0x5c,0xbf,0xc7,0xfa,0xb8,0xa3,0x80,0x13,0xea, 0xc4,0x93,0xff,0x00,0xa0,0x8a,0xf3,0xf1,0xf2,0xd1,0x23,0xd0,0xc0,0x47,0x56,0xcf, 0x0f,0xff,0x00,0x82,0x9e,0xf8,0x8f,0xca,0xd2,0xfc,0x07,0xa1,0xc6,0xdd,0x65,0xbd, 0xd4,0xe4,0x50,0x7f,0xb9,0x18,0x8d,0x3f,0x59,0x0d,0x79,0x8c,0xf4,0x8f,0x94,0x7f, 0x66,0x09,0xae,0xac,0x3e,0x3d,0x7c,0x33,0x7d,0x2e,0x33,0x2d,0xc8,0xd7,0x2d,0x70, 0x80,0xe3,0x70,0x69,0x00,0x6f,0xfc,0x77,0x35,0x28,0x6c,0xfd,0xc0,0xab,0x10,0x50, 0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40, 0x1f,0x35,0xf8,0x3e,0xc2,0xd3,0x5c,0xfd,0xaf,0xfe,0x29,0xeb,0xd6,0x76,0xf0,0xa1, 0xd2,0xf4,0xcd,0x3b,0x46,0x79,0x91,0x70,0x64,0x95,0x97,0xcd,0x62,0x4f,0x72,0x14, 0xaa,0xfd,0x14,0x50,0x07,0xb7,0x93,0x9a,0x00,0x03,0x10,0x38,0xa0,0x05,0x32,0xe0, 0x72,0x68,0x02,0x95,0xcd,0xe1,0x66,0xc2,0x9a,0x00,0x80,0xcd,0x91,0x87,0x00,0x8f, 0x43,0x40,0x15,0x2e,0xb4,0x8d,0x36,0xf8,0x1f,0xb6,0x69,0xf6,0x53,0x67,0xa9,0x78, 0x54,0x9f,0xe5,0x54,0xa6,0xd6,0xcc,0x97,0x08,0xbd,0xd1,0x8f,0x79,0xf0,0xdf,0xc2, 0xf7,0xc3,0xf7,0xda,0x4c,0x11,0x93,0xde,0x26,0x64,0x3f,0xa1,0xad,0x16,0x22,0xa2, 0xea,0x66,0xf0,0xf4,0xdf,0x43,0x12,0xf7,0xe0,0x5f,0x86,0xae,0xc1,0x36,0xd2,0x6a, 0x56,0xa4,0xff,0x00,0x72,0x60,0xc3,0xf5,0x15,0xa2,0xc6,0x4d,0x19,0xbc,0x1c,0x19, 0x81,0x7d,0xfb,0x39,0x41,0x26,0x7f,0xb3,0x75,0xe9,0x53,0xda,0x7b,0x70,0xdf,0xa8, 0x22,0xb5,0x58,0xe7,0xd5,0x19,0x3c,0x0a,0xe8,0xce,0x7e,0xfb,0xf6,0x71,0xf1,0x0c, 0x24,0xb5,0x95,0xf6,0x93,0x76,0x3b,0x06,0xde,0x84,0xfe,0x62,0xb5,0x58,0xe8,0xbd, 0xd1,0x8b,0xc0,0xcf,0xa3,0x3d,0x2f,0xe0,0xf7,0x82,0xaf,0xbc,0x13,0xa0,0x5e,0x41, 0xad,0xc7,0x0c,0x77,0x97,0x17,0x26,0x42,0x22,0x7d,0xe3,0x60,0x50,0x07,0x3f,0x9d, 0x72,0x62,0x6a,0xaa,0x92,0xba,0xec,0x76,0x61,0x69,0x3a,0x71,0xb3,0xee,0x7c,0x0b, 0xff,0x00,0x05,0x23,0xf1,0x1f,0xf6,0x97,0xc6,0xd8,0x74,0xd8,0xdf,0x29,0xa5,0xe8, 0xb6,0xf0,0x6d,0xf4,0x79,0xa5,0x69,0x1b,0xff,0x00,0x1d,0x45,0xae,0x49,0x6c,0x75, 0x23,0x3b,0xfe,0x09,0xf7,0xe0,0xff,0x00,0xf8,0x49,0xff,0x00,0x69,0xcd,0x06,0x59, 0x23,0xdf,0x0e,0x8b,0x69,0x3e,0xa0,0xfc,0x70,0x19,0x53,0xcb,0x5f,0xfc,0x7a,0x41, 0x49,0x03,0x3f,0x5d,0x6a,0xc4,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50, 0x01,0x40,0x05,0x00,0x14,0x00,0x84,0x85,0x04,0x93,0x80,0x3b,0x9a,0x00,0xf9,0xa7, 0xf6,0x55,0x97,0xfe,0x12,0x0d,0x1f,0xc7,0x1e,0x30,0x71,0xcf,0x89,0xbc,0x53,0x7d, 0x79,0x1b,0x1e,0xf0,0xa3,0xf9,0x71,0x7e,0x1b,0x56,0x80,0x3d,0xd4,0x40,0xe4,0x64, 0x2b,0x60,0xf4,0x38,0xe2,0x80,0x30,0x3c,0x25,0xa8,0x6a,0x7a,0x8e,0x93,0x2c,0xde, 0x22,0x8e,0xde,0x2b,0x91,0x79,0x71,0x12,0x2c,0x11,0xb4,0x6a,0x62,0x49,0x19,0x11, 0xb0,0xc4,0x9e,0x42,0xe7,0xf1,0xa0,0x0d,0x0b,0x99,0xb6,0x8d,0xab,0x40,0x1c,0xc7, 0x8b,0xfc,0x63,0x61,0xe0,0x8d,0x34,0x5f,0xeb,0xa9,0x7c,0x6d,0x72,0xde,0x64,0x96, 0xd6,0xed,0x28,0x89,0x54,0x65,0x9d,0xf1,0xf7,0x54,0x0f,0xc4,0xf4,0x00,0x9e,0x28, 0x03,0x68,0x10,0xca,0x19,0x79,0x04,0x64,0x1f,0x6a,0x00,0x70,0xc9,0xa0,0x05,0x0a, 0x40,0xc9,0x07,0x07,0xbd,0x00,0x28,0x6c,0x74,0xa0,0x07,0x2b,0x1a,0x00,0x90,0x3b, 0x76,0x76,0x14,0x00,0xe5,0x25,0x8f,0x27,0x27,0xd4,0xd0,0x07,0xe4,0x8f,0xed,0x90, 0x66,0xf1,0x07,0xc4,0x3f,0x88,0xbe,0x33,0x8e,0x71,0xe4,0x5a,0x78,0xa2,0x1d,0x0e, 0x14,0x23,0x22,0x4f,0x2a,0xdc,0x86,0xff,0x00,0xbe,0x4a,0x7f,0xe3,0xd4,0x98,0xd1, 0xef,0x9f,0xf0,0x4b,0xdb,0x03,0x6f,0xaa,0x78,0xd7,0xc5,0x2e,0x80,0x86,0x8e,0xdf, 0x4d,0x46,0x23,0xfb,0xc4,0xc8,0xe0,0x7e,0x49,0x4a,0x20,0xcf,0xd2,0x18,0x66,0x59, 0xe2,0x57,0x8c,0xe4,0x30,0xaa,0x10,0xfa,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00, 0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0xe3,0x3e,0x34,0x78,0xb4,0x78,0x13,0xe1,0x1f, 0x8c,0xbc,0x40,0xcf,0xb1,0xb4,0xed,0x26,0xe6,0x78,0xcf,0xfd,0x34,0x11,0xb6,0xc1, 0xff,0x00,0x7d,0x62,0x80,0x3c,0xef,0xf6,0x7b,0xf0,0x73,0x78,0x6f,0xf6,0x7e,0xf0, 0x96,0x86,0xee,0xf0,0x4e,0xda,0x3a,0xf9,0x92,0x2f,0xde,0x59,0x25,0x52,0xc5,0xbe, 0xa0,0xb7,0xe9,0x40,0x1f,0x3a,0x8f,0xd8,0x6f,0xe2,0x0f,0x84,0x9d,0x8f,0xc3,0x7f, 0x8d,0x1e,0x25,0xb1,0x50,0x49,0x58,0xe5,0x96,0x55,0x1f,0x8e,0xd7,0xc7,0xe9,0x40, 0x0e,0xb6,0xf0,0x27,0xed,0x5d,0xe1,0x0d,0x46,0xd2,0x28,0xbe,0x24,0x5a,0xeb,0x5a, 0x7f,0x9a,0x82,0x53,0x72,0x12,0x46,0x11,0xee,0x1b,0x8f,0xef,0x23,0x27,0xa6,0x7b, 0xd0,0x07,0xb8,0x7e,0xd1,0x3e,0x3f,0xf1,0xd7,0x80,0x3c,0x1f,0xa7,0xea,0x3f,0x08, 0x7c,0x37,0x0f,0x89,0xb5,0x29,0x2e,0xd5,0x2e,0x60,0xb8,0x42,0xc1,0x20,0xd8,0xc4, 0xb6,0x15,0x81,0xc9,0x6d,0xb4,0x01,0xf2,0xe7,0x89,0x3f,0x6b,0x8f,0x15,0x6a,0x57, 0x9a,0x54,0xff,0x00,0x16,0x3e,0x0a,0x6a,0xbe,0x6e,0x95,0x37,0x9f,0x6f,0x2e,0x9d, 0x7d,0x73,0x6e,0xa8,0xfc,0x64,0x95,0x2a,0xca,0xdd,0x3f,0x8b,0x38,0xed,0x8c,0xd0, 0x07,0xbf,0xfc,0x01,0xfd,0xae,0x74,0x9f,0xda,0x03,0xc4,0xd7,0x9a,0x1e,0x9b,0xe1, 0x9d,0x6f,0x43,0xbd,0xb4,0xb4,0x6b,0xb9,0x5e,0xf2,0x44,0x74,0x00,0x32,0xae,0x38, 0xc1,0xc9,0x2c,0x3b,0x50,0x07,0x49,0xe2,0xff,0x00,0xda,0x93,0xe1,0x87,0x80,0x3c, 0x61,0x77,0xe1,0x8f,0x19,0x78,0x9e,0x2d,0x2b,0x58,0xb4,0xd8,0x66,0x8e,0x6b,0x69, 0x59,0x17,0x72,0x86,0x1f,0x3a,0xa9,0x1d,0x08,0xa0,0x0e,0x77,0xc1,0x7f,0x12,0x7c, 0x13,0xaf,0x7c,0x56,0xbe,0xf1,0x26,0x9d,0xf1,0x07,0xc1,0x72,0xd9,0x4d,0x69,0x25, 0xba,0x5b,0xc1,0xaa,0x15,0x79,0xcb,0x34,0x65,0x19,0xe3,0x90,0x0d,0xa5,0x55,0x0a, 0xe0,0x12,0x39,0xc8,0x0a,0x4b,0x64,0x03,0xdc,0x6c,0xaf,0xad,0x75,0x4b,0x75,0xb8, 0xd3,0x2e,0x6d,0xef,0x2d,0xdf,0x3b,0x66,0xb7,0x90,0x48,0xad,0xf4,0x23,0x22,0x80, 0x1b,0xac,0x5d,0x49,0xa4,0xe9,0x37,0x57,0x89,0x6f,0x24,0xed,0x0a,0x17,0x11,0x0c, 0x8d,0xdf,0xa7,0x4e,0xe7,0xda,0xb3,0xab,0x3e,0x48,0x39,0x25,0x7b,0x1d,0x18,0x4a, 0x0a,0xbd,0x68,0xd2,0x6e,0xd7,0x7b,0x91,0x68,0x1a,0x93,0xea,0xf6,0x2d,0x34,0x86, 0xd5,0xb6,0xc8,0xc8,0x24,0xb5,0x72,0xf1,0xc8,0x07,0x70,0x48,0x07,0xdb,0xf0,0xa5, 0x46,0xa3,0x9c,0x6e,0xfb,0xf4,0x34,0xc6,0xe1,0x96,0x1e,0x6a,0x0a,0xfb,0x5e,0xcd, 0x59,0xaf,0x5b,0x5c,0xd1,0x9a,0xe1,0x2c,0x6d,0xa6,0xb8,0x9c,0xe2,0x38,0x51,0xa4, 0x62,0x7b,0x05,0x19,0x3f,0xca,0xb5,0x38,0xcf,0xc9,0x3f,0x1f,0xf8,0x23,0xc6,0x9f, 0x13,0xfe,0x0f,0xe8,0x53,0xf8,0x2f,0xc3,0x1a,0xde,0xbc,0xfa,0xe6,0xbf,0xac,0x6b, 0x97,0x13,0x59,0x43,0xbd,0x15,0x9e,0x44,0x48,0xc3,0x37,0x41,0xc0,0x6a,0x4c,0x68, 0xfb,0x63,0xf6,0x18,0xf8,0x57,0xac,0xfc,0x2b,0xf8,0x15,0x67,0x61,0xe3,0x4d,0x36, 0x6d,0x27,0x5e,0xbd,0xbd,0x9a,0xf2,0xea,0xd2,0x7d,0xa5,0xe3,0x1c,0x22,0x03,0x82, 0x47,0xdd,0x40,0x7f,0x1a,0x10,0x99,0xf5,0x8f,0x86,0xee,0x7c,0xcb,0x63,0x19,0x3f, 0x76,0x98,0x1b,0x34,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05, 0x00,0x14,0x01,0xf3,0xf7,0xed,0xbd,0xa8,0xb9,0xf8,0x2f,0x6f,0xe1,0xeb,0x53,0xfe, 0x91,0xe2,0x7d,0x6f,0x4f,0xd1,0xd5,0x41,0xe5,0x95,0xa6,0x0e,0xe3,0xfe,0xf9,0x8d, 0x87,0xe3,0x40,0x1e,0xa3,0x61,0x68,0x96,0x16,0x70,0x5b,0x40,0x00,0x8e,0x08,0xd6, 0x25,0x03,0xd1,0x46,0x07,0xf2,0xa0,0x0e,0x5b,0xc7,0x1f,0x11,0x74,0x6f,0x02,0xdd, 0xe9,0x96,0x9a,0xc5,0xc6,0x75,0x0d,0x52,0xe2,0x38,0x2d,0x6d,0x22,0x2b,0xe6,0x3e, 0xf7,0x54,0xdf,0x82,0x46,0x14,0x17,0x19,0x3e,0xfc,0x64,0xd0,0x05,0xd9,0xe4,0x77, 0x72,0x5a,0x80,0x2c,0x39,0xdf,0x6d,0x86,0x19,0xe3,0xa5,0x00,0x66,0x95,0xb0,0xbc, 0x96,0x48,0x48,0xb4,0x96,0x48,0xfe,0xfc,0x60,0xa9,0x64,0xfa,0x8e,0xa2,0x80,0x13, 0x4b,0xd1,0xb4,0xed,0x3a,0xf9,0xae,0x2c,0x6c,0xed,0xe0,0x99,0xc6,0x1a,0x48,0xd0, 0x02,0xc3,0xd0,0x9a,0x00,0xe1,0xbe,0x22,0x7e,0xce,0x1f,0x0f,0x3e,0x24,0xeb,0x33, 0xea,0x9e,0x2d,0xf0,0xe5,0x95,0xd6,0xa3,0x70,0x07,0x9b,0x76,0x01,0x57,0x7c,0x0c, 0x0c,0x90,0x46,0x78,0x00,0x50,0x07,0x95,0x6b,0x9f,0xf0,0x4f,0x6f,0x86,0x1a,0x99, 0x66,0xd3,0xa3,0xd4,0xf4,0xd7,0x3d,0x3c,0x8b,0x92,0x40,0xfc,0x1b,0x34,0x01,0xec, 0x7f,0x0c,0xfe,0x0f,0x5a,0xfc,0x2d,0xf8,0x41,0x3f,0x82,0x7c,0x25,0x7f,0x72,0xb9, 0x8a,0xe4,0x47,0x7f,0x28,0x06,0x45,0x96,0x50,0x7e,0x7e,0x31,0xd3,0x23,0x1f,0x4a, 0x00,0xf9,0x7a,0x4f,0xd9,0x6b,0xe3,0xff,0x00,0x85,0xd7,0xfe,0x28,0xff,0x00,0x8b, 0x7a,0xa4,0xca,0x9d,0x16,0x4b,0xc9,0xd7,0x3f,0x81,0x2c,0x28,0x02,0xde,0x89,0x1f, 0xed,0x77,0xe1,0x6d,0x52,0xca,0xd6,0xeb,0x56,0xb5,0xd7,0x2c,0x9a,0x64,0x47,0x92, 0x64,0xb7,0x97,0x09,0xb8,0x64,0x92,0xca,0x1b,0x18,0xeb,0xcd,0x00,0x7d,0x4f,0xfb, 0x41,0x78,0x97,0xfe,0x10,0xdf,0x81,0x3e,0x3a,0xd5,0xc4,0x80,0x49,0x6d,0xa2,0xdc, 0x6d,0x71,0xc6,0x5d,0x90,0xa8,0xc7,0xfc,0x09,0x85,0x00,0x70,0xff,0x00,0xb3,0x47, 0x85,0x5b,0x44,0xf8,0x09,0xe0,0x2b,0x19,0xd5,0x41,0x8f,0x4d,0x49,0x08,0x03,0xbb, 0x92,0xdf,0xd6,0x80,0x3d,0x7a,0x39,0x3c,0xb6,0xe3,0xa0,0x18,0xa0,0x0d,0xcf,0x0b, 0x5d,0x7e,0xf9,0x81,0x3d,0xe8,0x03,0xae,0x07,0x22,0x80,0x16,0x80,0x0a,0x00,0x28, 0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x0f,0x9b,0x3f,0x68,0x69,0x7f,0xe1, 0x28,0xfd,0xa2,0x7e,0x0b,0x78,0x55,0x7e,0x78,0xac,0xe5,0xbd,0xf1,0x0d,0xca,0x7a, 0x08,0x90,0x24,0x64,0xfe,0x2e,0xff,0x00,0x95,0x00,0x3f,0xf6,0x94,0xd6,0x3e,0x2e, 0x68,0x9a,0x46,0x87,0x73,0xfb,0x3e,0x5a,0xe9,0xb7,0x73,0xa4,0xd2,0x36,0xa4,0x97, 0x89,0x1b,0xee,0x8f,0x68,0xd8,0x00,0x72,0x3b,0xe7,0x90,0x73,0x40,0x1f,0x35,0xeb, 0x5f,0xb4,0x7f,0xc7,0x2b,0x63,0x6d,0xff,0x00,0x0b,0x37,0xe0,0xde,0x8d,0xaf,0x25, 0x9c,0xe9,0x71,0x1b,0xa5,0xa4,0x80,0xc7,0x22,0x1c,0xab,0x29,0x56,0x60,0x08,0x3c, 0x83,0x40,0x1e,0xd9,0xfb,0x3a,0x7e,0xd1,0x3a,0xb7,0xc7,0x3d,0x4b,0x5a,0xb4,0xd7, 0x7c,0x19,0x73,0xe1,0x56,0xd3,0x22,0x8d,0xd9,0xe7,0x99,0x9f,0xcd,0x77,0x24,0x6d, 0x01,0x91,0x7b,0x02,0x7b,0xf4,0xa0,0x08,0xfc,0x57,0xfb,0x6d,0x7c,0x31,0xf0,0x3f, 0x8d,0x35,0x8f,0x0b,0x78,0xa2,0xe7,0x5a,0xb4,0xbf,0xd2,0xe7,0x36,0xd3,0x4a,0x96, 0x46,0x48,0x99,0x80,0x04,0xed,0x2a,0x73,0xc6,0x71,0xd3,0xb5,0x00,0x73,0x9f,0x0d, 0x7e,0x38,0xfc,0x25,0xb1,0xf1,0x8e,0xbd,0xad,0xc7,0xf1,0x17,0xc3,0xe0,0xea,0xc4, 0xbf,0x93,0x2c,0x33,0x5b,0xbb,0x16,0x90,0xbe,0xf7,0x69,0x49,0x01,0x80,0x21,0x30, 0x9b,0x57,0x0b,0x9c,0x67,0xa0,0x07,0xd1,0x1e,0x1f,0xd6,0xb4,0xdf,0x12,0x69,0x76, 0xfa,0xaf,0x87,0xef,0xad,0x75,0x0d,0x36,0xe0,0x16,0x8a,0xee,0xde,0x40,0xd1,0xb8, 0x07,0x04,0x82,0x3d,0xc1,0xa0,0x0a,0xbf,0x11,0xb5,0x2d,0x5b,0x42,0xf0,0x5e,0xa5, 0xa8,0x78,0x62,0xcf,0xed,0xba,0x9c,0x28,0xbe,0x4c,0x6c,0x8c,0xea,0x32,0xca,0x19, 0xc8,0x50,0x49,0x0a,0xa4,0xb1,0x00,0x12,0x76,0xd0,0x05,0x7f,0x87,0xfa,0x8e,0xa7, 0xad,0xf8,0x42,0xc2,0xf7,0xc4,0x71,0x98,0xb5,0x09,0x7c,0xcd,0xe0,0xc2,0x62,0xdc, 0xa1,0xd8,0x2b,0x05,0x3c,0x80,0xca,0x01,0x19,0x00,0xe0,0xf4,0x1d,0x00,0x07,0x4f, 0x01,0xf2,0x95,0x8b,0x9c,0x28,0xe4,0x93,0xda,0xa6,0x52,0x51,0x4e,0x52,0xd9,0x0d, 0x2b,0xbb,0x22,0x94,0x3a,0xb4,0x33,0x5c,0x24,0x60,0x4d,0x1b,0xc9,0xca,0x2c,0xb1, 0x95,0xdc,0x30,0x4e,0x47,0xb6,0x05,0x79,0xf8,0x7c,0xd6,0x8d,0x67,0x18,0xa4,0xd3, 0x96,0xd7,0x4d,0x5d,0x5a,0xf7,0x5e,0x56,0xff,0x00,0x82,0x6d,0x3c,0x3c,0xa1,0x77, 0xbd,0xbb,0x13,0x59,0x6a,0x50,0x6a,0x31,0x97,0xb2,0x99,0x26,0x41,0xc1,0x2b,0xd8, 0xe3,0x35,0xbe,0x13,0x1d,0x43,0x19,0x17,0x3c,0x3c,0xd4,0x97,0x97,0xdf,0xf9,0x11, 0x52,0x94,0xe9,0xbb,0x4d,0x58,0xf0,0x9f,0xdb,0xc7,0x58,0x7b,0x5f,0xd9,0xee,0x7d, 0x2a,0xdc,0x9f,0x3b,0x5c,0xd4,0xec,0xb4,0xd5,0x51,0xfc,0x41,0xa4,0x0c,0xc3,0xf2, 0x4a,0xeb,0x33,0x3d,0xeb,0x45,0xf0,0x6b,0x78,0x7f,0xc1,0xba,0x25,0xa5,0xb0,0xe2, 0xd6,0xc6,0x08,0x4a,0xfa,0x15,0x40,0x0f,0xf2,0xa0,0x0a,0x4d,0x95,0x62,0x1f,0x83, 0x40,0x1a,0x5e,0x1e,0x97,0xcb,0xb8,0xfa,0xd0,0x07,0x7b,0x0b,0xef,0x8d,0x48,0xa0, 0x07,0xd0,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x01,0xf3, 0x0e,0x9d,0x3f,0xfc,0x25,0xbf,0xb6,0x8f,0x8d,0xf5,0x06,0x3b,0xe0,0xf0,0xbe,0x81, 0x67,0xa3,0xc4,0x7b,0x2c,0x92,0x93,0x33,0xe3,0xdf,0x0e,0x28,0x03,0xd7,0xf5,0x3b, 0x92,0xf1,0xec,0x4e,0xd4,0x01,0xcc,0x69,0xbe,0x23,0xd1,0xf5,0xcb,0x9b,0xab,0x5d, 0x2b,0x50,0xd3,0xef,0xae,0x6d,0x4e,0xdb,0x88,0x21,0x95,0x5d,0xe1,0x39,0x23,0xe6, 0x51,0xc8,0xe4,0x11,0xcf,0xa5,0x00,0x69,0x59,0x45,0x0c,0x37,0x3b,0xa2,0x8d,0x11, 0x8f,0x52,0xa3,0x14,0x01,0xc9,0x78,0xbb,0xe0,0xbf,0x81,0xbc,0x65,0x7d,0x35,0xcf, 0x89,0x7c,0x31,0xa3,0xde,0xdc,0xcc,0x77,0x49,0x3c,0x96,0xeb,0xbd,0xcf,0xa9,0x6e, 0xa4,0xd0,0x07,0x9a,0xeb,0xbf,0xb1,0x07,0xc2,0x6d,0x6b,0x71,0x4d,0x0a,0x4b,0x07, 0x3f,0xc5,0x69,0x70,0xe9,0x8f,0xc3,0x38,0xa0,0x0f,0x46,0x3f,0x08,0x6c,0x20,0xf8, 0x25,0x73,0xf0,0xeb,0xc3,0xf7,0x97,0x7a,0x76,0x9e,0xda,0x7c,0x9a,0x74,0x57,0x4a, 0x77,0x4b,0x1a,0x36,0x72,0xd9,0xee,0x4e,0x4f,0xe7,0x40,0x1f,0x2e,0x4d,0xfb,0x0d, 0x7c,0x43,0xf0,0xfb,0x07,0xf0,0x3f,0xc5,0x3d,0x56,0x00,0x9f,0x71,0x1a,0x69,0xa3, 0xc7,0xfd,0xf2,0xe4,0x7e,0x94,0x01,0xaf,0xe0,0x9f,0x86,0x3f,0xb4,0xc7,0x85,0x7c, 0x5f,0xa2,0x43,0xaa,0x78,0xea,0x4d,0x4b,0x40,0x5b,0xc8,0xbe,0xd8,0xd2,0x5c,0x89, 0x48,0x83,0x70,0xdf,0xc3,0xa9,0x27,0xe5,0xcf,0x19,0xa0,0x0f,0x68,0xfd,0xa6,0x7e, 0x27,0xfc,0x42,0xf8,0x69,0x67,0xa2,0x4f,0xf0,0x83,0xc2,0xd0,0xf8,0x8c,0x5c,0x49, 0x2f,0xdb,0xd6,0x68,0x5a,0x51,0x12,0x00,0x36,0x00,0x15,0x81,0x04,0x92,0x79,0xe7, 0xa5,0x26,0xae,0xac,0xc0,0xf9,0xcc,0x7e,0xdc,0xbe,0x30,0xd0,0x25,0x43,0xe3,0x2f, 0x84,0xb2,0xdb,0x18,0xf2,0x0c,0x96,0x97,0x17,0x16,0xe4,0x02,0x30,0x47,0xcc,0xac, 0x31,0x8e,0xd5,0xe4,0xff,0x00,0x61,0xe1,0x15,0x9c,0x22,0xe3,0x6b,0xda,0xcd,0xad, 0xf4,0xb6,0xfb,0x5b,0xa6,0xcb,0xa1,0xd3,0xf5,0xba,0x8e,0xf7,0x77,0xf9,0x1e,0xed, 0xfb,0x31,0x7e,0xd3,0x3a,0x1f,0xc6,0xfd,0x5b,0x53,0xd1,0x7c,0x3f,0xe1,0x9d,0x53, 0x41,0x9e,0xce,0xdf,0xed,0xb2,0xfd,0xa2,0x64,0x95,0x00,0xca,0xa6,0x01,0x00,0x11, 0xc9,0x18,0xc8,0xf5,0xad,0xf2,0xdc,0xae,0x86,0x5d,0x07,0x4f,0x0e,0xad,0x16,0xef, 0x6f,0x92,0x5f,0xa1,0x15,0xab,0xce,0xb3,0xe6,0x9b,0xd4,0xcb,0xfd,0xac,0xa2,0x3e, 0x2a,0xf8,0xa9,0xf0,0x37,0xc1,0x71,0x7c,0xc2,0xf7,0x5e,0x6b,0xf9,0x93,0xd5,0x22, 0x01,0x46,0x7f,0x17,0x35,0xe8,0x18,0x9f,0x68,0x34,0x6a,0xd1,0xec,0x20,0x6d,0xc6, 0x31,0x40,0x1c,0x47,0x88,0x74,0xf1,0x6d,0x70,0x5a,0x3e,0x01,0x34,0x01,0x4f,0x4b, 0x7d,0x97,0x03,0x1e,0xb4,0x01,0xdd,0xe9,0xd2,0x6f,0x84,0x03,0x40,0x16,0xe8,0x00, 0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x02,0x71,0xd6,0x80,0x3e,0x4b, 0xfd,0x98,0xee,0xff,0x00,0xe1,0x22,0xba,0xf8,0x9b,0xe3,0x33,0xf3,0x1f,0x11,0x78, 0xae,0xed,0xa1,0x7e,0xb9,0x82,0x16,0xf2,0xa3,0xfc,0x30,0x05,0x00,0x71,0x9a,0xb7, 0xfc,0x14,0x13,0xc0,0x5a,0x0f,0x89,0xf5,0x6d,0x17,0xc4,0x5a,0x2f,0x8a,0x6d,0x9e, 0xc2,0xf2,0x5b,0x53,0x75,0x14,0x31,0xca,0x92,0x6c,0x62,0xbb,0x80,0xdc,0x08,0x07, 0x1d,0x31,0x40,0x13,0xf8,0x27,0xf6,0xb9,0xf8,0x2a,0x2f,0x35,0x2b,0xd9,0x3c,0x5b, 0x34,0x5a,0x9e,0xa5,0x39,0x96,0x6b,0x8d,0x4f,0x4f,0x96,0x26,0x08,0x38,0x8e,0x20, 0x55,0x48,0x08,0x8b,0xc0,0x19,0xeb,0x93,0xd4,0x9a,0x00,0xf7,0xed,0x3b,0xc4,0x3a, 0x5d,0xee,0x87,0x6d,0xae,0xc1,0x7f,0x6c,0xba,0x45,0xc4,0x29,0x71,0x1d,0xec,0xae, 0x23,0x8c,0xc6,0xd8,0xda,0xc4,0xb6,0x31,0x9c,0x8e,0xb4,0x01,0x8d,0xf1,0x2b,0x57, 0xd5,0xbf,0xe1,0x0f,0x92,0xe3,0xe1,0xeb,0x0b,0xcb,0xf7,0x9a,0x14,0x13,0x5a,0x28, 0xb8,0x31,0x44,0x5c,0x6f,0x70,0xaa,0x18,0xb7,0xcb,0x91,0xc2,0xb1,0x19,0xce,0x0e, 0x28,0x03,0x47,0xc1,0xad,0xab,0x4f,0xe1,0x0d,0x1a,0x5f,0x16,0x21,0x8f,0x59,0x7b, 0x48,0xda,0xf1,0x0a,0x04,0x2b,0x29,0x5f,0x98,0x10,0x38,0x1c,0xfa,0x7e,0x9d,0x28, 0x03,0xa0,0xb6,0x52,0x14,0x83,0x40,0x1c,0x7f,0x89,0x3e,0x26,0x69,0x5e,0x14,0xf1, 0x56,0x99,0xa0,0xea,0x8b,0x72,0x2e,0xaf,0xda,0x25,0x49,0x17,0x60,0x45,0x32,0xc8, 0x63,0x8c,0x60,0xb0,0x66,0xcb,0x0c,0x1d,0xa1,0xb6,0x8c,0x13,0x80,0x68,0x03,0xad, 0xdc,0x41,0xc5,0x00,0x59,0x90,0x09,0x21,0xf9,0xc0,0x6f,0x62,0x28,0x02,0x9c,0xda, 0x6d,0x95,0xd8,0x65,0xb8,0xb6,0x82,0x5c,0x70,0x43,0x28,0x38,0xfa,0xd0,0x04,0x7a, 0x27,0x86,0xb4,0x8d,0x16,0xf6,0x5b,0x8d,0x23,0x4e,0xb4,0xb3,0x9e,0x60,0x16,0x49, 0x21,0x8c,0x2b,0x38,0x1c,0x80,0x48,0xeb,0x8c,0x9a,0x00,0xf0,0xe9,0xad,0x4f,0x8d, 0xff,0x00,0xe0,0xa0,0x3e,0x1f,0x80,0x61,0xed,0xfc,0x27,0xe1,0xa3,0x74,0xf9,0xe8, 0xb2,0x4c,0xed,0x8f,0xc7,0x01,0x68,0x03,0xeb,0xe7,0xb8,0x00,0xe2,0x80,0x39,0xff, 0x00,0x10,0x81,0x2a,0xe4,0x50,0x07,0x3b,0x66,0x76,0x5c,0x8f,0xad,0x00,0x76,0xda, 0x4c,0x99,0x50,0x3d,0x68,0x03,0x4e,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a, 0x00,0x28,0x03,0x93,0xf8,0xb3,0xe2,0xb5,0xf0,0x37,0xc2,0xff,0x00,0x16,0x78,0x86, 0x46,0x09,0xfd,0x99,0xa5,0x5c,0xdd,0x29,0x3f,0xde,0x48,0xd8,0xa8,0xfc,0x4e,0x05, 0x00,0x78,0x4f,0xec,0xbd,0xe1,0xe6,0xf0,0xb7,0xc0,0x7f,0x07,0x59,0xce,0x08,0x9d, 0xec,0xc5,0xcc,0xd9,0xea,0x5e,0x43,0xb8,0x93,0xf9,0x8a,0x00,0xea,0x7c,0x43,0xf0, 0xf3,0xc2,0xfe,0x24,0x9a,0x43,0xaf,0xe8,0x1a,0x4d,0xf1,0x7e,0x4b,0x4f,0x6c,0x8c, 0x4f,0xe2,0x45,0x00,0x79,0xee,0xb9,0xfb,0x23,0xfc,0x28,0xd7,0x8b,0x1b,0x8f,0x0a, 0x59,0x5b,0xbb,0x7f,0x15,0xab,0x3c,0x47,0xff,0x00,0x1d,0x22,0x80,0x3a,0xff,0x00, 0x1d,0x7c,0x22,0xd2,0xbc,0x7b,0xf0,0x92,0x7f,0x01,0xcd,0x71,0x75,0x61,0xa4,0xbc, 0x10,0xdb,0x2b,0x5b,0xb0,0xde,0x91,0xc4,0x54,0xa0,0xe7,0xa8,0xf9,0x46,0x73,0xd6, 0x80,0x3e,0x5d,0xbc,0xff,0x00,0x82,0x78,0x6a,0x3a,0x4c,0xa6,0x6f,0x03,0x7c,0x40, 0xd4,0x2c,0x1c,0x72,0xa1,0xd1,0x90,0x8f,0xf8,0x12,0x38,0xfe,0x54,0x01,0xd4,0xfc, 0x1f,0xf8,0x0d,0xf1,0xa3,0xc0,0x3f,0x12,0x74,0x3b,0xaf,0x13,0xf8,0xfa,0xef,0x59, 0xf0,0xbd,0xb4,0xc5,0xae,0xad,0x8d,0xf4,0xaf,0xe6,0x2e,0xd3,0x81,0xb1,0xc7,0x39, 0x38,0xef,0x40,0x1d,0xdf,0xed,0x2d,0xe3,0xcf,0x8c,0x7e,0x0a,0xd6,0xb4,0x67,0xf8, 0x23,0xa1,0x5b,0x6a,0xda,0x57,0xd9,0x9d,0xaf,0xbc,0xdb,0x65,0x98,0x99,0x77,0x7c, 0xa0,0x0c,0x86,0x1f,0x2f,0xa7,0xad,0x00,0x78,0x0d,0xe7,0xed,0x6d,0xf1,0x13,0x4a, 0xd7,0x6c,0xb5,0x6f,0x89,0x9f,0x07,0x2d,0x6e,0xef,0xec,0x70,0x22,0xba,0x54,0xb9, 0xb7,0x28,0x46,0x70,0x70,0x77,0x2e,0x46,0x4e,0x09,0x19,0x19,0xe2,0x80,0x3e,0x97, 0xfd,0x9b,0x7f,0x68,0xc1,0xfb,0x42,0xdb,0x6b,0x72,0x0f,0x0d,0xdc,0xe8,0x0d,0xa5, 0x98,0x95,0xfc,0xd9,0xc4,0xa2,0x46,0x7d,0xdc,0x0f,0x94,0x10,0x46,0xd2,0x68,0x02, 0x2d,0x5f,0xf6,0xd5,0xf8,0x4d,0xa0,0xf8,0x8f,0x55,0xd0,0x35,0xcd,0x7a,0xf6,0xc2, 0xfb,0x4e,0xb9,0x7b,0x39,0x9d,0xec,0x64,0x64,0xf3,0x10,0xe1,0x8a,0xb2,0x83,0x90, 0x08,0xa0,0x0f,0x3e,0xfd,0x9e,0x7c,0x55,0xe0,0x2f,0x0d,0x78,0xc7,0x5d,0xd6,0x2e, 0x7e,0x2c,0x78,0x5f,0x57,0x1a,0x84,0x3e,0x54,0x6a,0xd7,0x32,0x41,0x24,0x84,0xc8, 0x5c,0xbc,0x8b,0x28,0x03,0x76,0x30,0x38,0xf7,0xa0,0x0f,0xab,0x74,0xab,0xeb,0x5d, 0x56,0xd2,0x1b,0xcd,0x26,0xe6,0x0b,0xcb,0x49,0x97,0x74,0x73,0xdb,0xc8,0x1d,0x1c, 0x7a,0x86,0x1c,0x1a,0x00,0xf0,0xcf,0xd9,0xa0,0xff,0x00,0xc2,0x49,0xfb,0x4d,0x7c, 0x74,0xf1,0x51,0xf9,0xd2,0xda,0xea,0xdf,0x44,0x81,0xfd,0x04,0x48,0x03,0x0f,0xcc, 0x1a,0x00,0xfa,0x89,0xee,0x32,0x73,0x9a,0x00,0xa1,0xa9,0x49,0xe6,0x25,0x00,0x61, 0x46,0xb8,0x9b,0xf1,0xa0,0x0e,0xaf,0x47,0x93,0x21,0x68,0x03,0x72,0x80,0x0a,0x00, 0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x03,0xc0,0x3f,0x6e,0x4d,0x56,0x4b,0x5f, 0x80,0x17,0xfa,0x45,0xb1,0x3e,0x7f,0x88,0x75,0x1b,0x2d,0x19,0x00,0xea,0x44,0xb3, 0x29,0x71,0xff,0x00,0x7c,0x23,0xd0,0x06,0x84,0x9a,0x9e,0x8f,0xf0,0xfb,0xc3,0x36, 0x5f,0xf0,0x90,0xea,0x56,0x1a,0x4e,0x9f,0x6a,0x91,0x5a,0x0b,0x8b,0xc9,0x56,0x28, 0xc3,0x60,0x2a,0x8d,0xc7,0x8c,0x9c,0x50,0x06,0x5e,0xb9,0xe3,0x36,0xb9,0xb1,0x8e, 0x7f,0x87,0xf0,0xe9,0x9e,0x2a,0x94,0xe5,0xdd,0x6d,0xb5,0x28,0x82,0xaa,0x28,0xc9, 0x00,0x82,0x49,0x76,0xe8,0xa3,0x18,0xcf,0x52,0x07,0x34,0x01,0xd2,0x29,0x32,0x42, 0x92,0x6c,0x92,0x3d,0xea,0x0e,0xd9,0x17,0x0c,0x33,0xd8,0x8e,0xc6,0x80,0x2d,0x5b, 0xe4,0x45,0x83,0x40,0x1c,0x94,0xbe,0x3f,0x86,0x1f,0x19,0xa6,0x80,0xb6,0x37,0x4e, 0xa6,0x71,0x68,0xd7,0xc1,0x97,0x62,0x5c,0x18,0x4c,0xe2,0x3d,0xb9,0xdc,0x7f,0x76, 0xb9,0x2c,0x06,0x01,0x20,0x50,0x07,0x52,0x1c,0x86,0xa0,0x0b,0x33,0x36,0xe4,0x04, 0x81,0x40,0x10,0x3c,0x50,0xcc,0xb8,0x96,0x28,0xd8,0x1e,0xc4,0x50,0x03,0xb4,0xdb, 0x2b,0x5b,0x07,0x7f,0xb1,0x5b,0xc3,0x06,0xfe,0x5b,0xcb,0x50,0xbb,0x8f,0xa9,0xc7, 0x5a,0x00,0xf3,0x1f,0x17,0xfe,0xcb,0x5f,0x0c,0xbc,0x69,0xa8,0x5c,0xde,0x6b,0x7e, 0x17,0xb1,0x37,0x77,0x0e,0x64,0x96,0x78,0x77,0x46,0xce,0xe7,0x92,0x49,0x52,0x39, 0x26,0x80,0x3c,0xdb,0x5b,0xff,0x00,0x82,0x79,0xfc,0x34,0xd4,0x58,0xb6,0x96,0xfa, 0xc6,0x98,0xe7,0xa7,0x95,0x71,0xb8,0x0f,0xfb,0xe8,0x1a,0x00,0xfa,0x1b,0xe1,0xdf, 0x84,0x2c,0x3e,0x16,0x7c,0x3d,0xd2,0xfc,0x3f,0xa6,0xc9,0x24,0x96,0x3a,0x45,0xb3, 0x2f,0x9d,0x36,0x37,0x3e,0x09,0x76,0x66,0xc7,0x19,0x24,0x93,0x40,0x1e,0x41,0xfb, 0x04,0xa3,0xde,0x7c,0x36,0xf1,0x47,0x89,0xe7,0xcf,0x99,0xe2,0x1f,0x10,0xdd,0xde, 0xee,0x3d,0xc1,0x72,0x47,0xe8,0xc2,0x80,0x3e,0x96,0x6b,0x82,0x4f,0x14,0x01,0x1d, 0xc4,0x9b,0xd0,0xe7,0xf2,0xa0,0x0c,0xfc,0x62,0x4e,0x94,0x01,0xbf,0xa3,0x3f,0x20, 0x1a,0x00,0xe8,0xd4,0xe5,0x45,0x00,0x2d,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00, 0x14,0x01,0xf3,0x57,0xed,0x47,0x20,0xf1,0x27,0xc5,0xbf,0x83,0x5e,0x13,0x07,0x74, 0x6b,0xa8,0x5d,0x6b,0xd7,0x11,0xf6,0xdb,0x6f,0x18,0x44,0xcf,0xfc,0x0a,0x63,0xf9, 0x50,0x04,0xff,0x00,0x19,0x7e,0x12,0xe8,0xbf,0x1a,0xfc,0x1c,0x74,0x0f,0x15,0xbd, 0xda,0x59,0xad,0xc2,0x5d,0x2b,0x5b,0x3e,0xd6,0x0e,0xa0,0x81,0xd4,0x1c,0x8f,0x98, 0xd0,0x07,0xcc,0x7a,0xa7,0xfc,0x13,0x9b,0x4a,0x8e,0x46,0x97,0xc2,0x7e,0x2f,0xd4, 0xec,0x24,0x07,0x2b,0xe6,0xc2,0x1b,0x1f,0x8a,0xb2,0x9a,0x00,0xed,0xfe,0x00,0x7e, 0xce,0x3e,0x38,0xf8,0x49,0xf1,0x02,0x3d,0x43,0xc4,0x5e,0x35,0xb9,0xd7,0xf4,0x24, 0xb6,0x96,0x24,0xb2,0x6b,0x89,0x88,0xf3,0x1b,0x00,0x12,0x8c,0x48,0xc0,0xe7,0xf4, 0xa0,0x09,0xff,0x00,0x68,0x4d,0x6b,0xe3,0xf6,0x85,0xe3,0xef,0xb4,0xfc,0x16,0x82, 0x1b,0x9f,0x0b,0xad,0xa4,0x4a,0x2d,0xcc,0x30,0x4c,0x5e,0x5e,0x4b,0x92,0x1f,0xe6, 0xee,0x07,0x07,0xb5,0x00,0x78,0xff,0x00,0xfc,0x34,0x87,0xc6,0x3f,0x08,0x6b,0xc7, 0x59,0xf1,0xa7,0xc2,0x7d,0x2a,0xef,0x54,0x11,0xf9,0x2d,0xa8,0xae,0x9d,0x3c,0x32, 0x15,0xc6,0x3e,0xf2,0x92,0x3a,0x71,0x9f,0x4e,0x3a,0x50,0x07,0xd4,0x9f,0xb3,0xcf, 0xc6,0x0b,0xdf,0x8d,0x1e,0x07,0xb9,0xd7,0xf5,0xcd,0x13,0xfe,0x11,0xe9,0x61,0xbb, 0x7b,0x63,0x6e,0x64,0x67,0x04,0x2a,0xa9,0x2d,0x92,0x01,0xfe,0x2a,0x00,0xe0,0x07, 0xed,0xeb,0xf0,0x9f,0x51,0xbe,0x8a,0x1d,0x43,0x52,0xf1,0x36,0x8c,0x6d,0x6e,0x18, 0xb6,0xfb,0x12,0x63,0x9b,0x1b,0x97,0x0c,0x54,0xb1,0x2b,0xce,0xee,0xdd,0x07,0xd2, 0x80,0x37,0xfc,0x3d,0xfb,0x4e,0xf8,0x17,0xc4,0x1e,0x26,0x96,0x4b,0x1f,0x89,0xbe, 0x17,0x1a,0x0b,0x11,0x22,0x5a,0xdd,0x44,0xf0,0xdc,0x86,0x2b,0xb4,0xc7,0xb9,0xc2, 0x80,0x99,0x1b,0xf3,0xcb,0x64,0xe3,0xa0,0xa0,0x0f,0x73,0xb1,0xb9,0x86,0xee,0xde, 0x2b,0x9b,0x59,0x62,0x96,0xde,0x64,0x59,0x23,0x95,0x18,0x15,0x75,0x3c,0x82,0x0f, 0x70,0x78,0xa0,0x0c,0xaf,0x11,0xea,0xf7,0xfa,0x65,0xe0,0x16,0x96,0xe5,0xe3,0x11, 0xab,0xaa,0xf9,0x0e,0xe6,0x72,0x58,0x86,0x50,0xc3,0x84,0xc0,0x19,0xc9,0xf5,0xaf, 0x2f,0x1b,0x8b,0xab,0x46,0x76,0x82,0xba,0xb2,0xe8,0xdd,0xf5,0xd5,0x5d,0x6d,0x65, 0xae,0xa4,0xb7,0x62,0xcf,0x87,0xb5,0x69,0xb5,0x8b,0x33,0x2d,0xdd,0xab,0x59,0x48, 0xa4,0x2b,0x42,0xed,0x96,0x53,0x80,0x79,0x1d,0xba,0x8c,0x72,0x78,0xad,0xf0,0x38, 0xa9,0xe2,0x21,0xcd,0x38,0xf2,0xbe,0xdd,0x7f,0xae,0xc3,0x4e,0xe6,0x0f,0xc7,0x2f, 0x12,0x1f,0x07,0xfc,0x12,0xf1,0xc6,0xae,0x1b,0x63,0xda,0xe8,0xf7,0x2c,0x87,0x3f, 0xc6,0x50,0xaa,0xfe,0xa4,0x57,0x68,0xcc,0xaf,0xd9,0x3f,0xc3,0xbf,0xf0,0x88,0xfe, 0xcf,0x3e,0x0c,0xb1,0x65,0xda,0xed,0x69,0xe7,0xb8,0xf5,0x2c,0x73,0xfe,0x14,0x01, 0xea,0xfe,0x69,0x27,0xaf,0x4a,0x00,0x71,0x7d,0xc2,0x80,0x20,0x23,0x0f,0xef,0x40, 0x1b,0x1a,0x43,0xe2,0x41,0x40,0x1d,0x44,0x67,0x28,0x28,0x01,0xd4,0x00,0x50,0x01, 0x40,0x05,0x00,0x14,0x00,0x50,0x07,0xcb,0x5e,0x24,0x91,0xfc,0x49,0xfb,0x64,0x6b, 0x13,0x38,0xcc,0x1e,0x1a,0xf0,0xd5,0xb5,0x9c,0x7e,0xd2,0x5c,0x3b,0xc8,0xc7,0xfe, 0xf9,0xd9,0x40,0x1e,0x8f,0x23,0xe6,0x32,0x28,0x02,0xa8,0x72,0x0f,0x34,0x08,0x7c, 0x72,0x1d,0xeb,0x40,0x13,0xdc,0x49,0x8d,0xa7,0xad,0x03,0x23,0x2c,0xae,0x30,0xea, 0xa7,0xea,0x28,0x02,0x4b,0x38,0xe2,0x40,0xe8,0x91,0xa2,0xab,0x0c,0x10,0x07,0x06, 0x80,0x3c,0xd7,0xc4,0x3f,0xb3,0x47,0xc3,0x2f,0x12,0x4f,0x2b,0xea,0x7e,0x11,0xd2, 0x44,0xae,0x49,0x2f,0x0c,0x66,0x22,0x49,0xf7,0x52,0x28,0x03,0xcf,0xb5,0x9f,0xd8, 0x1b,0xe1,0x7e,0xa5,0x21,0x93,0x4e,0x8f,0x56,0xd2,0xdf,0x39,0x06,0xda,0xe4,0xb6, 0x3e,0x9b,0x81,0xa0,0x0f,0x4e,0xf8,0xaf,0xf0,0x81,0xfe,0x20,0x7c,0x1b,0x3e,0x07, 0xd0,0x35,0x59,0x34,0x48,0xd2,0x2b,0x68,0xa3,0xb9,0x45,0x2c,0x42,0x43,0xb7,0x6a, 0x9c,0x11,0xd7,0x68,0xcd,0x00,0x7c,0xb3,0x2f,0xec,0x7b,0xf1,0xc3,0xc2,0x92,0x19, 0x3c,0x11,0xf1,0x26,0xe5,0xc2,0x7d,0xd5,0x4d,0x46,0x78,0x7f,0x43,0x91,0x40,0x1d, 0xc7,0xc1,0x6d,0x17,0xf6,0x94,0xd0,0x7e,0x25,0x68,0x36,0x7f,0x11,0xb5,0x5b,0x9d, 0x43,0xc2,0xde,0x7f,0xfa,0x74,0xd3,0x4b,0x04,0xeb,0xe5,0x01,0x93,0x93,0x8d,0xf9, 0x38,0xc0,0xc7,0x39,0x22,0x80,0x3d,0x2b,0xf6,0xdf,0xd5,0x1a,0xd7,0xe0,0x2d,0xd6, 0x99,0x01,0xc4,0xba,0xde,0xa5,0x65,0xa6,0xaa,0x8e,0xac,0x1a,0x60,0xcc,0x3f,0x24, 0x34,0x01,0xed,0x1e,0x17,0xd3,0x97,0x43,0xf0,0xb6,0x91,0xa6,0xc4,0x30,0xb6,0x96, 0x70,0xc1,0x8f,0x75,0x40,0x0d,0x00,0x68,0x24,0x99,0x3c,0x77,0xa0,0x09,0xc3,0x71, 0xcd,0x00,0x30,0xf0,0xdf,0x4a,0x00,0xd3,0xd2,0x5f,0x12,0x8a,0x00,0xeb,0x61,0x39, 0x8c,0x66,0x80,0x1f,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x7c,0xbf, 0xf1,0x2d,0x47,0xc3,0x3f,0xda,0x7e,0xd7,0x58,0xd5,0x7f,0x73,0xa1,0xf8,0xef,0x4f, 0x87,0x4e,0x8e,0xf1,0xb8,0x48,0xf5,0x1b,0x7d,0xdb,0x22,0x63,0xd8,0xc9,0x1b,0x0d, 0xb9,0xea,0x50,0x8f,0x4a,0x00,0xf4,0x17,0x52,0x01,0xc8,0xe9,0x40,0x10,0x94,0xe7, 0x9a,0x00,0x02,0xe1,0x85,0x00,0x49,0x27,0xcc,0xa3,0x34,0x01,0x19,0x5c,0x1e,0x68, 0x02,0x5b,0x73,0xb5,0xa8,0x01,0x65,0x27,0x7e,0x45,0x00,0x0a,0x49,0x23,0x27,0x1f, 0x5a,0x00,0xb3,0x11,0x22,0x32,0x09,0xfc,0xa8,0x01,0x12,0x42,0x38,0x14,0x01,0x2c, 0x72,0x92,0xc2,0x80,0x3e,0x7e,0xfd,0xaa,0x4f,0xfc,0x24,0xbf,0x11,0xbe,0x0b,0x78, 0x49,0x7e,0x65,0xbb,0xd7,0x5f,0x51,0x99,0x3f,0xd8,0x85,0x02,0x83,0xf9,0xc8,0x68, 0x03,0xe8,0x87,0x7c,0x93,0x8e,0x05,0x00,0x08,0x71,0x8c,0x50,0x04,0xea,0xd8,0xce, 0x28,0x01,0xa4,0xee,0x38,0x14,0x01,0xa9,0xa6,0x2e,0x24,0x5c,0xf5,0xa0,0x0e,0xb6, 0xd8,0xfe,0xe8,0x66,0x80,0x25,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80, 0x39,0x0f,0x8a,0x5e,0x03,0xd1,0x3e,0x25,0xf8,0x3e,0xff,0x00,0xc3,0xde,0x33,0xb0, 0x8f,0x51,0xd2,0xae,0x94,0x6f,0x89,0xf8,0x28,0xc3,0x95,0x74,0x61,0xca,0xb2,0x9e, 0x43,0x0e,0x41,0xa0,0x0f,0x96,0xef,0xfc,0x3f,0xf1,0x9b,0xe1,0x48,0x36,0x3e,0x0e, 0xf1,0x0e,0x85,0xe3,0x7d,0x12,0x2e,0x2d,0xe3,0xf1,0x4c,0x2c,0x2e,0xe2,0x41,0xd1, 0x0c,0xc8,0xca,0x5f,0x1e,0xad,0x93,0x40,0x19,0xc9,0xfb,0x41,0x7c,0x4c,0xd1,0x58, 0x2f,0x8a,0x3e,0x11,0xdb,0x5f,0x28,0xeb,0x2e,0x85,0xad,0x03,0x9f,0xa2,0x3a,0x37, 0xfe,0x85,0x40,0x16,0x62,0xfd,0xb1,0x7c,0x3d,0x62,0xc1,0x7c,0x63,0xe0,0xbf,0x88, 0x7e,0x1e,0x6f,0xe2,0x69,0x34,0xe4,0xb9,0x41,0xf8,0xa3,0xe7,0xf4,0xa0,0x0e,0x87, 0x49,0xfd,0xad,0x3e,0x10,0xea,0xcc,0x10,0xf8,0xce,0xd3,0x4e,0x90,0xf1,0xe5,0xea, 0xb6,0xb7,0x16,0x64,0x7d,0x4c,0x88,0x07,0xeb,0x40,0x1d,0xee,0x85,0xe3,0xff,0x00, 0x09,0xf8,0xa4,0x0f,0xf8,0x46,0x7c,0x51,0xe1,0xcd,0x54,0xb7,0x45,0xb3,0xd4,0x61, 0x91,0xbf,0x20,0xd9,0xfd,0x28,0x03,0xa3,0x5b,0x59,0x14,0x6e,0xd8,0xfb,0x7d,0x70, 0x71,0x40,0x0d,0x68,0xf3,0x40,0x85,0x11,0x9c,0x74,0xa0,0x64,0xa8,0x08,0x5e,0x28, 0x00,0x09,0xf3,0x73,0x40,0x12,0xc6,0x98,0x39,0x3d,0x3d,0x68,0x03,0xe7,0x8d,0x5a, 0x54,0xf1,0xaf,0xed,0xb9,0xa5,0xc1,0x6c,0xc2,0x7b,0x7f,0x09,0x68,0x07,0xce,0x2b, 0xc8,0x8e,0xe2,0x62,0x58,0xa9,0xf7,0x0b,0xe5,0xff,0x00,0xdf,0x42,0x80,0x3e,0x8b, 0x61,0x8e,0x28,0x01,0xc9,0xd4,0x50,0x04,0xb9,0xc8,0xe2,0x80,0x25,0x86,0x32,0x48, 0xf5,0xa0,0x0d,0x9d,0x3e,0xdf,0xe7,0x1e,0xb4,0x01,0xd2,0x42,0xbb,0x63,0x14,0x01, 0x25,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x01,0x5b,0x50,0x4d,0xd6,0xaf, 0x9f,0x4a,0x00,0xf3,0x3d,0x6a,0xd0,0x4e,0xcc,0xad,0xcd,0x00,0x71,0x1a,0xa7,0x86, 0x62,0xb8,0x63,0x98,0xd4,0xfb,0xe2,0x80,0x39,0xfb,0xaf,0x08,0x60,0xe2,0x26,0x95, 0x07,0xa2,0xb1,0xc5,0x00,0x73,0x5a,0xbf,0xc2,0xed,0x3b,0x56,0x04,0x6a,0x5a,0x7d, 0x85,0xd8,0xef,0xe7,0xdb,0x23,0x1f,0xcf,0x19,0xa0,0x0e,0x0b,0x5a,0xfd,0x95,0xfc, 0x13,0xac,0x4a,0x64,0xb9,0xf0,0xed,0xa4,0x6e,0x7b,0xc0,0xcc,0x9f,0x88,0x07,0x20, 0x50,0x06,0x2a,0x7e,0xcd,0x32,0x78,0x7d,0xcc,0x9e,0x06,0xf1,0x67,0x8d,0xbc,0x38, 0xc3,0x90,0xb6,0x5a,0x8c,0x9b,0x47,0xe0,0x19,0x68,0x02,0xf4,0x7a,0x47,0xc6,0xff, 0x00,0x0e,0x11,0xfd,0x81,0xf1,0x6f,0x51,0xbd,0x45,0xe9,0x16,0xb7,0x65,0x1d,0xc0, 0xfc,0x4b,0x23,0x1f,0xd6,0x80,0x34,0xad,0xbe,0x2e,0x7e,0xd0,0x7a,0x00,0x1f,0x6b, 0xb0,0xf8,0x79,0xe2,0xa4,0x5e,0xa4,0x23,0xda,0x3b,0x7f,0xdf,0x32,0x0f,0xfd,0x06, 0x80,0x35,0x22,0xfd,0xaf,0x7c,0x69,0xa1,0x81,0xff,0x00,0x09,0xc7,0xc1,0xad,0x55, 0x50,0x7d,0xe9,0xf4,0x6d,0x48,0x4a,0xbf,0x93,0xc6,0x3f,0xf4,0x2a,0x00,0xd7,0xd3, 0x3f,0x6f,0x0f,0x87,0xb2,0xc8,0xb1,0xf8,0x93,0x47,0xf1,0xbf,0x87,0xa4,0x3c,0x1f, 0xb5,0x69,0x7e,0x72,0xaf,0xe3,0x13,0x31,0xfd,0x28,0x03,0x3b,0xc5,0xdf,0xb6,0x6b, 0x78,0x9d,0x8e,0x87,0xfb,0x3b,0x78,0x6b,0x59,0xd7,0xf5,0xbb,0x91,0xb2,0x3d,0x4f, 0x51,0xb3,0x68,0x2d,0xed,0xc9,0xfe,0x21,0x11,0xf9,0xe4,0x23,0xdc,0x2a,0xfa,0x9c, 0x50,0x07,0xa1,0x7e,0xcd,0x9f,0x06,0x2e,0x7e,0x18,0x68,0x3a,0x86,0xa9,0xe2,0xcb, 0xa6,0xd4,0xbc,0x59,0xad,0x4a,0x6e,0x75,0x1b,0xd9,0x18,0x3b,0x17,0x63,0x92,0x37, 0x77,0x39,0xe4,0x91,0xc7,0x00,0x0e,0x05,0x00,0x7a,0xeb,0xc8,0x0b,0x71,0x40,0x0e, 0x8d,0x8e,0x06,0x28,0x02,0x68,0x81,0x76,0x00,0x50,0x06,0xad,0x9d,0xb6,0x58,0x64, 0x50,0x06,0xf5,0x85,0xae,0x08,0x38,0xa0,0x0d,0x30,0x30,0x38,0xa0,0x05,0xa0,0x02, 0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x2b,0xdf,0x1c,0x5b,0x3f,0xd2,0x80,0x3c, 0xe7,0x51,0x70,0x2e,0x1c,0x1f,0x5a,0x00,0xce,0x78,0x95,0xc1,0xc8,0xa0,0x0a,0xf2, 0x5a,0x21,0x1d,0x05,0x00,0x40,0xfa,0x72,0x31,0xe9,0xf8,0xd0,0x22,0x16,0xd2,0x51, 0x81,0xe2,0x81,0x90,0xc9,0xa1,0x23,0x03,0x85,0x14,0x01,0x5e,0x4f,0x0d,0x46,0xe3, 0x95,0xa0,0x0a,0xf2,0x78,0x4a,0x37,0xeb,0x1a,0x91,0xee,0x28,0x02,0xb3,0x78,0x2a, 0x16,0x62,0x44,0x41,0x7d,0xd7,0x8f,0xe5,0x40,0x10,0xdc,0x7c,0x3d,0xb0,0xbb,0x6c, 0x5e,0xdb,0x45,0x72,0x3d,0x26,0x40,0xe3,0xf5,0xcd,0x00,0x74,0x5e,0x1b,0xf0,0xa5, 0x96,0x8b,0x16,0xcb,0x0b,0x6b,0x7b,0x58,0xcf,0x54,0x82,0x35,0x8c,0x1f,0xa8,0x50, 0x33,0x40,0x1d,0x1c,0x93,0xe1,0x42,0x46,0x30,0xa0,0x63,0x02,0x80,0x18,0xa7,0x2d, 0x40,0x89,0xd0,0xe0,0x62,0x81,0x9a,0x7a,0x7c,0x05,0xb1,0x9e,0xf4,0x01,0xd0,0xd9, 0x5a,0x60,0x0e,0x28,0x03,0x62,0x18,0xc4,0x6b,0xc5,0x00,0x49,0x40,0x05,0x00,0x14, 0x00,0x50,0x01,0x40,0x05,0x00,0x14,0x01,0x5e,0xff,0x00,0xfe,0x3d,0x9f,0x34,0x01, 0xe6,0x7a,0xbb,0x79,0x77,0x6f,0x8f,0x5a,0x00,0xa1,0xe6,0x64,0x73,0x40,0x08,0x1f, 0x23,0x9a,0x00,0x03,0xe4,0xf1,0xd2,0x80,0x1e,0xa7,0x34,0x00,0xf0,0x46,0x28,0x01, 0xca,0x01,0x1c,0xf6,0xa0,0x07,0xaa,0x02,0xbc,0xe2,0x81,0x01,0x8c,0x67,0x9e,0xf4, 0x0c,0x16,0x00,0xc7,0x38,0x14,0x08,0x90,0x85,0x41,0x81,0xda,0x81,0x8c,0x6c,0x16, 0x18,0xa0,0x43,0x94,0x85,0x1c,0x50,0x32,0xcd,0xac,0x26,0x47,0x19,0xa0,0x0e,0x9b, 0x4c,0xb4,0x00,0x0c,0x0a,0x00,0xdf,0xb6,0x87,0x60,0xc9,0xa0,0x0b,0x14,0x00,0x50, 0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x05,0x00,0x57,0xbe,0x5d,0xd0,0x10, 0x28,0x03,0xce,0xb5,0xeb,0x56,0x59,0xd9,0x94,0x66,0x80,0x31,0x40,0x61,0xf7,0x81, 0xa0,0x04,0x27,0x03,0xe6,0xe2,0x81,0x02,0xb0,0x14,0x0c,0x7a,0xb7,0xa1,0xa0,0x07, 0x06,0xc0,0x19,0xa0,0x07,0xab,0x74,0xcd,0x02,0x1c,0x24,0xc9,0xe7,0xa5,0x00,0x3b, 0x7e,0x4f,0x5a,0x06,0x38,0x49,0x90,0x68,0x01,0x0b,0x92,0x39,0xa0,0x41,0xbb,0x9e, 0xf4,0x00,0xf4,0x05,0x88,0x03,0xbd,0x00,0x6e,0xe9,0x76,0x99,0x23,0x8a,0x06,0x75, 0x56,0x36,0xe1,0x40,0xe2,0x80,0x34,0x00,0xc0,0xe2,0x80,0x16,0x80,0x0a,0x00,0x28, 0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x06,0x4a,0x9b,0xd7,0x06,0x80,0x31, 0x75,0x0d,0x21,0x6e,0x32,0x59,0x68,0x03,0x1e,0x5f,0x0e,0x0c,0x9d,0xa2,0x80,0x2a, 0x4b,0xe1,0xc2,0x0f,0x02,0x80,0x2a,0xc9,0xe1,0xd7,0x00,0xe1,0x7a,0xd0,0x05,0x79, 0x34,0x37,0x8c,0xe0,0x02,0x28,0x02,0xb4,0x9a,0x6c,0x8a,0x70,0x01,0xa0,0x06,0x35, 0x9c,0x83,0xa0,0x34,0x00,0xd3,0x1b,0xaf,0x05,0x7a,0x50,0x02,0x00,0xc4,0xf2,0x28, 0x00,0xdc,0x73,0xc0,0x34,0x00,0xa0,0x9c,0xf3,0xd2,0x80,0x1c,0xa7,0x27,0x8a,0x00, 0xbf,0xa7,0xdb,0x99,0x5c,0x64,0x71,0x40,0x1d,0x7e,0x99,0x69,0xb1,0x46,0x05,0x00, 0x6e,0x43,0x1e,0xc4,0xa0,0x09,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0, 0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x06,0xb2,0x06,0x1c,0xd0,0x03,0x1a,0x00,0x7b, 0x50,0x04,0x6d,0x6a,0xa4,0x74,0xa0,0x08,0xda,0xc9,0x7b,0x0a,0x00,0x81,0xf4,0xf5, 0x6c,0xe4,0x50,0x05,0x69,0x34,0x94,0x63,0x92,0xa2,0x80,0x20,0x93,0x46,0x42,0x3e, 0xed,0x00,0x55,0x93,0x42,0x42,0x78,0x14,0x01,0x5a,0x6d,0x00,0x01,0xf2,0x8a,0x00, 0xac,0xda,0x11,0x1d,0x85,0x00,0x57,0x7d,0x19,0x94,0xf4,0xe2,0x80,0x16,0x3d,0x20, 0x93,0xc8,0xa0,0x0d,0x8d,0x3b,0x4e,0x11,0x10,0x48,0xfc,0x28,0x03,0xa3,0xb3,0x83, 0x68,0x06,0x80,0x2e,0x50,0x01,0x40,0x05,0x00,0x14,0x00,0x50,0x01,0x40,0x1f,0xff, 0xd9 }; pcsc-cyberjack-3.99.5final.sp05/tools/fxcyberjack/main.cpp000066400000000000000000000036261231776762100234120ustar00rootroot00000000000000 #ifdef HAVE_CONFIG_H # include #endif #include #include "fxcy_app.hpp" #include "fxcy_readerview.hpp" #include "fxcy_mainwindow.hpp" #include "driver_pcsc.hpp" #include "Platform.h" #include "Reader.h" #include "eca_defines.h" int test1(int argc, char **argv) { FXApp a("libtest", "Martin Preuss"); FXDialogBox *dbox; FXVerticalFrame *vf; FXCY_ReaderView *rview; Cyberjack::Driver *dr; int rv; a.init(argc,argv); a.create(); dbox=new FXDialogBox(&a, "Test", DECOR_ALL); vf=new FXVerticalFrame(dbox, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 1, 1, 1, 1); rview=new FXCY_ReaderView(vf, LAYOUT_FILL_X | LAYOUT_FILL_Y); dbox->create(); dr=Cyberjack::NewDriverPcsc(); rv=dr->open(); if (rv<0) { fprintf(stderr, "Error in open: %d\n", rv); return 2; } rv=dr->enumReaders(); if (rv<0) { fprintf(stderr, "Error in enumReaders: %d\n", rv); return 2; } rview->applyReaderList(dr->getUpdateCounter(), dr->getReaders()); rv=dr->close(); if (rv<0) { fprintf(stderr, "Error in close: %d\n", rv); return 2; } dbox->resize(500, 300); dbox->show(); a.runModalFor(dbox); return 0; } int main(int argc, char **argv) { FXCY_App a("libtest", "Martin Preuss"); FXCY_MainWindow *mw; int rv; a.init(argc,argv); a.create(); Debug.setLevelMask(0xffffffff); mw=new FXCY_MainWindow(&a, "FXcyberJack"); mw->create(); rv=mw->openDriverPcsc(); if (rv<0) { fprintf(stderr, "Error in open: %d\n", rv); return 2; } rv=mw->updateReaderList(true); if (rv<0) { fprintf(stderr, "Error in enumReaders: %d\n", rv); return 2; } mw->resize(500, 300); mw->show(); a.runModalFor(mw); #if 0 fprintf(stderr, "Closing driver\n"); rv=mw->closeDriver(); if (rv<0) { fprintf(stderr, "Error in close: %d\n", rv); return 2; } #endif fprintf(stderr, "Bye.\n"); return 0; } pcsc-cyberjack-3.99.5final.sp05/tools/mac-ui-helper/000077500000000000000000000000001231776762100221105ustar00rootroot00000000000000pcsc-cyberjack-3.99.5final.sp05/tools/mac-ui-helper/Delegate.h000066400000000000000000000035251231776762100240000ustar00rootroot00000000000000/*************************************************************************** begin : Sat Jul 04 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef RSCT_MAC_DELEGATE_HPP #define RSCT_MAC_DELEGATE_HPP #import @interface Delegate : NSObject { } - (void)applicationDidFinishLaunching:(NSNotification*) aNotification; - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication*) sender; @end #endif pcsc-cyberjack-3.99.5final.sp05/tools/mac-ui-helper/Delegate.m000066400000000000000000000040211231776762100237750ustar00rootroot00000000000000/*************************************************************************** begin : Sat Jul 04 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #include "Platform.h" #include "Delegate.h" @implementation Delegate - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { // Insert code here to initialize your application fprintf(stderr, "Finished launching\n"); } // If the user closes the last window in the application, make sure the application quits. - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender { fprintf(stderr, "Should close.\n"); return YES; } @end pcsc-cyberjack-3.99.5final.sp05/tools/mac-ui-helper/Makefile.am000066400000000000000000000010461231776762100241450ustar00rootroot00000000000000INCLUDES=-I../../include -I../../libdialog -I../../libdialog/base -I../../cjeca32 -I../fxcyberjack $(fox_includes) $(pcsc_includes) DEFS+=@cyberjack_platform_def@ bin_PROGRAMS=cyberjack-gui-agent cyberjack_gui_agent_LDADD=\ ../../libdialog/base/libdialog_base.la \ @THREAD_LIBS@ -lobjc $(COCOA_FRAMEWORK) cyberjack_gui_agent_SOURCES=\ Delegate.m \ PinDialog.m \ main.m launchddir=$(pkgdatadir)/Library/LaunchAgents launchd_DATA=de.reiner-sct.cyberjack.gui.plist EXTRA_DIST=$(launchd_DATA) noinst_HEADERS= \ Delegate.h \ PinDialog.h pcsc-cyberjack-3.99.5final.sp05/tools/mac-ui-helper/PinDialog.h000066400000000000000000000046161231776762100241360ustar00rootroot00000000000000/*************************************************************************** begin : Sat Jul 04 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #ifndef RSCT_MAC_PINDIALOG_H #define RSCT_MAC_PINDIALOG_H #import #include "base/message.h" @interface PinDialog: NSWindow { NSTextField *_rsctLabel; NSTextField *_stageLabel; NSBox *_hLine; NSData *_imageData; NSImage *_image; NSImageView *_imageView; NSTextField *_textLabel; NSTextField *_entryLabel; NSProgressIndicator *_progressWidget; } - (id) initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag; - (void)dealloc; - (void) layout; - (void) windowDidResize:(NSNotification*) notification; - (void) windowWillClose:(NSNotification*) notification; - (void) setCurrentStage:(int)stage of:(int) stages withText:(NSString*) text; - (void) setTimeRemaining:(double) secs of:(double)total; - (void) setNumDigits:(int) num; @end #endif pcsc-cyberjack-3.99.5final.sp05/tools/mac-ui-helper/PinDialog.m000066400000000000000000000146261231776762100241450ustar00rootroot00000000000000/*************************************************************************** begin : Sat Jul 04 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #import "PinDialog.h" #import "../fxcyberjack/icons/icons.cpp" #define I18N(msg) msg @implementation PinDialog - (id) initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag { self=[super initWithContentRect:contentRect styleMask:aStyle backing:bufferingType defer:flag]; if (self!=nil) { _rsctLabel = [[NSTextField alloc] init]; [_rsctLabel setStringValue:@"Reiner SCT cyberJack"]; [_rsctLabel setBezeled:NO]; [_rsctLabel setEditable:NO]; [_rsctLabel setSelectable:NO]; [_rsctLabel setDrawsBackground:NO]; [[self contentView] addSubview:_rsctLabel]; _stageLabel = [[NSTextField alloc] init]; [_stageLabel setStringValue:@"1/2"]; [_stageLabel setBezeled:NO]; [_stageLabel setEditable:NO]; [_stageLabel setSelectable:NO]; [_stageLabel setDrawsBackground:NO]; [_stageLabel setAlignment:NSRightTextAlignment]; [[self contentView] addSubview:_stageLabel]; _hLine = [[NSBox alloc] init]; [_hLine setBoxType:NSBoxSeparator]; [[self contentView] addSubview:_hLine]; _imageData=[[NSData alloc] initWithBytes: fxcj_icon_cy_ecom_b length:sizeof(fxcj_icon_cy_ecom_b)]; _image = [[NSImage alloc] initWithData: _imageData]; _imageView = [[NSImageView alloc] init]; [_imageView setImage:_image]; [_imageView setBounds: NSMakeRect (0, 0, 200, 200)]; [[self contentView] addSubview:_imageView]; _textLabel = [[NSTextField alloc] init]; [_textLabel setStringValue:@"Bitte geben Sie die Pin ein:"]; [_textLabel setBezeled:NO]; [_textLabel setEditable:NO]; [_textLabel setSelectable:NO]; [_textLabel setDrawsBackground:NO]; [_textLabel setAlignment:NSCenterTextAlignment]; [[self contentView] addSubview:_textLabel]; _entryLabel = [[NSTextField alloc] init]; [_entryLabel setStringValue:@"****"]; [_entryLabel setBezeled:NO]; [_entryLabel setEditable:NO]; [_entryLabel setSelectable:NO]; [_entryLabel setDrawsBackground:NO]; [_entryLabel setAlignment:NSCenterTextAlignment]; [[self contentView] addSubview:_entryLabel]; _progressWidget=[[NSProgressIndicator alloc] init]; [_progressWidget setIndeterminate: FALSE]; [_progressWidget setMinValue: 0.0]; [_progressWidget setMaxValue: 100.0]; [_progressWidget setDoubleValue: 100.0]; [[self contentView] addSubview:_progressWidget]; } [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidResize:) name:NSWindowDidResizeNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowWillClose:) name:NSWindowWillCloseNotification object:nil]; return self; } - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; if (_rsctLabel!=nil) [_rsctLabel release]; if (_stageLabel!=nil) [_stageLabel release]; if (_hLine!=nil) [_hLine release]; if (_imageView!=nil) [_imageView release]; if (_image!=nil) [_image release]; if (_imageData!=nil) [_imageData release]; if (_textLabel!=nil) [_textLabel release]; if (_entryLabel!=nil) [_entryLabel release]; if (_progressWidget!=nil) [_progressWidget release]; [super dealloc]; } -(void) layout { NSRect r=[self frame]; int w; int h; int x; int y; w=r.size.width; h=r.size.height; x=10; y=h-20; [_rsctLabel setFrame: NSMakeRect(x, y-20, ((w-20)/2), 20)]; x=((w-20)/2)+10; [_stageLabel setFrame: NSMakeRect(x, y-20, ((w-20)/2), 20)]; y-=20; x=10; [_hLine setFrame: NSMakeRect(x, y-5, w-(x*2), 5)]; y-=10; [_imageView setFrame: NSMakeRect(x, y-200, 200, 200)]; [_imageView setBounds: NSMakeRect (0, 0, 200, 200)]; x+=200; [_textLabel setFrame: NSMakeRect(x, y-60, (w-x-10), 40)]; [_entryLabel setFrame: NSMakeRect(x, y-100, (w-x-10), 20)]; y-=210; x=10; [_progressWidget setFrame: NSMakeRect(x, y-20, (w-x*2), 20)]; } - (void) windowDidResize:(NSNotification*) notification { [self layout]; } - (void) windowWillClose:(NSNotification*) notification { fprintf(stderr, "Window will close.\n"); } - (void) setCurrentStage:(int) stage of:(int) stages withText:(NSString*) text { char numbuf[32]; snprintf(numbuf, sizeof(numbuf)-1, "%d/%d", stage+1, stages); NSString *str=[NSString stringWithUTF8String: numbuf]; [_stageLabel setStringValue: str]; //[str release]; [_textLabel setStringValue: text]; } - (void) setNumDigits:(int)num { int i; char buf[64]; if (num>=(sizeof(buf)-1)) num=sizeof(buf)-1; for (i=0; i #import #define kCCIDPath @"/usr/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/info.plist" #define kCCIDBackupPath @"/usr/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/info_backup.plist" int main(int argc, char *argv[]) { NSAutoreleasePool* nspool = [[NSAutoreleasePool alloc] init]; @try { // make a backup copy of the ifd-ccid.bundle file [[NSFileManager defaultManager] copyItemAtPath:kCCIDPath toPath:kCCIDBackupPath error:nil]; UInt32 index=0; std::vector indexList; BOOL infoDictChanged=NO; NSMutableDictionary* infoDict=[NSMutableDictionary dictionaryWithContentsOfFile:kCCIDPath]; for (NSString* key in [infoDict objectForKey:@"ifdVendorID"]) { if ([key isEqualToString:@"0x0C4B"]) indexList.push_back(index); index++; } for (UInt32 i=indexList.size()-1;i<=0;i--) { #if DEBUG NSLog(@"Removing vendor '%@' at index %d",[[infoDict objectForKey:@"ifdVendorID"] objectAtIndex:indexList[i]],indexList[i]); #endif [[infoDict objectForKey:@"ifdVendorID"] removeObjectAtIndex:indexList[i]]; #if DEBUG NSLog(@"Removing product ID '%@' at index %d",[[infoDict objectForKey:@"ifdProductID"] objectAtIndex:indexList[i]],indexList[i]); #endif [[infoDict objectForKey:@"ifdProductID"] removeObjectAtIndex:indexList[i]]; #if DEBUG NSLog(@"Removing friendly name '%@' at index %d",[[infoDict objectForKey:@"ifdFriendlyName"] objectAtIndex:indexList[i]],indexList[i]); #endif [[infoDict objectForKey:@"ifdFriendlyName"] removeObjectAtIndex:indexList[i]]; infoDictChanged=YES; } if (infoDictChanged && ![infoDict writeToFile:kCCIDPath atomically:false]) NSLog(@"Error while writing file %@",kCCIDPath); } @catch(id anything) { } [nspool release]; } pcsc-cyberjack-3.99.5final.sp05/tools/mac-ui-helper/de.reiner-sct.cyberjack.gui.plist000066400000000000000000000010701231776762100303440ustar00rootroot00000000000000 KeepAlive LimitLoadToSessionType Aqua RunAtLoad Label de.reiner-sct.cyberjack.ui ProgramArguments /Library/Frameworks/CyberJack_CTAPI.framework/Versions/Current/Resources/CyberJack UI Agent.app/Contents/MacOS/CyberJack UI Agent pcsc-cyberjack-3.99.5final.sp05/tools/mac-ui-helper/main.m000066400000000000000000000346701231776762100232240ustar00rootroot00000000000000/*************************************************************************** begin : Sat Jul 04 2010 copyright : (C) 2010 by Martin Preuss email : martin@libchipcard.de *************************************************************************** * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * * * ***************************************************************************/ #include "Platform.h" #include "libdialog/base/network.h" #import #import "PinDialog.h" #import "Delegate.h" #include #include #include #include #include #include #include #include #include #include #include #define I18N(msg) msg #define ENABLE_DEBUGPI #define ENABLE_DEBUGPE #define ENABLE_DEBUGPD #define DIALOG_WIDTH 500 #define DIALOG_HEIGHT 300 #ifdef ENABLE_DEBUGPE # define DEBUGPE(format, args...) \ fprintf(stderr, __FILE__":%5d:" format, __LINE__, ## args); #else # define DEBUGPE(format, args...) #endif #ifdef ENABLE_DEBUGPI # define DEBUGPI(format, args...) \ fprintf(stderr, __FILE__":%5d:" format, __LINE__, ## args); #else # define DEBUGPI(format, args...) #endif #ifdef ENABLE_DEBUGPD # define DEBUGPD(format, args...) \ fprintf(stderr, __FILE__":%5d:" format, __LINE__, ## args); #else # define DEBUGPD(format, args...) #endif static int daemon_abort=0; static char daemon_sock_buf[512]; static int _lastDialogId=0; /* Signal handler */ struct sigaction saINT,saTERM, saINFO, saHUP, saCHLD; void signalHandler(int s) { switch(s) { case SIGINT: case SIGTERM: #ifdef SIGHUP case SIGHUP: #endif daemon_abort=1; DEBUGPI("INFO: Terminating daemon.\n"); break; #ifdef SIGCHLD case SIGCHLD: for (;;) { pid_t pid; int stat_loc; pid=waitpid((pid_t)-1, &stat_loc, WNOHANG); if (pid==-1 || pid==0) break; else { DEBUGPI("INFO: Service %d finished.\n", (int)pid); } } break; #endif default: DEBUGPI("INFO: Unhandled signal %d\n", s); break; } /* switch */ } int setSingleSignalHandler(struct sigaction *sa, int sig) { sa->sa_handler=signalHandler; sigemptyset(&sa->sa_mask); sa->sa_flags=0; if (sigaction(sig, sa,0)) { DEBUGPE("ERROR: sigaction(%d): %d=%s", sig, errno, strerror(errno)); return -1; } return 0; } int setSignalHandler() { int rv; rv=setSingleSignalHandler(&saINT, SIGINT); if (rv) return rv; #ifdef SIGCHLD rv=setSingleSignalHandler(&saCHLD, SIGCHLD); if (rv) return rv; #endif rv=setSingleSignalHandler(&saTERM, SIGTERM); if (rv) return rv; #ifdef SIGHUP rv=setSingleSignalHandler(&saHUP, SIGHUP); if (rv) return rv; #endif return 0; } int mkSockName() { struct passwd *p; p=getpwuid(geteuid()); if (!p) { fprintf(stderr, "ERROR: %s at getpwuid\n", strerror(errno)); endpwent(); return -1; } if (sizeof(daemon_sock_buf)pw_dir)+1) { fprintf(stderr, "Internal: Buffer too small (need %d bytes)\n", (int)(strlen(p->pw_dir)+1)); endpwent(); return -1; } strcpy(daemon_sock_buf, p->pw_dir); endpwent(); strncat(daemon_sock_buf, "/.cyberJack_gui_sock", sizeof(daemon_sock_buf)-1); daemon_sock_buf[sizeof(daemon_sock_buf)-1]=0; return 0; } int prepareListen() { int sock; sock=rsct_net_listen_by_path(daemon_sock_buf); if (sock==-1) { fprintf(stderr, "Error on rsct_net_listen_by_path(%s): %s\n", daemon_sock_buf, strerror(errno)); return -1; } return sock; } @interface AppController : NSObject { NSFileHandle *_sockHandle; PinDialog *_pinDialog; time_t _startTime; NSTimer *_abortTimeUpdater; int _socket; int _keyTimeout; int _currentStage; int _stages; char _stage0Text[512]; char _stage1Text[512]; char _stage2Text[512]; } - (id) init; - (int) startConnection:(int) sock; - (void) dataAvailableOnSocket: (NSNotification*) notification; - (void) updateRemainingTime:(NSTimer*) timer; - (int) handleOpenDialog: (RSCT_MESSAGE*) msg; - (int) handleCloseDialog: (RSCT_MESSAGE*) msg; - (int) handleMessage:(RSCT_MESSAGE*) msg; - (int) handleSetStage: (RSCT_MESSAGE*) msg; - (int) handleSetNumChars: (RSCT_MESSAGE*) msg; - (int) getAndHandleMessage; - (void) setStages:(int)stages; - (void) setCurrentStage:(int)stage; @end @implementation AppController - (id) init { self=[super init]; _pinDialog=nil; _abortTimeUpdater=nil; _socket=-1; _stage0Text[0]=0; _stage0Text[1]=0; _stage0Text[2]=0; return self; } - (int) startConnection:(int) sock { _socket=sock; _sockHandle=[[NSFileHandle alloc] initWithFileDescriptor:_socket closeOnDealloc:YES]; if (_sockHandle==nil) { fprintf(stderr, "Could not init _sockHandle\n"); return -1; } [ [NSNotificationCenter defaultCenter] addObserver: self selector: @selector(dataAvailableOnSocket:) name: NSFileHandleDataAvailableNotification object: _sockHandle]; [_sockHandle waitForDataInBackgroundAndNotify]; return 0; } - (void) dataAvailableOnSocket: (NSNotification*) notification { fprintf(stderr, "Data available.\n"); [self getAndHandleMessage]; [_sockHandle waitForDataInBackgroundAndNotify]; } - (void) updateRemainingTime:(NSTimer*) timer { if (_pinDialog!=nil) { time_t now; int diff; double newVal=0; now=time(NULL); diff=(int)difftime(now, _startTime); if (diff<(int)_keyTimeout) newVal=_keyTimeout-diff; [_pinDialog setTimeRemaining: newVal of:_keyTimeout]; } } - (void) setStages:(int)stages { _stages=stages; } - (void) setCurrentStage:(int)stage { _currentStage=stage; NSString *str=nil; if (_pinDialog) { [_pinDialog setNumDigits: 0]; _startTime=time(NULL); [_pinDialog setTimeRemaining: _keyTimeout of:_keyTimeout]; switch(stage) { case 0: str=[NSString stringWithUTF8String:_stage0Text]; break; case 1: str=[NSString stringWithUTF8String:_stage1Text]; break; case 2: str=[NSString stringWithUTF8String:_stage2Text]; break; default: break; } } if (str!=nil) [_pinDialog setCurrentStage:_currentStage of:_stages withText: str]; DEBUGPE("done\n"); } - (int) getAndHandleMessage { int rv; union { char buffer[RSCT_MAX_MESSAGE_LEN]; RSCT_MESSAGE msg; } m; /* readable, read message */ memset(m.buffer, 0, RSCT_MAX_MESSAGE_LEN); rv=rsct_net_recv(_socket, &m.msg); if (rv<0) { return rv; } else { /* handle message */ rv=[self handleMessage: &(m.msg)]; if (rv<0) { return rv; } } return m.msg.header.type; } - (int) handleOpenDialog: (RSCT_MESSAGE*) msg { int rv; #if 0 int style = NSClosableWindowMask | NSResizableWindowMask | NSTexturedBackgroundWindowMask | NSTitledWindowMask | NSMiniaturizableWindowMask; #else int style = NSTexturedBackgroundWindowMask | NSTitledWindowMask; #endif _pinDialog = [[PinDialog alloc] initWithContentRect:NSMakeRect(50, 50, DIALOG_WIDTH, DIALOG_HEIGHT) styleMask:style backing:NSBackingStoreBuffered defer:NO]; [_pinDialog setFrame:NSMakeRect(50, 50, DIALOG_WIDTH, DIALOG_HEIGHT) display:TRUE]; [_pinDialog layout]; [_pinDialog setTitle: [NSString stringWithUTF8String:msg->openDialog.title]]; _stages=msg->openDialog.stages; _keyTimeout=msg->openDialog.keyTimeout; /* start timer */ _startTime=time(NULL); [_pinDialog setTimeRemaining: _keyTimeout of:_keyTimeout]; [_pinDialog display]; [_pinDialog makeKeyAndOrderFront: self]; /* prepare response */ msg->openDialog.result=0; msg->openDialog.dialogId=++_lastDialogId; switch(_stages) { case 1: /* text 1 */ if (msg->openDialog.textStage0[0]) strncpy(_stage0Text, msg->openDialog.textStage0, sizeof(_stage0Text)); else strncpy(_stage0Text, I18N("Please enter your PIN into the reader's keypad"), sizeof(_stage0Text)); break; case 2: /* text 1 */ if (msg->openDialog.textStage0[0]) strncpy(_stage0Text, msg->openDialog.textStage0, sizeof(_stage0Text)); else strncpy(_stage0Text, I18N("Please enter the new PIN into the reader's keypad"), sizeof(_stage0Text)); /* text 2 */ if (msg->openDialog.textStage1[0]) strncpy(_stage1Text, msg->openDialog.textStage1, sizeof(_stage1Text)); else strncpy(_stage1Text, I18N("Please repeat entering the new PIN into the reader's keypad"), sizeof(_stage1Text)); break; case 3: /* text 1 */ if (msg->openDialog.textStage0[0]) strncpy(_stage0Text, msg->openDialog.textStage0, sizeof(_stage0Text)); else strncpy(_stage0Text, I18N("Please enter the current PIN into the reader's keypad"), sizeof(_stage0Text)); /* text 2 */ if (msg->openDialog.textStage1[0]) strncpy(_stage1Text, msg->openDialog.textStage1, sizeof(_stage1Text)); else strncpy(_stage1Text, I18N("Please enter the new PIN into the reader's keypad"), sizeof(_stage1Text)); /* text 3 */ if (msg->openDialog.textStage2[0]) strncpy(_stage2Text, msg->openDialog.textStage2, sizeof(_stage2Text)); else strncpy(_stage2Text, I18N("Please repeat entering the new PIN into the reader's keypad"), sizeof(_stage2Text)); break; } [self setCurrentStage: 0]; msg->header.type=RSCT_Message_Command_OpenDialog; msg->header.len=RSCT_MSG_SIZE(RSCT_MESSAGE_OPENDIALOG); /* send response */ rv=rsct_net_send(_socket, msg); if (rv<0) { fprintf(stderr, "Error sending response (%d)\n", rv); return rv; } _abortTimeUpdater = [[NSTimer scheduledTimerWithTimeInterval:.5 target:self selector:@selector(updateRemainingTime:) userInfo:nil repeats:YES] retain]; return 0; } - (int) handleCloseDialog: (RSCT_MESSAGE*) msg { DEBUGPI("CloseDialog\n"); if (_abortTimeUpdater!=nil) { [_abortTimeUpdater invalidate]; [_abortTimeUpdater release]; _abortTimeUpdater = nil; } _socket=-1; if (_pinDialog != nil) { [_pinDialog close]; } return 0; } - (int) handleSetStage: (RSCT_MESSAGE*) msg { int rv; DEBUGPI("SetStage %d\n", msg->setStage.stage); [self setCurrentStage:msg->setStage.stage]; /* prepare response */ msg->setStage.result=0; msg->header.type=RSCT_Message_Command_SetStage; msg->header.len=RSCT_MSG_SIZE(RSCT_MESSAGE_SETSTAGE); /* send response */ rv=rsct_net_send(_socket, msg); if (rv<0) { fprintf(stderr, "Error sending response (%d)\n", rv); return rv; } return 0; } - (int) handleSetNumChars: (RSCT_MESSAGE*) msg { int rv; DEBUGPI("SetNumChars %d\n", msg->setCharNum.charNum); if (_pinDialog) { [_pinDialog setNumDigits: msg->setCharNum.charNum]; if (msg->setCharNum.beep>0) { NSBeep(); } } /* prepare response */ msg->setCharNum.result=0; msg->header.type=RSCT_Message_Command_SetCharNum; msg->header.len=RSCT_MSG_SIZE(RSCT_MESSAGE_SETCHARNUM); /* send response */ rv=rsct_net_send(_socket, msg); if (rv<0) { fprintf(stderr, "RSCT: Error sending response (%d)\n", rv); return rv; } return 0; } - (int) handleMessage: (RSCT_MESSAGE*) msg { fprintf(stderr, "Received message %d\n", msg->header.type); switch(msg->header.type) { case RSCT_Message_Command_OpenDialog: return [self handleOpenDialog: msg]; case RSCT_Message_Command_CloseDialog: return [self handleCloseDialog: msg]; case RSCT_Message_Command_SetStage: return [self handleSetStage: msg]; case RSCT_Message_Command_SetCharNum: return [self handleSetNumChars: msg]; default: break; } return 0; } @end int handleConnection(int argc, char **argv, int sock) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; int rv; NSApplication *app=[NSApplication sharedApplication]; Delegate *delegate=[[Delegate alloc] init]; [app setDelegate:delegate]; AppController *cntrl=[[AppController alloc] init]; if (cntrl==nil) { DEBUGPE("No ApController\n"); return -1; } rv=[cntrl startConnection: sock]; if (rv>0) { DEBUGPE("Error on startConnection: %d\n", rv); return -1; } [NSApp run]; fprintf(stderr, "Done.\n"); [pool release]; return 0; } int main(int argc, char **argv) { int rv; int sk; rv=setSignalHandler(); if (rv) { DEBUGPE("ERROR: Could not setup signal handler\n"); return 2; } rv=mkSockName(); if (rv<0) { fprintf(stderr, "RSCT: Could not determine sockat path\n"); return 2; } unlink(daemon_sock_buf); sk=rsct_net_listen_by_path(daemon_sock_buf); if (sk==-1) { fprintf(stderr, "Error on rsct_net_listen_by_path(%s): %s\n", daemon_sock_buf, strerror(errno)); return 2; } DEBUGPI("INFO: cyberJack GUI started\n"); while(!daemon_abort) { int newS; newS=rsct_net_accept(sk); if (newS!=-1) { pid_t pid; pid=fork(); if (pid<0) { /* error */ } else if (pid==0) { int rv; /* child */ close(sk); rv=setSignalHandler(); if (rv) { DEBUGPE("ERROR: Could not setup child's signal handler\n"); exit(2); } fprintf(stderr, "Received a connection.\n"); rv=handleConnection(argc, argv, newS); fprintf(stderr, "Connection closed.\n"); if (rv) exit(3); exit(0); } else { /* parent */ DEBUGPI("INFO: cyberJack GUI service spawned (%d)\n", (int)pid); close(newS); } } } DEBUGPI("INFO: cyberJack GUI going down\n"); unlink(daemon_sock_buf); return 0; }