aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2007-02-13 11:12:04 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-02-14 10:21:24 -0500
commit588ef7693574cfbcb228f48d5478c2b39a9b0c9f (patch)
tree6cc5ac8e7d2544514ab405357f01a91da8471780 /arch/arm
parentdfc544c7216b276c1e9c0c753299692df4068c44 (diff)
[ARM] 4184/1: iop: cp6 access handler (undef_hook)
Enable svc access to cp6 via an undefined instruction hook. Do not enable access for usr code. This patch also makes iop13xx select PLAT_IOP, this requires a small change to drivers/i2c/busses/i2c-iop3xx.c. Per Lennert Buytenhek's note, the cp6 trap routine is moved to arch/arm/plat-iop Per Nicolas Pitre's note, the cp_wait is skipped since the latency to return to the faulting function is longer than cp_wait. Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/Kconfig2
-rw-r--r--arch/arm/mach-iop13xx/irq.c3
-rw-r--r--arch/arm/mach-iop32x/irq.c2
-rw-r--r--arch/arm/mach-iop33x/irq.c2
-rw-r--r--arch/arm/plat-iop/Makefile30
-rw-r--r--arch/arm/plat-iop/cp6.c50
6 files changed, 85 insertions, 4 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 6783c2e5512d..3f48e35ee61a 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -233,6 +233,8 @@ config ARCH_IOP33X
233 233
234config ARCH_IOP13XX 234config ARCH_IOP13XX
235 bool "IOP13xx-based" 235 bool "IOP13xx-based"
236 depends on MMU
237 select PLAT_IOP
236 select PCI 238 select PCI
237 help 239 help
238 Support for Intel's IOP13XX (XScale) family of processors. 240 Support for Intel's IOP13XX (XScale) family of processors.
diff --git a/arch/arm/mach-iop13xx/irq.c b/arch/arm/mach-iop13xx/irq.c
index dbbc07c38b14..162b93214965 100644
--- a/arch/arm/mach-iop13xx/irq.c
+++ b/arch/arm/mach-iop13xx/irq.c
@@ -250,11 +250,14 @@ static struct irq_chip iop13xx_irqchip4 = {
250 .unmask = iop13xx_irq_unmask3, 250 .unmask = iop13xx_irq_unmask3,
251}; 251};
252 252
253extern void iop_init_cp6_handler(void);
254
253void __init iop13xx_init_irq(void) 255void __init iop13xx_init_irq(void)
254{ 256{
255 unsigned int i; 257 unsigned int i;
256 258
257 u32 cp_flags = iop13xx_cp6_save(); 259 u32 cp_flags = iop13xx_cp6_save();
260 iop_init_cp6_handler();
258 261
259 /* disable all interrupts */ 262 /* disable all interrupts */
260 write_intctl_0(0); 263 write_intctl_0(0);
diff --git a/arch/arm/mach-iop32x/irq.c b/arch/arm/mach-iop32x/irq.c
index 3ec1cd5c4f99..8b0ac5590ae4 100644
--- a/arch/arm/mach-iop32x/irq.c
+++ b/arch/arm/mach-iop32x/irq.c
@@ -60,6 +60,8 @@ void __init iop32x_init_irq(void)
60{ 60{
61 int i; 61 int i;
62 62
63 iop_init_cp6_handler();
64
63 intctl_write(0); 65 intctl_write(0);
64 intstr_write(0); 66 intstr_write(0);
65 if (machine_is_glantank() || 67 if (machine_is_glantank() ||
diff --git a/arch/arm/mach-iop33x/irq.c b/arch/arm/mach-iop33x/irq.c
index 00b37f32d72e..effbe6b782d0 100644
--- a/arch/arm/mach-iop33x/irq.c
+++ b/arch/arm/mach-iop33x/irq.c
@@ -110,6 +110,8 @@ void __init iop33x_init_irq(void)
110{ 110{
111 int i; 111 int i;
112 112
113 iop_init_cp6_handler();
114
113 intctl0_write(0); 115 intctl0_write(0);
114 intctl1_write(0); 116 intctl1_write(0);
115 intstr0_write(0); 117 intstr0_write(0);
diff --git a/arch/arm/plat-iop/Makefile b/arch/arm/plat-iop/Makefile
index ed91463967af..3250d732a171 100644
--- a/arch/arm/plat-iop/Makefile
+++ b/arch/arm/plat-iop/Makefile
@@ -2,7 +2,29 @@
2# Makefile for the linux kernel. 2# Makefile for the linux kernel.
3# 3#
4 4
5obj-y := gpio.o i2c.o pci.o setup.o time.o io.o 5obj-y :=
6obj-m := 6
7obj-n := 7# IOP32X
8obj- := 8obj-$(CONFIG_ARCH_IOP32X) += gpio.o
9obj-$(CONFIG_ARCH_IOP32X) += i2c.o
10obj-$(CONFIG_ARCH_IOP32X) += pci.o
11obj-$(CONFIG_ARCH_IOP32X) += setup.o
12obj-$(CONFIG_ARCH_IOP32X) += time.o
13obj-$(CONFIG_ARCH_IOP32X) += io.o
14obj-$(CONFIG_ARCH_IOP32X) += cp6.o
15
16# IOP33X
17obj-$(CONFIG_ARCH_IOP33X) += gpio.o
18obj-$(CONFIG_ARCH_IOP33X) += i2c.o
19obj-$(CONFIG_ARCH_IOP33X) += pci.o
20obj-$(CONFIG_ARCH_IOP33X) += setup.o
21obj-$(CONFIG_ARCH_IOP33X) += time.o
22obj-$(CONFIG_ARCH_IOP33X) += io.o
23obj-$(CONFIG_ARCH_IOP33X) += cp6.o
24
25# IOP13XX
26obj-$(CONFIG_ARCH_IOP13XX) += cp6.o
27
28obj-m :=
29obj-n :=
30obj- :=
diff --git a/arch/arm/plat-iop/cp6.c b/arch/arm/plat-iop/cp6.c
new file mode 100644
index 000000000000..9612a87e2a88
--- /dev/null
+++ b/arch/arm/plat-iop/cp6.c
@@ -0,0 +1,50 @@
1/*
2 * IOP Coprocessor-6 access handler
3 * Copyright (c) 2006, Intel Corporation.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU General Public License,
7 * version 2, as published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
16 * Place - Suite 330, Boston, MA 02111-1307 USA.
17 *
18 */
19#include <linux/init.h>
20#include <asm/traps.h>
21
22static int cp6_trap(struct pt_regs *regs, unsigned int instr)
23{
24 u32 temp;
25
26 /* enable cp6 access */
27 asm volatile (
28 "mrc p15, 0, %0, c15, c1, 0\n\t"
29 "orr %0, %0, #(1 << 6)\n\t"
30 "mcr p15, 0, %0, c15, c1, 0\n\t"
31 : "=r"(temp));
32
33 return 0;
34}
35
36/* permit kernel space cp6 access
37 * deny user space cp6 access
38 */
39static struct undef_hook cp6_hook = {
40 .instr_mask = 0x0f000ff0,
41 .instr_val = 0x0e000610,
42 .cpsr_mask = MODE_MASK,
43 .cpsr_val = SVC_MODE,
44 .fn = cp6_trap,
45};
46
47void __init iop_init_cp6_handler(void)
48{
49 register_undef_hook(&cp6_hook);
50}
7301B47321B56381B681E :101B30003A1B7A3E1B92441B86461B9E501BE0526A :101B40001BBF541C015600001C2290FF92E07F0036 :101B5000FE7C0112324D021C32E4FF04FE7C0312B3 :101B6000324D742090FFFEF0021C32E4FF04FE7C34 :101B70000212324D744090FFFEF0021C32E4FF046A :101B8000FE7C0412324D021C32E4FF04FE7C05127E :101B9000324D021C32E4FF04FE7C0612324D021C60 :101BA0003290FFA5E07D0090FBF8CDF0A3CDF09042 :101BB000FBF9E0FCF58390FBF8E04433FD121CC513 :101BC000807390FFB5E07D0090FBFACDF0A3CDF0DF :101BD00090FBFBE0FCF58390FBFAE04443FD121C14 :101BE000C5805290FFA6E07D0090FBFCCDF0A3CD18 :101BF000F090FBFDE0FCF58390FBFCE04434FD122B :101C00001CC5803190FFB6E07D0090FBFECDF0A3B7 :101C1000CDF090FBFFE0FCF58390FBFEE04444FD3B :101C2000121CC5801090FF92E07D00FCED44AAFDDF :101C3000121CC58000E490FF92F0D0E0FFD0E0FEDF :101C4000D0E0FDD0E0FCD0E0FBD0E0FAD0E0F9D06D :101C5000E0F8D0D0D083D082D0F0D0E0320581053A :101C60008105810581A881181818EDF608ECF69019 :101C7000FF5AE020E70280F790FF59E07D00A8813D :101C800018CDF6CD08F67D03A881E618FCE6CC2534 :101C9000E0CC33CCDDF9CCF6CC08F6A88118E644CC :101CA000F8F6A881181818E6FD08E6FCA881188641 :101CB00083088682EDF0A3ECF0740290FF5AF015D1 :101CC0008115811581158122E5812405F581E4A81E :101CD0008118F6A88118181818EDF608ECF690FB94 :101CE000F5E024F85003021DE6E4A8811818F6A8D0 :101CF0008118E6FEA88118181818E6FD08E6FC7F92 :101D000000EF24F8404DE4EF25E0247DF582E43433 :101D1000FCF583E0FBA3E06C7003FAEB6D700974D3 :101D200001A8811818F6802BE4EF25E0247DF582C8 :101D3000E434FCF5837A00E054F0CCF8CCCDF9CD56 :101D4000FB7800E954F0F9EA687002EB6970010E63 :101D50000F80AEA88118EEF6A88118181818EDF6B5 :101D600008ECF6A881EFF6A8811818E67079A8812A :101D700018E624F74071A88118181818E6540FA81F :101D800081F664046017A881E664036010A88118D6 :101D9000181818E6FD08E6FC121C5A804A7C0A1244 :101DA00031ADA88118181818E6FD08E6FC90FBF480 :101DB000E025E0247DF582E434FCF583EDF0A3EC2E :101DC000F090FBF4E0FFE4EF045407FF90FBF4F025 :101DD00090FBF5E004F012324690FBF6E07008E468 :101DE000FEFF7C0F12324D802790FBF7E004F05489 :101DF0003F701D90FBF7E044FE7D00FC90FBF4E09B :101E000025E0247DF582E434FCF583EDF0A3ECF0CD :101E1000E58124FBF58122788B7600788C7600743E :101E20000190FBF6F012313890FBF5E060577C0A28 :101E30001231AD90FBF3E025E0247DF582E434FC23 :101E4000F583E0FDA3E0FC90FBF3E025E0247DF5C5 :101E500082E434FCF583E4F0A3F090FBF3E0FFE4CC :101E6000EF045407FF90FBF3F090FBF5E014F078DB :101E700089EDF608ECF61232467889E6FD08E6FCB4 :101E80001208E380A312329A90FF93E04401F0B26B :101E9000B3788B06B60011788B7600788CE6F40464 :101EA00004A2E092B4788CF6021E25E490FBF6F0D2 :101EB00090FBF5E07D00FCED44CFFD121C5A123181 :101EC000BB22123138E5706449456F601590FF837D :101ED000E0540F7D00D39570ED956F5005122F8162 :101EE00080031230511231BB22123138E57064493F :101EF000456F600512308B800E90FF80E04408F043 :101F000090FF83E0547FF01231BB221231388C54A1 :101F1000EC54F0B41015756A357569FC756801E507 :101F20006A2403F56AE5693400F569E4F557F55666 :101F3000E556C394015027E554540FFCAD6AAE69D1 :101F4000AF68120E808C55EC60028012056AE56A5B :101F5000700205690557E5577002055680D2E554B1 :101F6000540F249DF8E654FEF6E554540F7F00FE0E :101F70007C1212324DE5551470097D007C09122542 :101F8000468007AD577C001225461231BB22123124 :101F90003890FFFCE04402F090FF00E030E713903F :101FA000FF83E04480F0436D8090FFFCE04401F04B :101FB000801190FF82E04408F0536D7F90FFFCE0B9 :101FC00054FEF090FF81E04480F01225F990FFFE6E :101FD000E04405F090FFFCE054FDF01231BB22120A :101FE00031387C011232FB78ADE64402F674FEFC17 :101FF00004FD121CC590FF5AE030E70280F7E4F5BB :102000004E754D10AC4EAD4DE54E154E7002154D52 :10201000EC4D600280EE4387011231BB2212313851 :102020007C021231C778ADE654FDF61231BB2212A4 :10203000313878ADE630E02C78ADE630E12678AD89 :10204000E6FCF58318E644F0FD121C5A90FFFCE014 :102050004420F07C021232FB78ADE654FDF6741A8F :1020600090FFFEF078ADE6FCF58318E644F1FD1232 :102070001C5A1231BB22756D0090FFFFE0600343D4 :102080006D01756E00E4F56CF56BE4F56F757049E4 :10209000748490FF82F0748490FF80F0748090FFCD :1020A00058F0748090FF5AF0AD46AF457E00EE24A4 :1020B000FE5003022142E4EE75F007A4247FF5826E :1020C000E434F8F583E0FFE4EF5480FDE4EF540FCF :1020D00014FFED6038E4EF75F008A42448F582E4BD :1020E00034FFF5837490F0E4EF75F008A4244AF50A :1020F00082E434FFF5837480F0E4EF75F008A424E3 :102100004EF582E434FFF5837480F08034E4EF759B :10211000F008A42408F582E434FFF5837490F0E419 :10212000EF75F008A4240AF582E434FFF583E4F0A7 :10213000E4EF75F008A4240EF582E434FFF583E49F :10214000F00E0220AB8D468E448F45747F90FFFDCC :10215000F0749090FFFCF0228C58EC24F65006E5C9 :10216000582437FC22E5582430FC22D2B0122543F3 :10217000EC700302227E755C03AE5B7F00E55C15AC :102180005C6480247F5035EF2400F582E434FBF555 :1021900083E0FE24FE501EEF7D00FCE4FB7474C35C :1021A0009CFAEB9DFBEE7D00FCEAC39CED6480CBCA :1021B00064809B50028005EF2EFF80C18E5B8F5A9A :1021C000E55C6480247F500302227EE55A248E5011 :1021D0000302227E855A5D755B00AE5AAF5B903577 :1021E000EEE493F55CE55C155C6480247F5018EEAA :1021F0002400F582E434FBF583E0FCEF9035EE93A8 :102200006C70040E0F80DE8E5A8F5BE55C64802458 :102210007F406E755E017560E8755FFFE55D2402C5 :10222000F55A755C07E55C334057AD60AE5FAF5E55 :10223000E55CF5823395E0F5831201F5C4540FFC9B :10224000122155E55A2400F582E434FBF583ECF0C5 :10225000055A055AAD60AE5FAF5EE55CF582339519 :10226000E0F5831201F5540FFC122155E55A2400C4 :10227000F582E434FBF583ECF0055A055A155C80D1 :10228000A4740290F851F090F86B79C77A357B27E7 :1022900078011203FE756A357569FC756801E49072 :1022A000FF83F0748090FF81F0755902E55975F055 :1022B00007A4247FF582E434F8F583E0788FF6FCF8 :1022C000540F14FC788FECF6E55975F007A42481BF :1022D000F582E434F8F583E0789276FD0876E8FC40 :1022E000788FE675F008A42448F582E434FFF5837E :1022F000E4F0788FE675F008A4244FF582E434FF0B :10230000F583ECF07892E6FF08E67E03CFC313CFA7 :1023100013DEF9FE788FE675F008A42449F582E40F :1023200034FFF583EEF0788FE675F008A4244AF5C3 :1023300082E434FFF5837480F07890ECF67D0078C9 :1023400093E62CF618E63DF67892E6FD08E67C0367 :10235000CDC313CD13DCF9FC788FE675F008A42407 :102360004DF582E434FFF583ECF0788FE675F008E4 :10237000A4244EF582E434FFF583E4F07892E6FD80 :1023800008E6FC788FE6FF7E00EE24FE5003022470 :10239000FDE4EE75F007A4247FF582E434F8F583BC :1023A000E0FFE4EF5480FAE4EF540F14FFE4EE751D :1023B000F007A42481F582E434F8F583E07890F600 :1023C000E4EE1313548024F0F8E434FDF9E8FCE95A :1023D000FD8A5AEA700302246AE4EF75F008A42427 :1023E00048F582E434FFF583E4F07890E6FAE4EF10 :1023F00075F008A4244FF582E434FFF583EAF0ED8C :10240000FBEC7A03CBC313CB13DAF9FAE4EF75F0E4 :1024100008A42449F582E434FFF583EAF07890E6D5 :102420007B00FAEC2AFCED3BFDFBEC7A03CBC313FB :10243000CB13DAF9FAE4EF75F008A4244DF582E441 :1024400034FFF583EAF0E4EF75F008A4244AF5823E :10245000E434FFF5837480F0E4EF75F008A4244EB3 :10246000F582E434FFF5837480F00224F9E4EF751B :10247000F008A42408F582E434FFF583E4F07890B2 :10248000E6FAE4EF75F008A4240FF582E434FFF5D2 :1024900083EAF0EDFBEC7A03CBC313CB13DAF9FA42 :1024A000E4EF75F008A42409F582E434FFF583EA2B :1024B000F07890E67B00FAEC2AFCED3BFDFBEC7A31 :1024C00003CBC313CB13DAF9FAE4EF75F008A424B5 :1024D0000DF582E434FFF583EAF0E4EF75F008A42B :1024E000240AF582E434FFF583E4F0E4EF75F008A4 :1024F000A4240EF582E434FFF583E4F00E02238673 :102500008E597892EDF608ECF6788FEFF61220737C :10251000228C26EC30E718E526540F1475F008A439 :102520002448F582E434FFF583E054DFF08016E5BB :1025300026540F1475F008A42408F582E434FFF53E :1025400083E054DFF0227C0022EC90FC37F08C24F6 :10255000ED2403F5257D00D39572ED95714003853B :102560007225E52524B75009752503740290FC37C0 :10257000F0AC2512307622E4F56CF56B12257D2245 :1025800090FC35E06573600E740490FC37F0E4F560 :102590006B756C0380467D73E4FEFF79357AFC7BB6 :1025A0000174057800120348E56C2403F56CE56BB3 :1025B0003400F56BE56CD39572E56B95714006853B :1025C000726C85716BD3E56C9448E56B9400400C9C :1025D000740290FC37F0E4F56B756C03AC6C123050 :1025E0007622EC90FC37F0E4F56CF56B8C32EC6005 :1025F0000512306780057C001230762290FF93E050 :102600004401F0B2B390FF04E0F54A90FF06E0FD0C :10261000A3E0ED7D00FC7D00FC90FF06E0FFA3E061 :102620007E00FFE4FEEC4EFCED4FFDC3EC9448ED64 :102630009400502290FF06E0FDA3E0ED7D00FC7DBC :1026400000FC90FF06E0FFA3E07E00FFE4FEEC4EFE :10265000FCED4FFD8004E4FD7C488C728D7190FF91 :1026600002E0FDA3E0ED7D00FC7D00FC90FF02E0B8 :10267000FFA3E07E00FFE4FEEC4EF54CED4FF54B82 :10268000756A357569FC7568017D357EFC7F017959 :1026900073E4FAFB74057800120348754900E549B4 :1026A00024FE4019AD6AAE69AF68E412031805490B :1026B0000DED70010E8D6A8E698F6880E1756A3547 :1026C0007569FC75680190FF00E05460B4000280F9 :1026D00006D35003022CBFE54A540FF549E54A548E :1026E00080A2E0920290FF01E012018A000B2CBA56 :1026F000270528232CBA292F2CBA2A122A462BADBB :102700002BB02BF02C632C91E56D30E70EE54C459A :102710004B7008E572640245716003022CBC90FFA7 :1027200000E0541FB400028003D34029E54A60034F :10273000022820AD6AAE69AF68740112031878AD43 :10274000E630E00BAD6AAE69AF6874021203187C24 :102750000212307622B401028003D3401BE56D20C3 :10276000E107E54A6003022820E54A24FE500302FF :1027700028207C0212307622B402028006D3500355 :1027800002281EE56D20E10DE54A6009E54A6480F6 :102790006003022820AC4A1230FD4003022820E5E5 :1027A00049702530021190FF80E05408AD6AAE698F :1027B000AF68120318800F90FF82E05408AD6AAE34 :1027C00069AF68120318803D154930021DE549754F :1027D000F008A42448F582E434FFF583E05408AD02 :1027E0006AAE69AF68120318801BE54975F008A44A :1027F0002408F582E434FFF583E05408AD6AAE693D :10280000AF68120318AD6AAE69AF681201EF600BD2 :10281000AD6AAE69AF6874011203187C021230769B :10282000228000022CBCE56D20E706E57245716050 :1028300003022CBC90FF00E0541FB400028003D3BD :10284000401AE54C14454B7004E54A600302292CFC :1028500078ADE654FEF67C0012307622B401028098 :1028600003D3402AE56D20E108E56D20E00302294D :102870002CE56D30E004E54A700BE56D30E109E5CB :102880004A24FE500302292C7C0012307622B40226 :10289000028006D3500302292AE54C454B6003020F :1028A000292CAC4A1230FD400302292CE56D20E1B1 :1028B00007E56D20E0028077E56D30E006E54960D0 :1028C00002806CE549700F90FF82E054F7F090FFB2 :1028D00080E054F7F022E549B401028003D34009B7 :1028E0007D017C03120F128011B402028003D340D9 :1028F000097D017C04120F1280001549300215E594 :102900004975F008A42448F582E434FFF583E054C7 :10291000F7F08013E54975F008A42408F582E43443 :10292000FFF583E054F7F07C00123076228000023D :102930002CBCE56D20E706E57245716003022CBCF6 :1029400090FF00E0541FB400028003D3401AE54C0E :1029500014454B7004E54A6003022A0F78ADE64443 :1029600001F67C0012307622B401028003D34029A4 :10297000E56D20E108E56D20E003022A0FE56D30EA :10298000E004E549700BE56D30E108E54924FE50AF :1029900002807F7C0012307622B402028003D34092 :1029A0006FE54C454B60028069AC4A1230FD400235 :1029B0008060E56D20E107E56D20E0028054E54987 :1029C000701430020990FF80E04408F0800790FF07 :1029D00082E04408F022E56D30E1331549300215FC :1029E000E54975F008A42448F582E434FFF583E056 :1029F0004408F08013E54975F008A42408F582E442 :102A000034FFF583E04408F07C0012307622800227 :102A10008000022CBCE56D20E712E5724571700C58 :102A2000E54A700890FF00E0541F6003022CBCE5EB :102A30004C90FFFFF090FFFFE06005436D018003C5 :102A4000536DFE7C0012307622E56D30E70EE572A4 :102A50004571600890FF00E0541F6003022CBCAD7C :102A60004BE54CED7D00FC7D00FCBD0002800302C7 :102A70002BA8B401028003D34032E54A7005E54C2F :102A8000FC6003022BAA756A407569F8756801D36A :102A9000E5729412E57194004006E4FD7C12800416 :102AA000AC72AD718C708D6F12308B22B4020280CB :102AB00003D34059E54A6003022BAAE54CFC70277A :102AC000756A527569F8756801D3E5729419E571F4 :102AD00094004006E4FD7C198004AC72AD718C70EA :102AE0008D6F12308B8025756A6B7569F87568017A :102AF000D3E5729427E57194004006E4FD7C2780BD :102B000004AC72AD718C708D6F12308B22B40302E5 :102B10008006D35003022BA8E54CF549700F90FFB7 :102B200004E0FDA3E04D6003022BAA801890FB0295 :102B3000E0FDA3E0FC90FF05E06C700790FF04E06F :102B40006D60028068E4F570F56F7F00E54914C59B :102B500049600FEF2400F582E434FBF583E02FFF9A :102B600080EA8F4AE54A2400F582E434FBF583E0ED :102B70007D00D39572ED95714006AC72AD71800FFA :102B8000E54A2400F582E434FBF583E07D00FC8C0B :102B9000708D6FE54A2400FCE434FBFDFEECFD7F04 :102BA000018D6A8E698F6812308B228000022CBCE6 :102BB000022CBCE56D30E719E5721445717012E521 :102BC0004A700EE54C454B700890FF00E0541F60C2 :102BD00003022CBCE56D20E008E56D20E103022C2A :102BE000BC756A6EE4F569F568E4F56F04F570127A :102BF000308B22E56D20E727E57245717021E54AAB :102C0000701DE54C6402454B600DE54C14454B606E :102C100006E54C454B700890FF00E0541F6003022E :102C20002CBCE56D20E008E56D20E103022CBC859D :102C30004C6EE56E700A436D01536DFDD2B080207D :102C4000E56E64026007E56E1460028072536DFEEB :102C5000436D02E56E64026005E56E147002C2B059 :102C60007C0012307622E56D30E71AE5721445716A :102C70007013E54A700FE54C454B700990FF00E07A :102C8000541F1460028038E56D20E10280317C0120 :102C900012307622E56D20E715E5724571700FE57B :102CA0004C454B700990FF00E0541F146002800FE8 :102CB000E56D20E10280087C00123076228000025F :102CC0002F7DB440028006D35003022F7390FF0182 :102CD000E090FC35F0E54A90FC36F0E490FC37F0EB :102CE000E56A2403F56AE5693400F569AD4BE54C06 :102CF000856A82856983CDF0A3CDF090FF01E01253 :102D000001C02D2A012D50022D7A032DA4042DF28D :102D1000052E2F062E55072E7B082EA7092ECD0B2C :102D20002EF30C2F02802F028100002F60E56D2012 :102D3000E7067C051225DF227D767E357F02793815 :102D40007AFC7B01740878001203487D087C00122D :102D5000254622E56D20E7067C051225DF22E54A9F :102D6000B403004010B40500500BE54A7F00FE7C20 :102D70001012324D227D007C0712254622E56D207F :102D8000E7067C051225DF22E54AB403004010B4B3 :102D90000500500BE54A7F00FE7C1112324D227D6A :102DA000007C0712254622E56D20E7067C051225EA :102DB000DF22E54AB405028003D3400AE4FF04FEA3 :102DC0007C0A12324D22B401028003D3400AE4FF90 :102DD00004FE7C0812324D22B403004010B40500FA :102DE000500BE54A7F00FE7C1312324D227D007CA1 :102DF0000712254622E56D20E734D3E5729448E5B5 :102E00007194005006E572457170067C021225DF50 :102E100022E54AB40103B3400BC3B403004009B434 :102E200006005004123123227C071225DF221225CE :102E30007D22E56D20E71DE54AB403004010B4058E :102E400000500BE54A7F00FE7C1612324D227C07B3 :102E50001225DF2212257D22E56D20E71DE54AB40B :102E600003004010B40500500BE54A7F00FE7C19BA :102E700012324D227C071225DF2212257D22E56DBC :102E800020E723748190FF93F0E54AB403004010DB :102E9000B40500500BE54A7F00FE7C1712324D222C :102EA0007C071225DF2212257D22E56D20E71DE536 :102EB0004AB403004010B40500500BE54A7F00FE01 :102EC0007C1812324D227C071225DF2212257D222A :102ED000E56D20E71DE54AB403004010B40500503D :102EE0000BE54A7F00FE7C1512324D227C0712252D :102EF000DF2212257D22E56D20E7067C071225DF03 :102F00002212257D22E56D30E72090FF00E0541F5E :102F1000701090FF01E0B480051225748003122523 :102F20007D227D007C051225462290FF00E0541F83 :102F300060067C051225DF22D3E5729448E5719482 :102F400000500BC3E5729407E571940050067C03B2 :102F50001225DF22E54AB40504123123227C071230 :102F600025DF22E56D30E7087D007C05122546222D :102F70007C051225DF22B420028003D340008000AC :102F80001230512275430090FF83E0540FD39543D4 :102F90004024E54324F0F582E434FEF583E0AD6A95 :102FA000AE69AF6812031805430DED70010E8D6A0E :102FB0008E698F6880D1E5437D00FCC3E5709CF588 :102FC00070E56F9DF56FE570456F6006E490FF83D7 :102FD000F02290FF82E04408F0E4F56F75704990AC :102FE000FC35E0B405028003D3404090FC36E0F5A8 :102FF00043B405028003D3400AE4FF04FE7C0B12B5 :10300000324D22B401028003D3400AE4FF04FE7C67 :103010000912324D22B403004010B40500500BE5F4 :10302000437F00FE7C1412324D2222B480004023E4 :10303000B48200501E7C357DFC1217A57D008C6C7F :103040008D6B90FC37E0600512305180057C0012DA :103050003076222290FF83E0547FF090FF82E0449C :1030600008F090FF80E04408F02290FF82E04408DE :10307000F090FF80E04408F0228C237D008C708D5E :103080006F756A357569FC75680112308B2290FF87 :1030900083E0547FF0E5706449456F700122C3E519 :1030A000709408E56F94004015752108E5217D00B6 :1030B000FCC3E5709CF570E56F9DF56F8009857028 :1030C00021E4F56F757049752200E522C395215002 :1030D00026AD6AAE69AF681201EFFCE52224F8F56F :1030E00082E434FEF583ECF005220DED70010E8DC7 :1030F0006A8E698F6880D3E521547F90FF81F0222A :103100008C487F00EF24FD4019E4EF75F007A424FC :103110007FF582E434F8F583E065487002D3220F2E :1031200080E28F47C32285727085716F90FF82E0C5 :1031300054F7F090FF83E0547FF022C000C001C03C :1031400002C006C007E5782408F8860653067F7C8F :10315000FF1231AD7C007D00E57B6046FF90FD9560 :10316000E0547F6E700FC083C082A3E0FDA3E0FC3B :10317000A3157B8007A3A3A3DFE68026DF06D0820A :10318000D083801EE0F8A3E0F9A3E0FAD082D083D8 :10319000E8F0A3E9F0A3EAF0A3C083C082A3A3A34D :1031A00080DA123246D007D006D002D001D00022F9 :1031B00085A87A75A888EC70027C3F8C7922E57826 :1031C0002408F8760012329A80FBC000C001C002C9 :1031D000C006C007AE047CFF1231ADE57B6042FF44 :1031E00090FD95E0547F6E700BC083C082A3A3A3B3 :1031F000157B8007A3A3A3DFEA8026DF06D082D059 :103200008380D8E0F8A3E0F9A3E0FAD082D083E885 :10321000F0A3E9F0A3EAF0A3C083C082A3A3A38034 :10322000DA7808087918097C01E6547F6E70067612 :10323000007700800608090CBC08EE123246D00761 :10324000D006D002D001D00022757900857AA8225C :10325000C0F0C082C083C3E57B24E8500512329AD7 :1032600080F4EC6031903575E493C39C4028C00431 :103270007CFF1231ADD004430480E57B75F003A4DC :103280002495F582E434FDF583ECF0EFA3F0EEA392 :10329000F0057B123246D083D082D0F022C0047C6D :1032A00020D28CD28DD504FDD0042275A80075885B :1032B0000075B80075F00075D000E4F8900000F6D5 :1032C00008B800FB020000C3ED940250047D037CAB :1032D000E8ECF4FCEDF4FD0CBC00010D8C7F8D7E60 :1032E00022C3EC94BCED940250047D077CD0ECF436 :1032F000FCEDF4FD0CBC00010D8C7D8D7C22EC708E :103300000122C000E5782418F8A604E5782408F81E :10331000C6547FF6E630E703D0002212329A80F4DA :10332000C28C857C8C857D8AD28CC0E0C0D0C0F0F8 :10333000C082C083C000C001C002C003C004C00579 :10334000C006C007121AF8E5782408F8E66024E5FC :10335000782410F8A681E57875F021A4248DF582F3 :10336000E434FCF58378AEE58104C398F9E6F0080F :10337000A3D9FA74082578F8057808E65480700C0B :10338000E578B407F3780875780080EFE5782410C5 :10339000F88681E57875F021A4248DF582E434FC6B :1033A000F58378AEE58104C398F9E0F608A3D9FA6D :1033B000D007D006D005D004D003D002D001D00071 :1033C000D083D082D0F0D0D0D0E032C0E0C0D0C026 :1033D00000C001C002C28E857E8D857F8BD28E7823 :1033E0001979097A07E77004A600800BE6600816D1 :1033F000E67004E74480F70809DAEAE57960131417 :10340000F579700EE5782408F87600123246D28CF1 :10341000D28DD002D001D000D0D0D0E0327581ADB5 :10342000742A90FF93F0757F30757EF8757D607516 :103430007CF012053F1234CE12175B90FF93E044EC :1034400001F0B2B31234F81232A880DA22C0007C44 :1034500001EC2408F8E660090CBC08F512329A80E9 :10346000EED00022C0F0C082C083C000C006C007FA :10347000ED2410F876BCED75F021A4248DF582E4DE :1034800034FCF583C082C083A3A3E4780DF0A3D8F5 :10349000FCEC547F75F002A42441F582E5F034354C :1034A000F583E493FE740193F5828E83E493FE74B6 :1034B0000193FFD083D082EFF0A3EEF0ED2408F863 :1034C000EC4480F6D007D006D000D083D082D0F074 :1034D00022757800757B007A08791878087600776D :1034E000000809DAF8E478087480447FF67401442F :1034F00010F58975B808D2ABD2A9227581ADD28EEC :10350000D28CD2AFE57B6032FF90FD95E0548060B5 :103510002478087908E0547FFA7B00E6547FB502EE :10352000027BFF08D9F5EB700CEAF012344AAD04C7 :10353000AC02123461A3A3A3DFD212329A80C57CFD :10354000017D002204FE04F204F604EA04E604E22B :1035500004EE04FA04A604AA04D604DA04A204A21F :1035600004A204DE04BE04B604BA04B204CA04C64B :1035700004C204CE04D204AE1901030022004802A2 :1035800000480E301420C81AD0180A0C0506020391 :1035900001020001CE0181010000C0008000600036 :1035A0003000180010000800040002000100081894 :1035B00028380C05100A0200000000000301100A60 :1035C000020000000000FBE0FBF2090227000102FC :1035D00000A0FA0904000003FF00000007058102B3 :1035E00040000007050102400000070583030200B8 :1035F00001220354005500530042003300340031CF :1036000000300020002000200020002000200020AA :073610000020000000000093 :00000001FF