diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..a31fce0f282d40b3e2c153756bcbf7c64acf375c --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +.idea +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git "a/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Listings/Project.m51" "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Listings/Project.m51" new file mode 100644 index 0000000000000000000000000000000000000000..c50456d8d6c7d728ef505f080b29f5dab80f1150 --- /dev/null +++ "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Listings/Project.m51" @@ -0,0 +1,65 @@ +BL51 BANKED LINKER/LOCATER V6.22.2.0 11/10/2022 16:34:09 PAGE 1 + + +BL51 BANKED LINKER/LOCATER V6.22.2.0, INVOKED BY: +D:\PROGRAM FILES\KEIL_V5\C51\BIN\BL51.EXE .\Objects\main.obj TO .\Objects\Project PRINT (.\Listings\Project.m51) RAMSIZE +>> (256) + + +MEMORY MODEL: SMALL + + +INPUT MODULES INCLUDED: + .\Objects\main.obj (MAIN) + D:\PROGRAM FILES\KEIL_V5\C51\LIB\C51S.LIB (?C_STARTUP) + + +LINK MAP OF MODULE: .\Objects\Project (MAIN) + + + TYPE BASE LENGTH RELOCATION SEGMENT NAME + ----------------------------------------------------- + + * * * * * * * D A T A M E M O R Y * * * * * * * + REG 0000H 0008H ABSOLUTE "REG BANK 0" + IDATA 0008H 0001H UNIT ?STACK + + * * * * * * * C O D E M E M O R Y * * * * * * * + CODE 0000H 0003H ABSOLUTE + CODE 0003H 000CH UNIT ?C_C51STARTUP + CODE 000FH 0004H UNIT ?PR?MAIN?MAIN + + + +OVERLAY MAP OF MODULE: .\Objects\Project (MAIN) + + +SEGMENT + +--> CALLED SEGMENT +--------------------- +?C_C51STARTUP + +--> ?PR?MAIN?MAIN + + + +SYMBOL TABLE OF MODULE: .\Objects\Project (MAIN) + + VALUE TYPE NAME + ---------------------------------- + + ------- MODULE MAIN + C:0000H SYMBOL _ICE_DUMMY_ + D:00A0H PUBLIC P2 + C:000FH PUBLIC main + ------- PROC MAIN + C:000FH LINE# 2 + C:000FH LINE# 3 + C:0012H LINE# 4 + ------- ENDPROC MAIN + ------- ENDMOD MAIN + +Program Size: data=9.0 xdata=0 code=19 + BL51 BANKED LINKER/LOCATER V6.22.2.0 11/10/2022 16:34:09 PAGE 2 + + +LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git "a/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Listings/main.lst" "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Listings/main.lst" new file mode 100644 index 0000000000000000000000000000000000000000..a263776679e29ca9fd72ce4eec8a50a1942afb9c --- /dev/null +++ "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Listings/main.lst" @@ -0,0 +1,28 @@ +C51 COMPILER V9.60.0.0 MAIN 11/10/2022 16:22:54 PAGE 1 + + +C51 COMPILER V9.60.0.0, COMPILATION OF MODULE MAIN +OBJECT MODULE PLACED IN .\Objects\main.obj +COMPILER INVOKED BY: D:\Program Files\keil_v5\C51\BIN\C51.EXE main.c OPTIMIZE(8,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(. + -\Listings\main.lst) TABS(2) OBJECT(.\Objects\main.obj) + +line level source + + 1 #include + 2 void main() { + 3 1 P2 = 0xFE; // P2.7~P2.0 1111 0000 + 4 1 } + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 4 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git "a/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Objects/Project" "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Objects/Project" new file mode 100644 index 0000000000000000000000000000000000000000..5d891d4accb4bd6f73c63228d8d01b11160f5fad Binary files /dev/null and "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Objects/Project" differ diff --git "a/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Objects/Project.build_log.htm" "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Objects/Project.build_log.htm" new file mode 100644 index 0000000000000000000000000000000000000000..418de9f41e6b7ea0f8bda20e77c72d233428a6aa --- /dev/null +++ "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Objects/Project.build_log.htm" @@ -0,0 +1,33 @@ + + +
+

Vision Build Log

+

Tool Versions:

+IDE-Version: Vision V5.27.1.0 +Copyright (C) 2019 ARM Ltd and ARM Germany GmbH. All rights reserved. +License Information: Zeng Hongyi, Hongyi Software, LIC=X9F5U-SCSY7-RKHBI-TKD71-27WGM-XBR9P + +Tool Versions: +Toolchain: PK51 Prof. Developers Kit Version: 9.60.0.0 +Toolchain Path: D:\Program Files\keil_v5\C51\BIN +C Compiler: C51.exe V9.60.0.0 +Assembler: A51.exe V8.2.7.0 +Linker/Locator: BL51.exe V6.22.2.0 +Library Manager: LIB51.exe V4.30.1.0 +Hex Converter: OH51.exe V2.7.0.0 +CPU DLL: S8051.DLL V3.122.0.0 +Dialog DLL: DP51.DLL V2.67.0.0 +

Project:

+E:\develop\study\backend_study\KeilProject\2-1 һLED\Project.uvproj +Project File Date: 11/10/2022 + +

Output:

+Build target 'Target 1' +linking... +Program Size: data=9.0 xdata=0 code=19 +creating hex file from ".\Objects\Project"... +".\Objects\Project" - 0 Error(s), 0 Warning(s). +Build Time Elapsed: 00:00:00 +
+ + diff --git "a/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Objects/Project.hex" "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Objects/Project.hex" new file mode 100644 index 0000000000000000000000000000000000000000..789d0e8ccf643c6338b3cb69524c9584066f3acf --- /dev/null +++ "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Objects/Project.hex" @@ -0,0 +1,4 @@ +:04000F0075A0FE22B8 +:03000000020003F8 +:0C000300787FE4F6D8FD75810702000F3D +:00000001FF diff --git "a/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Objects/Project.lnp" "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Objects/Project.lnp" new file mode 100644 index 0000000000000000000000000000000000000000..dcc74b0d32a85a2586a61604ee5f44ee6b6b324b --- /dev/null +++ "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Objects/Project.lnp" @@ -0,0 +1,3 @@ +".\Objects\main.obj" +TO ".\Objects\Project" +PRINT(".\Listings\Project.m51") RAMSIZE(256) diff --git "a/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Objects/main.obj" "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Objects/main.obj" new file mode 100644 index 0000000000000000000000000000000000000000..60d18e3058588ba0e4727855bb3524397b4bcb19 Binary files /dev/null and "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Objects/main.obj" differ diff --git "a/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Project.uvgui.Hongyi" "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Project.uvgui.Hongyi" new file mode 100644 index 0000000000000000000000000000000000000000..968a45cdf66621051705a042740cea2b7c76cf30 --- /dev/null +++ "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Project.uvgui.Hongyi" @@ -0,0 +1,1878 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + + + + + 38003 + Registers + 140 90 + + + 346 + Code Coverage + 1010 160 + + + 204 + Performance Analyzer + 1170 + + + + + + 35141 + Event Statistics + + 200 50 700 + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 300 + 0 + + + + + + + + 1 + 1 + 0 + 0 + -1 + + + + + + + 44 + 0 + 1 + + -32000 + -32000 + + + -1 + -1 + + + 174 + 185 + 1625 + 933 + + + + 0 + + 261 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000001000000000000000100000041453A5C646576656C6F705C73747564795C6261636B656E645F73747564795C4B65696C50726F6A6563745C322D3120B5E3C1C1D2BBB8F64C45445C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000D70300006E0000007F070000E4020000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000DF000000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1005 + 1005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1FFFFFFF4F00000009000000D6030000 + + + 16 + 560000006D0000004601000038010000 + + + + 109 + 109 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2CFFFFFF4F00000016000000D6030000 + + + 16 + 560000006D00000072010000AD020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000002D02000090050000BD020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000001010000 + + + 16 + 560000006D0000004601000038010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 560000006D0000004601000038010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000004601000038010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000004601000038010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 195 + 195 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2CFFFFFF4F00000016000000D6030000 + + + 16 + 560000006D00000072010000AD020000 + + + + 196 + 196 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2CFFFFFF4F00000016000000D6030000 + + + 16 + 560000006D00000072010000AD020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 16000000DD020000BE030000DD030000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000001902000090050000BD020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 19000000E0020000A305000040030000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F40000006300000090050000DF000000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A0040000630000009005000029020000 + + + 16 + 560000006D0000004601000038010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000002D02000090050000A9020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000006300000090050000DF000000 + + + 16 + 560000006D0000004601000038010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000A4020000 + + + 16 + 560000006D00000072010000AD020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 16000000DD020000A605000059030000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 19000000E0020000A305000040030000 + + + 16 + 560000006D00000072010000AD020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000004601000038010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000004601000038010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 19000000E0020000A305000040030000 + + + 16 + 560000006D00000072010000AD020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 19000000E0020000A305000040030000 + + + 16 + 560000006D00000072010000AD020000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 0000000000000000BE0300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000DD030000BE030000F0030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000004601000038010000 + + + + 3342 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000560000006D0000001E030000FD000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000560000006D0000004601000038010000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000000000000FFFFFFFFFFFFFFFFF00000004F000000F4000000BE020000000000000200001004000000010000000000000000000000FFFFFFFF010000007394000001800010000000000000560000006D0000004601000038010000000000004F000000F0000000BE02000000000000404100460100000009526567697374657273000000007394000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF7394000001000000FFFFFFFF73940000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000560000006D0000004601000038010000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF16000000C5020000BE030000C90200000100000001000010040000000100000002FDFFFF8E000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000560000006D0000001E030000FD00000016000000C9020000BE030000DD0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC50000000000000004000000ED0300000010000001000000E00200006E000000CA030000F50300000100000000000000010000006D0000000010000001000000ED0200006E000000D7030000F5030000000000000000000000000000C30000000010000001000000ED0200006E000000D7030000F5030000000000000000000000000000C40000000010000001000000ED0200006E000000D7030000F503000000000000010000000000000000000000 + + + 59392 + File + + 2537 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020000001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000000000000010000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65FF7F0000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 976 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000004002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000004005000000000000000000000000000000000010000000100000000000000054275696C64FF7F0000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000000000000100000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000000000000100000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000000000000100000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000000000000100000001000000000000000000000001000000000000000000054465627567FF7F0000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + + 1 + 0 + + 100 + 0 + + .\main.c + 1 + 1 + 4 + 1 + + 0 + + + + +
diff --git "a/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Project.uvopt" "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Project.uvopt" new file mode 100644 index 0000000000000000000000000000000000000000..0f5a810edcec66f8e65abc6b785860965ef34559 --- /dev/null +++ "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Project.uvopt" @@ -0,0 +1,197 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + Target 1 + 0x0 + MCS-51 + + 24000000 + + 1 + 1 + 1 + 0 + 0 + + + 0 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\Listings\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + + 0 + Data Sheet + DATASHTS\ATMEL\AT89C52_DS.PDF + + + 1 + Instruction Set Manual + DATASHTS\ATMEL\AT_C51ISM.PDF + + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + -1 + + + + + + + + + + + + + + + 0 + + + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Source Group 1 + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + .\main.c + main.c + 0 + 0 + + + +
diff --git "a/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Project.uvproj" "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Project.uvproj" new file mode 100644 index 0000000000000000000000000000000000000000..35479566a5d3d6aa8dbbb1cce0fc4916c8b6c018 --- /dev/null +++ "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/Project.uvproj" @@ -0,0 +1,390 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x0 + MCS-51 + 0 + + + AT89C52 + Microchip + IRAM(0-0xFF) IROM(0-0x1FFF) CLOCK(24000000) + + "LIB\STARTUP.A51" ("Standard 8051 Startup Code") + + 2980 + REGX52.H + + + + + + + + + + + 0 + 0 + + + + Atmel\ + Atmel\ + + 0 + 0 + 0 + 0 + 1 + + .\Objects\ + Project + 1 + 0 + 1 + 1 + 1 + .\Listings\ + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + 65535 + + + S8051.DLL + + DP51.DLL + -p52 + S8051.DLL + + TP51.DLL + -p52 + + + + 0 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + + 0 + -1 + + + + + + + + + + + + + + + + + + + 0 + 0 + 0 + 0 + 0 + -1 + + 0 + + + + + + + 0 + + + + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x2000 + + + 0 + 0x0 + 0x100 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 0 + 0 + 1 + 0 + 1 + 3 + 8 + 2 + 1 + 1 + 0 + 0 + + + + + + + + + 0 + 1 + 0 + 0 + + + + + + + + + 0 + 0 + 1 + 0 + 2 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Source Group 1 + + + main.c + 1 + .\main.c + + + + + + + +
diff --git "a/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/main.c" "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/main.c" new file mode 100644 index 0000000000000000000000000000000000000000..2d4c8faa7afb4be3d2fa6e2ec2ce97293bc7e614 --- /dev/null +++ "b/KeilProject/2-1 \347\202\271\344\272\256\344\270\200\344\270\252LED/main.c" @@ -0,0 +1,4 @@ +#include +void main() { + P2 = 0xFE; // P2.7~P2.0 1111 0000 +} \ No newline at end of file diff --git "a/KeilProject/2-2 LED\351\227\252\347\203\201/Project.uvgui.Hongyi" "b/KeilProject/2-2 LED\351\227\252\347\203\201/Project.uvgui.Hongyi" new file mode 100644 index 0000000000000000000000000000000000000000..291cf873bc401ce576f327c87449e161216eb927 --- /dev/null +++ "b/KeilProject/2-2 LED\351\227\252\347\203\201/Project.uvgui.Hongyi" @@ -0,0 +1,1878 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + + + + + 38003 + Registers + 140 90 + + + 346 + Code Coverage + 1010 160 + + + 204 + Performance Analyzer + 1170 + + + + + + 35141 + Event Statistics + + 200 50 700 + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 300 + 0 + + + + + + + + 1 + 1 + 0 + 0 + -1 + + + + + + + 44 + 0 + 1 + + -32000 + -32000 + + + -1 + -1 + + + 174 + 185 + 1625 + 933 + + + + 0 + + 257 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000100000000000000010000003D453A5C646576656C6F705C73747564795C6261636B656E645F73747564795C4B65696C50726F6A6563745C322D32204C4544C9C1CBB85C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000D70300006E0000007F070000E4020000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000DF000000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1005 + 1005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1FFFFFFF4F00000009000000DD030000 + + + 16 + 560000006D0000004601000038010000 + + + + 109 + 109 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2CFFFFFF4F00000016000000D6030000 + + + 16 + 560000006D00000072010000AD020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000002D02000090050000BD020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000001010000 + + + 16 + 560000006D0000004601000038010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 560000006D0000004601000038010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000004601000038010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000004601000038010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 195 + 195 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2CFFFFFF4F00000016000000D6030000 + + + 16 + 560000006D00000072010000AD020000 + + + + 196 + 196 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2CFFFFFF4F00000016000000D6030000 + + + 16 + 560000006D00000072010000AD020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 16000000DD020000BE030000DD030000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000001902000090050000BD020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 19000000E0020000A305000040030000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F40000006300000090050000DF000000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A0040000630000009005000029020000 + + + 16 + 560000006D0000004601000038010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000002D02000090050000A9020000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000006300000090050000DF000000 + + + 16 + 560000006D0000004601000038010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000A4020000 + + + 16 + 560000006D00000072010000AD020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 16000000DD020000A605000059030000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 19000000E0020000A305000040030000 + + + 16 + 560000006D00000072010000AD020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000004601000038010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000004601000038010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 19000000E0020000A305000040030000 + + + 16 + 560000006D00000072010000AD020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 19000000E0020000A305000040030000 + + + 16 + 560000006D00000072010000AD020000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 560000006D0000001E030000FD000000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + 560000006D0000004601000038010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 0000000000000000BE0300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000DD030000BE030000F0030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + 560000006D0000004601000038010000 + + + + 3342 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000560000006D0000001E030000FD000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000560000006D0000004601000038010000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000000000000FFFFFFFFFFFFFFFFF00000004F000000F4000000BE020000000000000200001004000000010000000000000000000000FFFFFFFF010000007394000001800010000000000000560000006D0000004601000038010000000000004F000000F0000000BE02000000000000404100460100000009526567697374657273000000007394000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF7394000001000000FFFFFFFF73940000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000560000006D0000004601000038010000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF16000000C5020000BE030000C90200000100000001000010040000000100000002FDFFFF8E000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000560000006D0000001E030000FD00000016000000C9020000BE030000DD0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC50000000000000004000000ED0300000010000001000000E00200006E000000CA030000FC0300000100000000000000010000006D0000000010000001000000ED0200006E000000D7030000F5030000000000000000000000000000C30000000010000001000000ED0200006E000000D7030000F5030000000000000000000000000000C40000000010000001000000ED0200006E000000D7030000F503000000000000010000000000000000000000 + + + 59392 + File + + 2537 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020000001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000000000000010000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65FF7F0000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 976 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000004002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000004005000000000000000000000000000000000010000000100000000000000054275696C64FF7F0000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000000000000100000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000000000000100000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000000000000100000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000000000000100000001000000000000000000000001000000000000000000054465627567FF7F0000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + + 1 + 0 + + 100 + 0 + + .\main.c + 2 + 1 + 5 + 1 + + 0 + + + + +
diff --git "a/KeilProject/2-2 LED\351\227\252\347\203\201/Project.uvopt" "b/KeilProject/2-2 LED\351\227\252\347\203\201/Project.uvopt" new file mode 100644 index 0000000000000000000000000000000000000000..7ebd40196b86d05e14b959412a6da9eb97ae7d5e --- /dev/null +++ "b/KeilProject/2-2 LED\351\227\252\347\203\201/Project.uvopt" @@ -0,0 +1,197 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + Target 1 + 0x0 + MCS-51 + + 24000000 + + 0 + 1 + 1 + 0 + 0 + + + 0 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\Listings\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + + 0 + Data Sheet + DATASHTS\ATMEL\AT89C52_DS.PDF + + + 1 + Instruction Set Manual + DATASHTS\ATMEL\AT_C51ISM.PDF + + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + -1 + + + + + + + + + + + + + + + 0 + + + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Source Group 1 + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + .\main.c + main.c + 0 + 0 + + + +
diff --git "a/KeilProject/2-2 LED\351\227\252\347\203\201/Project.uvproj" "b/KeilProject/2-2 LED\351\227\252\347\203\201/Project.uvproj" new file mode 100644 index 0000000000000000000000000000000000000000..12831fd280551310524ca2d76bed75053a160ba1 --- /dev/null +++ "b/KeilProject/2-2 LED\351\227\252\347\203\201/Project.uvproj" @@ -0,0 +1,390 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x0 + MCS-51 + 0 + + + AT89C52 + Microchip + IRAM(0-0xFF) IROM(0-0x1FFF) CLOCK(24000000) + + "LIB\STARTUP.A51" ("Standard 8051 Startup Code") + + 2980 + REGX52.H + + + + + + + + + + + 0 + 0 + + + + Atmel\ + Atmel\ + + 0 + 0 + 0 + 0 + 1 + + .\Objects\ + Project + 1 + 0 + 0 + 1 + 1 + .\Listings\ + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + 65535 + + + S8051.DLL + + DP51.DLL + -p52 + S8051.DLL + + TP51.DLL + -p52 + + + + 0 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + + 0 + -1 + + + + + + + + + + + + + + + + + + + 0 + 0 + 0 + 0 + 0 + -1 + + 0 + + + + + + + 0 + + + + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x2000 + + + 0 + 0x0 + 0x100 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 0 + 0 + 1 + 0 + 1 + 3 + 8 + 2 + 1 + 1 + 0 + 0 + + + + + + + + + 0 + 1 + 0 + 0 + + + + + + + + + 0 + 0 + 1 + 0 + 2 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Source Group 1 + + + main.c + 1 + .\main.c + + + + + + + +
diff --git "a/KeilProject/2-2 LED\351\227\252\347\203\201/main.c" "b/KeilProject/2-2 LED\351\227\252\347\203\201/main.c" new file mode 100644 index 0000000000000000000000000000000000000000..81391444c018dc273124ccadfee5166bc9b686f3 --- /dev/null +++ "b/KeilProject/2-2 LED\351\227\252\347\203\201/main.c" @@ -0,0 +1,6 @@ +#include + +void main() { + P2 = 0xFE; + +} \ No newline at end of file diff --git a/design_patterns/pom.xml b/design_patterns/pom.xml index 363807aba831778608d0fc35eafe9d3a99812bc6..159cc04001082b3bbbab5ed71644934124d9d8e9 100644 --- a/design_patterns/pom.xml +++ b/design_patterns/pom.xml @@ -19,6 +19,12 @@ lombok 1.18.22 + + + cglib + cglib + 2.2.2 + \ No newline at end of file diff --git a/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/Computer.java b/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/Computer.java new file mode 100644 index 0000000000000000000000000000000000000000..8e4d75fcfaffc4c9aec9ea935fad1037eb88b499 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/Computer.java @@ -0,0 +1,16 @@ +package com.hongyi.pattern.adapter.class_adapter; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/5 8:56 + * @Version 1.0 + */ +public class Computer { + // 从SD读取数据 + public String readSD(SDCard sdCard) { + if (sdCard == null) { + throw new NullPointerException("sd card is null"); + } + return sdCard.readSD(); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/SDAdapterTF.java b/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/SDAdapterTF.java new file mode 100644 index 0000000000000000000000000000000000000000..97841139086aeba2f19cc2e8e314b57fb8014eb3 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/SDAdapterTF.java @@ -0,0 +1,22 @@ +package com.hongyi.pattern.adapter.class_adapter; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/5 9:00 + * @Version 1.0 + */ +// 适配器类 +public class SDAdapterTF extends TFCardImpl implements SDCard{ + + @Override + public String readSD() { + System.out.println("adapter read tf card"); + return readTF(); + } + + @Override + public void writeSD(String data) { + System.out.println("adapter write tf card"); + writeTF(data); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/SDCard.java b/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/SDCard.java new file mode 100644 index 0000000000000000000000000000000000000000..dea1d66d3005f0d58457cfa91c459a45c9b1a433 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/SDCard.java @@ -0,0 +1,14 @@ +package com.hongyi.pattern.adapter.class_adapter; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/5 8:54 + * @Version 1.0 + */ +public interface SDCard { + // 从SD卡中读取数据 + String readSD(); + + // 向SD卡中写入数据 + void writeSD(String data); +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/SDCardImpl.java b/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/SDCardImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..68229e6e078b986a126819fbab90f6bb1c0c4531 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/SDCardImpl.java @@ -0,0 +1,19 @@ +package com.hongyi.pattern.adapter.class_adapter; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/5 8:55 + * @Version 1.0 + */ +public class SDCardImpl implements SDCard{ + @Override + public String readSD() { + // 模拟读取数据 + return "SDCard read data : hello SDCard"; + } + + @Override + public void writeSD(String data) { + System.out.println("SDCard write data: " + data); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/TFCard.java b/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/TFCard.java new file mode 100644 index 0000000000000000000000000000000000000000..9a0aec4cca7b7671bf35845074045ea26697f485 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/TFCard.java @@ -0,0 +1,14 @@ +package com.hongyi.pattern.adapter.class_adapter; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/5 8:51 + * @Version 1.0 + */ +public interface TFCard { + // 从TF读取数据 + String readTF(); + + // 向TF写数据 + void writeTF(String data); +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/TFCardImpl.java b/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/TFCardImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..68add42ff53874dbc476ee1b0e4d43b5e075a0b1 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/TFCardImpl.java @@ -0,0 +1,19 @@ +package com.hongyi.pattern.adapter.class_adapter; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/5 8:52 + * @Version 1.0 + */ +public class TFCardImpl implements TFCard{ + @Override + public String readTF() { + // 模拟读取数据 + return "TFCard read data : hello TFCard"; + } + + @Override + public void writeTF(String data) { + System.out.println("TFCard write data: " + data); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/Test.java b/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/Test.java new file mode 100644 index 0000000000000000000000000000000000000000..ff2b987c77b228154987953d1f31822ce3411beb --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/adapter/class_adapter/Test.java @@ -0,0 +1,23 @@ +package com.hongyi.pattern.adapter.class_adapter; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/5 8:57 + * @Version 1.0 + */ +public class Test { + public static void main(String[] args) { + // 创建计算机对象 + Computer computer = new Computer(); + String data = computer.readSD(new SDCardImpl()); + System.out.println(data); + + System.out.println("==================="); + // 使用该计算机读取TF卡中的数据 + // 定义适配器类 + SDAdapterTF sdAdapterTF = new SDAdapterTF(); + // 读取tf数据 + String data1 = computer.readSD(sdAdapterTF); + System.out.println(data1); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/Computer.java b/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/Computer.java new file mode 100644 index 0000000000000000000000000000000000000000..dbb60bce02a49009f71e68827883a9b3f86e32b6 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/Computer.java @@ -0,0 +1,16 @@ +package com.hongyi.pattern.adapter.object_adapter; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/5 8:56 + * @Version 1.0 + */ +public class Computer { + // 从SD读取数据 + public String readSD(SDCard sdCard) { + if (sdCard == null) { + throw new NullPointerException("sd card is null"); + } + return sdCard.readSD(); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/SDAdapterTF.java b/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/SDAdapterTF.java new file mode 100644 index 0000000000000000000000000000000000000000..41b83089da19d21dc5ed77fb427c522c63f59d57 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/SDAdapterTF.java @@ -0,0 +1,29 @@ +package com.hongyi.pattern.adapter.object_adapter; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/5 9:00 + * @Version 1.0 + */ +// 适配器类 +public class SDAdapterTF implements SDCard { + + // 声明适配者类 + private TFCard tfCard; + + public SDAdapterTF(TFCard tfCard) { + this.tfCard = tfCard; + } + + @Override + public String readSD() { + System.out.println("adapter read tf card"); + return tfCard.readTF(); + } + + @Override + public void writeSD(String data) { + System.out.println("adapter write tf card"); + tfCard.writeTF(data); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/SDCard.java b/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/SDCard.java new file mode 100644 index 0000000000000000000000000000000000000000..486fa7dd43848fb63b5411262795f8ac8444c836 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/SDCard.java @@ -0,0 +1,14 @@ +package com.hongyi.pattern.adapter.object_adapter; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/5 8:54 + * @Version 1.0 + */ +public interface SDCard { + // 从SD卡中读取数据 + String readSD(); + + // 向SD卡中写入数据 + void writeSD(String data); +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/SDCardImpl.java b/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/SDCardImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..0df2756978686ea549b7afdf32ad135d2b9bee76 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/SDCardImpl.java @@ -0,0 +1,19 @@ +package com.hongyi.pattern.adapter.object_adapter; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/5 8:55 + * @Version 1.0 + */ +public class SDCardImpl implements SDCard { + @Override + public String readSD() { + // 模拟读取数据 + return "SDCard read data : hello SDCard"; + } + + @Override + public void writeSD(String data) { + System.out.println("SDCard write data: " + data); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/TFCard.java b/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/TFCard.java new file mode 100644 index 0000000000000000000000000000000000000000..5669e43b1ba4e585a1a239137f629729c4917b9a --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/TFCard.java @@ -0,0 +1,14 @@ +package com.hongyi.pattern.adapter.object_adapter; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/5 8:51 + * @Version 1.0 + */ +public interface TFCard { + // 从TF读取数据 + String readTF(); + + // 向TF写数据 + void writeTF(String data); +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/TFCardImpl.java b/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/TFCardImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..d900f007c053dc7801691f30cfcfc1b60707d40d --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/TFCardImpl.java @@ -0,0 +1,19 @@ +package com.hongyi.pattern.adapter.object_adapter; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/5 8:52 + * @Version 1.0 + */ +public class TFCardImpl implements TFCard { + @Override + public String readTF() { + // 模拟读取数据 + return "TFCard read data : hello TFCard"; + } + + @Override + public void writeTF(String data) { + System.out.println("TFCard write data: " + data); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/Test.java b/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/Test.java new file mode 100644 index 0000000000000000000000000000000000000000..c5fb4c738b65c25dfb4adfae397406d75f7dcba3 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/adapter/object_adapter/Test.java @@ -0,0 +1,20 @@ +package com.hongyi.pattern.adapter.object_adapter; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/5 8:57 + * @Version 1.0 + */ +public class Test { + public static void main(String[] args) { + // 创建计算机对象 + Computer computer = new Computer(); + String data = computer.readSD(new SDCardImpl()); + System.out.println(data); + + System.out.println("==================="); + // 使用该计算机读取TF卡中的数据 + String data1 = computer.readSD(new SDAdapterTF(new TFCardImpl())); + System.out.println(data1); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/bridge/AVIFile.java b/design_patterns/src/main/java/com/hongyi/pattern/bridge/AVIFile.java new file mode 100644 index 0000000000000000000000000000000000000000..fecb4da3ab5acdf8dd3db2d7d48c792b1eb12ae0 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/bridge/AVIFile.java @@ -0,0 +1,13 @@ +package com.hongyi.pattern.bridge; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/5 9:51 + * @Version 1.0 + */ +public class AVIFile implements VideoFile{ + @Override + public void decode(String fileName) { + System.out.println("AVI视频文件:" + fileName); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/bridge/Mac.java b/design_patterns/src/main/java/com/hongyi/pattern/bridge/Mac.java new file mode 100644 index 0000000000000000000000000000000000000000..1dcbdba53218272f8be84a9cf5f2ebd2904cc350 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/bridge/Mac.java @@ -0,0 +1,18 @@ +package com.hongyi.pattern.bridge; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/5 9:55 + * @Version 1.0 + */ +public class Mac extends OperatingSystem{ + + public Mac(VideoFile videoFile) { + super(videoFile); + } + + @Override + public void play(String fileName) { + videoFile.decode(fileName); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/bridge/OperatingSystem.java b/design_patterns/src/main/java/com/hongyi/pattern/bridge/OperatingSystem.java new file mode 100644 index 0000000000000000000000000000000000000000..531e992895d480471d71404b1d3bccea394da31e --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/bridge/OperatingSystem.java @@ -0,0 +1,17 @@ +package com.hongyi.pattern.bridge; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/5 9:53 + * @Version 1.0 + */ +public abstract class OperatingSystem { + // 声明VideoFile对象 + protected VideoFile videoFile; + + public OperatingSystem(VideoFile videoFile) { + this.videoFile = videoFile; + } + + public abstract void play(String fileName); +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/bridge/RMVBFile.java b/design_patterns/src/main/java/com/hongyi/pattern/bridge/RMVBFile.java new file mode 100644 index 0000000000000000000000000000000000000000..621a145007eef5dc453d7fba02cda12ec97bc3ce --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/bridge/RMVBFile.java @@ -0,0 +1,13 @@ +package com.hongyi.pattern.bridge; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/5 9:52 + * @Version 1.0 + */ +public class RMVBFile implements VideoFile{ + @Override + public void decode(String fileName) { + System.out.println("RMVB视频文件:" + fileName); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/bridge/Test.java b/design_patterns/src/main/java/com/hongyi/pattern/bridge/Test.java new file mode 100644 index 0000000000000000000000000000000000000000..6c70c31d5b4e5cebac9e5507ac195159d4f4beb4 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/bridge/Test.java @@ -0,0 +1,15 @@ +package com.hongyi.pattern.bridge; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/5 9:55 + * @Version 1.0 + */ +public class Test { + public static void main(String[] args) { + // 创建Mac系统 + OperatingSystem system = new Mac(new AVIFile()); + // 使用操作系统播放视频文件 + system.play("泰坦尼克号"); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/bridge/VideoFile.java b/design_patterns/src/main/java/com/hongyi/pattern/bridge/VideoFile.java new file mode 100644 index 0000000000000000000000000000000000000000..9b1f39fb911e509350ce75cf1269dd68b2ef6c6c --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/bridge/VideoFile.java @@ -0,0 +1,11 @@ +package com.hongyi.pattern.bridge; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/5 9:50 + * @Version 1.0 + */ +public interface VideoFile { + // 解码功能 + void decode(String fileName); +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/bridge/Windows.java b/design_patterns/src/main/java/com/hongyi/pattern/bridge/Windows.java new file mode 100644 index 0000000000000000000000000000000000000000..c1ab5adae94aa4948e766ecdd69d40c687c8610d --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/bridge/Windows.java @@ -0,0 +1,19 @@ +package com.hongyi.pattern.bridge; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/5 9:54 + * @Version 1.0 + */ +public class Windows extends OperatingSystem{ + + public Windows(VideoFile videoFile) { + super(videoFile); + } + + @Override + public void play(String fileName) { + videoFile.decode(fileName); + } + +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/Bike.java b/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/Bike.java new file mode 100644 index 0000000000000000000000000000000000000000..c1cb3cf86377894c08be919d918cccc0b6184f15 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/Bike.java @@ -0,0 +1,16 @@ +package com.hongyi.pattern.builder.demo1; + +import lombok.Data; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/3 15:04 + * @Version 1.0 + */ +@Data +public class Bike { + // 车架 + private String frame; + // 车座 + private String seat; +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/Builder.java b/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/Builder.java new file mode 100644 index 0000000000000000000000000000000000000000..11805ea91837144b6b0256cad6ff5d7d177bf5ba --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/Builder.java @@ -0,0 +1,18 @@ +package com.hongyi.pattern.builder.demo1; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/3 15:05 + * @Version 1.0 + */ +public abstract class Builder { + // 声明一个Bike类型的变量,并赋值,但是并未构建 + protected Bike bike = new Bike(); + + // 声明构建方法 + public abstract void buildFrame(); + + public abstract void buildSeat(); + + public abstract Bike createBike(); +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/Director.java b/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/Director.java new file mode 100644 index 0000000000000000000000000000000000000000..74f36ad0599cc9d414e3fc060a6b6ef7e644f907 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/Director.java @@ -0,0 +1,22 @@ +package com.hongyi.pattern.builder.demo1; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/3 15:11 + * @Version 1.0 + */ +public class Director { + + private Builder builder; + + public Director(Builder builder) { + this.builder = builder; + } + + // 组装自行车 + public Bike construct() { + builder.buildFrame(); + builder.buildSeat(); + return builder.createBike(); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/MobikeBuilder.java b/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/MobikeBuilder.java new file mode 100644 index 0000000000000000000000000000000000000000..a22325718efb5463918603cb4fa96388a0961f7c --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/MobikeBuilder.java @@ -0,0 +1,23 @@ +package com.hongyi.pattern.builder.demo1; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/3 15:07 + * @Version 1.0 + */ +public class MobikeBuilder extends Builder{ + @Override + public void buildFrame() { + bike.setFrame("摩拜车架"); + } + + @Override + public void buildSeat() { + bike.setSeat("摩拜车座"); + } + + @Override + public Bike createBike() { + return bike; + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/OfoBuilder.java b/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/OfoBuilder.java new file mode 100644 index 0000000000000000000000000000000000000000..63db8a427c4c4152d950a81f8e5551db16aa8266 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/OfoBuilder.java @@ -0,0 +1,23 @@ +package com.hongyi.pattern.builder.demo1; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/3 15:09 + * @Version 1.0 + */ +public class OfoBuilder extends Builder{ + @Override + public void buildFrame() { + bike.setFrame("Ofo车架"); + } + + @Override + public void buildSeat() { + bike.setSeat("Ofo车座"); + } + + @Override + public Bike createBike() { + return bike; + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/Test.java b/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/Test.java new file mode 100644 index 0000000000000000000000000000000000000000..e6dd730713a7e320ef4b251072f4af43306c9524 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/builder/demo1/Test.java @@ -0,0 +1,17 @@ +package com.hongyi.pattern.builder.demo1; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/3 15:12 + * @Version 1.0 + */ +public class Test { + public static void main(String[] args) { + // 创建指挥者 + Director director = new Director(new MobikeBuilder()); + // 指挥组装 + Bike bike = director.construct(); + System.out.println(bike.getFrame()); + System.out.println(bike.getSeat()); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/builder/demo2/Phone.java b/design_patterns/src/main/java/com/hongyi/pattern/builder/demo2/Phone.java new file mode 100644 index 0000000000000000000000000000000000000000..c57bd5ddf6ae8edd3b6e1c348877d2f300878058 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/builder/demo2/Phone.java @@ -0,0 +1,60 @@ +package com.hongyi.pattern.builder.demo2; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.ToString; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/3 15:57 + * @Version 1.0 + */ +@ToString +public class Phone { + private String cpu; + private String screen; + private String memory; + private String mainboard; + + // 私有构造方法 + private Phone(Builder builder) { + this.cpu = builder.cpu; + this.screen = builder.screen; + this.memory = builder.memory; + this.mainboard = builder.mainboard; + }; + + // 静态内部类——建造者类 + public static final class Builder { + private String cpu; + private String screen; + private String memory; + private String mainboard; + + public Builder cpu(String cpu) { + this.cpu = cpu; + return this; + } + + public Builder screen(String screen) { + this.screen = screen; + return this; + } + + public Builder memory(String memory) { + this.memory = memory; + return this; + } + + public Builder mainboard(String mainboard) { + this.mainboard = mainboard; + return this; + } + + // 使用构建者创建对象 + public Phone build() { + return new Phone(this); + } + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/builder/demo2/Test.java b/design_patterns/src/main/java/com/hongyi/pattern/builder/demo2/Test.java new file mode 100644 index 0000000000000000000000000000000000000000..ef6a3de2e1e96665648010ec600a4d70fb634463 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/builder/demo2/Test.java @@ -0,0 +1,19 @@ +package com.hongyi.pattern.builder.demo2; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/3 16:04 + * @Version 1.0 + */ +public class Test { + public static void main(String[] args) { + // 使用构建者创建对象 + Phone phone = new Phone.Builder() + .cpu("intel") // 链式调用 + .screen("三星") + .memory("金士顿") + .mainboard("华硕") + .build(); + System.out.println(phone); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/combination/Menu.java b/design_patterns/src/main/java/com/hongyi/pattern/combination/Menu.java new file mode 100644 index 0000000000000000000000000000000000000000..8abaf8d502a950c934045084daddf540ea44e8a9 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/combination/Menu.java @@ -0,0 +1,49 @@ +package com.hongyi.pattern.combination; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/5 11:22 + * @Version 1.0 + */ +public class Menu extends MenuComponent{ + + // 菜单可以有多个子菜单或子菜单项 + private List menuComponents = new ArrayList<>(); + + // 构造方法 + public Menu(String name, int level) { + this.name = name; + this.level = level; + } + + @Override + public void add(MenuComponent menuComponent) { + menuComponents.add(menuComponent); + } + + @Override + public void remove(MenuComponent menuComponent) { + menuComponents.remove(menuComponent); + } + + @Override + public MenuComponent getChild(int index) { + return menuComponents.get(index); + } + + @Override + public void print() { + // 打印菜单名称 + for (int i = 0;i < level; i++) { + System.out.print("--"); + } + System.out.println(name); + // 打印子菜单名称或子菜单项名称 + for (MenuComponent menuComponent : menuComponents) { + menuComponent.print(); + } + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/combination/MenuComponent.java b/design_patterns/src/main/java/com/hongyi/pattern/combination/MenuComponent.java new file mode 100644 index 0000000000000000000000000000000000000000..6d6002e446feba4a6331c3c9a881c6ff56e978cf --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/combination/MenuComponent.java @@ -0,0 +1,37 @@ +package com.hongyi.pattern.combination; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/5 11:18 + * @Version 1.0 + */ +// 抽象根节点 +public abstract class MenuComponent { + // 菜单组件的名称 + protected String name; + // 菜单组件的层级 + protected int level; + + // 添加子菜单 + public void add(MenuComponent menuComponent) { + throw new UnsupportedOperationException(); + } + + // 移除子菜单 + public void remove(MenuComponent menuComponent) { + throw new UnsupportedOperationException(); + } + + // 获取指定的子菜单 + public MenuComponent getChild(int index) { + throw new UnsupportedOperationException(); + } + + // 获取菜单或菜单项的名称 + public String getName() { + return name; + } + + // 打印菜单名称(包含子菜单和子菜单项) + public abstract void print(); +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/combination/MenuItem.java b/design_patterns/src/main/java/com/hongyi/pattern/combination/MenuItem.java new file mode 100644 index 0000000000000000000000000000000000000000..1f0b70c28a5544258155de76d2a82a7bd95627fd --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/combination/MenuItem.java @@ -0,0 +1,22 @@ +package com.hongyi.pattern.combination; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/5 11:27 + * @Version 1.0 + */ +public class MenuItem extends MenuComponent{ + + public MenuItem(String name, int level) { + this.name = name; + this.level = level; + } + + @Override + public void print() { + for (int i = 0;i < level; i++) { + System.out.print("--"); + } + System.out.println(this.name); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/combination/Test.java b/design_patterns/src/main/java/com/hongyi/pattern/combination/Test.java new file mode 100644 index 0000000000000000000000000000000000000000..8ab41570f246e58ac0bec76f5cefb438e88f606c --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/combination/Test.java @@ -0,0 +1,38 @@ +package com.hongyi.pattern.combination; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/5 11:28 + * @Version 1.0 + */ +public class Test { + public static void main(String[] args) { + // 创建菜单树 + MenuComponent menu1 = new Menu("菜单管理", 2); + menu1.add(new MenuItem("页面访问", 3)); + menu1.add(new MenuItem("展开菜单", 3)); + menu1.add(new MenuItem("编辑菜单", 3)); + menu1.add(new MenuItem("删除菜单", 3)); + menu1.add(new MenuItem("新增菜单", 3)); + + MenuComponent menu2 = new Menu("权限管理", 2); + menu2.add(new MenuItem("页面访问", 3)); + menu2.add(new MenuItem("提交保存", 3)); + + MenuComponent menu3 = new Menu("角色管理", 2); + menu3.add(new MenuItem("页面访问", 3)); + menu3.add(new MenuItem("新增角色", 3)); + menu3.add(new MenuItem("修改角色", 3)); + + // 创建一级菜单 + MenuComponent component = new Menu("系统管理", 1); + + // 将二级菜单添加到一级菜单中 + component.add(menu1); + component.add(menu2); + component.add(menu3); + + // 打印菜单名称 + component.print(); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/decorator/Bacon.java b/design_patterns/src/main/java/com/hongyi/pattern/decorator/Bacon.java new file mode 100644 index 0000000000000000000000000000000000000000..30dbd5254cf6781067c9c09849bb5bb1be97de00 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/decorator/Bacon.java @@ -0,0 +1,24 @@ +package com.hongyi.pattern.decorator; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/9 17:29 + * @Version 1.0 + */ +public class Bacon extends Garnish{ + + public Bacon(Fastfood fastfood) { + super(fastfood, 2, "培根"); + } + + @Override + public float cost() { + // 计算价格 + return getPrice() + getFastfood().cost(); + } + + @Override + public String getDesc() { + return super.getDesc() + getFastfood().getDesc(); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/decorator/Eggs.java b/design_patterns/src/main/java/com/hongyi/pattern/decorator/Eggs.java new file mode 100644 index 0000000000000000000000000000000000000000..25166bc5c9b5be7775b02bb64814dd1ce51dd799 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/decorator/Eggs.java @@ -0,0 +1,24 @@ +package com.hongyi.pattern.decorator; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/9 17:29 + * @Version 1.0 + */ +public class Eggs extends Garnish{ + + public Eggs(Fastfood fastfood) { + super(fastfood, 1, "鸡蛋"); + } + + @Override + public float cost() { + // 计算价格 + return getPrice() + getFastfood().cost(); + } + + @Override + public String getDesc() { + return super.getDesc() + getFastfood().getDesc(); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/decorator/Fastfood.java b/design_patterns/src/main/java/com/hongyi/pattern/decorator/Fastfood.java new file mode 100644 index 0000000000000000000000000000000000000000..ce31da3c573223e0ca5d435dd0613c3ca17077dd --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/decorator/Fastfood.java @@ -0,0 +1,20 @@ +package com.hongyi.pattern.decorator; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/9 17:24 + * @Version 1.0 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public abstract class Fastfood { + private float price; + private String desc; + + public abstract float cost(); +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/decorator/FriedNoodles.java b/design_patterns/src/main/java/com/hongyi/pattern/decorator/FriedNoodles.java new file mode 100644 index 0000000000000000000000000000000000000000..e2fa587e3b31ca421e8212b4e32bcc0d41407c4f --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/decorator/FriedNoodles.java @@ -0,0 +1,18 @@ +package com.hongyi.pattern.decorator; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/9 17:27 + * @Version 1.0 + */ +public class FriedNoodles extends Fastfood{ + + public FriedNoodles() { + super(12, "炒面"); + } + + @Override + public float cost() { + return getPrice(); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/decorator/FriedRice.java b/design_patterns/src/main/java/com/hongyi/pattern/decorator/FriedRice.java new file mode 100644 index 0000000000000000000000000000000000000000..7418d1e3932ad65849a07a9c2a292317255910d9 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/decorator/FriedRice.java @@ -0,0 +1,20 @@ +package com.hongyi.pattern.decorator; + +import lombok.NoArgsConstructor; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/9 17:26 + * @Version 1.0 + */ +public class FriedRice extends Fastfood{ + + public FriedRice() { + super(10, "炒饭"); + } + + @Override + public float cost() { + return getPrice(); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/decorator/Garnish.java b/design_patterns/src/main/java/com/hongyi/pattern/decorator/Garnish.java new file mode 100644 index 0000000000000000000000000000000000000000..f27cd9994013c63e29fd7d6d9f9fd353497ba6b7 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/decorator/Garnish.java @@ -0,0 +1,20 @@ +package com.hongyi.pattern.decorator; + +import lombok.AllArgsConstructor; +import lombok.Data; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/9 17:28 + * @Version 1.0 + */ +@Data +public abstract class Garnish extends Fastfood{ + // 声明快餐类 + private Fastfood fastfood; + + public Garnish(Fastfood fastfood, float price, String desc) { + super(price, desc); + this.fastfood = fastfood; + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/decorator/Test.java b/design_patterns/src/main/java/com/hongyi/pattern/decorator/Test.java new file mode 100644 index 0000000000000000000000000000000000000000..213be8b7ba6010fd19e22000fc8cd9bfe31fcd1c --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/decorator/Test.java @@ -0,0 +1,22 @@ +package com.hongyi.pattern.decorator; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/9 17:33 + * @Version 1.0 + */ +public class Test { + public static void main(String[] args) { + // 点一份炒饭 + Fastfood food = new FriedRice(); + System.out.println(food.getDesc() + " " + food.cost() + "元"); + System.out.println("============"); + // 在炒饭中加一个鸡蛋 + food = new Eggs(food); + System.out.println(food.getDesc() + " " + food.cost() + "元"); + System.out.println("============"); + // 再加一份培根 + food = new Bacon(food); + System.out.println(food.getDesc() + " " + food.cost() + "元"); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/facade/AirCondition.java b/design_patterns/src/main/java/com/hongyi/pattern/facade/AirCondition.java new file mode 100644 index 0000000000000000000000000000000000000000..e67a9cc1b2c874f580f651dd75b4552e6d89b125 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/facade/AirCondition.java @@ -0,0 +1,16 @@ +package com.hongyi.pattern.facade; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/5 10:09 + * @Version 1.0 + */ +public class AirCondition { + public void on() { + System.out.println("打开空调"); + } + + public void off() { + System.out.println("关闭空调"); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/facade/Light.java b/design_patterns/src/main/java/com/hongyi/pattern/facade/Light.java new file mode 100644 index 0000000000000000000000000000000000000000..3dbdb2b3d80667eb712119720236ec192e25c1c3 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/facade/Light.java @@ -0,0 +1,16 @@ +package com.hongyi.pattern.facade; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/5 10:08 + * @Version 1.0 + */ +public class Light { + public void on() { + System.out.println("打开电灯"); + } + + public void off() { + System.out.println("关闭电灯"); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/facade/SmartAppliancesFacade.java b/design_patterns/src/main/java/com/hongyi/pattern/facade/SmartAppliancesFacade.java new file mode 100644 index 0000000000000000000000000000000000000000..efd1cae92996d12963eef8e42b53d37137077041 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/facade/SmartAppliancesFacade.java @@ -0,0 +1,44 @@ +package com.hongyi.pattern.facade; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/5 10:10 + * @Version 1.0 + */ +public class SmartAppliancesFacade { + // 聚合电灯、电视机、空调对象 + private Light light; + private TV tv; + private AirCondition airCondition; + + public SmartAppliancesFacade() { + light = new Light(); + tv = new TV(); + airCondition = new AirCondition(); + } + + // 通过语音控制 + public void say(String msg) { + if (msg.contains("打开")) { + on(); + } else if(msg.contains("关闭")) { + off(); + } else { + System.out.println("IDK"); + } + } + + // 一键打开功能 + private void on() { + light.on(); + tv.on(); + airCondition.on(); + } + + // 一键关闭功能 + private void off() { + light.off(); + tv.off(); + airCondition.off(); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/facade/TV.java b/design_patterns/src/main/java/com/hongyi/pattern/facade/TV.java new file mode 100644 index 0000000000000000000000000000000000000000..11254e0ad9c8629c5e4d6f386145a420047f22bf --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/facade/TV.java @@ -0,0 +1,16 @@ +package com.hongyi.pattern.facade; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/5 10:09 + * @Version 1.0 + */ +public class TV { + public void on() { + System.out.println("打开TV"); + } + + public void off() { + System.out.println("关闭TV"); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/facade/Test.java b/design_patterns/src/main/java/com/hongyi/pattern/facade/Test.java new file mode 100644 index 0000000000000000000000000000000000000000..4f3f753f467b267cdb38a1efab7862cd04ddee9a --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/facade/Test.java @@ -0,0 +1,15 @@ +package com.hongyi.pattern.facade; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/5 10:14 + * @Version 1.0 + */ +public class Test { + public static void main(String[] args) { + // 创建智能音响 + SmartAppliancesFacade facade = new SmartAppliancesFacade(); + // 控制家电 + facade.say("打开家电"); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/flyweight/AbstractBox.java b/design_patterns/src/main/java/com/hongyi/pattern/flyweight/AbstractBox.java new file mode 100644 index 0000000000000000000000000000000000000000..8b24ef06223fac013217e738e5ecf0c011ce971b --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/flyweight/AbstractBox.java @@ -0,0 +1,17 @@ +package com.hongyi.pattern.flyweight; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/6 10:48 + * @Version 1.0 + */ +// 抽象享元角色 +public abstract class AbstractBox { + // 获取图形 + public abstract String getShape(); + + // 显示图形和颜色 + public void display(String color) { + System.out.println("形状:" + getShape() + ", 颜色:" + color); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/flyweight/BoxFactory.java b/design_patterns/src/main/java/com/hongyi/pattern/flyweight/BoxFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..06a1e306e3fb66d76f557cf0006e6ad725d7f821 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/flyweight/BoxFactory.java @@ -0,0 +1,34 @@ +package com.hongyi.pattern.flyweight; + +import java.util.HashMap; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/6 10:51 + * @Version 1.0 + */ +// 工厂类,设计为单例 +public class BoxFactory { + private HashMap map; + + private static final BoxFactory factory = new BoxFactory(); + + // 私有构造方法 + private BoxFactory() { + map = new HashMap(); + map.put("I", new IBox()); + map.put("L", new LBox()); + map.put("O", new OBox()); + } + + // 提供方法获取该工厂类对象 + public static BoxFactory getInstance() { + return factory; + } + + // 根据名称获取图形对象 + public AbstractBox getShape(String name) { + return map.get(name); + } + +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/flyweight/IBox.java b/design_patterns/src/main/java/com/hongyi/pattern/flyweight/IBox.java new file mode 100644 index 0000000000000000000000000000000000000000..4ec64277d43fafd8c24e8391288f53a83a3943fe --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/flyweight/IBox.java @@ -0,0 +1,14 @@ +package com.hongyi.pattern.flyweight; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/6 10:50 + * @Version 1.0 + */ +// 具体享元角色 +public class IBox extends AbstractBox{ + @Override + public String getShape() { + return "I"; + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/flyweight/LBox.java b/design_patterns/src/main/java/com/hongyi/pattern/flyweight/LBox.java new file mode 100644 index 0000000000000000000000000000000000000000..eeea80f8eb2893db2e3a2a6d9bcb85b9c1333a94 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/flyweight/LBox.java @@ -0,0 +1,14 @@ +package com.hongyi.pattern.flyweight; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/6 10:50 + * @Version 1.0 + */ +// 具体享元角色 +public class LBox extends AbstractBox{ + @Override + public String getShape() { + return "L"; + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/flyweight/OBox.java b/design_patterns/src/main/java/com/hongyi/pattern/flyweight/OBox.java new file mode 100644 index 0000000000000000000000000000000000000000..dd7d5242ccca0b930c1c5f14a692fe8a58ce6b93 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/flyweight/OBox.java @@ -0,0 +1,14 @@ +package com.hongyi.pattern.flyweight; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/6 10:50 + * @Version 1.0 + */ +// 具体享元角色 +public class OBox extends AbstractBox{ + @Override + public String getShape() { + return "O"; + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/flyweight/Test.java b/design_patterns/src/main/java/com/hongyi/pattern/flyweight/Test.java new file mode 100644 index 0000000000000000000000000000000000000000..5cec918fea70d33dec4df6285a2996a83d325fbc --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/flyweight/Test.java @@ -0,0 +1,24 @@ +package com.hongyi.pattern.flyweight; + +/** + * @Author Kisugi Takumi + * @Date 2022/11/6 10:55 + * @Version 1.0 + */ +public class Test { + public static void main(String[] args) { + // 获取I图形 + AbstractBox box1 = BoxFactory.getInstance().getShape("I"); + box1.display("Black"); + + // 获取L图形 + AbstractBox box2 = BoxFactory.getInstance().getShape("L"); + box2.display("Red"); + + // 再次获取L图形,但是是不同颜色 + AbstractBox box3 = BoxFactory.getInstance().getShape("L"); + box3.display("Green"); + + System.out.println(box2 == box3); // true + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/prototype/demo/Realizetype.java b/design_patterns/src/main/java/com/hongyi/pattern/prototype/demo/Realizetype.java new file mode 100644 index 0000000000000000000000000000000000000000..93deed55eb82e24bc92def335ef743c18137c04e --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/prototype/demo/Realizetype.java @@ -0,0 +1,19 @@ +package com.hongyi.pattern.prototype.demo; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/3 14:34 + * @Version 1.0 + */ +public class Realizetype implements Cloneable{ + + public Realizetype() { + System.out.println("具体的原型对象创建完成"); + } + + @Override + public Realizetype clone() throws CloneNotSupportedException { + System.out.println("具体原型复制成功"); + return (Realizetype) super.clone(); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/prototype/demo/Test.java b/design_patterns/src/main/java/com/hongyi/pattern/prototype/demo/Test.java new file mode 100644 index 0000000000000000000000000000000000000000..88638f327e1c9a2467797d27b78b819e5000eab0 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/prototype/demo/Test.java @@ -0,0 +1,16 @@ +package com.hongyi.pattern.prototype.demo; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/3 14:36 + * @Version 1.0 + */ +public class Test { + public static void main(String[] args) throws CloneNotSupportedException { + // 创建一个原型类对象 + Realizetype realizetype = new Realizetype(); + // 调用clone方法 + Realizetype clone = realizetype.clone(); + System.out.println(clone == realizetype); // false + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/prototype/demo1/Citation.java b/design_patterns/src/main/java/com/hongyi/pattern/prototype/demo1/Citation.java new file mode 100644 index 0000000000000000000000000000000000000000..bd64d7266da05c24996d47f0a5b0e32691e90cde --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/prototype/demo1/Citation.java @@ -0,0 +1,32 @@ +package com.hongyi.pattern.prototype.demo1; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/3 14:41 + * @Version 1.0 + */ +public class Citation implements Cloneable{ + + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public Citation clone() { + try { + return (Citation) super.clone(); + } catch (CloneNotSupportedException e) { + throw new AssertionError(); + } + } + + public void show() { + System.out.println(this.name + "同学:在2022学年第一学期中表现优秀,被评为三好学生。特发此状!"); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/prototype/demo1/CitationTest.java b/design_patterns/src/main/java/com/hongyi/pattern/prototype/demo1/CitationTest.java new file mode 100644 index 0000000000000000000000000000000000000000..e830e42a1ca135392ca7d4f68d1ec684242c14ec --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/prototype/demo1/CitationTest.java @@ -0,0 +1,21 @@ +package com.hongyi.pattern.prototype.demo1; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/3 14:43 + * @Version 1.0 + */ +public class CitationTest { + public static void main(String[] args) { + // 创建原型对象 + Citation citation = new Citation(); + // 克隆 + Citation c1 = citation.clone(); + c1.setName("张三"); + c1.show(); + + Citation c2 = citation.clone(); + c2.setName("李四"); + c2.show(); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/proxy/cglib_proxy/ProxyFactory.java b/design_patterns/src/main/java/com/hongyi/pattern/proxy/cglib_proxy/ProxyFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..266df143d2ea7864116a20f9f295bc0def83d4c8 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/proxy/cglib_proxy/ProxyFactory.java @@ -0,0 +1,38 @@ +package com.hongyi.pattern.proxy.cglib_proxy; + +import net.sf.cglib.proxy.Enhancer; +import net.sf.cglib.proxy.MethodInterceptor; +import net.sf.cglib.proxy.MethodProxy; + +import java.lang.reflect.Method; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/4 19:47 + * @Version 1.0 + */ +public class ProxyFactory implements MethodInterceptor { + + // 声明目标对象 + private TrainStation station = new TrainStation(); + + public TrainStation getProxyObject() { + // 创建Enhancer对象,类似于JDK代理中的Proxy类 + Enhancer enhancer = new Enhancer(); + // 设置父类的字节码对象(指定代理类的父类) + enhancer.setSuperclass(TrainStation.class); + // 设置回调函数 + enhancer.setCallback(this); + // 创建代理对象 + TrainStation proxyObject = (TrainStation) enhancer.create(); + return proxyObject; + } + + @Override + public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable { + System.out.println("代售点收取额外费用"); + // 调用目标对象的方法 + method.invoke(station, objects); + return null; + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/proxy/cglib_proxy/Test.java b/design_patterns/src/main/java/com/hongyi/pattern/proxy/cglib_proxy/Test.java new file mode 100644 index 0000000000000000000000000000000000000000..8234e6a5572ada6c09074c138e24e368e05ed080 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/proxy/cglib_proxy/Test.java @@ -0,0 +1,17 @@ +package com.hongyi.pattern.proxy.cglib_proxy; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/4 19:51 + * @Version 1.0 + */ +public class Test { + public static void main(String[] args) { + // 创建代理工厂对象 + ProxyFactory factory = new ProxyFactory(); + // 获取代理对象 + TrainStation proxyObject = factory.getProxyObject(); + // 调用代理对象中的sell方法 + proxyObject.sell(); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/proxy/cglib_proxy/TrainStation.java b/design_patterns/src/main/java/com/hongyi/pattern/proxy/cglib_proxy/TrainStation.java new file mode 100644 index 0000000000000000000000000000000000000000..2e4062d2b946d6bab7a22090daacc1c4cbbc4502 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/proxy/cglib_proxy/TrainStation.java @@ -0,0 +1,12 @@ +package com.hongyi.pattern.proxy.cglib_proxy; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/4 10:36 + * @Version 1.0 + */ +public class TrainStation { + public void sell() { + System.out.println("火车站买票"); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/proxy/jdk_proxy/ProxyFactory.java b/design_patterns/src/main/java/com/hongyi/pattern/proxy/jdk_proxy/ProxyFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..90f8016134074c247bcf5b794d3e854a2f51ef64 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/proxy/jdk_proxy/ProxyFactory.java @@ -0,0 +1,43 @@ +package com.hongyi.pattern.proxy.jdk_proxy; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/4 10:45 + * @Version 1.0 + */ +// 获取代理对象的工厂类 +public class ProxyFactory { + + // 声明目标对象 + private TrainStation station = new TrainStation(); + + // 获取代理对象 + public SellTickets getProxyObject() { + /* + * ClassLoader loader : 类加载器,用于加载代理类。可以通过目标对象获取类加载器 + * Class[] interfaces : 代理类实现的接口的字节码对象 + * InvocationHandler h : 代理对象的调用处理程序 + * */ + return (SellTickets) Proxy.newProxyInstance( + station.getClass().getClassLoader(), + station.getClass().getInterfaces(), + /* + * proxy 代理对象,和proxyObject相同,基本不用 + * method 对接口(SellTickets)中的方法(sell)进行封装的对象 + * args 调用方法(sell)的实际参数 + * 返回值:方法(sell)的返回值 + */ + (proxy, method, args) -> { + // System.out.println("invoke方法执行..."); + // 方法增强 + System.out.println("代售点收取额外费用..."); + // 执行目标对象的方法 + return method.invoke(station, args); + } + ); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/proxy/jdk_proxy/SellTickets.java b/design_patterns/src/main/java/com/hongyi/pattern/proxy/jdk_proxy/SellTickets.java new file mode 100644 index 0000000000000000000000000000000000000000..aefe37ddd945ab1ff661194acd03b71f1ae8d083 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/proxy/jdk_proxy/SellTickets.java @@ -0,0 +1,11 @@ +package com.hongyi.pattern.proxy.jdk_proxy; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/4 10:35 + * @Version 1.0 + */ +// 卖火车票的接口——抽象主题类 +public interface SellTickets { + void sell(); +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/proxy/jdk_proxy/Test.java b/design_patterns/src/main/java/com/hongyi/pattern/proxy/jdk_proxy/Test.java new file mode 100644 index 0000000000000000000000000000000000000000..69446008790ace217de25dac5dd01ecae3732778 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/proxy/jdk_proxy/Test.java @@ -0,0 +1,18 @@ +package com.hongyi.pattern.proxy.jdk_proxy; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/4 10:53 + * @Version 1.0 + */ +public class Test { + public static void main(String[] args) { + // 获取代理对象 + // 1.创建代理工厂对象 + ProxyFactory factory = new ProxyFactory(); + // 2.使用工厂对象获取代理对象 + SellTickets proxyObject = factory.getProxyObject(); + // 3.调用方法 + proxyObject.sell(); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/proxy/jdk_proxy/TrainStation.java b/design_patterns/src/main/java/com/hongyi/pattern/proxy/jdk_proxy/TrainStation.java new file mode 100644 index 0000000000000000000000000000000000000000..93de2a19d3d29a4aa05a8ce4a484202bba097ef7 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/proxy/jdk_proxy/TrainStation.java @@ -0,0 +1,14 @@ +package com.hongyi.pattern.proxy.jdk_proxy; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/4 10:36 + * @Version 1.0 + */ +// 火车站类——具体主题类 +public class TrainStation implements SellTickets { + @Override + public void sell() { + System.out.println("火车站买票"); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/proxy/static_proxy/ProxyPoint.java b/design_patterns/src/main/java/com/hongyi/pattern/proxy/static_proxy/ProxyPoint.java new file mode 100644 index 0000000000000000000000000000000000000000..b4e00438b2a40ca2ee1f0201fb0b5b371b7f122a --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/proxy/static_proxy/ProxyPoint.java @@ -0,0 +1,18 @@ +package com.hongyi.pattern.proxy.static_proxy; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/4 10:37 + * @Version 1.0 + */ +// 代售点——代理类 +public class ProxyPoint implements SellTickets{ + + private TrainStation trainStation = new TrainStation(); + + @Override + public void sell() { + System.out.println("代理点收取额外费用"); + trainStation.sell(); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/proxy/static_proxy/SellTickets.java b/design_patterns/src/main/java/com/hongyi/pattern/proxy/static_proxy/SellTickets.java new file mode 100644 index 0000000000000000000000000000000000000000..c4307bce202b0c0d91b30f664998bcff29d126c0 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/proxy/static_proxy/SellTickets.java @@ -0,0 +1,11 @@ +package com.hongyi.pattern.proxy.static_proxy; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/4 10:35 + * @Version 1.0 + */ +// 卖火车票的接口——抽象主题类 +public interface SellTickets { + void sell(); +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/proxy/static_proxy/Test.java b/design_patterns/src/main/java/com/hongyi/pattern/proxy/static_proxy/Test.java new file mode 100644 index 0000000000000000000000000000000000000000..61421f065edeb7b300463a75d6566a382899edcf --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/proxy/static_proxy/Test.java @@ -0,0 +1,15 @@ +package com.hongyi.pattern.proxy.static_proxy; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/4 10:38 + * @Version 1.0 + */ +public class Test { + public static void main(String[] args) { + // 创建代理类对象 + ProxyPoint proxyPoint = new ProxyPoint(); + // 买票 + proxyPoint.sell(); + } +} diff --git a/design_patterns/src/main/java/com/hongyi/pattern/proxy/static_proxy/TrainStation.java b/design_patterns/src/main/java/com/hongyi/pattern/proxy/static_proxy/TrainStation.java new file mode 100644 index 0000000000000000000000000000000000000000..a28ed6653fc7079606c100a1205c43f4265c2ba8 --- /dev/null +++ b/design_patterns/src/main/java/com/hongyi/pattern/proxy/static_proxy/TrainStation.java @@ -0,0 +1,14 @@ +package com.hongyi.pattern.proxy.static_proxy; + +/** + * @Author Kisugi Takumi + * @Date 2022/10/4 10:36 + * @Version 1.0 + */ +// 火车站类——具体主题类 +public class TrainStation implements SellTickets{ + @Override + public void sell() { + System.out.println("火车站买票"); + } +}