dsPIC33FJ64GP802 (18) --- 周波数シフター (2)

 dsPIC33FJ64GP802 を使った「Bode frequency shifter」のプログラムの基本的な部分がほぼ機能するようになりました。 「スケルチ」などは、まだ実装していません。
 クロックに関しては

  • 内蔵 FRC オシレータ (7.37 MHz) 使用
  • 外付け 12.288 MHz 水晶振動子使用

の 2 通りと、入力アナログ信号を変換する AD コンバータに関しては

  • 内蔵 12 ビット ADC 使用
  • 外付け 16 ビット ADC 使用

の 2 通りを組み合わせた、合計 4 種類の構成に対して、1 種類のオブジェクトで対応します。
 現在のバージョンでのプログラム・サイズは 1744 ワード (24 ビット・ワード)、データ・サイズは 2554 バイトです。 (2019 年 2 月 16 日追記: ヒルベルト変換器のタップ数を増やしたプログラムに差し替えて、プログラム・サイズは 1770 ワード、データ・サイズは 3194 バイトとなりました。)
 この記事の後半に hex フォーマットのオブジェクトを掲載します。
 「コピー・アンド・ペースト」して hex ファイルを作り、
PICkit 3 などで dsPIC33FJ64GP802 に書き込めば動作させてみることができます。
 ソース・リストについては近日中に公開する予定です。

  • 内蔵 FRC オシレータ使用
  • 内蔵 12 ビット ADC 使用
  • 「シグナル・コンディショニング」は (もし必要なら) 外部で行う

という条件で、最も簡略化した回路図を下に示します。

 図の上部に青色の破線で囲って示した PICkit 3 との接続のための回路は「オプション」であり、当該ボード上でプログラム書き込みを行う場合に必要なもので、書き込みが必要なければ省略できます。
 上の図では、PICkit 3 の PGC/PGD 端子を PGEC2/PGED2 のペアに接続していますが、PGEC3/PGED3 のペアに接続してもかまいません。
 PGEC1/PGED1 ペアについては、片割れの RB1/PGEC1 が使用されているので、接続できません。
 電源周りのデカップリング・コンデンサMCLR のプルアップなどは標準的な回路です。
 次の 5 本のピンにつながる回路のみが周波数シフターに固有のものです。

  • RA0 (2 番ピン) — 内蔵 12 ビット ADC 入力 (信号入力用)
  • RA1 (3 番ピン) — 内蔵 12 ビット ADC 入力 (周波数シフト量設定用 POT)
  • RB1 (5 番ピン) — 内蔵コンパレータ入力 (モード (レンジ) スイッチ)
  • RB14 (25 番ピン) — 内蔵 DAC L ch s正側出力 (ドライ (原音) 信号出力
  • RB12 (23 番ピン) — 内蔵 DAC R ch s正側出力 (ウェット (周波数シフトあり) 信号出力

 内蔵 ADC を使う場合でも、外部 ADC とのインターフェース用の設定を変えていないので、上記以外のピンにも信号が出力されています。
 RA0 に入力するアナログ信号のレベルは、3.3 VP-P 以下の必要があります。
 RA1 には周波数シフト量 (Amount of frequency shift) を設定するボリウム (POT) の電圧 (0 ~ +3.3 V) を入れます。
 モード (レンジ) スイッチに関しては、内蔵コンパレータと Vref ジェネレータ (4 ビット DAC) を使った簡易的な ADC で電圧値を読み込んでいます。
 上の図では、左下に青色の太線で囲ったブロックとして表示されています。
 具体的な回路としては、「普通」の 1 回路 6 接点の「ロータリースイッチ」を使う場合を下に示します。

 ロータリースイッチのポジションと機能を表にすると、

ポジション 機能
ZERO 周波数シフトなし
EXP 指数特性の周波数シフト ( 2 Hz ~ 2 kHz )
5 Hz リニア周波数シフト ( -5 Hz ~ 5 Hz )
50 Hz リニア周波数シフト ( -50 Hz ~ 50 Hz )
500 Hz リニア周波数シフト ( -500 Hz ~ 500 Hz )
5 kHz リニア周波数シフト ( -5 kHz ~ 5 kHz )

 「DIP スイッチ」または 「DIP ロータリースイッチ」の場合の回路を下に示します。

 「正論理」、つまり、各ビットが「0」の場合コモン電極と導通がなく、「1」の場合にコモン電極と導通があるタイプを使います。
 信号出力にはバッファを入れていないので、受け側のインピーダンスは 10 kΩ 程度以上の必要があります。
 「ドライ」側には、HPF で直流成分を除去し、遅延量を調整した「原音」(「解析信号」の実部) そのものが出力されます。
 「ウェット」側には、ヒルベルト変換器を通して作成した「解析信号」を周波数シフトした信号の虚部が出力されます。
 モードスイッチの「ZERO」ポジションでは周波数シフト量をゼロにするだけでなく、シフト周波数オシレータの位相もゼロに強制しているので、「ウェット」側からはヒルベルト変換出力 (解析信号の虚部) そのものが出力されます。
 最後に hex フォーマットのオブジェクトを掲載します。 (2019 年 2 月 16 日追記: 内蔵 DAC へのデータ出力が L/R 逆だったのを修正し、ヒルベルト変換器のタップ数を 507 から 763 に増やしました。)

:020000040000fa
:080000000002040000000000f2
:020000040000fa
:0400080042030000af
:020000040000fa
:04000c00c802000026
:020000040000fa
:0400100042030000a7
:020000040000fa
:0400140042030000a3
:020000040000fa
:04001800420300009f
:020000040000fa
:04001c00420300009b
:020000040000fa
:040020004203000097
:020000040000fa
:040024004203000093
:020000040000fa
:04002800420300008f
:020000040000fa
:04002c00420300008b
:020000040000fa
:040030004203000087
:020000040000fa
:040034004203000083
:020000040000fa
:04003800cc020000f6
:020000040000fa
:04003c00420300007b
:020000040000fa
:040040004203000077
:020000040000fa
:040044004203000073
:020000040000fa
:04004800420300006f
:020000040000fa
:04004c00420300006b
:020000040000fa
:040050004203000067
:020000040000fa
:040054004203000063
:020000040000fa
:04005800420300005f
:020000040000fa
:04005c00420300005b
:020000040000fa
:04006000e6020000b4
:020000040000fa
:040064004203000053
:020000040000fa
:04006800420300004f
:020000040000fa
:04006c00420300004b
:020000040000fa
:040070004203000047
:020000040000fa
:040074004203000043
:020000040000fa
:04007800420300003f
:020000040000fa
:04007c00420300003b
:020000040000fa
:040080004203000037
:020000040000fa
:040084004203000033
:020000040000fa
:04008800fe02000074
:020000040000fa
:04008c00420300002b
:020000040000fa
:040090004203000027
:020000040000fa
:040094004203000023
:020000040000fa
:04009800420300001f
:020000040000fa
:04009c00420300001b
:020000040000fa
:0400a0004203000017
:020000040000fa
:0400a4004203000013
:020000040000fa
:0400a800420300000f
:020000040000fa
:0400ac00420300000b
:020000040000fa
:0400b0004203000007
:020000040000fa
:0400b4004203000003
:020000040000fa
:0400b8002803000019
:020000040000fa
:0400bc0042030000fb
:020000040000fa
:0400c00042030000f7
:020000040000fa
:0400c40042030000f3
:020000040000fa
:0400c80042030000ef
:020000040000fa
:0400cc0042030000eb
:020000040000fa
:0400d00042030000e7
:020000040000fa
:0400d40042030000e3
:020000040000fa
:0400d80042030000df
:020000040000fa
:0400dc0042030000db
:020000040000fa
:0400e00042030000d7
:020000040000fa
:0400e40042030000d3
:020000040000fa
:0400e80042030000cf
:020000040000fa
:0400ec0042030000cb
:020000040000fa
:0400f00042030000c7
:020000040000fa
:0400f40042030000c3
:020000040000fa
:0400f80042030000bf
:020000040000fa
:0400fc0042030000bb
:020000040000fa
:0401000042030000b6
:020000040000fa
:0401040042030000b2
:020000040000fa
:0401080042030000ae
:020000040000fa
:04010c0042030000aa
:020000040000fa
:0401100042030000a6
:020000040000fa
:0401140042030000a2
:020000040000fa
:04011800420300009e
:020000040000fa
:04011c00420300009a
:020000040000fa
:040120004203000096
:020000040000fa
:040124004203000092
:020000040000fa
:04012800420300008e
:020000040000fa
:04012c00420300008a
:020000040000fa
:040130004203000086
:020000040000fa
:040134004203000082
:020000040000fa
:04013800420300007e
:020000040000fa
:04013c00420300007a
:020000040000fa
:040140004203000076
:020000040000fa
:040144004203000072
:020000040000fa
:04014800420300006e
:020000040000fa
:04014c00420300006a
:020000040000fa
:040150004203000066
:020000040000fa
:040154004203000062
:020000040000fa
:04015800420300005e
:020000040000fa
:04015c00420300005a
:020000040000fa
:040160004203000056
:020000040000fa
:040164004203000052
:020000040000fa
:0402080042030000ad
:020000040000fa
:04020c0042030000a9
:020000040000fa
:0402100042030000a5
:020000040000fa
:0402140042030000a1
:020000040000fa
:04021800420300009d
:020000040000fa
:04021c004203000099
:020000040000fa
:040220004203000095
:020000040000fa
:040224004203000091
:020000040000fa
:04022800420300008d
:020000040000fa
:04022c004203000089
:020000040000fa
:040230004203000085
:020000040000fa
:040234004203000081
:020000040000fa
:04023800420300007d
:020000040000fa
:04023c004203000079
:020000040000fa
:040240004203000075
:020000040000fa
:040244004203000071
:020000040000fa
:04024800420300006d
:020000040000fa
:04024c004203000069
:020000040000fa
:040250004203000065
:020000040000fa
:040254004203000061
:020000040000fa
:04025800420300005d
:020000040000fa
:04025c004203000059
:020000040000fa
:040260004203000055
:020000040000fa
:040264004203000051
:020000040000fa
:04026800420300004d
:020000040000fa
:04026c004203000049
:020000040000fa
:040270004203000045
:020000040000fa
:040274004203000041
:020000040000fa
:04027800420300003d
:020000040000fa
:04027c004203000039
:020000040000fa
:040280004203000035
:020000040000fa
:040284004203000031
:020000040000fa
:04028800420300002d
:020000040000fa
:04028c004203000029
:020000040000fa
:040290004203000025
:020000040000fa
:040294004203000021
:020000040000fa
:04029800420300001d
:020000040000fa
:04029c004203000019
:020000040000fa
:0402a0004203000015
:020000040000fa
:0402a4004203000011
:020000040000fa
:0402a800420300000d
:020000040000fa
:0402ac004203000009
:020000040000fa
:0402b0004203000005
:020000040000fa
:0402b4004203000001
:020000040000fa
:0402b80042030000fd
:020000040000fa
:0402bc0042030000f9
:020000040000fa
:0402c00042030000f5
:020000040000fa
:0402c40042030000f1
:020000040000fa
:0402c80042030000ed
:020000040000fa
:0402cc0042030000e9
:020000040000fa
:0402d00042030000e5
:020000040000fa
:0402d40042030000e1
:020000040000fa
:0402d80042030000dd
:020000040000fa
:0402dc0042030000d9
:020000040000fa
:0402e00042030000d5
:020000040000fa
:0402e40042030000d1
:020000040000fa
:0402e80042030000cd
:020000040000fa
:0402ec0042030000c9
:020000040000fa
:0402f00042030000c5
:020000040000fa
:0402f40042030000c1
:020000040000fa
:0402f80042030000bd
:020000040000fa
:0402fc0042030000b9
:020000040000fa
:0403000042030000b4
:020000040000fa
:0403040042030000b0
:020000040000fa
:0403080042030000ac
:020000040000fa
:04030c0042030000a8
:020000040000fa
:0403100042030000a4
:020000040000fa
:0403140042030000a0
:020000040000fa
:04031800420300009c
:020000040000fa
:04031c004203000098
:020000040000fa
:040320004203000094
:020000040000fa
:040324004203000090
:020000040000fa
:04032800420300008c
:020000040000fa
:04032c004203000088
:020000040000fa
:040330004203000084
:020000040000fa
:040334004203000080
:020000040000fa
:04033800420300007c
:020000040000fa
:04033c004203000078
:020000040000fa
:040340004203000074
:020000040000fa
:040344004203000070
:020000040000fa
:04034800420300006c
:020000040000fa
:04034c004203000068
:020000040000fa
:040350004203000064
:020000040000fa
:040354004203000060
:020000040000fa
:04035800420300005c
:020000040000fa
:04035c004203000058
:020000040000fa
:040360004203000054
:020000040000fa
:040364004203000050
:020000040000fa
:100400008fab20000eff22000e01880000000000cc
:10041000000020000000e000020032000001200087
:100420002002880014000700080107000000e00017
:1004300003003a0080e8200001002000020037009d
:100440000000200001002000810f70000100320038
:1004500014000700000020000000e000020032004d
:100460000000020000000000bc0b020000000000c1
:100470000040da000000fe004440a900c040200017
:100480000000e0000300320000002000a00188000e
:100490004440a800000006008a1f78008b1f7800e7
:1004a0000000060091018800800478000000eb0045
:1004b0001a003700e284440032a0b4009905ba0063
:1004c000e284440032a0b4009906ba00e2844400f9
:1004d00032a0b4000006eb00476fde00fd07b2005b
:1004e000636ce10003003a00ebff07000000eb0043
:1004f0000a003700606ce10004003a00005deb0088
:100500008b05e900fdff3e00040037006168e10053
:10051000010032000086eb000b00070019c7ba008b
:100520001905ba000e04e00003003a000a00e000da
:10053000e0ff3a0000000600fe07b2009e018800be
:100540008a047800f5ff3700395dba008b05e900b1
:100550000c003200295dba008b05e900080032006a
:100560000c00e00003003a00e284440032a0b40032
:10057000f5ff370019ddba008b05e900faff3a00f4
:100580008904e800e184440032a0b40000000600c1
:100590000000fe0000400600801f78008480a90053
:1005a0000048e2000300320000542400704188003b
:1005b0000200370000502400704188000008aa00a3
:1005c0001c08a8004f00780000400600801f78003b
:1005d00085c0a900e223ab0003003200005c2400c8
:1005e0006041880002003700005824006041880004
:1005f0001c28a8004f00780000400600809fbe0025
:10060000821f78008700a900601680000080ea0041
:1006100061006000e1ff2f006216800082806000b0
:100620008100700061168800e243ab0003003200d5
:100630000078240080418800020037000070240008
:10064000804188004f0178004f00be000040060046
:10065000801f78008880a900e263ab0003003200ad
:100660000068240050418800020037000060240028
:100670005041880010c0b3001de8b7004f0078005b
:10068000004006000040da000000fe00811f7800f4
:10069000849fbe00869fbe00889fbe004400f80075
:1006a000040f2000240288000204780083047800ec
:1006b00052a2c3005200c3000080e900008008007d
:1006c000050000005310c10053b2c4005280c200a4
:1006d0005262c5003100cd003180cd001310c10041
:1006e00013b2c4001281c2001241c5003100cd0016
:1006f0001180cd004400f9004f04be004f03be003e
:100700004f02be004f00780000000600889fbe0028
:100710008a9fbe008c9fbe008e1f78004400f800a8
:10072000080f2000280288003400f8004600f80076
:100730004c00f8004e00f800fa0a24003a02880043
:10074000530590007a028800430590006a028800f1
:10075000811f78000f0778003305900007f02f0005
:100760000a38e10004003200270280004700b3008d
:1007700027028800aa018800630590000302900008
:100780004222de0062025200130033000000e90042
:10079000008008000e00000013049000320d780065
:1007a0001281c3004a18c300048009004a18c4001b
:1007b0004618c400c619c400ca99c40004800900c0
:1007c000ca59c4000258c4001241c4003180cd008f
:1007d0003100cd00ea0198008e0778004f007800c4
:1007e0004e00f9004c00f9004600f9003400f90011
:1007f0004400f9004f0778004f06be004f05be00c9
:100800004f04be00000006008102d0008502e9000e
:1008100001187800021878000518410003187800c4
:10082000041878000518420004087800000006004b
:10083000800090000101e900c0009000000020004d
:100840000280090080187800000006000000050002
:100850006022b800060220000000d0008180d20093
:100860000482d2008582d2000000a0000202520061
:1008700083825a00030031000202420083824a0050
:100880000000a1000603e900f3ff3a0000000600a3
:10089000889fbe008a9fbe008c1f78000006eb0078
:1008a000e00f5000e08f5800e00f5900e08f590032
:1008b00007003d006044b8006055b80000005400d7
:1008c00081805c0002015d0083815d001c002000ce
:1008d000e00f5200e08f5a00e00f5b00e08f5b00fa
:1008e00007003d006044b8006055b80004025400a1
:1008f00085825c0006035d0087835d000c00a2001a
:100900000c0007000c00e000060032006022b80076
:100910006033b8000000520081805a0002015b0081
:1009200083815b004f0678004f05be004f04be0078
:1009300000000600889fbe008a9fbe008c9fbe00fc
:100940000404b8000506b8008904460060854e001e
:100950000606b8000a054600e0854e000706b80006
:100960008b054600040eb800890446000a854e0037
:10097000e0854d00050eb8000a0546008b854e0047
:10098000060eb8008b0546000416b8000a0546009e
:100990008b854e000516b8008b054600041eb80076
:1009a0008b0546000800be000a01be004f06be00cf
:0c09b0004f05be004f04be000000060012
:020000040000fa
:1009bc000000000000800000210000004801000041
:1009cc00cd0c0000ff7f000000000000240300009d
:1009dc00480600006a0900008c0c0000ab0f0000f8
:1009ec00c8120000e2150000f91800000b1c0000f2
:1009fc001a1f0000232200002825000026280000d2
:100a0c001f2b0000112e0000fb300000df33000014
:100a1c00ba3600008c390000563c0000173f00002d
:100a2c00ce4100007a4400001c470000b44900008d
:100a3c003f4c0000bf4e0000335100009b530000a0
:100a4c00f555000042580000825a0000b35c0000cb
:100a5c00d75e0000eb600000f1620000e86400006b
:100a6c00cf660000a66800006d6a0000236c0000d1
:100a7c00c96d00005e6f0000e2700000547200004f
:100a8c00b573000004750000417600006b77000020
:100a9c0084780000897900007c7a00005c7b00007f
:100aac00297c0000e37c0000897d00001d7e000095
:100abc009c7e0000097f0000617f0000a67f000083
:100acc00d87f0000f57f0000ff7f0000f57f00005d
:100adc00d87f0000a67f0000617f0000097f000026
:100aec009c7e00001d7e0000897d0000e37c0000e0
:100afc00297c00005c7b00007c7a00008979000076
:100b0c00847800006b7700004176000004750000cb
:100b1c00b573000054720000e27000005e6f0000bc
:100b2c00c96d0000236c00006d6a0000a66800000f
:100b3c00cf660000e8640000f1620000eb6000008a
:100b4c00d75e0000b35c0000825a000042580000df
:100b5c00f55500009b53000033510000bf4e0000c0
:100b6c003f4c0000b44900001c4700007a440000d0
:100b7c00ce410000173f0000563c00008c390000ad
:100b8c00ba360000df330000fb300000112e0000ed
:100b9c001f2b00002628000028250000232200001f
:100bac001a1f00000b1c0000f9180000e2150000d1
:100bbc00c8120000ab0f00008c0c00006a0900008a
:100bcc00480600002403000000000000dcfc0000cc
:100bdc00b8f9000096f6000074f3000055f0000020
:100bec0038ed00001eea000007e70000f5e3000006
:100bfc00e6e00000dddd0000d8da0000dad7000006
:100c0c00e1d40000efd1000005cf000021cc0000a2
:100c1c0046c9000074c60000aac30000e9c0000069
:100c2c0032be000086bb0000e4b800004cb60000e9
:100c3c00c1b3000041b10000cdae000065ac0000b6
:100c4c000baa0000bea700007ea500004da300006b
:100c5c0029a10000159f00000f9d0000189b0000ab
:100c6c00319900005a97000093950000dd93000025
:100c7c0037920000a29000001e8f0000ac8d000087
:100c8c004b8c0000fc8a0000bf8900009588000096
:100c9c007c8700007786000084850000a484000017
:100cac00d78300001d83000077820000e3810000e1
:100cbc0064810000f78000009f8000005a800000d3
:100ccc00288000000b800000018000000b800000d9
:100cdc00288000005a8000009f800000f7800000f0
:100cec0064810000e3810000778200001d83000016
:100cfc00d7830000a4840000848500007786000060
:100d0c007c87000095880000bf890000fc8a0000e9
:100d1c004b8c0000ac8d00001e8f0000a2900000d8
:100d2c0037920000dd930000939500005a97000065
:100d3c0031990000189b00000f9d0000159f0000ca
:100d4c0029a100004da300007ea50000bea7000055
:100d5c000baa000065ac0000cdae000041b1000054
:100d6c00c1b300004cb60000e4b8000086bb000024
:100d7c0032be0000e9c00000aac3000074c6000027
:100d8c0046c9000021cc000005cf0000efd10000c7
:100d9c00e1d40000dad70000d8da0000dddd000075
:100dac00e6e00000f5e3000007e700001eea0000a3
:100dbc0038ed000055f0000074f3000096f60000ca
:100dcc00b8f90000dcfc000000000000ff7f000010
:100ddc0006000000ff7f00000d000000ff7f0000f8
:100dec0013000000ff7f000019000000ff7f0000cf
:100dfc001f000000ff7f000026000000ff7f0000a6
:100e0c002c000000ff7f000032000000ff7f00007c
:100e1c0039000000ff7f00003f000000ff7f000052
:100e2c0045000000ff7f00004b000000ff7f00002a
:100e3c0052000000ff7f000058000000ff7f000000
:100e4c005e000000ff7f000065000000ff7f0000d7
:100e5c006b000000ff7f000071000000ff7f0000ae
:100e6c0077000000ff7f00007e000000ff7f000085
:100e7c0084000000ff7f00008a000000ff7f00005c
:100e8c0091000000ff7f000097000000ff7f000032
:100e9c009d000000ff7f0000a3000000ff7f00000a
:100eac00aa000000ff7f0000b0000000ff7f0000e0
:100ebc00b6000000fe7f0000bc000000fe7f0000ba
:100ecc00c3000000fe7f0000c9000000fe7f000090
:100edc00cf000000fe7f0000d6000000fe7f000067
:100eec00dc000000fe7f0000e2000000fe7f00003e
:100efc00e8000000fe7f0000ef000000fe7f000015
:100f0c00f5000000fe7f0000fb000000fe7f0000eb
:100f1c0002010000fe7f000008010000fe7f0000bf
:100f2c000e010000fe7f000014010000fe7f000097
:100f3c001b010000fe7f000021010000fe7f00006d
:100f4c0027010000fe7f00002e010000fe7f000044
:100f5c0034010000fe7f00003a010000fd7f00001c
:100f6c0040010000fd7f000047010000fd7f0000f4
:100f7c004d010000fd7f000053010000fd7f0000cb
:100f8c005a010000fd7f000060010000fd7f0000a1
:100f9c0066010000fd7f00006c010000fd7f000079
:100fac0073010000fd7f000079010000fd7f00004f
:100fbc007f010000fd7f000086010000fd7f000026
:100fcc008c010000fd7f000092010000fd7f0000fd
:100fdc0098010000fc7f00009f010000fc7f0000d6
:100fec00a5010000fc7f0000ab010000fc7f0000ad
:100ffc00b2010000fc7f0000b8010000fc7f000083
:10100c00be010000fc7f0000c4010000fc7f00005a
:10101c00cb010000fc7f0000d1010000fc7f000030
:10102c00d7010000fc7f0000dd010000fc7f000008
:10103c00e4010000fb7f0000ea010000fb7f0000e0
:10104c00f0010000fb7f0000f7010000fb7f0000b7
:10105c00fd010000fb7f000003020000fb7f00008d
:10106c0009020000fb7f000010020000fb7f000063
:10107c0016020000fb7f00001c020000fb7f00003a
:10108c0023020000fa7f000029020000fa7f000012
:10109c002f020000fa7f000035020000fa7f0000ea
:1010ac003c020000fa7f000042020000fa7f0000c0
:1010bc0048020000fa7f00004f020000fa7f000097
:1010cc0055020000fa7f00005b020000f97f00006f
:1010dc0061020000f97f000068020000f97f000047
:1010ec006e020000f97f000074020000f97f00001e
:1010fc007b020000f97f000081020000f97f0000f4
:10110c0087020000f97f00008d020000f87f0000cc
:10111c0094020000f87f00009a020000f87f0000a3
:10112c00a0020000f87f0000a7020000f87f00007a
:10113c00ad020000f87f0000b3020000f87f000051
:10114c00b9020000f87f0000c0020000f77f000029
:10115c00c6020000f77f0000cc020000f77f000001
:10116c00d2020000f77f0000d9020000f77f0000d8
:10117c00df020000f77f0000e5020000f77f0000af
:10118c00ec020000f67f0000f2020000f67f000087
:10119c00f8020000f67f0000fe020000f67f00005f
:1011ac0005030000f67f00000b030000f67f000033
:1011bc0011030000f67f000018030000f57f00000b
:0811cc001e030000f57f000086
:020000040000fa
:1011d400889fbe008a9fbe008c9fbe00184180007d
:1011e400294180003a4180004b41800001003700d2
:1011f4000605be0032067800cfe6de004a6bdd004d
:10120400c663de00870373004a63dd0008044300fd
:1012140089844b000a0454008b845c00c649dd00b9
:101224004a42de0004827100cacade00040454008b
:1012340085845c000405be000c002800fdff2f001f
:101244008c0f52008d8f5a0001003d000c05be002a
:10125400fcff27000d0020008c0f55008d8f5d00d2
:10126400010034000c05be008a1878000000e90073
:101274004240a900deff3c00184188002941880053
:101284003641880047418800010078004f06be00bf
:101294004f05be004f04be0000000600889fbe003c
:1012a4000004be000001be0000002000a18c20004c
:1012b40066fd07000008b0000180b0004809dd00a9
:1012c4004800de0000007100c808de007100200044
:1012d400f2072000820f5000040036008100e9006c
:1012e4000000d100820f5000fcff3e000040e900e6
:1012f400f007b20002f82f00831f80000301610091
:1013040002017000821f8800e7806000c808dd00c9
:10131400f08f2f004a07b60000807000503a880012
:1013240098418800a94188004f04be0000000600cf
:10133400ea874700889fbe008a9fbe008c9fbe003c
:101344008e1f7800010778000000e00040003400a0
:101354008e007800fc0f2000ab4e2800fd07200013
:10136400aa6e2800f2b79f0083bf9f0082408000ce
:1013740093408000a4408000b540800004014100f7
:101384008581490082408800934088008303780067
:101394004739de008c016100838141006b83790051
:1013a4000204b0000c01610002014100eb0179006c
:1013b4008d83630087834300078143006a017900ba
:1013c4008703e80087834300ea837b00079ab90018
:1013d400d4b79f00e5b79f0002b4b90008045200d7
:1013e40089845a00040024000500200008044200f7
:1013f40089844a00414add00cf42de008502720042
:10140400f5b79f00cfcade0085bf9f007fb297006b
:101414008408780006bbb9000299b90006014100ae
:1014240087814900060024000700200002014300d0
:1014340083814b00c11bdd004f12de000482730068
:1014440094009800e48040000000e900c7ff3a00df
:101454000e0078004f0778004f06be004f05be000f
:101464004f04be00af00b1000000060004002300da
:1014740003f02f0062832000b12f2000605f23005f
:10148400e0fc0700605f2300e8fc070000000600a2
:1014940081318000c708de0030408000e1806000b8
:1014a4008008dd00424080008100710041408800d6
:1014b400e40f50000b003400ff8060008100df0067
:1014c400ef8040005140880081804000e04d2800ba
:1014d40060807800604088000828ef000628ef004c
:1014e400020037000000e800304088000648ec00a5
:1014f4006f00600001ff2f00923180008280600045
:10150400810070009131880000000600889fbe00b1
:10151400dfff0700604080000000e0002b003d007a
:10152400224080006511b900104080006504b800b5
:10153400890441000802780004f0a1008002eb0055
:101544004a28dd004621de00020170006512b90060
:10155400038021008481410094ff2f000492b9008c
:101564000200230004014100110009000218d900ff
:10157400000178006112b90033ec2a0003abb90012
:101584000321b80083014300cd1ade00431bdd00b4
:101594004d12de00040273004148dd004f41de00bd
:1015a40002017000650041000401be000000e90072
:1015b400030033000201410083814900fbff37002f
:1015c400a2408800b3408800230037000000e000f8
:1015d40005003a001428ef001628ef001028ef0049
:1015e4001228ef001c003700cf80de006109b9002b
:1015f4000455250055d520006033b800a3fc07002e
:101604004f00de00410add0000007200cf08de005a
:101614004112dd00810072006011b80014408000a6
:10162400254080004fabde008603780097fc07005e
:101634000203be000002be004f22de00412cdd008a
:1016440004027400cf2ade004134dd0085027400f8
:10165400a4408800b54088004f04be000000060086
:10166400881f78000e08e20004003a00426023005c
:101674008200780000022000d5fe0700635f23008b
:1016840042602300819b2000000220001efc070012
:10169400809b2000286023000208200000014100f4
:1016a400880078009028780064004000820f500081
:1016b400fcff3a0081a32000000220001cff070069
:1016c40083a32000829b2000820078000002200077
:1016d400edfb0700a19b20000000eb0003042000a9
:1016e40062418000583178007241800011317800e5
:1016f4000080e800e4804000830f5000f8ff3a00c7
:101704004f04780000000600c18120009140780059
:101714000040eb00e3cf500002003a001c68ef00e9
:1017240010c0b300000006001d68ef001d48e20071
:10173400feff32001d68ef001d48e200feff32008c
:10174400524180006000b80004042000b281ea0025
:10175400818071000000e800840f5000fbff3a0014
:1017640001f0a7008100ea000100ea004f00de005a
:1017740000000600889fbe008a9fbe008c9fbe00aa
:101784005801070090418000a1418000c3fe07007a
:10179400e5ff07007040880034ff0700496023001c
:1017a40008082000d8ff07000004e0002a003200e7
:1017b400c482a80055ff0700a9ff07000228ef0014
:1017c4000428ef00764080005c418000874180005f
:1017d4008780e800090178000000eb000600e000c3
:1017e400020032006c0978000100370067097800b4
:1017f400910178001440800025408000cf9ede00d7
:101804000482410085824e001440880025408800ef
:10181400e4804000640040000281e800880f50002a
:10182400eeff3a00e00f5200e08f5a0002003d0044
:101834007f024200e0824a004b28dd004525de009d
:101844000a057000c5adde001a4088002b408800f0
:10185400c482a900d3ff370000000000d1ff370085
:101864000421ef00f0fc2f000401b6000040a000aa
:10187400200888000021ef00f03f200010088800b5
:101884008460a90005e1a800a1092000220020002d
:101894008007200033742000804978008149780053
:1018a40082497800710520001200200060042000a5
:1018b40023742000804978008149780082497800a7
:1018c40020048000680060000000e9004f00de0092
:1018d4004207b600faff3a000421ef00300020006e
:1018e400010320004207ab00020032001000200078
:1018f4000105200002fe2f00233a8000030161004d
:101904000210a000223a8800f2f32f004374200052
:10191400930961008180e900e11fb20002e02f0019
:10192400333a80000301610002817000323a88007a
:10193400a209200081072000337420008149780027
:101944008249780080497800710520001200200047
:1019540060042000237420008049780081497800c5
:101964008249780001022000123a8000028060005f
:10197400fdff32004ba7a900f07f2e004a27b600d6
:10198400007020004a27b700000006001021ef0075
:101994002000200060088800300c88008a21ef00b5
:1019a40080ff2f008a01b6006000b300500c88004d
:1019b40000fe2f00c406b6003001b30020368800b4
:1019c40011e1a800000006002021a900f0fc2f006e
:1019d4002021b60020c1a900f0172000e0088800eb
:1019e40021e1a80000000600f103a80000f82f0080
:1019f400f003b600b000b300801f8800f3e3a80032
:101a0400f3a3a800f2e3a800f2a3a800f243a800fd
:101a1400f343a800f1e3a800000006002143a80056
:101a24002183a800003020002023b700f0f12f000c
:101a34002003b6000070a000001988002043a8000d
:101a44002343a80030fc2f002203b6000020a0008e
:101a540010198800f0c0b30024e3b700f00f2e0083
:101a64002403b60000c0a0002019880000fe2f0047
:101a74002823b60028e3a900c0ff2f002c23b600ba
:101a8400300020003023b70021e3a8000000060046
:101a9400f00f2e00313680000101600001e02000cb
:101aa4008280700031368800c206b60001f0200042
:101ab40080807000113688002c83a800c842a800da
:101ac40068c0a80000fe2f00b006b6000010a000f9
:101ad400803588008022ef00c0ff2f008002b6000e
:101ae4000000a0000014880080e2a900f03f2f004d
:101af4008222b600f00020008222b700f0e12f001d
:101b04008202b6000050a0001014880000002f00cc
:101b14008402b6005000b3002014880081e2a800bb
:101b24008c02a8008c22a9008b80a900000006006a
:101b3400f1fc2f000038200010886000c0ff2f0047
:101b4400031c8000030160000210a000021c880036
:101b540081a3a800623f2000421c8800f2012000fb
:101b6400521c8800e3042000131c8800035020004a
:101b7400231c880003542000331c88008480a9009f
:101b84009480a80081e3a800c4382000148a60006f
:101b9400641c8000840160000310a000631c8800a2
:101ba4008da3a800833f2000a31c8800b21c8800da
:101bb400f2042000721c880002582000821c880055
:101bc400025c2000921c880085c0a90095c0a80072
:101bd4008de3a8008239200012896000c31c8000b4
:101be400030160000210a000c21c880099a3a90090
:101bf40002302000021d8800f2032000121d88001c
:101c0400d3002000d31c880003702000e31c88004c
:101c140003782000f31c88008700a9009700a8001f
:101c240099e3a800443a2000148a6000a403b60093
:101c34000010a000201d8800a5a3a90000292000f1
:101c4400601d8800721d8800c0032000301d8800bc
:101c540000602000401d880000682000501d88009e
:101c64008880a9009880a800a5e3a80000000600c9
:101c7400c082a900c802a800c8a2a800c8c2a800bf
:101c8400c922a800c942a800c962a8006880a800a7
:101c940069e0a8006a00a8006aa0a8006b00a80078
:101ca4006b60a8002c43a800c902a8006ac0a80061
:101cb400000006002c63a900c822a8003166a80011
:101cc4003066a8003046a90030a6a80032e6a80075
:101cd40032a6a8003286a90000ff2f003226b600e3
:101ce40000000600defe0700e1ff070027ff0700f3
:101cf40035ff07008eff070048ff07003aff070083
:0c1d040063ff0700ebff07000000060073
:020000040000fa
:101d1000f6350000ce000000000000002a08000098
:101d20000c00000002000000004680004500450055
:101d300000478000bb000000000800002a000000ef
:101d400000000000360800008001000002000000d2
:101d500038fff500fff5ff00f4fff400fff4ff008b
:101d6000f3fff300fff3ff00f2fff200fff2ff00ca
:101d7000f1fff100fff1ff00f0fff000ffefff00c7
:101d8000efffef00ffeeff00eeffed00ffedff00c5
:101d9000ecffec00ffebff00ebffeb00ffeaff00c6
:101da000eaffe900ffe9ff00e8ffe800ffe7ff00c6
:101db000e7ffe600ffe5ff00e5ffe400ffe4ff00ca
:101dc000e3ffe300ffe2ff00e1ffe100ffe0ff00cf
:101dd000dfffdf00ffdeff00ddffdd00ffdcff00d7
:101de000dbffdb00ffdaff00d9ffd900ffd8ff00df
:101df000d7ffd600ffd5ff00d5ffd400ffd3ff00eb
:101e0000d2ffd100ffd0ff00d0ffcf00ffceff00f8
:101e1000cdffcc00ffcbff00caffc900ffc8ff0009
:101e2000c7ffc600ffc5ff00c4ffc300ffc1ff001e
:101e3000c0ffbf00ffbeff00bdffbc00ffbaff0038
:101e4000b9ffb800ffb7ff00b5ffb400ffb2ff0055
:101e5000b1ffb000ffaeff00adffab00ffaaff0077
:101e6000a8ffa600ffa5ff00a3ffa100ffa0ff00a1
:101e70009eff9c00ff9aff0098ff9600ff94ff00d2
:101e800092ff9000ff8eff008cff8900ff87ff000c
:101e900085ff8200ff80ff007dff7b00ff78ff0051
:101ea00075ff7200ff6fff006cff6900ff66ff00a7
:101eb00063ff5f00ff5cff0058ff5400ff50ff000e
:101ec0004cff4800ff44ff003fff3b00ff36ff0090
:101ed00031ff2b00ff26ff0020ff1a00ff14ff0038
:101ee0000dff0600fffffe00f8fef000fee7fe001b
:101ef000defed500fecbfe00c1feb500fea9fe0051
:101f00009dfe8f00fe80fe0070fe5f00fe4dfe0015
:101f100039fe2300fe0bfe00f0fdd300fdb3fd00f3
:101f20008efd6500fd36fd0000fdc200fc79fc0061
:101f300023fcba00fb38fb0094fabe00f99af800c3
:101f4000f4f65d00f4b5ef00d7e48300aeff7f0048
:101f500080450000800000000000000000450000f7
:101f600080000000000000000047000000010000a9
:101f7000000000000046000000010000000000001a
:101f8000b80900008000000000000000380a0000ce
:101f9000800000000000000000300000f605000096
:081fa000000000000000000039
:020000040000fa
:0200000401f009
:04000000ffff0000fe
:020000040000fa
:0200000401f009
:04000400ffff0000fa
:020000040000fa
:0200000401f009
:04000800ffff0000f6
:020000040000fa
:0200000401f009
:04000c0000000000f0
:020000040000fa
:0200000401f009
:0400100026000000c6
:020000040000fa
:0200000401f009
:040014005f00000089
:020000040000fa
:0200000401f009
:04001800e7000000fd
:020000040000fa
:0200000401f009
:04001c00deff000003
:00000001FF