From 3312ea70226fb6b55018199683c12d6ccb6ff6b2 Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Thu, 8 Jul 2021 17:57:46 +0100 Subject: [PATCH] Add draft UART DTM --- doc/hazard3.adoc | 2 + doc/hazard3.pdf | 3169 ++++++++++++++++++++------ doc/sections/debug.adoc | 52 + hdl/debug/hazard3_apb_async_bridge.v | 192 ++ hdl/debug/hazard3_sync_1bit.v | 45 + hdl/debug/hazard3_uart_dtm.f | 6 + hdl/debug/hazard3_uart_dtm.v | 317 +++ hdl/debug/hazard3_uart_dtm_fifo.v | 61 + hdl/hazard3_config.vh | 2 +- 9 files changed, 3200 insertions(+), 646 deletions(-) create mode 100644 doc/sections/debug.adoc create mode 100644 hdl/debug/hazard3_apb_async_bridge.v create mode 100644 hdl/debug/hazard3_sync_1bit.v create mode 100644 hdl/debug/hazard3_uart_dtm.f create mode 100644 hdl/debug/hazard3_uart_dtm.v create mode 100644 hdl/debug/hazard3_uart_dtm_fifo.v diff --git a/doc/hazard3.adoc b/doc/hazard3.adoc index 424aa21..a17b7f1 100644 --- a/doc/hazard3.adoc +++ b/doc/hazard3.adoc @@ -12,3 +12,5 @@ include::sections/introduction.adoc[] include::sections/instruction_timings.adoc[] include::sections/csr.adoc[] + +include::sections/debug.adoc[] diff --git a/doc/hazard3.pdf b/doc/hazard3.pdf index b03939b..d47b0c4 100644 --- a/doc/hazard3.pdf +++ b/doc/hazard3.pdf @@ -4,16 +4,16 @@ << /Title (Hazard3) /Creator (Asciidoctor PDF 1.5.4, based on Prawn 2.2.2) /Producer (Asciidoctor PDF 1.5.4, based on Prawn 2.2.2) -/ModDate (D:20210531151744+01'00') -/CreationDate (D:20210531171925+01'00') +/ModDate (D:20210618200929+01'00') +/CreationDate (D:20210708153803+01'00') >> endobj 2 0 obj << /Type /Catalog /Pages 3 0 R /Names 14 0 R -/Outlines 110 0 R -/PageLabels 132 0 R +/Outlines 120 0 R +/PageLabels 144 0 R /PageMode /UseOutlines /OpenAction [7 0 R /FitH 841.89] /ViewerPreferences << /DisplayDocTitle true @@ -22,8 +22,8 @@ endobj endobj 3 0 obj << /Type /Pages -/Count 9 -/Kids [7 0 R 10 0 R 12 0 R 21 0 R 29 0 R 43 0 R 51 0 R 62 0 R 69 0 R] +/Count 11 +/Kids [7 0 R 10 0 R 12 0 R 21 0 R 29 0 R 43 0 R 51 0 R 62 0 R 69 0 R 73 0 R 77 0 R] >> endobj 4 0 obj @@ -86,17 +86,17 @@ endobj endobj 8 0 obj << /Type /Font -/BaseFont /31443e+NotoSerif +/BaseFont /5e9f94+NotoSerif /Subtype /TrueType -/FontDescriptor 136 0 R +/FontDescriptor 148 0 R /FirstChar 32 /LastChar 255 -/Widths 138 0 R -/ToUnicode 137 0 R +/Widths 150 0 R +/ToUnicode 149 0 R >> endobj 9 0 obj -<< /Length 14097 +<< /Length 15621 >> stream q @@ -871,6 +871,86 @@ BT <37> Tj ET +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 400.736 Td +/F1.0 10.5 Tf +<342e204465627567> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +91.5526 400.736 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 400.736 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 400.736 Td +/F1.0 10.5 Tf +<38> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 382.256 Td +/F1.0 10.5 Tf +[<342e312e2055> 20.0195 <4152> 20.0195 <542044> 20.0195 <544d>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +134.3086 382.256 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 382.256 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 382.256 Td +/F1.0 10.5 Tf +<38> Tj +ET + 0.0 0.0 0.0 SCN 0.0 0.0 0.0 scn Q @@ -891,7 +971,7 @@ endobj /F1.0 8 0 R >> >> -/Annots [72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R 82 0 R 83 0 R 84 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R] +/Annots [78 0 R 79 0 R 80 0 R 81 0 R 82 0 R 83 0 R 84 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R] >> endobj 11 0 obj @@ -1567,7 +1647,7 @@ endobj /F3.0 18 0 R /F1.1 19 0 R >> -/XObject << /Stamp1 133 0 R +/XObject << /Stamp1 145 0 R >> >> >> @@ -1589,35 +1669,35 @@ endobj endobj 17 0 obj << /Type /Font -/BaseFont /3eef52+NotoSerif-Bold +/BaseFont /6e971e+NotoSerif-Bold /Subtype /TrueType -/FontDescriptor 140 0 R +/FontDescriptor 152 0 R /FirstChar 32 /LastChar 255 -/Widths 142 0 R -/ToUnicode 141 0 R +/Widths 154 0 R +/ToUnicode 153 0 R >> endobj 18 0 obj << /Type /Font -/BaseFont /70aa41+mplus1mn-regular +/BaseFont /041300+mplus1mn-regular /Subtype /TrueType -/FontDescriptor 144 0 R +/FontDescriptor 156 0 R /FirstChar 32 /LastChar 255 -/Widths 146 0 R -/ToUnicode 145 0 R +/Widths 158 0 R +/ToUnicode 157 0 R >> endobj 19 0 obj << /Type /Font /BaseFont /a68193+NotoSerif /Subtype /TrueType -/FontDescriptor 148 0 R +/FontDescriptor 160 0 R /FirstChar 32 /LastChar 255 -/Widths 150 0 R -/ToUnicode 149 0 R +/Widths 162 0 R +/ToUnicode 161 0 R >> endobj 20 0 obj @@ -4922,7 +5002,7 @@ endobj /F1.0 8 0 R /F3.0 18 0 R >> -/XObject << /Stamp2 134 0 R +/XObject << /Stamp2 146 0 R >> >> /Annots [25 0 R 26 0 R 27 0 R] @@ -8333,7 +8413,7 @@ endobj /F1.0 8 0 R /F1.1 19 0 R >> -/XObject << /Stamp1 133 0 R +/XObject << /Stamp1 145 0 R >> >> /Annots [30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R] @@ -9886,7 +9966,7 @@ endobj /F1.0 8 0 R /F3.0 18 0 R >> -/XObject << /Stamp2 134 0 R +/XObject << /Stamp2 146 0 R >> >> /Annots [47 0 R 49 0 R] @@ -10434,7 +10514,7 @@ endobj /F1.0 8 0 R /F3.0 18 0 R >> -/XObject << /Stamp1 133 0 R +/XObject << /Stamp1 145 0 R >> >> >> @@ -12181,7 +12261,7 @@ endobj /F3.0 18 0 R /F4.0 67 0 R >> -/XObject << /Stamp2 134 0 R +/XObject << /Stamp2 146 0 R >> >> >> @@ -12191,12 +12271,12 @@ endobj endobj 64 0 obj << /Limits [(__anchor-top) (_introduction)] -/Names [(__anchor-top) 13 0 R (_c_extension) 44 0 R (_csrs) 52 0 R (_custom_csrs) 59 0 R (_footnotedef_1) 46 0 R (_footnotedef_2) 48 0 R (_footnoteref_1) 24 0 R (_footnoteref_2) 35 0 R (_instruction_cycle_counts) 22 0 R (_introduction) 16 0 R] +/Names [(__anchor-top) 13 0 R (_c_extension) 44 0 R (_csrs) 52 0 R (_custom_csrs) 59 0 R (_debug) 74 0 R (_footnotedef_1) 46 0 R (_footnotedef_2) 48 0 R (_footnoteref_1) 24 0 R (_footnoteref_2) 35 0 R (_instruction_cycle_counts) 22 0 R (_introduction) 16 0 R] >> endobj 65 0 obj -<< /Limits [(_m_extension) (_standard_csrs)] -/Names [(_m_extension) 41 0 R (_marchid) 55 0 R (_maybe_adds) 71 0 R (_meie0) 63 0 R (_meip0) 66 0 R (_midcr) 60 0 R (_mimpid) 56 0 R (_misa) 58 0 R (_mlei) 70 0 R (_mstatus) 57 0 R (_mvendorid) 54 0 R (_privileged_instructions_including_zicsr) 45 0 R (_rv32i) 23 0 R (_standard_csrs) 53 0 R] +<< /Limits [(_m_extension) (_uart_dtm)] +/Names [(_m_extension) 41 0 R (_marchid) 55 0 R (_maybe_adds) 71 0 R (_meie0) 63 0 R (_meip0) 66 0 R (_midcr) 60 0 R (_mimpid) 56 0 R (_misa) 58 0 R (_mlei) 70 0 R (_mstatus) 57 0 R (_mvendorid) 54 0 R (_privileged_instructions_including_zicsr) 45 0 R (_rv32i) 23 0 R (_standard_csrs) 53 0 R (_uart_dtm) 75 0 R] >> endobj 66 0 obj @@ -12204,13 +12284,13 @@ endobj endobj 67 0 obj << /Type /Font -/BaseFont /e6a149+NotoSerif-Italic +/BaseFont /f37706+NotoSerif-Italic /Subtype /TrueType -/FontDescriptor 152 0 R +/FontDescriptor 164 0 R /FirstChar 32 /LastChar 255 -/Widths 154 0 R -/ToUnicode 153 0 R +/Widths 166 0 R +/ToUnicode 165 0 R >> endobj 68 0 obj @@ -13468,7 +13548,7 @@ endobj /F1.1 19 0 R /F2.0 17 0 R >> -/XObject << /Stamp1 133 0 R +/XObject << /Stamp1 145 0 R >> >> >> @@ -13480,6 +13560,1725 @@ endobj [69 0 R /XYZ 0 337.01 null] endobj 72 0 obj +<< /Length 13529 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 782.394 Td +/F2.0 22 Tf +<4368617074657220342e204465627567> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 753.206 Td +/F1.0 10.5 Tf +<43757272656e746c792074686520706c616e20697320666f722048617a617264332c207769746820697473206173736f636961746564206465627567206d6f64756c652028444d292c20746f20737570706f72742074686520666f6c6c6f77696e673a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 725.426 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 725.426 Td +/F1.0 10.5 Tf +<52756e2f68616c742f726573657420636f6e74726f6c206173207265717569726564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 703.646 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 703.646 Td +/F1.0 10.5 Tf +[<4162737472> 20.0195 <6163742047505220616363657373206173207265717569726564>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 681.866 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 681.866 Td +/F1.0 10.5 Tf +[<50726f6772> 20.0195 <616d206275666665723a203220776f72647320706c757320>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +215.9593 681.866 Td +/F3.0 10.5 Tf +<696d7065627265616b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 660.086 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 660.086 Td +/F1.0 10.5 Tf +[<41> 20.0195 <75746f6d617469632070726f6772> 20.0195 <616d2062756666657220657865637574696f6e207472696767657265642062> 20.0195 <79206162737472> 20.0195 <61637420475052206163636573732028>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +420.3727 660.086 Td +/F3.0 10.5 Tf +<61627374726163746175746f> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +483.3727 660.086 Td +/F1.0 10.5 Tf +<29> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 638.306 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 638.306 Td +/F1.0 10.5 Tf +<536f6d65206d696e696d756d2075736566756c207472696767657220756e6974> Tj +/F1.1 10.5 Tf +<24> Tj +/F1.0 10.5 Tf + Tj +/F1.1 10.5 Tf +<24> Tj +/F1.0 10.5 Tf +[<6c696b> 20.0195 <656c79206a75737420627265616b706f696e74732c206e6f207761746368706f696e7473>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.0868 Tw + +BT +48.24 610.526 Td +/F1.0 10.5 Tf +<54686520636f726520697473656c662077696c6c20696d706c656d656e742074686520666f6c6c6f77696e672c20656e61626c696e672074686520444d20746f2070726f76696465206120636f6d706c69616e74206465627567> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 594.746 Td +/F1.0 10.5 Tf +<696e746572666163653a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 566.966 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 566.966 Td +/F1.0 10.5 Tf +<4465627567206d6f64652043535273> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 545.186 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 545.186 Td +/F1.0 10.5 Tf +<4162696c69747920746f20656e746572206465627567206d6f6465207769746820636f727265637420757064617465206f6620> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +322.3665 545.186 Td +/F3.0 10.5 Tf +<647063> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +338.1165 545.186 Td +/F1.0 10.5 Tf +<20657463> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +74.954 523.406 Td +/F1.1 10.5 Tf +<21> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +84.24 523.406 Td +/F1.0 10.5 Tf +[<53> 20.0195 <796e6368726f6e6f75736c792076696120657863657074696f6e2c20>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +233.5498 523.406 Td +/F3.0 10.5 Tf +<65627265616b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +265.0498 523.406 Td +/F1.0 10.5 Tf +<206f722074726967676572206d61746368> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +74.954 501.626 Td +/F1.1 10.5 Tf +<21> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +84.24 501.626 Td +/F1.0 10.5 Tf +<4173796e6368726f6e6f75736c79207669612065787465726e616c2068616c742072657175657374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 479.846 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 479.846 Td +/F1.0 10.5 Tf +<4162696c69747920746f2065786974206465627567206d6f646520746f204d206d6f6465> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 458.066 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 458.066 Td +/F1.0 10.5 Tf +[<41> 20.0195 <6464726573732071756572792f6d6174636820696e7465726661636520666f722065787465726e616c207472696767657220756e6974>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 436.286 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 436.286 Td +/F1.0 10.5 Tf +<4162696c69747920746f20696e6a65637420776f72647320696e746f2074686520696e737472756374696f6e207072656665746368207175657565207768656e207468652070726f636573736f722069732068616c746564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 414.506 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.258 Tw + +BT +66.24 414.506 Td +/F1.0 10.5 Tf +<4162696c69747920746f20737570707265737320657863657074696f6e20656e747279207768656e20657865637574696e6720696e737472756374696f6e7320696e206465627567206d6f64652c20616e642070726f7669646520616e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 398.726 Td +/F1.0 10.5 Tf +<65787465726e616c207369676e616c20746f20696e6469636174652074686520657863657074696f6e20746f6f6b20706c616365> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 376.946 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 376.946 Td +/F1.0 10.5 Tf +<4120726561642f777269746520646174612062757320776869636820616c6c6f77732074686520444d20746f20696e7465726365707420636f726520435352206163636573736573> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.6926 Tw + +BT +48.24 349.166 Td +/F1.0 10.5 Tf +[<54686520444d20696d706c656d656e7473206162737472> 20.0195 <61637420475052206163636573732062> 20.0195 <7920696e6a656374696e6720612064756d6d79204353522061636365737320696e737472756374696f6e2c20616e64>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.9575 Tw + +BT +48.24 333.386 Td +/F1.0 10.5 Tf +<6d616e6970756c6174696e67207468652043535220706f727420746f20676574206461746120696e2f6f7574206f662074686520636f72652e204120> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.9575 Tw + +BT +350.0652 333.386 Td +/F3.0 10.5 Tf +<63737272> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.9575 Tw + +BT +371.0652 333.386 Td +/F1.0 10.5 Tf +<206973207573656420746f20777269746520746f206120636f72652072656769737465722c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4275 Tw + +BT +48.24 317.606 Td +/F1.0 10.5 Tf +<616e64206120> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.4275 Tw + +BT +79.5451 317.606 Td +/F3.0 10.5 Tf +<63737277> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4275 Tw + +BT +100.5451 317.606 Td +/F1.0 10.5 Tf +[<20746f20726561642066726f6d206120636f72652072656769737465722e2042> 20.0195 <7920696e6a656374696e67206120>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.4275 Tw + +BT +320.3117 317.606 Td +/F3.0 10.5 Tf +<6373727277> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4275 Tw + +BT +346.5617 317.606 Td +/F1.0 10.5 Tf +<2c2074686520444d2063616e20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4275 Tw + +BT +413.0568 317.606 Td +/F4.0 10.5 Tf +<73776170> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4275 Tw + +BT +438.6453 317.606 Td +/F1.0 10.5 Tf +<2061204750522077697468206f6e65206f6620697473> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 301.826 Td +/F1.0 10.5 Tf +[<6f776e20696e7465726e616c207265676973746572732c2074686f7567682074686973206973206e6f74206578706f736564207468726f75676820746865206162737472> 20.0195 <616374204750522061636365737320636f6d6d616e642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5728 Tw + +BT +48.24 274.046 Td +/F1.0 10.5 Tf +[<54686520646562756767657220696d706c656d656e7473206d656d6f727920616e642043535220616363657373207573696e67207468652050726f6772> 20.0195 <616d204275666665722c2077686963682075736573207468652073616d65>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.7235 Tw + +BT +48.24 258.266 Td +/F1.0 10.5 Tf +[<696e737472756374696f6e20696e6a656374696f6e20696e7465726661636520757365642062> 20.0195 <792074686520444d20746f20696d706c656d656e74206162737472> 20.0195 <61637420475052206163636573732e2054686520>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.7235 Tw + +BT +484.04 258.266 Td +/F3.0 10.5 Tf +<61627374726163746175746f> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.7235 Tw + +BT +547.04 258.266 Td +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.3156 Tw + +BT +48.24 242.486 Td +/F1.0 10.5 Tf +[<6665617475726520616c6c6f77732074686520444d20746f2065786563757465207468652070726f6772> 20.0195 <616d20627566666572206175746f6d61746963616c6c7920666f6c6c6f77696e67206576657279206162737472> 20.0195 <61637420475052>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 226.706 Td +/F1.0 10.5 Tf +<6163636573732c2077686963682063616e206265207573656420666f7220652e672e206175746f696e6372656d656e74696e6720726561642f7772697465206d656d6f7279206275727374732e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 186.866 Td +/F2.0 18 Tf +[<342e312e2055> 20.0195 <4152> 20.0195 <542044> 20.0195 <544d>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.8924 Tw + +BT +48.24 158.846 Td +/F1.0 10.5 Tf +[<48617a6172643320646566696e65732061206d696e696d616c2055> 20.0195 <4152> 20.0195 <54204465627567205472> 20.0195 <616e73706f7274204d6f64756c652c20776869636820616c6c6f777320746865204465627567204d6f64756c6520746f206265>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.5868 Tw + +BT +48.24 143.066 Td +/F1.0 10.5 Tf +[<6163636573736564207669612061207374616e6461726420386e31206173796e6368726f6e6f75732073657269616c20706f72742e205468652055> 20.0195 <4152> 20.0195 <542044> 20.0195 <544d20697320616c7761> 20.0195 <79732061636365737365642062> 20.0195 <7920746865>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.3109 Tw + +BT +48.24 127.286 Td +/F1.0 10.5 Tf +<686f7374207573696e6720612074776f2d776972652073657269616c20696e74657266616365202854584420525844292072756e6e696e672061742031204d626175642e2054686520696e74657266616365206265747765656e20746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 111.506 Td +/F1.0 10.5 Tf +[<44> 20.0195 <544d20616e6420444d20697320616e20414d42> 20.0195 <4120332041504220706f7274207769746820612033322d62697420646174612062757320616e6420382d6269742061646472657373206275732e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 83.726 Td +/F1.0 10.5 Tf +<54686973206973206e6f7420696e74656e64656420666f722070726f64756374696f6e2073797374656d733a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 55.946 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 55.946 Td +/F1.0 10.5 Tf +[<44656275672068617264776172652073686f756c64206e6f74206578706563742061206672657175656e6379207265666572656e636520666f7220612055> 20.0195 <4152> 20.0195 <5420746f2062652070726573656e74>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp2 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +49.24 14.263 Td +/F1.0 9 Tf +<38> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +73 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 72 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 17 0 R +/F1.0 8 0 R +/F3.0 18 0 R +/F1.1 19 0 R +/F4.0 67 0 R +>> +/XObject << /Stamp2 146 0 R +>> +>> +>> +endobj +74 0 obj +[73 0 R /XYZ 0 841.89 null] +endobj +75 0 obj +[73 0 R /XYZ 0 210.89 null] +endobj +76 0 obj +<< /Length 10003 +>> +stream +q + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +56.8805 793.926 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 793.926 Td +/F1.0 10.5 Tf +[<5468652055> 20.0195 <4152> 20.0195 <542044> 20.0195 <544d20646f6573206e6f7420696d706c656d656e7420616e> 20.0195 <7920666c6f7720636f6e74726f6c206f72206572726f7220646574656374696f6e2f636f7272656374696f6e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.3036 Tw + +BT +48.24 766.146 Td +/F1.0 10.5 Tf +[<486f77657665722c20697420737566666963657320666f72206272696e67757020616e6420706c61> 20.0195 <79696e672061726f756e64206f6e204650474120626f617264732e2054686520686f73742073656e6473206120362d62> 20.0195 <797465>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 750.366 Td +/F1.0 10.5 Tf +[<7061636b> 20.0195 <65743a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 722.586 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 722.586 Td +/F1.0 10.5 Tf +<436f6d6d616e643a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +74.954 700.806 Td +/F1.1 10.5 Tf +<21> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.1979 Tw + +BT +84.24 700.806 Td +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +2.1979 Tw + +BT +84.24 700.806 Td +/F3.0 10.5 Tf +<30783030> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.1979 Tw + +BT +105.24 700.806 Td +/F1.0 10.5 Tf +[<206e6f702c2069676e6f7265642c206e65787420636f6d6d616e642063616e20666f6c6c6f7720696d6d6564696174656c7920286e6f2061646472657373206f7220646174612062> 20.0195 <797465732c206e6f>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +84.24 685.026 Td +/F1.0 10.5 Tf +<726573706f6e736529> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +74.954 663.246 Td +/F1.1 10.5 Tf +<21> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +84.24 663.246 Td +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +84.24 663.246 Td +/F3.0 10.5 Tf +<30783031> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +105.24 663.246 Td +/F1.0 10.5 Tf +<2072656164> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +74.954 641.466 Td +/F1.1 10.5 Tf +<21> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +84.24 641.466 Td +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +84.24 641.466 Td +/F3.0 10.5 Tf +<30783032> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +105.24 641.466 Td +/F1.0 10.5 Tf +<207772697465> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +74.954 619.686 Td +/F1.1 10.5 Tf +<21> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +84.24 619.686 Td +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +84.24 619.686 Td +/F3.0 10.5 Tf +<30786135> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +105.24 619.686 Td +/F1.0 10.5 Tf +[<2072657475726e20746f2069646c6520286e6f2061646472657373206f7220646174612062> 20.0195 <797465732c206e6f20726573706f6e736529>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 597.906 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 597.906 Td +/F1.0 10.5 Tf +[<4f6e6520616464726573732062> 20.0195 <797465>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 576.126 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 576.126 Td +/F1.0 10.5 Tf +[<3420646174612062> 20.0195 <797465732028777269746529206f722034207a65726f2d70616464696e672062> 20.0195 <7974657320287265616429>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4396 Tw + +BT +48.24 548.346 Td +/F1.0 10.5 Tf +[<54686520362d62> 20.0195 <797465206672> 20.0195 <616d696e672063616e206265207265636f766572656420617420616e> 20.0195 <792074696d652062> 20.0195 <792077726974696e672036207a65726f2d62> 20.0195 <797465732c2077686963682077696c6c20626520696e746572707265746564>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 532.566 Td +/F1.0 10.5 Tf +[<6173206265747765656e203120616e642036206e6f707320646570656e64696e67206f6e2063757272656e742044> 20.0195 <544d2073746174652e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.0793 Tw + +BT +48.24 504.786 Td +/F1.0 10.5 Tf +[<5468652044> 20.0195 <544d20616c7761> 20.0195 <797320726573706f6e6473207769746820666f757220646174612062> 20.0195 <797465732e2046> 40.0391 <6f722061207265616420636f6d6d616e6420746869732077696c6c20626520746865206461746120726561642066726f6d>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 489.006 Td +/F1.0 10.5 Tf +[<74686520676976656e20616464726573732e2046> 40.0391 <6f72206120777269746520636f6d6d616e6420746869732077696c6c206563686f206261636b2074686520777269746520646174612e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.3354 Tw + +BT +48.24 461.226 Td +/F1.0 10.5 Tf +[<5468697320696e7465726661636520617373756d6573207468652061637475616c2064617461207472> 20.0195 <616e736665722074616b> 20.0195 <65732076657279206c6974746c652074696d6520636f6d70617265642077697468207468652055> 20.0195 <4152> 20.0195 <54>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.7607 Tw + +BT +48.24 445.446 Td +/F1.0 10.5 Tf +[<61636365737320287479706963616c6c79206c657373207468616e206f6e65206261756420706572696f64292e20426563617573652074686520686f73742d746f2d44> 20.0195 <544d2062616e64776964746820697320616c7761> 20.0195 <79732067726561746572>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.6076 Tw + +BT +48.24 429.666 Td +/F1.0 10.5 Tf +[<7468616e207468652044> 20.0195 <544d2d746f2d686f73742062616e6477696474682c2074686520686f73742063616e2071756575652075702062617463686573206f6620636f6d6d616e647320696e20697473207472> 20.0195 <616e736d6974>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4862 Tw + +BT +48.24 413.886 Td +/F1.0 10.5 Tf +[<6275666665722c20616e6420746869732073686f756c64206e65766572206f76657272756e207468652044> 20.0195 <544dd57320726573706f6e7365206368616e6e656c2e20536f2c207468652031204d6261756420386e312055> 20.0195 <4152> 20.0195 <54206c696e6b>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4572 Tw + +BT +48.24 398.106 Td +/F1.0 10.5 Tf +<70726f7669646573203637206b422f73206f662068616c662d6475706c657820646174612062616e647769647468206265747765656e20686f737420616e6420444d2c20776869636820697320656e6f75676820746f2067657420796f7572> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 382.326 Td +/F1.0 10.5 Tf +<73797374656d206f6666207468652067726f756e642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4576 Tw + +BT +48.24 354.546 Td +/F1.0 10.5 Tf +[<496e697469616c6c7920616674657220706f7765722d6f6e207468652044> 20.0195 <544d20697320696e207468652069646c652073746174652c20616e642077696c6c2069676e6f726520616e> 20.0195 <7920636f6d6d616e64732e2054686520686f73742073656e6473>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.5875 Tw + +BT +48.24 338.766 Td +/F1.0 10.5 Tf +<746865206d616769632073657175656e636520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +2.5875 Tw + +BT +156.7289 338.766 Td +/F3.0 10.5 Tf +<2753272c202755272c202750272c20273f27> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.5875 Tw + +BT +258.9913 338.766 Td +/F1.0 10.5 Tf +<2028> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +2.5875 Tw + +BT +267.9312 338.766 Td +/F3.0 10.5 Tf +<307835332c20307835352c20307835302c2030783366> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.5875 Tw + +BT +391.1936 338.766 Td +/F1.0 10.5 Tf +[<2920746f2077616b> 20.0195 <65207468652044> 20.0195 <544d2c20616e64207468656e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.0225 Tw + +BT +48.24 322.986 Td +/F1.0 10.5 Tf +<617474656d70747320746f20616363657373206120726561642d6f6e6c7920444d207265676973746572207375636820617320> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.0225 Tw + +BT +310.6287 322.986 Td +/F3.0 10.5 Tf +<646d737461747573> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.0225 Tw + +BT +352.6287 322.986 Td +/F1.0 10.5 Tf +[<20746f206d616b> 20.0195 <65207375726520746865206c696e6b2069732075702e205468652044> 20.0195 <544d>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 307.206 Td +/F1.0 10.5 Tf +[<63616e2062652072657475726e656420746f207468652069646c6520617420616e> 20.0195 <792074696d65207573696e672074686520>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +290.8108 307.206 Td +/F3.0 10.5 Tf +<30786135> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +311.8108 307.206 Td +/F1.0 10.5 Tf +<2072657475726e2d746f2d69646c6520636f6d6d616e642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.009 14.263 Td +/F1.0 9 Tf +<39> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +77 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 76 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F1.0 8 0 R +/F1.1 19 0 R +/F3.0 18 0 R +>> +/XObject << /Stamp1 145 0 R +>> +>> +>> +endobj +78 0 obj << /Border [0 0 0] /Dest (_introduction) /Subtype /Link @@ -13487,7 +15286,7 @@ endobj /Type /Annot >> endobj -73 0 obj +79 0 obj << /Border [0 0 0] /Dest (_introduction) /Subtype /Link @@ -13495,7 +15294,7 @@ endobj /Type /Annot >> endobj -74 0 obj +80 0 obj << /Border [0 0 0] /Dest (_instruction_cycle_counts) /Subtype /Link @@ -13503,7 +15302,7 @@ endobj /Type /Annot >> endobj -75 0 obj +81 0 obj << /Border [0 0 0] /Dest (_instruction_cycle_counts) /Subtype /Link @@ -13511,7 +15310,7 @@ endobj /Type /Annot >> endobj -76 0 obj +82 0 obj << /Border [0 0 0] /Dest (_rv32i) /Subtype /Link @@ -13519,7 +15318,7 @@ endobj /Type /Annot >> endobj -77 0 obj +83 0 obj << /Border [0 0 0] /Dest (_rv32i) /Subtype /Link @@ -13527,7 +15326,7 @@ endobj /Type /Annot >> endobj -78 0 obj +84 0 obj << /Border [0 0 0] /Dest (_m_extension) /Subtype /Link @@ -13535,7 +15334,7 @@ endobj /Type /Annot >> endobj -79 0 obj +85 0 obj << /Border [0 0 0] /Dest (_m_extension) /Subtype /Link @@ -13543,7 +15342,7 @@ endobj /Type /Annot >> endobj -80 0 obj +86 0 obj << /Border [0 0 0] /Dest (_c_extension) /Subtype /Link @@ -13551,7 +15350,7 @@ endobj /Type /Annot >> endobj -81 0 obj +87 0 obj << /Border [0 0 0] /Dest (_c_extension) /Subtype /Link @@ -13559,7 +15358,7 @@ endobj /Type /Annot >> endobj -82 0 obj +88 0 obj << /Border [0 0 0] /Dest (_privileged_instructions_including_zicsr) /Subtype /Link @@ -13567,7 +15366,7 @@ endobj /Type /Annot >> endobj -83 0 obj +89 0 obj << /Border [0 0 0] /Dest (_privileged_instructions_including_zicsr) /Subtype /Link @@ -13575,7 +15374,7 @@ endobj /Type /Annot >> endobj -84 0 obj +90 0 obj << /Border [0 0 0] /Dest (_csrs) /Subtype /Link @@ -13583,7 +15382,7 @@ endobj /Type /Annot >> endobj -85 0 obj +91 0 obj << /Border [0 0 0] /Dest (_csrs) /Subtype /Link @@ -13591,7 +15390,7 @@ endobj /Type /Annot >> endobj -86 0 obj +92 0 obj << /Border [0 0 0] /Dest (_standard_csrs) /Subtype /Link @@ -13599,7 +15398,7 @@ endobj /Type /Annot >> endobj -87 0 obj +93 0 obj << /Border [0 0 0] /Dest (_standard_csrs) /Subtype /Link @@ -13607,7 +15406,7 @@ endobj /Type /Annot >> endobj -88 0 obj +94 0 obj << /Border [0 0 0] /Dest (_mvendorid) /Subtype /Link @@ -13615,7 +15414,7 @@ endobj /Type /Annot >> endobj -89 0 obj +95 0 obj << /Border [0 0 0] /Dest (_mvendorid) /Subtype /Link @@ -13623,7 +15422,7 @@ endobj /Type /Annot >> endobj -90 0 obj +96 0 obj << /Border [0 0 0] /Dest (_marchid) /Subtype /Link @@ -13631,7 +15430,7 @@ endobj /Type /Annot >> endobj -91 0 obj +97 0 obj << /Border [0 0 0] /Dest (_marchid) /Subtype /Link @@ -13639,7 +15438,7 @@ endobj /Type /Annot >> endobj -92 0 obj +98 0 obj << /Border [0 0 0] /Dest (_mimpid) /Subtype /Link @@ -13647,7 +15446,7 @@ endobj /Type /Annot >> endobj -93 0 obj +99 0 obj << /Border [0 0 0] /Dest (_mimpid) /Subtype /Link @@ -13655,7 +15454,7 @@ endobj /Type /Annot >> endobj -94 0 obj +100 0 obj << /Border [0 0 0] /Dest (_mstatus) /Subtype /Link @@ -13663,7 +15462,7 @@ endobj /Type /Annot >> endobj -95 0 obj +101 0 obj << /Border [0 0 0] /Dest (_mstatus) /Subtype /Link @@ -13671,7 +15470,7 @@ endobj /Type /Annot >> endobj -96 0 obj +102 0 obj << /Border [0 0 0] /Dest (_misa) /Subtype /Link @@ -13679,7 +15478,7 @@ endobj /Type /Annot >> endobj -97 0 obj +103 0 obj << /Border [0 0 0] /Dest (_misa) /Subtype /Link @@ -13687,7 +15486,7 @@ endobj /Type /Annot >> endobj -98 0 obj +104 0 obj << /Border [0 0 0] /Dest (_custom_csrs) /Subtype /Link @@ -13695,7 +15494,7 @@ endobj /Type /Annot >> endobj -99 0 obj +105 0 obj << /Border [0 0 0] /Dest (_custom_csrs) /Subtype /Link @@ -13703,7 +15502,7 @@ endobj /Type /Annot >> endobj -100 0 obj +106 0 obj << /Border [0 0 0] /Dest (_midcr) /Subtype /Link @@ -13711,7 +15510,7 @@ endobj /Type /Annot >> endobj -101 0 obj +107 0 obj << /Border [0 0 0] /Dest (_midcr) /Subtype /Link @@ -13719,7 +15518,7 @@ endobj /Type /Annot >> endobj -102 0 obj +108 0 obj << /Border [0 0 0] /Dest (_meie0) /Subtype /Link @@ -13727,7 +15526,7 @@ endobj /Type /Annot >> endobj -103 0 obj +109 0 obj << /Border [0 0 0] /Dest (_meie0) /Subtype /Link @@ -13735,7 +15534,7 @@ endobj /Type /Annot >> endobj -104 0 obj +110 0 obj << /Border [0 0 0] /Dest (_meip0) /Subtype /Link @@ -13743,7 +15542,7 @@ endobj /Type /Annot >> endobj -105 0 obj +111 0 obj << /Border [0 0 0] /Dest (_meip0) /Subtype /Link @@ -13751,7 +15550,7 @@ endobj /Type /Annot >> endobj -106 0 obj +112 0 obj << /Border [0 0 0] /Dest (_mlei) /Subtype /Link @@ -13759,7 +15558,7 @@ endobj /Type /Annot >> endobj -107 0 obj +113 0 obj << /Border [0 0 0] /Dest (_mlei) /Subtype /Link @@ -13767,7 +15566,7 @@ endobj /Type /Annot >> endobj -108 0 obj +114 0 obj << /Border [0 0 0] /Dest (_maybe_adds) /Subtype /Link @@ -13775,7 +15574,7 @@ endobj /Type /Annot >> endobj -109 0 obj +115 0 obj << /Border [0 0 0] /Dest (_maybe_adds) /Subtype /Link @@ -13783,201 +15582,251 @@ endobj /Type /Annot >> endobj -110 0 obj -<< /Type /Outlines -/Count 21 -/First 111 0 R -/Last 119 0 R ->> -endobj -111 0 obj -<< /Title -/Parent 110 0 R -/Count 0 -/Next 112 0 R -/Dest [7 0 R /XYZ 0 841.89 null] ->> -endobj -112 0 obj -<< /Title -/Parent 110 0 R -/Count 0 -/Next 113 0 R -/Prev 111 0 R -/Dest [10 0 R /XYZ 0 841.89 null] ->> -endobj -113 0 obj -<< /Title -/Parent 110 0 R -/Count 0 -/Next 114 0 R -/Prev 112 0 R -/Dest [12 0 R /XYZ 0 841.89 null] ->> -endobj -114 0 obj -<< /Title -/Parent 110 0 R -/Count 4 -/First 115 0 R -/Last 118 0 R -/Next 119 0 R -/Prev 113 0 R -/Dest [21 0 R /XYZ 0 841.89 null] ->> -endobj -115 0 obj -<< /Title -/Parent 114 0 R -/Count 0 -/Next 116 0 R -/Dest [21 0 R /XYZ 0 721.61 null] ->> -endobj 116 0 obj -<< /Title -/Parent 114 0 R -/Count 0 -/Next 117 0 R -/Prev 115 0 R -/Dest [29 0 R /XYZ 0 467.19 null] +<< /Border [0 0 0] +/Dest (_debug) +/Subtype /Link +/Rect [48.24 397.67 91.4475 411.95] +/Type /Annot >> endobj 117 0 obj -<< /Title -/Parent 114 0 R -/Count 0 -/Next 118 0 R -/Prev 116 0 R -/Dest [43 0 R /XYZ 0 841.89 null] +<< /Border [0 0 0] +/Dest (_debug) +/Subtype /Link +/Rect [541.1705 397.67 547.04 411.95] +/Type /Annot >> endobj 118 0 obj -<< /Title -/Parent 114 0 R -/Count 0 -/Prev 117 0 R -/Dest [43 0 R /XYZ 0 651.93 null] +<< /Border [0 0 0] +/Dest (_uart_dtm) +/Subtype /Link +/Rect [60.24 379.19 134.1594 393.47] +/Type /Annot >> endobj 119 0 obj -<< /Title -/Parent 110 0 R -/Count 12 -/First 120 0 R -/Last 126 0 R -/Prev 114 0 R -/Dest [51 0 R /XYZ 0 841.89 null] +<< /Border [0 0 0] +/Dest (_uart_dtm) +/Subtype /Link +/Rect [541.1705 379.19 547.04 393.47] +/Type /Annot >> endobj 120 0 obj -<< /Title -/Parent 119 0 R -/Count 5 +<< /Type /Outlines +/Count 23 /First 121 0 R -/Last 125 0 R -/Next 126 0 R -/Dest [51 0 R /XYZ 0 705.83 null] +/Last 142 0 R >> endobj 121 0 obj -<< /Title +<< /Title /Parent 120 0 R /Count 0 /Next 122 0 R -/Dest [51 0 R /XYZ 0 665.75 null] +/Dest [7 0 R /XYZ 0 841.89 null] >> endobj 122 0 obj -<< /Title +<< /Title /Parent 120 0 R /Count 0 /Next 123 0 R /Prev 121 0 R -/Dest [51 0 R /XYZ 0 561.13 null] +/Dest [10 0 R /XYZ 0 841.89 null] >> endobj 123 0 obj -<< /Title +<< /Title /Parent 120 0 R /Count 0 /Next 124 0 R /Prev 122 0 R -/Dest [51 0 R /XYZ 0 456.51 null] +/Dest [12 0 R /XYZ 0 841.89 null] >> endobj 124 0 obj -<< /Title +<< /Title /Parent 120 0 R -/Count 0 -/Next 125 0 R +/Count 4 +/First 125 0 R +/Last 128 0 R +/Next 129 0 R /Prev 123 0 R -/Dest [51 0 R /XYZ 0 351.89 null] +/Dest [21 0 R /XYZ 0 841.89 null] >> endobj 125 0 obj -<< /Title -/Parent 120 0 R +<< /Title +/Parent 124 0 R /Count 0 -/Prev 124 0 R -/Dest [51 0 R /XYZ 0 290.83 null] +/Next 126 0 R +/Dest [21 0 R /XYZ 0 721.61 null] >> endobj 126 0 obj -<< /Title -/Parent 119 0 R -/Count 5 -/First 127 0 R -/Last 131 0 R -/Prev 120 0 R -/Dest [51 0 R /XYZ 0 229.77 null] +<< /Title +/Parent 124 0 R +/Count 0 +/Next 127 0 R +/Prev 125 0 R +/Dest [29 0 R /XYZ 0 467.19 null] >> endobj 127 0 obj -<< /Title -/Parent 126 0 R +<< /Title +/Parent 124 0 R /Count 0 /Next 128 0 R -/Dest [51 0 R /XYZ 0 146.13 null] +/Prev 126 0 R +/Dest [43 0 R /XYZ 0 841.89 null] >> endobj 128 0 obj -<< /Title -/Parent 126 0 R +<< /Title +/Parent 124 0 R /Count 0 -/Next 129 0 R /Prev 127 0 R -/Dest [62 0 R /XYZ 0 665.43 null] +/Dest [43 0 R /XYZ 0 651.93 null] >> endobj 129 0 obj -<< /Title -/Parent 126 0 R -/Count 0 -/Next 130 0 R -/Prev 128 0 R -/Dest [62 0 R /XYZ 0 321.23 null] +<< /Title +/Parent 120 0 R +/Count 12 +/First 130 0 R +/Last 136 0 R +/Next 142 0 R +/Prev 124 0 R +/Dest [51 0 R /XYZ 0 841.89 null] >> endobj 130 0 obj -<< /Title -/Parent 126 0 R -/Count 0 -/Next 131 0 R -/Prev 129 0 R -/Dest [69 0 R /XYZ 0 566.31 null] +<< /Title +/Parent 129 0 R +/Count 5 +/First 131 0 R +/Last 135 0 R +/Next 136 0 R +/Dest [51 0 R /XYZ 0 705.83 null] >> endobj 131 0 obj -<< /Title -/Parent 126 0 R +<< /Title +/Parent 130 0 R /Count 0 -/Prev 130 0 R -/Dest [69 0 R /XYZ 0 337.01 null] +/Next 132 0 R +/Dest [51 0 R /XYZ 0 665.75 null] >> endobj 132 0 obj +<< /Title +/Parent 130 0 R +/Count 0 +/Next 133 0 R +/Prev 131 0 R +/Dest [51 0 R /XYZ 0 561.13 null] +>> +endobj +133 0 obj +<< /Title +/Parent 130 0 R +/Count 0 +/Next 134 0 R +/Prev 132 0 R +/Dest [51 0 R /XYZ 0 456.51 null] +>> +endobj +134 0 obj +<< /Title +/Parent 130 0 R +/Count 0 +/Next 135 0 R +/Prev 133 0 R +/Dest [51 0 R /XYZ 0 351.89 null] +>> +endobj +135 0 obj +<< /Title +/Parent 130 0 R +/Count 0 +/Prev 134 0 R +/Dest [51 0 R /XYZ 0 290.83 null] +>> +endobj +136 0 obj +<< /Title +/Parent 129 0 R +/Count 5 +/First 137 0 R +/Last 141 0 R +/Prev 130 0 R +/Dest [51 0 R /XYZ 0 229.77 null] +>> +endobj +137 0 obj +<< /Title +/Parent 136 0 R +/Count 0 +/Next 138 0 R +/Dest [51 0 R /XYZ 0 146.13 null] +>> +endobj +138 0 obj +<< /Title +/Parent 136 0 R +/Count 0 +/Next 139 0 R +/Prev 137 0 R +/Dest [62 0 R /XYZ 0 665.43 null] +>> +endobj +139 0 obj +<< /Title +/Parent 136 0 R +/Count 0 +/Next 140 0 R +/Prev 138 0 R +/Dest [62 0 R /XYZ 0 321.23 null] +>> +endobj +140 0 obj +<< /Title +/Parent 136 0 R +/Count 0 +/Next 141 0 R +/Prev 139 0 R +/Dest [69 0 R /XYZ 0 566.31 null] +>> +endobj +141 0 obj +<< /Title +/Parent 136 0 R +/Count 0 +/Prev 140 0 R +/Dest [69 0 R /XYZ 0 337.01 null] +>> +endobj +142 0 obj +<< /Title +/Parent 120 0 R +/Count 1 +/First 143 0 R +/Last 143 0 R +/Prev 129 0 R +/Dest [73 0 R /XYZ 0 841.89 null] +>> +endobj +143 0 obj +<< /Title +/Parent 142 0 R +/Count 0 +/Dest [73 0 R /XYZ 0 210.89 null] +>> +endobj +144 0 obj << /Nums [0 << /P (i) >> 1 << /P (ii) >> 2 << /P (1) @@ -13987,288 +15836,122 @@ endobj >> 6 << /P (5) >> 7 << /P (6) >> 8 << /P (7) +>> 9 << /P (8) +>> 10 << /P (9) >>] >> endobj -133 0 obj -<< /Type /XObject -/Subtype /Form -/BBox [0 0 595.28 841.89] -/Length 162 ->> -stream -q -/DeviceRGB cs -0.0 0.0 0.0 scn -/DeviceRGB CS -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -q -0.25 w -/DeviceRGB CS -0.8667 0.8667 0.8667 SCN -48.24 30.0 m -547.04 30.0 l -S -Q -Q - -endstream -endobj -134 0 obj -<< /Type /XObject -/Subtype /Form -/BBox [0 0 595.28 841.89] -/Length 162 ->> -stream -q -/DeviceRGB cs -0.0 0.0 0.0 scn -/DeviceRGB CS -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -q -0.25 w -/DeviceRGB CS -0.8667 0.8667 0.8667 SCN -48.24 30.0 m -547.04 30.0 l -S -Q -Q - -endstream -endobj -135 0 obj -<< /Length1 16236 -/Length 10218 -/Filter [/FlateDecode] ->> -stream -x{ xSǵ[l)[,$ٖeے?eY6Xe !J8&I%"M M{r i{qrsOҞniim|ddC޳~̚kkZkf B(١I%i(@GN,\kgY'%@(|slrnWeٟІs:>CH%ԧM:v0e$Co;ݼePvͽ~RP~c1l}L;BnNBsP_83yX/"v̌N*1Ս~!SBL11"C( owgX88H%VbJHLBW -itqD(+;G -EJJLrKEeU=j>``wJbQBJVIU#lZۍܟymA .2ccAF1ƲwO?|_|V]x>%V61*Xfz -Z˞[^2yX@jY@ - -MkKMO۸/IU2,cfXR0;Wʨ2/XZ\Stnb2F{(~Wn>_EƻЂ41AcKvuv1|[kNNlqciNL^%bM†&dF9i]=nO+T6 4(I]S26c+xvb=U "tB% j*ÚIȄ2s^XY" ҙc΄&On+)KSJ;OY36T/d4V2aӔkhXMJtWwGie- -XUv쩟-Z^x_<` -R# ooy$<[z,ꇱalmDԫc)\ӌ&Z[6qf_o*o'F 3G{{j6zijrcVcVùE=zʔP.iʉӍݵjcߤƪ -eZL[Ə~Y?\Zٚ]p~2֔ɩu^cO15t{c'՛XUt >GL"cf`hb:xҦM=Ƿmvtu ={u#2K#ZGNEYO/|M|.x^v&eO/$˵e*п=Pa,PyC,Yz}4+_V`]w U!9iԓƭ"l -WccV5lgZCj0"+U9 KLQȗK:FiPL\r&6[x9{N8^aPk|uӍ\!j-`?THJ}=X!sR{U6m1w@SvSY||&I0:Sj![aTEîwULm^>׌%a%s,HlxvhI᫶669Io9C~L  -xQ<"=qægFtcW%Igh>]lSղ&}׳Nճ)婡JM{e6:eLQ]n"⿓Uk"V ! -RQ\>̗/.w?\< gK:$ÕwD__Z0cbU:>WKElZRI''>l +t SO9e N.Ҳ09e'헯@eSIjTPm˾&l^ *O5k)$ - ߍn>g[-J!3 s@Nt?ZhWT8oG -`ˈ'辬#S9Z^/ -yu7&aI]~U_%_Mo*9ٶ5+w2Vd> -,b_x-X $q'{ڣiR +:J>߹+-XnjoRx"6I=ҹu!bupGפ[!|zn3'2$tmܓ1=A$=fxW{w'6I -B ;6}STO7.>}ƋU( -aƳ-1?͏>JcSۛS䦙\? 3 6nGNt{Ra9bK{^eiCfDWOG<|Y&K|W|XFؒѸ⼘cܒ:c>Nm=4; EӾ UjW .>ZT{ -AܦT&phK<((!/i(sZ)mf+Wo1%'[hURneYS#GMY}1O8qnz۹ f|vзwqpOз`G^ZM͞tXX6Ei -JT}- s.N,h5֕*9O2bzPzǻ:JoH )YFzėz),XƲ RlVpMW wܠ\7QTIo@no"5]R2ܶW^$!HTqQDR+&0'4K=}qw͟ *]1g7DG$b?Jwx VTg3aH')2>(Dy0b4v5ńq/ }/akT"QkR+ 49iXN͗!Hߣy|rvJTZ5XXFd:#aԍ&nnAKE5?ts0`&7@61^rdqdRlRL6LD&I׷]]#? ,95܁'zS^ddF~iR\:P625Unl18<}gP~MNuxSiRa aFYHOTHEdž --d+ -UCϣ1 QU4Es'AR̫+7MBDdV3;nQ!U.s@}uko^6/?}/7!|llR>9ٔHyC89W4yHWpʡht&fN?)|VbB2&FG$9 ؖ5"KZ",Lp$o=2<G2]Aj}LUdTIf2;!!M\di +Fv77ӷW?n̛7a6(Wet>]4k)=.km'@j #UvRH]w9afV㊙ބ8@uKO5uq*2)f'Дo(^E^`=k_}ی.yXH.dSeƮލ'k6v bզSfQ՝А Q@su) \5p:N3g__ԏ7C֞}=x:[JB{]#7>jAHzQPsϗ/_nNTSr]QTm۸qkes~>1|YK/JJ\/}OL3qJ~ĘW%'jZ#{cTH#wO?Hu1i)E)tfr[)}IrR@>cG cwT"2VL r˴ hMBK_jʮs hwƸ"5Yi:4W;d1:uK3#u'MCvnsKW$N,zե+K,޵5Y -%MɑD$OQF į'ү!zYlٛmmJئƏEkҋ!5+ Yy -_`5YmDf߻&OIhUM~-I#rs=s*ߖ̡⁐(X$O -^1p|7&R1aECKlix9)Cl0 = F̬7~H1z ])]Yz1~+ZWj˷B EԈ= 1|f<mNHĂ.)$1d:\rA緞mey6[uh20>UR`t -C:nb-X_`0ׇ~_uqd%4KmMc'&=#TM|"B)ġ`CbkNl͊r'}|fRߒ I~;9s gݎX\J+cBl!Ko22 -TMJ_O֙Tzϫ샱YL Knǐߧ3KK35 -EͬպVN~GúQ> ~G#4HH?FB ŻϘfydOp -n{B/zT7wA9A]&镜&<|!_CBvXX~Cao3?qdeÑe:$^*?ȧ9F+hJ&f2}CvPs' iDE :4/zKElG-gp|R:49j}\܇޻A(S&RF hM@Wl4g'p֣稈kAz ǑY-}w3H"5b(;$\<1F_J._@(i7QO)%D"ZG`-7i}$:%2]έ ?1 1ccXkmCY 9ySL#$Bcef>G=& BR s,L@( (z'iPʆ"J.D|dʈ -Q~M RUAvRUo| 56Ԏ:P'.ȎzMmF0FOVRR*z*)H%/>:ɟ^^Y[>: ^9}tɰG0lE(Wb{|A(j|GX.AYW>z01>z0`R}c=p>z(23^EP꣇&Μ~G ==\5=0;>:6uӣNajHWLLw8]au͠4(Cs`b>CA7&J h - !瘣)b G H5A\; gU2)9 -b+v ;:Z} <{jo(Como'HEgv2tFt@%g7q<`4F'.qɴ%Oc:u3TI_#.~>Oұt8ݩU?y*üO&3;K95>շ6s. :*G褙Ftnj#Y*!_Nf(K D|y` Ǣ6, 'c 䊙WVP%7dIn[r}+8j{ږږq2~|_eX<($x["q$"P6M(Ó+Z0my q,8hA=8YV|8 - >Ap}>}W}p#ۼ-89Dg(nXTuK+\8c,| >k]e`aۉc~icy:8S8)SLvr䎓,z2ə'?ɅL{q|qrC?{?{]?v1)3i6 't%Ƭ(xy_ZyHHxҩw2Ö~8c ]"#}-t&,6[^[]6gV Qfa']q.)2Dv1pC]OG^d#ߋN}et qqX/'.Z;.t46#nu'Z{Gܨw"ƏXDkZ]Xt\Z?(QŰř@K+okqG `kc7݌s bJoU8S % {[Y -{y_EjkV_@ME7nj#ADB; JX=-R5 nQ:oB^Y/?ʡti4A6OP3c,w}WV`qtTs1Wo8@ET}n0 $bՌw+ܲ*7TEb[&&<3Zl헑ad0LYa#]r[zE`w43?TT:7Se7u -Mb -ŽS׬c#^6`nZ9 ƒPYWwZg(RYWv ;qVڑ"bzU~nbR>UrU{hs}z4P=#nKC5ǧWRXRA@tfuj~]u_Mc@7"n)ʩ #:Lf,^XE^F[+MFMZWyQ_G:{헣_a0S5Ps1 y,*!O -S$Z$~FC/-OcyiJ#h)a 0__|glq8Dvc 拘Cg;T$rB/ń6gbT->#{-t|^MIܤ{WsM!? !>6уy]G/яi:$$<!Sڎ}E_@Vi@[@Q\=Yc Q[SE zV F@'%OAG+R[1N䘁a:?@Ϡh| -kKB++ytG@|OXp޻fr> -endobj -137 0 obj -<< /Length 1286 -/Filter [/FlateDecode] ->> -stream -xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; -JÂ31x; -JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O -endstream -endobj -138 0 obj -[259 500 500 500 500 500 500 500 346 346 500 500 250 310 250 288 559 559 559 559 559 559 559 559 559 559 286 500 500 500 500 500 500 705 653 613 727 623 500 500 792 367 356 500 623 937 763 742 604 742 655 543 612 716 674 1046 500 500 591 359 500 359 500 500 577 562 613 492 613 535 369 538 634 319 299 584 310 944 645 577 613 613 471 451 352 634 579 861 578 564 511 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 361 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 259 500 500 500 500 500 500 500 500 500 500 250 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500] -endobj -139 0 obj -<< /Length1 13112 -/Length 8378 -/Filter [/FlateDecode] ->> -stream -x{ t׵93$[۲ƒld}lߒm ɖ2 !@@ |JJh%˧Jzo4/-]Mn&moh !7]o=g}Ϟ JFv$@'C[-B8utbHWwPa{&"w^L(X/o "N}`VmO!Mg"Ԩ` ;'+1J N  /~ƝSБ -p!rhdj4T~Po#C"dQk0bC( B . EI"O$HepCKMC -TQ:LMVvbr F_a.@!kDpHPN+|1b٫+Ǩٹ@|! %BDIqj .U ϝţ~wz2}wbu?̓?u,:2OJJrTHfs8Z,/r9ﱏ9O/ywE/McJ+)~R\] wq)JCpJE -ĮLK j4j=Sc P/`86é0VBP^޽-[^;e|4y؟ޜx{+ذ؟x'?>!G GB҃\!Xֳ$]0iZ>ǡ?&gB9E[˴ʼ2Xm(1lVL!5.b]蒺\CPrmG~,l||m|՟*ߚx Ր2]˧~05sjKžַ_ob6;S*Ҳ*`cVBE^KjqYaRXđ/"ȲCeE;6ޱnMvz);ʧ0:=]_sMUڡ:]gr1o=\?ustUs}c^AȀWX}OF {G넽PCwur;KSH֑5}|Q9Sm ƐP,)(&>ZI($Vطo'zut_zw[ZU'* xB>34ȔKcLVс1ລ^Rd/9yer9ZR$ tFL横nymo9Kz-;=&LL7bيDsz -'w-ooj(kmsj o<2m;캁p$Q9ďlCVT3!RA!$עR<+g{l_~;?ѭ6e&U7ыsq~J^1ظi}y]IyũT׺;[PBVqn#+qkr'Z[Ms\ Ώ>!mq?1rlnq0V"GZf4ęľ=|*RըJzC2e Lb2Ċ7' 5EZtt>ё#nf} -'ݭ*Tt,Zpf_~4?Ы6fdFU/s8'ñ.Ό$|6q[&03at\kX쾇Ѝ[A8:Si 4A^1[&2{Mq+}a,szEgg%L[ch$O|ʳRrfjy\5>zM޸:bu+ 5Ӣy|+C]]HbbmJSYnRYw0P 8b)O p -Y:C^ijdA6؞o /{yI;1'<ۨopBݫ$5v}9xO_'H%ᄸV12gv_7ClHSnW,3?XjCVSNQݷ:v.0C|0UNĪ tnm3x,vT iYb$cSd\"V9Ox~R=@+?-~=6IO|al:rJ۟K3:~:s6Sme:{{7^kZĦ7k]]tVcG֛[~[Q9RTdU:l^Wn >2Q&ky,h5jn^a^;euP ߑV2J1\fL8Ws^~ZcJR뒽R*Tc}F5* N| 6C4(_ "SvKy1*58V]Cq ;"86RboVILF<=(R$ /d* P "Ű V&*lVQ.e)O}"‰L>wf wRs ncǮv\!Q,d1ȩAzT4bkGw2 +${JA.vOⅇ(L[V'-FkbU4:4E:yn_̣k&i39ˮ7<=5EYq<DŽGWai)k/R:w\QK ȯK"&Goe@ދBԚm0F,BPk(rǨTVWcR -4:1ÑUnW(kϴIrlSP#=E-U}. Kˋ9>!?Z칯m0M l0Hr--`{KXUnST~v*,:=d6=af,S{m>jʆjoKvaT1l™4uj_U{KK7<6\qGK20IbJ/ßYQPvT;-5me9Љu}x3UESN¦LM6+8>V#XQ`31Z& E:\"o6吜T|AJ5Ugn5|y?iK6%wYNCA[U.3evquEρJ)LÜ}lim!I7eg%83a١qU돎:NΨ(i*=S -DTLAmA]hm#(RxO(a:K)9E*uT u'M)ɪ,ܔ -G1Q׊5W#G֦Wd9Wdjyե4o&C!m_x?^ޙ&yN] -ŨRISJOq>'$)3T=mnm>r61T+JljYyH o2S4zի=cD}5ysM^/-` r Nd|1o_!,rin#M.Ó4(œ]PsCۺv\_F kf\lX)RDTހZPQK r\r *e1bG56q۳nifqhbU˙2,755<tm̭R/:,3.]u{/(MN?p.tmZ 0V޼1+ ?p'Wұ.q w7V¡M^ݾ-nU[/ϑ{@.)@tlzڛ=϶76c)o{}oZ謬p{gȏ][:CSS'CLN>ý/ EPVx&21*uƋf\Y,&ld) !AGJ GB -tigF՝ WgϬ?#,^@<"q_tcއB-fNxw 긿ȗ(\[;Am-U'S*cIN贔$NXVuO - -UnySs]z KiVbM9j1.Se(*Y]Qoڱ<57?_Wmd&=3]铊\wZi4L,}͒]۵yWG4IFh]͞^=PA^ Yh gCɝ~*fZVŻĩRnb}wMj%{%M(fLK -J5i1{m;"ƒ)QeL5 Cz(ȋbVBI93řz&J)2RD%S%geq"O.LVR"!Yyyƍ OQK)Hr[ 3bryjʛ"L5RE RR=HH6R+C)Ly&sbrW>U5mRs08kr9Jf$`c7/*VA5 :~( FYCI$JSwQ#3N~/EFш#~D80p. Iaɟ3O$ k<_4 ؆ZڊBkVM*MB娜,A'P` ga~UØBp "  -C"C&j!.ƛ(|#ZN !不ԅ'P$R`ux2:㓣f q\qlv>,'_N Nό'B 1̎ Vc#9HIˑd9.3Lz#Y%9E䴚Ff1irOpf|tCY\:պ ? -y?=6>V@hZ(*qRD:\ -ׯEH\dD*l-[XG9Z!h0bA6.2#@ mV rӞV0FH\8lKx83xh~ fA1d -DlL'g4 ]ͫ趩d|fhZ DLJfG4O.KOv5wkz5.ok4w7@׶-ͭ:8L;33txMM ~H8Tpx|d|OGAth|UdG oNOa5<;M%Bj7Qgٍ)xcM}I.M6 ٨vY6΁P^u .3rߑ,#\"|q~.yc nk!!wµf88:ZV}ۏ5pjNfnK;Rŭ3Awe98,k?dWl'3ܚa.C3Y_6e/8 C-=2/?flB̭'na)#WTd:3>a OV-K3 )rRO~YoҁKM~^Z7(+{s9dFZVvp5 -iI)btbppRڠv -gЄ =cp}G:c~a'Z'LY&# - Ka,$']eJ6lŀqxB#`pXC3Z#@F \zÕU _F"-93hz@W w;+}3)sq㻺ꡫѫWE^}$Bm"¯pW;\}^dϩ}\к_C/F_EᎳ^9K^pW_fh''m'C'#Q\G Qώ.%G>?LBR#|%H;x5p! Hs@ -4;HRFN%z0uwv C#CC@F<)"%\Ϥdz3DA$Ta>2[Ή:[uQ@^kg?ؿT-[NȲOP]L}0t!,fP8 2 -2;;8I3$2s,lfpħ9 ̚gfg\r{z:;ZWjYպ]5UeΒBj)3 ^MWeҔDIX$P$4LS? K(Tц[Di7uf,tߘet^asxmGx~:)_)#$ -ڛ>档G{ >;(gK:-In"yiW8 p,(i>G[ -)Bɨ>*Hh}չdhgN -0@_9;7'*7GO4K̓㍚Y-7d|ɭ?dCl;7 s9C -cN'%My¨V[>MaT i\L/iasMu:V}hΎ8 % rQǎ8aGv.Xc-]}sQ``}! +Y4KK~n. R5fUK@Kdet9dX:^6Rm2] +>pѸs_LEL byǻ%>|a996^OO޻ t ;]Lk~@ŨVC s}֧ 4H3}~6(ttQiXW `Q22L&N3*6>BCD 0uUp bh2peúzq6ͧA?o!*`CiN}Fׯ, _w|_oñ nB1=U4.] ܎i >#~O%\2;gH<?"Pjo /ۉD(8O> -endobj -141 0 obj -<< /Length 1286 -/Filter [/FlateDecode] ->> -stream -xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; -JÂ31x; -JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O -endstream -endobj -142 0 obj -[259 600 600 600 600 600 600 600 399 399 600 600 600 310 293 600 559 559 559 559 559 559 600 600 600 600 304 600 600 600 600 600 600 600 671 667 767 652 600 600 600 400 600 600 600 952 788 600 638 600 707 585 652 600 698 600 600 600 666 600 600 600 600 600 600 599 648 526 648 570 407 560 666 352 600 600 352 985 666 612 645 600 522 487 404 666 605 600 645 579 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] -endobj -143 0 obj -<< /Length1 7220 -/Length 4963 -/Filter [/FlateDecode] ->> -stream -x8kTSך{y*'@b %[_ժSm8GmSt:mc]..k;morosPκFܯo߷9##gz#" ʾ |2̿A(zpw C,B90;۰!|6!LcS0C `22<6z7_ߙ !!Y6?BhM#зk>X Ɯ; Ϻ CRšJʂy0s,CLD&p5o>6c**uB(aEpFPtdi.'7 -&saѲҿ~?@ZF$GȠ(2 -G|[t r%@/FC!NiS3fc.6 6UK[2NJswk2cDV]$3ln厪&Qdot,DfQ AX!'h7]oi"g|zʵiEd0=X-]u''3LsBAnƗ[_]"ͦ'4mִڟYȌ/lqZh0ⴓ']'Ok׭/͸B Z n[HmW+} X\J1(ld&U`Y S }iU~}0$,,,]͢Br3G҄az{FOyZ|'tMdz|/7 -4C~ q1EmΎSNLsnq=;ZEVzw:=R)M<ǩqAdAo,Ȇ0dP;E9Ket &}JBnzh%GGjcW[+kKki|BOP$t'*eV/7~Ew\vN@Z@L*7j `pQ@xqIo'Ɗ֦ΞC{-0MI]ic~E받Xy!TFM\{oZ׬V>נAMDJ+1$hZA<}uukd -uwJMVTFrK$+&oϖIj!pxXhMb!SǜƶS&CAĦeE$t!)5 ҹTSi\ |('*)B/iԨqɖJۮ͕Q{6xy*q {Qk bT;W?p:rV2e.j -Cb{م˿ r˩mx.+**`sqXQ\;t.+%\a0!WN\.qG`b`FYLK;Gy(cYCdeg -2YED|Qa @_,ApU3\'VXYjFRoH]^V<:q?3ܱcwD*3b)X1|$R_,+[\R4X)Q7;$u-$ikU-F q7)yi!4򑞑y2]ڎsF5-8K7koJvPg}IIrdjEH -TNp"#G2o5V;rz'!D U;k u? ǭ2`_m!6ݕ 6&yz:s7gcwlԀ8N7rwq'4)w*=}: wv34|Ǐ߹C.P98GŧA1tqrh$O8gN{,N} touA*硍{jˉnlhSbL=U', mbԁNekfY:,YE 7M"TgJPeA[)>gOV~^QmPs؋u -nY^; ƕܰ08,6cw/PqrNr;t6h7v Hm|211qO:/@3j "v^m[$,ܼ;^L| ]#Qͤ wy᾽uJ?+|Iml4Nb!̭ JjM \^. -3.InpSLTpeڅ +fw9kXtSY^% -C]psgrɴD[϶l?}iJ8U{Hegs)-u9W:[w OBg ]>S럫}lk4o\Mc; W%_c8#ʊЋR_8pc"}5=Rvϊ~T۞\)-_VUH>C5RXS`h\ :s&5>on,˘_YьZ^rB5̸+e$Ϫ .gt.Odywo۰ޞW[_A[o9q؜Y>|w/pN8=S-Imw{Xd59P/ڈ.Ïu%foůK&Y@JH7 QLH%iAYے/HIYiIalaa.ݒEʲdQv+dY*xi0~mm ,h -x9U{6ffuAk>mM/bDІE^vq4.E9K4{~P<77H]X=ҙgTEq{ Z ʄ߆K<Ģ|fD&нe#+BP/T&G+Pj\ ~eVFE;/q 4XJ=TJcZ Jr4! ȾEKrE|'¥GqCIX%e((D(TW=|@χ(ȩ?K#EX$!ĢyK"_qH.LQhD:SȆ@0g g𺭱8uՕ.TڀFCWVlmDFT5лgѐ7>$?0{Ѩmx(h3\Yd0r -rtp0\A~J?/F.@0s!zd@9( bsY ac0%o>^3g QA@08,/cc#`eyp:s Uƀ0>Xhc(~?36\2CArZߨwB__uwǂA?1fxǃయF:P(PG{(\P.㪩mÄIhu*Zilv1NgE˓ 1s1gfGԍc ;i($`̀;Ђlw OI> 2Pa[!QOp4<`Fzd@aC/%~SҳᏮz` ,x ZW9ƈk!Z`Ed@Re$ -3J6u -qBOxP.طa}ޝ |vL{ oٓQ"O;Vîy(m,f7]ͶuKƳ,ya]<=WtJ G324~> -endobj 145 0 obj -<< /Length 1286 -/Filter [/FlateDecode] +<< /Type /XObject +/Subtype /Form +/BBox [0 0 595.28 841.89] +/Length 162 >> stream -xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; -JÂ31x; -JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O +q +/DeviceRGB cs +0.0 0.0 0.0 scn +/DeviceRGB CS +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +q +0.25 w +/DeviceRGB CS +0.8667 0.8667 0.8667 SCN +48.24 30.0 m +547.04 30.0 l +S +Q +Q + endstream endobj 146 0 obj -[500 364 364 364 364 364 500 364 500 500 500 500 500 364 500 364 500 500 500 500 500 364 500 364 364 364 364 364 364 500 364 364 364 500 500 500 500 500 500 364 364 500 364 500 500 500 500 500 364 364 500 500 500 500 500 500 364 364 500 500 364 500 364 500 364 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364] +<< /Type /XObject +/Subtype /Form +/BBox [0 0 595.28 841.89] +/Length 162 +>> +stream +q +/DeviceRGB cs +0.0 0.0 0.0 scn +/DeviceRGB CS +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +q +0.25 w +/DeviceRGB CS +0.8667 0.8667 0.8667 SCN +48.24 30.0 m +547.04 30.0 l +S +Q +Q + +endstream endobj 147 0 obj -<< /Length1 6656 -/Length 3828 +<< /Length1 16792 +/Length 10563 /Filter [/FlateDecode] >> stream -xXkp[u>{/^|%E+\芔$FI/ .GL<$znF -F+TS_SdZy$ɰINTIGSҸǓD..)R4?{wϷg={ٽ 5xRΈzU?@WqOG(WǓ cb5ʬ>Wd CItF'_Gy+tgyώDٍr8ۀ;(b|i䟣&lߓ*?9lEَ:h&M؏ Ii\#G9Z|dC"vX,&G>GRK.%d]b+}lNm![Xjj;BB_v&}Md're]d$t_"K%~D/3ՙ3gJ3z& u-yxj]Ũ+ЌwcdtJrE)=VD cx{]ڀ֡Y(ڏ64GFC|v~@?Dwe˶~b0] :R0w~۵¡b»ptF'sY;g,xUг*9Xi>Ϋ8lpoMOCFTC^5;LażqzC\./;k?r;䖐\{5Q?_(ϑ X¢ e2L csx3(vg(F9=q_ʁٽcٱuK[fi\[d4u"z)Tm 6d$# *!Uj]iG#}Yi7twvPD9$:G >BTןu]֠``l;JԩNƋΰf*>f+Z5u%[^: -`ZÆUVQNG57AT }S3.َW0nH*ط(:ŗպvuPQ\Q;$Smgޑq$,⧸#Fd 1?Vu{ED]pQ+MI,g'zk ͪ땐jm.uUE2"=$Y5[BK:COjt}j_ -p,べ:m!UK- 2Բ=,a4`Qյz"}|AV0B!՚Ϛ-Rqmo q]Vy" -ke֥hBg8@[Z_B㔜a{2ބCuC5]bnrCp6)Kdf9 uSTkTF"˭5Sɗ^ 1^i8t `č}mb0U[\QlRbIvMpT$>rӵ:eLOjAY Šۍjl5mpuo7 {zIPQTRϽf`"-!Kjc {Il]1i8ļJ"8UCA67<>Z\B7L޼ҹj?E#͞fZ4I^_K!X5e1M0gxgv-,9hQD/͵q9"k-xف_Dy߱{fz./݌m(C47g:pyl3-a2f^te1vac4x1b9H;Y"JIU^b2n`34ΎfiS'`@CACC=\(!.3LKy}:/-vᇼ=/Dx-g5? O8߁XI8 _.~Di>ZG!/h.XdW|}MWe#oxvkH߆}߁9 ڇ0/V: -_3=Poh0|Sጐ6̂k_Iq[&|G+PB~ +x{ |[Օ=ɲʖWғeybnY^$,/q˶$% !I!8BLH!dR +eBBi@ B@ӡM  ~}l my[{{ι)#ЙI̟m{ʯQ#7 LLVhsjlr~wL+P +mccnWLIi|'Pf[: k(L_:l= W)פMBYw!i?"wgf3wC#3~tf#3k}rO;! +b7S4BH$ GDʢظDEJVXu +IӦg,2cN)Ϝ_PXT\RZf)VTVU5sQ4lY"QB&ZQ#tފZS,G1\I)ʜe14?vl|5:^/_ƪ_?^g޻X+WWҚTT +Af FW()x^!z{־_|3xcX)yzƜoURXj>wlJZJlS[3֡p}rE<)CUbU!˄P^E1&*_9u + uWh +,aq)zj3( \L gHT8t3Κӵ/Ҫj18}*o*,zxk ^x#%MpI. + ^ڿ{KVI # +EaԚD}]oLL~_۾5ϜTWSNlgϼc; 6H`\Jhdy yWSh2XU^azD}7씪LPU#Ә5odUR'=c3~WZm?샕Ҵ S|?vOW+L-(ը0O NM1 ?YONo/f:BU&m>#asEC4  8H) |˦%gEEBWnk:Ӓӽ&h*ᲛFa^UzSӵ/ԕWݱl3d1ѩͣrUgFk,:-KFQx^bQ (ÀIf0pM+tD+G󼅢ELPZaC7o *yA0Szd{Aw3jKz:Z[2&KSk.-g꺼1hlSzY[h}&! +~J:BR'% [{QRѱ(zꚫJJ (i;j۔=؈ڸƦ/jh=/㭋'TV6-O–vЕ? Xpqxh T>9:hAϭ|O8DgaΧ +4(6vm`VҾ"z h5>,P23E8MHV*V2 eͲؤOߏ7NgX%yF^aP;֖5#XfLjG%>CT׽YnY9ޚoW+2}B_Hi3+?ݘ}kU)]GZX9JZu >+P;/p5Fت nK`!v +xQXPjq;;溫es?:J&gqSG~do<%$Mm̂ sXƔKMDw"z#^1!DBQ&sO+Й;3+=/)_>: 2Ggps/Xf= oe5ͱE;o\LL)+HOd$R&.BϟǟQ#Dn38@G&T7i藌pFM]CD;N{;UE+a. ]ӵ~uFj DY8/s? Y4ғ}=?d:$伴l|#4 +Zb0} d~`Meo[B#l8):Еq +ʱ^# g#hg~^Y$;Of 9 OLBWvI,x~Xn:JqѕvMjxf4]ߞ`~>K@WIj0<"3 z@wjs֏K @9|km``b)>kȵ)b^ny|.3Xad#Jo7M/ oB9&ů<((J 2-7dC7(n^[FqGLk/| ?>;Pv?Ξq6ob^۱͵NkoC0~oWBT~}Z>kN5v.iC'w"hd$~ Sظh%h[&PFx{H"N)R,ʖEfڀUfqJ|fd+[?7@M3(dBH 2";]Z>1uڤiXDdRԥ*#s?"MHуy TJ^Rt~kv*\)ӍrfC߹{?:p+c뒒e`!8ްz^b + y˲x1~5JINjVm!{Dኘ7)a> ;4[ +*K4ZvqI"MT\ +3y9NguH2;yO:U%;)#cCCTr[= bqD{Aj`<-irg4teh77foשb9X1ľޓ⍟)= otU#+PguMQ #tX iQל1[,cn,ARGw"&1YsHӏ‰XMP8-l?91rq~9ޤIkVuI]FxgO{ H"-N1-~{91ÕQեs!V8<”p'6/Y۶ ނUW.>:T[Bd6\$2y7]pŠH,l]2T_`DE +I\q@|IBQz[YRR>{g[|nKdh4'WV'N8;ST43s?V"6Ē5wGU<{Ͷ\#־-ڪmթ~j}\<[{{Gw&䵘k +M#<4=z_uuϿCq4'8܁2T$ċL~PY Ë|F +kj,iK~r u׷x..yjLJK_$)"R c kd5t +2 uj/쩸驒'4SgR_{ mwXnxCXS,{_ZXN|)I)M'%}8Z!l +k d. Mg尰svNU)te0U6$5IPuSw '&-MJPR+]+Lga匙9t[q%.tmGf\~\ó,2)"eaIĘL9o9 oa+(8 0/ y5nS h>xG_nNWG19jW, f~,sŵVʈ0v%k{_,o1֖4 P(R& KJ3AdUqipUu~)AKd4d\/ѐ[Ԫ ׯgW +!o@bJq b''2[xHTDe6>'/"FG"Y\b{Lw4p}b f(g1-?KsxWV35Wfkm-j ? 9ג=[ + k[ +* FG \տc-MrMW?r ry/y#SR S +ο rZBLm_lɴdH0X0Pis8Q;\\8XY?XX<\A})Yc]Dx+DJ #AQK}U"ǟ. +1 ~S%bGUH:`ݍD/c +n!OP/Sҕ)]F3/3_rEEc/rf.JI9o3*-K%=#}9$*d*P*2̰^ ;jDql/##L,k=(2/hi4 B#BhJe^d~|1XD}ps >8'uT=:': 53;p_" nL}V?%Y.*h=T$(JT"WP=ug#saGC| +g-I} +fdɑ3^2PsZh Яj1GyIĿCsICH!';4Lկ6d?Wrl3 ) J74"CQ'D +d]RHʯzeY}T=X!k(n!Bd( +b,P"5P2J5RҢt3kND"#D\dˌQE`%dYY :4&ԌZP+jC9P'.ԍz-mE1FC/-LFAd: 23H|tɱGPlE(Wb{|A(j|G.A>z0S>z0JR|t). ,ԟ~s|PTJa>꣇Q'_(1hGGyAwWM,ΎͳƜ\fzztM ي Tͱ9.;f"Ehy0\1iE :4*2愒n H<=?vgGT4Zv„kVxm-Cm_']S N WIxmMSfo_鞝bs|0bB:$G]4RE |su '];@zq9][{4Lo&8ͯWGX5yU;Bծy;6>5f{=.kLL灩x# ż6q'4 B- ǼW)6n6~hz07 E1Mu<42@ m !o`o=Ius@[8Gsej?9>ʣӻܳSĬfSh&|.@?/L_2qA!d"צ܇<%8#bo <,LkbUcB#po8s@SGa>/8Aj'Ksfp+FӾp#ۼ 58Dk+XTu\K$,~>MuӝWU:f,SǃCgΓ#'wÑ<|a&<|*}!<C! %!Ǚ?~׎2r7^hVé.q|gB*YUAGWH*MgxepF:E 6Gk4m튉Vg.l|kV2jXRLXSL GtF":) ՠ#>#ގAOyt 1X/.8:.7xZx=MZz={V? M3& V-~[ T !*-e x 'O:7s[@ۊ/PHFkmV=:O8W-T*G\ XDttҽ"@V07.xw--Ȳ<\'coanO6Wmd k4w="M$.<).E "vwiα%ץ-] ]¨޺Q~o'r` kn4vvWΩ jYM7U#Lj2𣗬h +m2$̊ՐHͫNRs_l^0auy =m'"=_)R-2mYnxx+RP{:HEE!|lmoX<0`uٞ,0vh7\jA}7sk$b;W|yU40{cUYW@-6pmݗi y{d0L-uxTa#lBCDS y*GwC][A1&6\#HnJA@H vx*K HTb֕l7ikÓվv^UOUBݣl +Y_(_Ekk6OPe97Íkk7GЈ A?>:6ǞS#׊쒄kX"9Cy1wkL!x +b1f6#XX 1v^:Km)PnpTU^=mˑ8_0U5Ps!/Y*EH +,)NPj gh? KQ@c4@#h)~ 0_oc~n[!6b=:ġ)p^N^Ѓ2p,eYqב3,/.ڸ9#9իڕÏOa센})fRf*zsuP;ї\= endstream endobj 148 0 obj << /Type /FontDescriptor -/FontName /a68193+NotoSerif +/FontName /5e9f94+NotoSerif /FontFile2 147 0 R /FontBBox [-212 -250 1246 1047] /Flags 6 @@ -14281,49 +15964,68 @@ endobj >> endobj 149 0 obj -<< /Length 242 +<< /Length 1286 /Filter [/FlateDecode] >> stream -x]Pn {L6C*8H5 .$JX쌆.HA:o.aMay -0N+U*2Na[2νd% v/&x{2`}k?8аN*Wپ7ĻIEQq{ %*I lNZ1uVUbRbPxҊ25O=д}*߷zMԄ%x_ f:t +xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; +JÂ31x; +JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O endstream endobj 150 0 obj -[259 354 559 1000 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500] +[259 500 500 500 500 500 500 500 346 346 500 500 250 310 250 288 559 559 559 559 559 559 559 559 559 559 286 500 500 500 500 500 500 705 653 613 727 623 589 713 792 367 356 500 623 937 763 742 604 742 655 543 612 716 674 1046 660 500 591 359 500 359 500 500 577 562 613 492 613 535 369 538 634 319 299 584 310 944 645 577 613 613 471 451 352 634 579 861 578 564 511 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 361 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 259 500 500 500 500 500 500 1000 500 500 500 250 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500] endobj 151 0 obj -<< /Length1 6472 -/Length 3684 +<< /Length1 13440 +/Length 8612 /Filter [/FlateDecode] >> stream -xX}l[u?=,Ӫ9GzbOiYvd;EI$%JH*|D&GGJXEĥc7kph6H MyC3lMaPNQMgFEV;Ilz{y) P gr -XH|'gd ѸzMrE4Ȗ4POw)Fϱރ~édF-|~7QޙJs(_(F8x7V`C*9ހ lj.@,1>'qVl}h6M{MapPf"ڪm^|;*,,?opnpM Zpq 5m.T_׵{Ij޷Uj\-ܬgOD<၁GZqWod6˩3S}=ϼ'|82ő/n -S`kmjݷ}{5+\[>?|㻕/ߙ׾>Ś/6*0gOއ+oAPHK,J3˯y.QD~DI7i/ɋs.(`^(RpzA_R(`>#)W e;1} - -0{8` dz-E X?Ru\|O#yaHEudq#Tu$&Jv 꿬딀\q3ԓe7ß 5:^ -uBNa\.2x\C(x9mk;W@WW -/ :-䭁dj!t=t0W71c}tue褒Qǔ )X4`b8ۉ%AM"> -J^H رՇ<֓k2\RV&$),"/׈Wc3Ȫl1y$H )7.sޣ#Ȓl hyѮ82!CK -g>6ק)%%ӾNqfEmCrmwl #J\N?EónSI0 O!f72'<ܥdbs W}FxYٺ(wɪLIW"tzF*ڑC~< -0Fag#hأ:p?~>kIs@C*Rǎ$iGg$ʁ}$8֑qĒd= bY\&?I&TKΪSGIdГDDIS5P0K)B;vzH,cYEM9A|k}>>ѾɾQct`l{FQоکCsT97L&4OXmJ2)e&6rb.+*RJ:˰^IDp*\KS lf 1'&p׫|Ob@FRֶ('-,\ׇ{0c< ̇70#rgƲU~MUn_Se3>}ئe&1;Ŗ 5re/1D(~!#]~BX`a -ZUNK'3i#34_GQNVsbcf94Y,e~eVE[\HF_DHفpM e Yݦaz.efұgbdz19ZXSkέǚ~YLCNo.LV| f~%r= uڝ+PyK+~v`4Blźz0K\X@jA{qN -X"Xcx@T ; -R r`|T--eһL`ٲLžgHjER'T*, Bi R:刲2KN)$W?gZyxJ7Wyaߤ._WʱU&QtZ]b? Moy[zu+ꕦW_>%2uRW$;Zۤ`;9j M%B 9G -ue&š#XGjЃۜ -@mWMp*x[Dc=SSbo`,p5p=p;` x 5VRhT*  ^^%V]]%b朄76ϋ Hȋymd09?SZΉ## =w oZx{hD`ذl7@(ɨm!6i6-22L=UU'PKV0l-s4鰞ƣNw(&'F9<2]}C_yw|elkjTm,/+5t6[ݫm\ 8fJ8%14ͷ_νdp[EDȏ5QƱ9ѝ=Ui$_5]r6:26Ƚ)flH41r[77"Z,kzнG\8'/%jr\ʍ Z*iy!YQrP_ӻvⱠ&xhTFz%~:3Y݀@wOm6KNFA[eZ/҄0빼S`==kFsioDrO4ӓ,Erjr5#u)ZĨflE0Sؐ [[V%wX;mDѮ C-†Scv9!x4x21_чiugQb3Sw.*%*t^rU;jMakw, Zm3IA% =Ng3j€?8F&;ŽF -Z4rLU ߃Vbׂ(KįUm4CE݊KcR#KU6g`j يOGTGSV< C̗,iPRs<ý;\Y&ayڬ띫 ryM]941rI'ܫKaj+l?K71hsy(۶9I`Y3l!#v<95wS#Kz a %@&P&0I\z {  p8f^, E̲ c(5Fx~i/B\8r#G4"BHD0UheүK exo7134grqcwUè"lp3 C| pp^ Rr}Ǽڸ=6 _ky?yn;7c'n:]"- 20&8[8'௜MЉrR\/~[簧S68'7߂g/񯡾pހOX[W=^qIQp(ub4k@d%w(|_x#a}.<]Rg +x{ X[י9^-EhJI`Eb16;XKFb 8cg5ƩOqtXN3eyIuuLdLelWcL:|9?. ddE1SB䦡`!!A0=ԸBE.rXBIo}p&HxQ<Dq쓜"HN&CrPgdBGQ-NoG&3X}O^DKD`B#ՔByl{~1wCv.F_M(²B)7DIqj5. ם#|Íw2wJy?Ou,:bW0r%$Ψp54pY\}yk_=y>_p\ˆ_#J+m{1.|ť( jVCe)5{3MՌʬRL)ũHNZ/Y4,|Bx?k ۀ @jk +AzqߡowͷK|8ѼJB\AoO?eozO?<ݏxz1{A?2ދHGBԃ&+ͧ2IwM:H]k=cHPOslyeZRW|.J ?#] +%ƚ";%5%,)3Z-.;#ya3oξTĹ2lxWCVOHwϭwL`bJjuw˽vF;%96= +2sOGȘ2qqB՗,S d+E[lYV'hCC~~Ƕm{K=3L/쬳vOW߻uǣo\}VCevS&5ԘǾ~o1vw߭L,dz႘S;61Uh8b0P#q4` Kef9*j7~7BQA9) ~ +e-WAܺko{ӻҢ:AVI'3M i4`& C [n%vV=w{ NU9PK +D^ΈHlh~񎩳~S_w'ݲ{Sdx=zȝ-K ?1W<7->kSC!.wר߬<ѕmIv-,)D#;JrJJK]f!5 +TISd`ROp;Po$~DR.LHWv"4PZL=wcѡI rf[-fm{[zukkn/-1[+1g]Ra<&Zݙ4س?2Y'0KʡFyo Ƣ}-Q$`O͘JΉ91Xk +6(zcsf7x"厲[uC]]HKmrCYnRIw Q@0ݤoȨO1r8?$=ǐW8L18F BH+$AE~'2{?HfMA({Ffn#9s 1 dg +eI]9Ԝ򋃮5ժvټ -Tn=w߹̀=XQ;Ҹ`ƆO,ҹ,˻4&X6fg  ;꙯"ƍJ+\Gq@<_O @_q_[1si5 +p8#2v3!˴jpU@vUϽ[77;ܖbsSYUjdFcoɊ;J2>Rv1vOwـ[m4[5ͫw >'<wU,bW#&f8-3WҨDjNt@L羸ihTLgƇSvK1}ث:qߊ_[{rŮW{lCٷ}5vu:o5V>7Yex)isN7Փ$A)(N""-2MYMq9!GΩ"]x+Ffr܀8KĿGi2IewϤBHyᄴXC}GP#dljW}"BL6wf{R Xꭹ(gENNn (VTqkaaʛ C;U!|~ 'X&H!V䗋^e`9w1Ƭ9e6UUw⒡N9X?ȺbOβjJWOkz]>|JiÅ<'5=kuKY{R׹;2HWuYZ 2@ rx9=#X2/qǽVdQWJ7P9;S +T!a#(UnɬU<\i;Y($G4}՛,k<)3gW.s:.|B~5-_szNt}<ݡep;{a1p'-c#5#;%+3ϡ)o3i֜o8o S#ekAV_2Q⡲Q,U)Gb-OR.O(LXeJ_VudUf|ݜ,G<ΒQ🏟x;X(re +Ǯo]Yؙ!ʌ */12z&dD TCU}os_;B]7# ͥVwkOk<ؕ}~pٻFOxͬr +*sYC^t>]ڊy+q#*SX5iQM+eӼS2F*e ܲэ瞊192VuSvqT+rg_]JN + +2Uׂ`3*gu VQ(] {b'8fiRf\Oo< Vmt+bG~xsZ$HÆG`}|@3c4+Ί;D~Z_̆# p8&ǟ/-q韨ȋ OL-Hd`ń೘X˒l)!]3K.4# Tugp{^bgJ^5/OxP}_Ť,G/_J l>3b됒PP!B+?*fL#ޝ3嫔1}=/Y78wL>xwҐ[L:i*I5ʞU5cҬ;y + @~ō:3h2Tԩ򎢒徦L{|4U&Us5e)6y68S9Ez\W$$Eд,Wq ॖ +2B +Rx@$1&ݘp"ŔPO-zZ֦˭iNrj>#z4)G$*)TN,% ")%O dk#:8CwO7S{u{AIj\fm?$V)W 9:/b%SnS+G˻7' F + apiP-:"c9q_į*HRoW64 ؉lzځBi•IQ> y^yV>9<V諠<k" +dHՐ ~yJ!%됁ډ(^/b+"=ʇ~>ˇ-(UU}gDJꉘ~BH3&*ZSA +3H^GxӒl,܎bO88@a~ǿHI8BbS(x[r'p!8 HF (E8\D&-ODd_sȖ8< Uqx2n!ÓSqx +SPl}hbH.эXn4ӵcct';4Ew~3G!pha4`*E!8Dfhd ΥUS\/upm[CB' p Յ4mh<1}ãôf@q  mv|(ɽɩ8]h)Ax $=(- YZetI?MnCCUlQNr>(aR p\M- qV _ۅr+05:y38aPH%7z\bm~ηYvS-܂ uO(suApNB< lhXn8; +f88:]u+x_37¶cc \hoSU1Lr;A2GNq4Nr|Jxѻ٘JBd[3Ehv&KѦGaFxa#q6 l֎/h @qijprt"߰]f[㽾o_ /?w]vm"/qo+PUɞ WqUrA]={>w_p%RXcϽ8C->>o9Oy()>:uNʗN^>IxOO~vr$Ys_>铸'_:~8~q=D$>Dq=i j5/ _6LZjڇHj;/_R{xg$)^^Gx{'zM=uK{yY6U&bq&!pc<.&&d|3D%Q`.vw-Ζ}C?uԳ~"G>["E]7%F  IE뛚 +Cbk +ŀ넧;iCF7MxcӌF(S\ ^ո<=]mk״nnjlpjkU厲R{Ib6\FQˤqJr(A((VftDPz|d[Dh/7uf Z1&6fi&ЕT@:򖋡g>:)^˵)=IF+hw`/4lq{]bL(Њ1q^5D"\m#G;U#|03Ra@U X|X +dFuRU`4v0fm#退6D1wQ}j>/hũ/ba&"2nI,Y.$," `|Uv;ֶRMM{otx^@.ӪP1s`z?Q{U~!ڣDjE F HpEnOKұS':6th*3" i"`t4JxG:! (f]WI{^ dDiwoAcMi&O{L aU@0p VTi`:Rayci$. N?qv[&,bfZ.H#_6n^gLK #D@Jf=q;?ty*U]ؽRQ n3@ૻ;.{^ D?yDb.y^\ elf;,NjÍRb0gL#F`5}@K# cnokHL?L5 ~RD"L wpg g f$n&Smvyxo!Z2Q>W.X#ql@o ozV5f&ًj {/6tb$ H;yd_Ek]"V#| |_ ˢI%|ɿJ" 2qulԯO@> +stream +xX{X[Ǖ ˖$0 x# H Aܸodcy(N6Ik&n>7:Xu|iM\̽ݯ;s330BhP zbh?ɸ*BX=2mmۡ)B&}sBc'4uBP(B~&s['4&3Ʋw50{rb:_2_d _"z4:ɬ58YٳDq +l:P*kW֪~Q bǏ]*!@.Q*D@H k siR'$:ʕ:񕺪Lq姫ϣzԓ#6td"p4[M*@+*5KumcZp8_[=m=^s%~*kYo翉+WU(bÂVB++ 5.7*#}uf`]=z6cy@Ӛ_Yڽ ucaeTfҰ_^>t-s$عN +62ɓDm}[{]blR, 2jޏMVP@SѪU)_&ܲnGJqXքeB^.Vz_Q2D|D^_]lq YolU8C*'[bC8 ۅN1MԢ_( *Т}/@EpCPZ(о,".wtb4T>rVf5 +r D JzϾH/ڶnzLJ7`i\]?ݠ egm[v? &/qެaQuDboݸAnU 5~+lYFm[Z4:X};oT!*/9CmWy{5>_`mT33EMkIɋO2K~U5.ϖR8[ߺ84tqhvŲBԻv™?~'s`OaO&/ߺ'vAp\|][o-fIꆠ'|‹=` uׄz0s.gb]-Ըd1{݇&o׌RnZOcʺ܎ig383k}Aq]]&o# ’Cqa6LX_d87i㯭[QWӅ^#V8'jxYq$vcI,Rд^_lZGBd7J0]Fc"Mo8PS6= ;d +7a]ͻJ¿o ~_- +cD84d/4ĠlEˀP1P 4!3@ P9Z lq:T5f'U+jC0Q'nԃ1,Y#[ +鷙:t [ tD'..Ƀ]zrG.=_Jc$z @XǣUAGxD_$ +*<A6"{#Fkzk AxBd A0!,A7(HҵᏎ`-ÂE_璝HcquÈ:3t>=УS07<*:0KGg>n/>L ia*P~Ɲrp}˸Ȳtܽ:j/`Workf +@ qn :<WGd#ĵAq:ޛ.q^ڗ;k#R$fc?xܽ$s}#9]<_ GAƺc||BE|Ψ } +}"Ciѵ.oe/0 >(,b3]/g}¨0]+ TTs_:yKgu7ڰ'L|/ư00<̾(5J9~kP2.PDe,D;3Sg[Dғt1-Gid/(|+ʰ4346Yfc8?Jڃt2 JUWVt̕Y55]m:-2WYLE; 5,3<(B_$5حЎkߴa'TTc'fҰYeqy+_dv;_IM.<)s>^v#X:YD<9Õ^Qf(X\+*n9\abWl_U +endstream +endobj +156 0 obj +<< /Type /FontDescriptor +/FontName /041300+mplus1mn-regular +/FontFile2 155 0 R +/FontBBox [0 -270 1000 1025] +/Flags 4 +/StemV 0 +/ItalicAngle 0.0 +/Ascent 860 +/Descent -140 +/CapHeight 860 +/XHeight 0 +>> +endobj +157 0 obj +<< /Length 1286 +/Filter [/FlateDecode] +>> +stream +xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; +JÂ31x; +JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O +endstream +endobj +158 0 obj +[500 364 364 364 364 364 500 500 500 500 500 500 500 364 500 364 500 500 500 500 500 500 500 364 364 364 364 364 364 500 364 500 364 500 500 500 500 500 500 364 364 500 364 500 500 500 500 500 500 364 500 500 500 500 500 500 364 364 500 500 364 500 364 500 364 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364 364] +endobj +159 0 obj +<< /Length1 6672 +/Length 3845 +/Filter [/FlateDecode] +>> +stream +xXkp[u>{/^$%H6p+RRHw $hPJ$.10*:*dFvXYVL~xRM}NU:izt&z&i2&Ώrqm']\R"iwo~{{kxBNzc-" Xاq?\KNנ)"b`lN'B| v׶GyP:ͥOQVQO Ų}.,ctFI!+_Fę `>qFoѦ؇C D?_Dw@#@GRm;lBrk940&w}Rc65ڹcdž:ficnaxՙpD]{pWbꋸ"W_8"*cؒ-edOPF/ot +KW(0q4x[vBGn1c4oPk0JXvO;w}ݗvZ^tY @DAWIx{(-/}eσ]\3LG[:W" +Aw J^CbdiZP o ->BIaq|Ų\$婴OL(r9Iģ1ho߇m']>T ôE 0{R.F"rAuPC,5d롞ti$Ս5#89 7A-p||eP#Tjxl6ix9XC^ +'5hxky]@8kGQԔtShwmݾA^:8B{n{p%R{J8ICȄK([SbNƴEN&9roF,XeͲ*uF9\ܿGm +yv_, go:chUN)rn^Xe&1;c}hLs}"=ܼ^js |` a +ZUNK'3" GQ6Q+EV$-kRNH̗.3-Lp_.E$/?vlC8&I܆fSi3Q]ڗx:fT&jt?mdq.,ir'fv~F'UϞ|cUA߻e_ID;uՐZ"5v,Uu%$")=Pѯ"1ЂhT- djtux>P’**O֠Nשq(+I9be\ N}sy^Čao#"#^%wmA2Ò@Jo- [ҙ.:<>ȼu/M6sߺU;|[p:D "!'S57 Uo4!yy"\4_L_ $tܽP /rl홿ѝA-oK ^TG_M*@o\uJ8X5_uJLix?UGd2xjzF%g&/+GTYG iQwxjhcУbg)7Aw0ZEDz-PnmB3Yr4{ ZX4ă_C}ޡ鷰`Ke[ >C^e?x_ۿoݻ۬m[47m6YkUk+LF^'[+D搪kژ,+gHյZG!FWkQ3򐦽i_$f m)QΑ#O; U?y]̅(X,؃:cu㱂3@يG)ok +V`M*gWֲaU)ա`ZjM)UCj4Lstz93Zքl@e[KjuMr^gé0V8CUdh3CwV#̟нKB $j +kN0 \TAd]뇟 BdD{PmTt tba?7g1ԩ@IsUZb-חZjeje{Hhzkr%'Na>}B27XºjrT7[)K̅Kput4)9Cx h[R +׼+vYs݆=(SmRZrƽEz6L[k$0/a=p(ޚIvBz0@86¸*#4`QAJ%Ȓf֩B/J#ѥFkr>D#J4DBDE3ԅKdی(KN6nNš1y^O` ZJW[T{X&5C̫4 )RPQ>`scќշJZ,tXyI`T]- +ryY{ٽL &-0rI#ܭKwS\2 Ϙ¬β%-HpA:66^`cZq랕Y;9=x @W"􄺃-sT`(@FP0qwSU.㙍c%PK9.R} }{Y|0+,ǡ=_zG:0K\R +~n u)}V>Z_ _xCPwb#T}/R=;=îy%'%xAČ'<~V^S׃P# 5Z `t`/\Oj8u7uw]6\WOw +endstream +endobj +160 0 obj +<< /Type /FontDescriptor +/FontName /a68193+NotoSerif +/FontFile2 159 0 R +/FontBBox [-212 -250 1246 1047] +/Flags 6 +/StemV 0 +/ItalicAngle 0.0 +/Ascent 1068 +/Descent -292 +/CapHeight 1462 +/XHeight 1098 +>> +endobj +161 0 obj +<< /Length 247 +/Filter [/FlateDecode] +>> +stream +x]Pn CMHJ/> TBT2v_ e9 +u> K\:ޔ+k:a[ +}pJI'7{q;޳Dwߧ3B9QZpxU7=eM-}Pxw1c%iY \I`Yg".ra8cvS펢Afܬ9S3[m(SLUU/v +endstream +endobj +162 0 obj +[259 354 559 1000 200 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500] +endobj +163 0 obj +<< /Length1 6860 +/Length 4046 +/Filter [/FlateDecode] +>> +stream +xXtS}$Y˶l\+?l`%bٖd6%Hdؒ'- qB,ldgiҝ~ɗVNSwj씛:'oEzP_o.>Ẅ́[R܈vzH#HsҤӓo֭Ə=XWaJXWHf S@~@.?'_>~3?JgrUCpށI=fpU5xEُ Ш^V!AVdWfX;Z Э*m#z0N>@( +&__.d9syn :@(908bIth8ሄOd/:r8Lr&2u9{iT{s ~rn5Ӈ Xh4{Dm.tU6UO:toP[߰Cv!m}^S9Ĩ|o8hh*:b ϷGrģXh<4F'ቤʱP9S?ȴ $c4qՌ9TC5 +' +I^*3^H-nUAžo`xyٰgŲ$E}9~VQ1vN3ٱGn݆}H;#BQ_ܜ}žg-U8u#6ƸS/V7;Y)cY'qfӌhI~"-\ܑSv"ݟg4_^:'gKrM8[94Gb~GF}a{_fn$ g{ _P\*Xu(+ջ\x_Y|HZ˱/ވYb<)Ed-e@Hk@}>KΒ Yb$3vIQ&iҚ&6iZlk JjŖbd7 U-!EHASV!O!%|Γ &E>'#]i{ +Њk|tkpDo+"5|ѺW+VhF}٪ًw/ +Eo!}Zp–WHWIWH*Hs3"#/f4*.{,dXUEHJ0Jwic[4H<.ј +ǖw_spqk |tuT;ZR.o,s"-K'_+Q$]+S$bh1γDKȩaW]]B^vGxB!'k ٹ9h_ߣlsyzo fq`X?_x<a " ʍI3D2y |e L16SWqjzî==ήNfmŖw=y[,Mkk6Hզ +ch‚|}N1LvJOJ]] >olc%B}"uh 4SDm] =8I^=|j$L&\AAUt0eP|aA!4|A! qldn&y<V3XcAVi2yƧTtJICt8I믤_0nU@ +{яkS=zN)S6K6eSVJd+uLjВ*1H4 ;[+j :0C/_ΎJ WJEaઅ;'+^ ]L'&&.}tІz.X6XXp߇[S,RT1JK̲\D];4S{g˙dIKИ9D+M1̫Z{W|q4)V/nW^h7QkTaOK٩`45HʜL9E_R"ނW׀(KEn4CLMc +ZN]tD9]&)4 8MUŸBςڵ8%Ib8bYrz$YJAX<7e5<^  &^$X0G]*^"v.NӔ^qpIhS֝ŕY=K?1V4Լj96%9)ix|*3PYDN [ >%=19'߀sK+8*0`sKVY>1"F`lAaEL@LìcREc緝|L,ǡ#D!n{UJ$+R;[ޚu 夡.}R]e2^^оon0‹[ٓ[1~qpޅx6 Ku<7q-$%?.p'Q6o?b3(}t/T:Rgh +G؊ blwaX2LyQZq-`O_ < 2| ڴ~2e> |tߙOs,{ZA0 +:]n]¡󺵗'|KxǴ#aQg? +Kru +endstream +endobj +164 0 obj +<< /Type /FontDescriptor +/FontName /f37706+NotoSerif-Italic +/FontFile2 163 0 R +/FontBBox [-254 -250 1238 1047] +/Flags 70 +/StemV 0 +/ItalicAngle -12.0 +/Ascent 1068 +/Descent -292 +/CapHeight 1462 +/XHeight 1098 +>> +endobj +165 0 obj +<< /Length 1286 +/Filter [/FlateDecode] +>> +stream +xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; +JÂ31x; +JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O +endstream +endobj +166 0 obj +[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 579 600 600 600 600 600 600 600 600 600 600 304 600 600 600 577 600 600 463 600 600 600 818 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] endobj xref -0 155 +0 167 0000000000 65535 f 0000000015 00000 n 0000000239 00000 n 0000000443 00000 n -0000000556 00000 n -0000000607 00000 n -0000000879 00000 n -0000001085 00000 n -0000001381 00000 n -0000001548 00000 n -0000015698 00000 n -0000016294 00000 n -0000023847 00000 n -0000024215 00000 n -0000024259 00000 n -0000024308 00000 n -0000024352 00000 n -0000024396 00000 n -0000024569 00000 n -0000024744 00000 n -0000024912 00000 n -0000066726 00000 n -0000067112 00000 n -0000067156 00000 n -0000067200 00000 n -0000067250 00000 n -0000067383 00000 n -0000067514 00000 n -0000067645 00000 n -0000110569 00000 n -0000111017 00000 n -0000111150 00000 n -0000111283 00000 n -0000111416 00000 n -0000111549 00000 n -0000111682 00000 n -0000111733 00000 n -0000111866 00000 n -0000111999 00000 n -0000112132 00000 n -0000112265 00000 n -0000112398 00000 n -0000112442 00000 n -0000131742 00000 n -0000132121 00000 n -0000132165 00000 n -0000132209 00000 n -0000132259 00000 n -0000132388 00000 n -0000132438 00000 n -0000132567 00000 n -0000140057 00000 n -0000140412 00000 n -0000140456 00000 n -0000140500 00000 n -0000140544 00000 n -0000140588 00000 n -0000140632 00000 n -0000140676 00000 n -0000140720 00000 n -0000140764 00000 n -0000140808 00000 n -0000161807 00000 n -0000162175 00000 n -0000162219 00000 n -0000162526 00000 n -0000162883 00000 n -0000162927 00000 n -0000163102 00000 n -0000178097 00000 n -0000178465 00000 n -0000178509 00000 n -0000178553 00000 n -0000178677 00000 n -0000178803 00000 n -0000178940 00000 n -0000179078 00000 n -0000179196 00000 n -0000179315 00000 n -0000179438 00000 n -0000179563 00000 n -0000179686 00000 n -0000179811 00000 n -0000179962 00000 n -0000180115 00000 n -0000180230 00000 n -0000180348 00000 n -0000180474 00000 n -0000180601 00000 n -0000180722 00000 n -0000180845 00000 n -0000180965 00000 n -0000181086 00000 n -0000181204 00000 n -0000181324 00000 n -0000181443 00000 n -0000181564 00000 n -0000181680 00000 n -0000181798 00000 n -0000181922 00000 n -0000182047 00000 n -0000182166 00000 n -0000182286 00000 n -0000182404 00000 n -0000182524 00000 n -0000182642 00000 n -0000182762 00000 n -0000182879 00000 n -0000182998 00000 n -0000183122 00000 n -0000183247 00000 n -0000183325 00000 n -0000183462 00000 n -0000183654 00000 n -0000183870 00000 n -0000184163 00000 n -0000184313 00000 n -0000184501 00000 n -0000184689 00000 n -0000184983 00000 n -0000185183 00000 n -0000185394 00000 n -0000185568 00000 n -0000185748 00000 n -0000185924 00000 n -0000186104 00000 n -0000186258 00000 n -0000186461 00000 n -0000186619 00000 n -0000186791 00000 n -0000186963 00000 n -0000187131 00000 n -0000187309 00000 n -0000187476 00000 n -0000187747 00000 n -0000188018 00000 n -0000198329 00000 n -0000198545 00000 n -0000199908 00000 n -0000200824 00000 n -0000209294 00000 n -0000209515 00000 n -0000210878 00000 n -0000211793 00000 n -0000216847 00000 n -0000217062 00000 n -0000218425 00000 n -0000219340 00000 n -0000223259 00000 n -0000223475 00000 n -0000223793 00000 n -0000224709 00000 n -0000228484 00000 n -0000228710 00000 n -0000230073 00000 n +0000000571 00000 n +0000000622 00000 n +0000000894 00000 n +0000001100 00000 n +0000001396 00000 n +0000001563 00000 n +0000017237 00000 n +0000017871 00000 n +0000025424 00000 n +0000025792 00000 n +0000025836 00000 n +0000025885 00000 n +0000025929 00000 n +0000025973 00000 n +0000026146 00000 n +0000026321 00000 n +0000026489 00000 n +0000068303 00000 n +0000068689 00000 n +0000068733 00000 n +0000068777 00000 n +0000068827 00000 n +0000068960 00000 n +0000069091 00000 n +0000069222 00000 n +0000112146 00000 n +0000112594 00000 n +0000112727 00000 n +0000112860 00000 n +0000112993 00000 n +0000113126 00000 n +0000113259 00000 n +0000113310 00000 n +0000113443 00000 n +0000113576 00000 n +0000113709 00000 n +0000113842 00000 n +0000113975 00000 n +0000114019 00000 n +0000133319 00000 n +0000133698 00000 n +0000133742 00000 n +0000133786 00000 n +0000133836 00000 n +0000133965 00000 n +0000134015 00000 n +0000134144 00000 n +0000141634 00000 n +0000141989 00000 n +0000142033 00000 n +0000142077 00000 n +0000142121 00000 n +0000142165 00000 n +0000142209 00000 n +0000142253 00000 n +0000142297 00000 n +0000142341 00000 n +0000142385 00000 n +0000163384 00000 n +0000163752 00000 n +0000163796 00000 n +0000164119 00000 n +0000164490 00000 n +0000164534 00000 n +0000164709 00000 n +0000179704 00000 n +0000180072 00000 n +0000180116 00000 n +0000180160 00000 n +0000193743 00000 n +0000194124 00000 n +0000194168 00000 n +0000194212 00000 n +0000204269 00000 n +0000204624 00000 n +0000204748 00000 n +0000204874 00000 n +0000205011 00000 n +0000205149 00000 n +0000205267 00000 n +0000205386 00000 n +0000205509 00000 n +0000205634 00000 n +0000205757 00000 n +0000205882 00000 n +0000206033 00000 n +0000206186 00000 n +0000206301 00000 n +0000206419 00000 n +0000206545 00000 n +0000206672 00000 n +0000206793 00000 n +0000206916 00000 n +0000207036 00000 n +0000207157 00000 n +0000207275 00000 n +0000207395 00000 n +0000207515 00000 n +0000207637 00000 n +0000207754 00000 n +0000207873 00000 n +0000207998 00000 n +0000208124 00000 n +0000208243 00000 n +0000208363 00000 n +0000208481 00000 n +0000208601 00000 n +0000208719 00000 n +0000208839 00000 n +0000208956 00000 n +0000209075 00000 n +0000209199 00000 n +0000209324 00000 n +0000209442 00000 n +0000209562 00000 n +0000209684 00000 n +0000209807 00000 n +0000209885 00000 n +0000210022 00000 n +0000210214 00000 n +0000210430 00000 n +0000210723 00000 n +0000210873 00000 n +0000211061 00000 n +0000211249 00000 n +0000211543 00000 n +0000211757 00000 n +0000211968 00000 n +0000212142 00000 n +0000212322 00000 n +0000212498 00000 n +0000212678 00000 n +0000212832 00000 n +0000213035 00000 n +0000213193 00000 n +0000213365 00000 n +0000213537 00000 n +0000213705 00000 n +0000213883 00000 n +0000214086 00000 n +0000214234 00000 n +0000214432 00000 n +0000214703 00000 n +0000214974 00000 n +0000225630 00000 n +0000225846 00000 n +0000227209 00000 n +0000228126 00000 n +0000236830 00000 n +0000237051 00000 n +0000238414 00000 n +0000239329 00000 n +0000244618 00000 n +0000244833 00000 n +0000246196 00000 n +0000247111 00000 n +0000251047 00000 n +0000251263 00000 n +0000251586 00000 n +0000252502 00000 n +0000256639 00000 n +0000256865 00000 n +0000258228 00000 n trailer -<< /Size 155 +<< /Size 167 /Root 2 0 R /Info 1 0 R >> startxref -230988 +259143 %%EOF diff --git a/doc/sections/debug.adoc b/doc/sections/debug.adoc new file mode 100644 index 0000000..830bf93 --- /dev/null +++ b/doc/sections/debug.adoc @@ -0,0 +1,52 @@ +== Debug + +Currently the plan is for Hazard3, with its associated debug module (DM), to support the following: + +* Run/halt/reset control as required +* Abstract GPR access as required +* Program buffer: 2 words plus `impebreak` +* Automatic program buffer execution triggered by abstract GPR access (`abstractauto`) +* Some minimum useful trigger unit -- likely just breakpoints, no watchpoints + +The core itself will implement the following, enabling the DM to provide a compliant debug interface: + +* Debug mode CSRs +* Ability to enter debug mode with correct update of `dpc` etc +** Synchronously via exception, `ebreak` or trigger match +** Asynchronously via external halt request +* Ability to exit debug mode to M mode +* Address query/match interface for external trigger unit +* Ability to inject words into the instruction prefetch queue when the processor is halted +* Ability to suppress exception entry when executing instructions in debug mode, and provide an external signal to indicate the exception took place +* A read/write data bus which allows the DM to intercept core CSR accesses + +The DM implements abstract GPR access by injecting a dummy CSR access instruction, and manipulating the CSR port to get data in/out of the core. A `csrr` is used to write to a core register, and a `csrw` to read from a core register. By injecting a `csrrw`, the DM can _swap_ a GPR with one of its own internal registers, though this is not exposed through the abstract GPR access command. + +The debugger implements memory and CSR access using the Program Buffer, which uses the same instruction injection interface used by the DM to implement abstract GPR access. The `abstractauto` feature allows the DM to execute the program buffer automatically following every abstract GPR access, which can be used for e.g. autoincrementing read/write memory bursts. + +=== UART DTM + +Hazard3 defines a minimal UART Debug Transport Module, which allows the Debug Module to be accessed via a standard 8n1 asynchronous serial port. The UART DTM is always accessed by the host using a two-wire serial interface (TXD RXD) running at 1 Mbaud. The interface between the DTM and DM is an AMBA 3 APB port with a 32-bit data bus and 8-bit address bus. + +This is not intended for production systems: + +* Debug hardware should not expect a frequency reference for a UART to be present +* The UART DTM does not implement any flow control or error detection/correction + +However, it suffices for bringup and playing around on FPGA boards. The host sends a 6-byte packet: + +* Command: +** `0x00` nop, ignored, next command can follow immediately (no address or data bytes, no response) +** `0x01` read +** `0x02` write +** `0xa5` return to idle (no address or data bytes, no response) +* One address byte +* 4 data bytes (write) or 4 zero-padding bytes (read) + +The 6-byte framing can be recovered at any time by writing 6 zero-bytes, which will be interpreted as between 1 and 6 nops depending on current DTM state. + +The DTM always responds with four data bytes. For a read command this will be the data read from the given address. For a write command this will echo back the write data. + +This interface assumes the actual data transfer takes very little time compared with the UART access (typically less than one baud period). Because the host-to-DTM bandwidth is always greater than the DTM-to-host bandwidth, the host can queue up batches of commands in its transmit buffer, and this should never overrun the DTM's response channel. So, the 1 Mbaud 8n1 UART link provides 67 kB/s of half-duplex data bandwidth between host and DM, which is enough to get your system off the ground. + +Initially after power-on the DTM is in the idle state, and will ignore any commands. The host sends the magic sequence `'S', 'U', 'P', '?'` (`0x53, 0x55, 0x50, 0x3f`) to wake the DTM, and then attempts to access a read-only DM register such as `dmstatus` to make sure the link is up. The DTM can be returned to the idle at any time using the `0xa5` return-to-idle command. diff --git a/hdl/debug/hazard3_apb_async_bridge.v b/hdl/debug/hazard3_apb_async_bridge.v new file mode 100644 index 0000000..6389bb6 --- /dev/null +++ b/hdl/debug/hazard3_apb_async_bridge.v @@ -0,0 +1,192 @@ +/********************************************************************** + * DO WHAT THE FUCK YOU WANT TO AND DON'T BLAME US PUBLIC LICENSE * + * Version 3, April 2008 * + * * + * Copyright (C) 2021 Luke Wren * + * * + * Everyone is permitted to copy and distribute verbatim or modified * + * copies of this license document and accompanying software, and * + * changing either is allowed. * + * * + * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION * + * * + * 0. You just DO WHAT THE FUCK YOU WANT TO. * + * 1. We're NOT RESPONSIBLE WHEN IT DOESN'T FUCKING WORK. * + * * + *********************************************************************/ + +// APB-to-APB asynchronous bridge for connecting DTM to DM, in case DTM is in +// a different clock domain (e.g. running directly from crystal to get a +// fixed baud reference) +// +// Note this module depends on the hazard3_sync_1bit module (a flop-chain +// synchroniser) which should be reimplemented for your FPGA/process. + +`ifndef HAZARD3_REG_KEEP_ATTRIBUTE +`define HAZARD3_REG_KEEP_ATTRIBUTE (* keep = 1'b1 *) +`endif + +module hazard3_apb_async_bridge #( + parameter W_ADDR = 8, + parameter W_DATA = 32 +) ( + // Resets assumed to be synchronised externally + input wire clk_src, + input wire rst_n_src, + + input wire clk_dst, + input wire rst_n_dst, + + // APB port from Transport Module + input wire src_psel, + input wire src_penable, + input wire src_pwrite, + input wire [W_ADDR-1:0] src_paddr, + input wire [W_DATA-1:0] src_pwdata, + output wire [W_DATA-1:0] src_prdata, + output wire src_pready, + output wire src_pslverr, + + // APB port to Debug Module + output wire dst_psel, + output wire dst_penable, + output wire dst_pwrite, + output wire [W_ADDR-1:0] dst_paddr, + output wire [W_DATA-1:0] dst_pwdata, + input wire [W_DATA-1:0] dst_prdata, + input wire dst_pready, + input wire dst_pslverr +); + +localparam N_SYNC_STAGES = 3; + +// ---------------------------------------------------------------------------- +// Clock-crossing registers + +// We're using a modified req/ack handshake: +// +// - Initially both req and ack are low +// - src asserts req high +// - dst responds with ack high and begins transfer +// - src deasserts req once it sees ack low +// - dst deasserts ack once: +// - transfer is complete *and* +// - dst sees req deasserted +// - Once src sees ack low, a new transfer can begin. +// +// A NRZI toggle handshake might be more appropriate, but can cause spurious +// bus accesses when only one side of the link is reset. + +`HAZARD3_REG_KEEP_ATTRIBUTE reg src_req; +wire dst_req; + +`HAZARD3_REG_KEEP_ATTRIBUTE reg dst_ack; +wire src_ack; + +`HAZARD3_REG_KEEP_ATTRIBUTE reg [W_ADDR + W_DATA + 1 -1:0] src_paddr_pwdata_pwrite; +`HAZARD3_REG_KEEP_ATTRIBUTE reg [W_ADDR + W_DATA + 1 -1:0] dst_paddr_pwdata_pwrite; + +`HAZARD3_REG_KEEP_ATTRIBUTE reg [W_DATA + 1 -1:0] dst_prdata_pslverr; +`HAZARD3_REG_KEEP_ATTRIBUTE reg [W_DATA + 1 -1:0] src_prdata_pslverr; + +hazard3_sync_1bit #( + .N_STAGES (N_SYNC_STAGES) +) sync_req ( + .clk (clk_dst), + .rst_n (rst_n_dst), + .i (src_req), + .o (dst_req) +); + +hazard3_sync_1bit #( + .N_STAGES (N_SYNC_STAGES) +) sync_ack ( + .clk (clk_src), + .rst_n (rst_n_src), + .i (dst_ack), + .o (src_ack) +); + +// ---------------------------------------------------------------------------- +// src state machine + +reg src_waiting_for_downstream; +reg src_pready_r; + +always @ (posedge clk_src or negedge rst_n_src) begin + if (!rst_n_src) begin + src_req <= 1'b0; + src_waiting_for_downstream <= 1'b0; + src_paddr_pwdata_pwrite <= {W_ADDR + W_DATA + 1{1'b0}}; + src_prdata_pslverr <= {W_DATA + 1{1'b0}}; + src_pready_r <= 1'b1; + end else if (src_waiting_for_downstream) begin + if (src_req && src_ack) begin + // Request was acknowledged, so deassert. + src_req <= 1'b0; + end else if (!(src_req || src_ack)) begin + // Downstream transfer has finished, data is valid. + src_pready_r <= 1'b1; + src_waiting_for_downstream <= 1'b0; + // Note this assignment is cross-domain (but data has been stable + // for duration of ack synchronisation delay): + src_prdata_pslverr <= dst_prdata_pslverr; + end + end else begin + // paddr, pwdata and pwrite are all valid during the setup phase, and + // APB defines the setup phase to always last one cycle and proceed + // to access phase. So, we can ignore penable, and pready is ignored. + if (src_psel) begin + src_pready_r <= 1'b0; + src_req <= 1'b1; + src_paddr_pwdata_pwrite <= {src_paddr, src_pwdata, src_pwrite}; + src_waiting_for_downstream <= 1'b1; + end + end +end + +assign {src_prdata, src_pslverr} = src_prdata_pslverr; +assign src_pready = src_pready_r; + +// ---------------------------------------------------------------------------- +// dst state machine + +wire dst_bus_finish = dst_penable && dst_pready; + +always @ (posedge clk_dst or negedge rst_n_dst) begin + if (!rst_n_dst) begin + dst_ack <= 1'b0; + end else if (dst_req) begin + dst_ack <= 1'b1; + end else if (!dst_req && dst_penable && dst_pready) begin + dst_ack <= 1'b0; + end +end + +reg dst_psel_r; +reg dst_penable_r; + +always @ (posedge clk_dst or negedge rst_n_dst) begin + if (!rst_n_dst) begin + dst_psel_r <= 1'b0; + dst_penable_r <= 1'b0; + dst_prdata_pslverr <= {W_DATA + 1{1'b0}}; + end else if (dst_req && !dst_ack) begin + dst_psel_r <= 1'b1; + // Note this assignment is cross-domain. The src register has been + // stable for the duration of the req sync delay. + dst_paddr_pwdata_pwrite <= src_paddr_pwdata_pwrite; + end else if (dst_psel_r && !dst_penable_r) begin + dst_penable_r <= 1'b1; + end else if (dst_bus_finish) begin + dst_psel_r <= 1'b0; + dst_penable_r <= 1'b0; + dst_prdata_pslverr <= {dst_prdata, dst_pslverr}; + end +end + +assign dst_psel = dst_psel_r; +assign dst_penable = dst_penable_r; +assign {dst_paddr, dst_pwdata, dst_pwrite} = dst_paddr_pwdata_pwrite; + +endmodule diff --git a/hdl/debug/hazard3_sync_1bit.v b/hdl/debug/hazard3_sync_1bit.v new file mode 100644 index 0000000..08bfc12 --- /dev/null +++ b/hdl/debug/hazard3_sync_1bit.v @@ -0,0 +1,45 @@ +/********************************************************************** + * DO WHAT THE FUCK YOU WANT TO AND DON'T BLAME US PUBLIC LICENSE * + * Version 3, April 2008 * + * * + * Copyright (C) 2021 Luke Wren * + * * + * Everyone is permitted to copy and distribute verbatim or modified * + * copies of this license document and accompanying software, and * + * changing either is allowed. * + * * + * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION * + * * + * 0. You just DO WHAT THE FUCK YOU WANT TO. * + * 1. We're NOT RESPONSIBLE WHEN IT DOESN'T FUCKING WORK. * + * * + *********************************************************************/ + +// A 2FF synchronizer to mitigate metastabilities. This is a baseline +// implementation -- you should replace it with cells specific to your +// FPGA/process + +`ifndef HAZARD3_REG_KEEP_ATTRIBUTE +`define HAZARD3_REG_KEEP_ATTRIBUTE (* keep = 1'b1 *) +`endif + +module hazard3_sync_1bit #( + parameter N_STAGES = 2 // Should be >=2 +) ( + input wire clk, + input wire rst_n, + input wire i, + output wire o +); + +`HAZARD3_REG_KEEP_ATTRIBUTE reg [N_STAGES-1:0] sync_flops; + +always @ (posedge clk or negedge rst_n) + if (!rst_n) + sync_flops <= {N_STAGES{1'b0}}; + else + sync_flops <= {sync_flops[N_STAGES-2:0], i}; + +assign o = sync_flops[N_STAGES-1]; + +endmodule diff --git a/hdl/debug/hazard3_uart_dtm.f b/hdl/debug/hazard3_uart_dtm.f new file mode 100644 index 0000000..da3f951 --- /dev/null +++ b/hdl/debug/hazard3_uart_dtm.f @@ -0,0 +1,6 @@ +file hazard3_uart_dtm.v +file hazard3_uart_dtm_fifo.v +file hazard3_sync_1bit.v + +# Optional clock crossing for DTM-to-DM bus: +file hazard3_apb_async_bridge.v diff --git a/hdl/debug/hazard3_uart_dtm.v b/hdl/debug/hazard3_uart_dtm.v new file mode 100644 index 0000000..5e41e30 --- /dev/null +++ b/hdl/debug/hazard3_uart_dtm.v @@ -0,0 +1,317 @@ +/********************************************************************** + * DO WHAT THE FUCK YOU WANT TO AND DON'T BLAME US PUBLIC LICENSE * + * Version 3, April 2008 * + * * + * Copyright (C) 2021 Luke Wren * + * * + * Everyone is permitted to copy and distribute verbatim or modified * + * copies of this license document and accompanying software, and * + * changing either is allowed. * + * * + * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION * + * * + * 0. You just DO WHAT THE FUCK YOU WANT TO. * + * 1. We're NOT RESPONSIBLE WHEN IT DOESN'T FUCKING WORK. * + * * + *********************************************************************/ + +// UART Debug Transport Module: connect an external two-wire 1 Mbaud UART +// interface to an APB Debug Module port. +// +// This is not suitable for production systems (it's a UART...) but is a +// simple way to get your FPGA board up and running. + +module hazard3_uart_dtm #( + // Expected to run at 1 Mbaud from some fixed reference frequency. + parameter BAUD_CLKDIV = 12, + parameter W_BAUDCTR = $clog2(BAUD_CLKDIV) // do not modify +) ( + input wire clk, + input wire rst_n, + + // External UART interface + input wire rx, + output wire tx, + + // APB port to Debug Module + output wire psel, + output wire penable, + output wire pwrite, + output wire [7:0] paddr, + output wire [31:0] pwdata, + input wire [31:0] prdata, + input wire pready, + input wire pslverr +); + +// ---------------------------------------------------------------------------- +// Serial interface + +wire [7:0] tx_wdata; +wire tx_wvld; +wire tx_wrdy; +wire [7:0] tx_rdata; +wire tx_rvld; +wire tx_rrdy = 1'b1; + +wire [7:0] rx_wdata; +wire rx_wvld; +wire rx_wrdy; +wire [7:0] rx_rdata; +wire rx_rvld; +wire rx_rrdy; + +hazard3_uart_dtm_fifo #( + .WIDTH(8), + .LOG_DEPTH(2) +) tx_fifo ( + .clk (clk), + .rst_n (rst_n), + .wdata (tx_wdata), + .wvld (tx_wvld), + .wrdy (tx_wrdy), + .rdata (tx_rdata), + .rvld (tx_rvld), + .rrdy (tx_rrdy) +); + +hazard3_uart_dtm_fifo #( + .WIDTH(8), + .LOG_DEPTH(2) +) rx_fifo ( + .clk (clk), + .rst_n (rst_n), + .wdata (rx_wdata), + .wvld (rx_wvld), + .wrdy (rx_wrdy), + .rdata (rx_rdata), + .rvld (rx_rvld), + .rrdy (rx_rrdy) +); + + +reg [W_BAUDCTR-1:0] tx_baudctr; +reg [9:0] tx_shiftreg; +reg [3:0] tx_shiftctr; + +assign tx_rrdy = ~|tx_shiftctr; +assign tx = tx_shiftreg[0]; + +always @ (posedge clk or negedge rst_n) begin + if (!rst_n) begin + tx_baudctr <= {W_BAUDCTR{1'b0}}; + tx_shiftreg <= 10'h3ff; + tx_shiftctr <= 4'd0; + end else if (tx_rvld && tx_rrdy) begin + tx_baudctr <= BAUD_CLKDIV - 1; + tx_shiftreg <= {1'b1, tx_rdata, 1'b0}; + tx_shiftctr <= 4'd10; + end else if (|tx_baudctr) begin + tx_baudctr <= tx_baudctr - 1'b1; + end else if (|tx_shiftctr) begin + tx_baudctr <= BAUD_CLKDIV - 1; + tx_shiftreg <= {1'b1, tx_shiftreg[9:1]}; + tx_shiftctr <= tx_shiftctr - 1'b1; + end +end + +wire rx_sync; +hazard3_sync_1bit #( + .N_STAGES (2) +) sync_req ( + .clk (clk), + .rst_n (rst_n), + .i (rx), + .o (rx_sync) +); + +reg [W_BAUDCTR-1:0] rx_baudctr; +reg [7:0] rx_shiftreg; +reg [3:0] rx_shiftctr; + +// Only push if the frame ends with a valid stop bit: +assign rx_wvld = ~|rx_baudctr && rx_shiftctr == 4'd1 && rx_sync; +assign rx_wdata = rx_shiftreg; + +always @ (posedge clk or negedge rst_n) begin + if (!rst_n) begin + rx_baudctr <= {W_BAUDCTR{1'b0}}; + rx_shiftreg <= 8'h00; + rx_shiftctr <= 4'd0; + end else if (~|rx_shiftctr && ~|rx_baudctr && !rx_sync) begin + rx_shiftctr <= 4'd10; + // Start with half-period to get sampling alignment + rx_baudctr <= (BAUD_CLKDIV - 1) / 2; + end else if (|rx_baudctr) begin + rx_baudctr <= rx_baudctr - 1'b1; + end else if (|rx_shiftctr) begin + rx_baudctr <= BAUD_CLKDIV - 1; + rx_shiftctr <= rx_shiftctr - 1'b1; + if (rx_shiftctr != 4'd1 && rx_shiftctr != 4'd10) + rx_shiftreg <= {rx_sync, rx_shiftreg[7:1]}; + end +end + +// ---------------------------------------------------------------------------- +// Command state machine + +localparam W_STATE = 5; + +localparam [W_STATE-1:0] S_IDLE0 = 5'd0; +localparam [W_STATE-1:0] S_IDLE1 = 5'd1; +localparam [W_STATE-1:0] S_IDLE2 = 5'd2; +localparam [W_STATE-1:0] S_IDLE3 = 5'd3; + +localparam [W_STATE-1:0] S_CMD = 5'd4; + +localparam [W_STATE-1:0] S_WADDR = 5'd5; +localparam [W_STATE-1:0] S_WDATA0 = 5'd6; +localparam [W_STATE-1:0] S_WDATA1 = 5'd7; +localparam [W_STATE-1:0] S_WDATA2 = 5'd8; +localparam [W_STATE-1:0] S_WDATA3 = 5'd9; +localparam [W_STATE-1:0] S_WSETUP = 5'd10; +localparam [W_STATE-1:0] S_WACCESS = 5'd11; + +localparam [W_STATE-1:0] S_RADDR = 5'd12; +localparam [W_STATE-1:0] S_RSETUP = 5'd13; +localparam [W_STATE-1:0] S_RACCESS = 5'd14; +localparam [W_STATE-1:0] S_RDATA0 = 5'd15; +localparam [W_STATE-1:0] S_RDATA1 = 5'd16; +localparam [W_STATE-1:0] S_RDATA2 = 5'd17; +localparam [W_STATE-1:0] S_RDATA3 = 5'd18; + +localparam CMD_NOP = 8'h00; +localparam CMD_READ = 8'h01; +localparam CMD_WRITE = 8'h02; +localparam CMD_RETURN_TO_IDLE = 8'ha5; + +reg [W_STATE-1:0] state; +reg [7:0] dm_addr; +reg [31:0] dm_data; + + + +always @ (posedge clk or negedge rst_n) begin + if (!rst_n) begin + state <= S_IDLE0; + dm_addr <= 8'h0; + dm_data <= 32'h0; + end else case (state) + S_IDLE0: if (rx_rvld) state <= rx_rdata == "S" ? S_IDLE1 : S_IDLE0; + S_IDLE1: if (rx_rvld) state <= rx_rdata == "U" ? S_IDLE2 : S_IDLE0; + S_IDLE2: if (rx_rvld) state <= rx_rdata == "P" ? S_IDLE3 : S_IDLE0; + S_IDLE3: if (rx_rvld) state <= rx_rdata == "?" ? S_CMD : S_IDLE0; + S_CMD: if (rx_rvld) begin + if (rx_rdata == CMD_READ) + state <= S_RADDR; + else if (rx_rdata == CMD_WRITE) + state <= S_WADDR; + else if (rx_rdata == CMD_RETURN_TO_IDLE) + state <= S_IDLE0; + // NOP or invalid leave DTM in command state. + end + + S_WADDR: if (rx_rvld) begin + state <= S_WDATA0; + dm_addr <= rx_rdata; + end + S_WDATA0: if (rx_rvld) begin + state <= S_WDATA1; + dm_data <= {rx_rdata, dm_data[31:8]}; + end + S_WDATA1: if (rx_rvld) begin + state <= S_WDATA2; + dm_data <= {rx_rdata, dm_data[31:8]}; + end + S_WDATA2: if (rx_rvld) begin + state <= S_WDATA3; + dm_data <= {rx_rdata, dm_data[31:8]}; + end + S_WDATA3: if (rx_rvld) begin + state <= S_WSETUP; + dm_data <= {rx_rdata, dm_data[31:8]}; + end + S_WSETUP: state <= S_WACCESS; + S_WACCESS: if (pready) state <= S_CMD; + + S_RADDR: if (rx_rvld) begin + state <= S_RSETUP; + dm_addr <= rx_rdata; + end + S_RSETUP: state <= S_RACCESS; + S_RACCESS: if (pready) begin + dm_data <= prdata; + state <= S_RDATA0; + end + S_RDATA0: if (tx_wrdy) begin + dm_data <= {rx_rdata, dm_data[31:8]}; + state <= S_RDATA1; + end + S_RDATA1: if (tx_wrdy) begin + dm_data <= {rx_rdata, dm_data[31:8]}; + state <= S_RDATA2; + end + S_RDATA2: if (tx_wrdy) begin + dm_data <= {rx_rdata, dm_data[31:8]}; + state <= S_RDATA3; + end + S_RDATA3: if (tx_wrdy) begin + dm_data <= {rx_rdata, dm_data[31:8]}; + state <= S_CMD; + end + + endcase +end + +// ---------------------------------------------------------------------------- +// Bus & FIFO hookup + +wire state_is_idle = + state == S_IDLE0 || + state == S_IDLE1 || + state == S_IDLE2 || + state == S_IDLE3; + +wire state_is_wdata = + state == S_WDATA0 || + state == S_WDATA1 || + state == S_WDATA2 || + state == S_WDATA3; + +wire state_is_rdata = + state == S_RDATA0 || + state == S_RDATA1 || + state == S_RDATA2 || + state == S_RDATA3; + +// Note we don't consume the read padding bytes during the read data phase -- +// these are actually interpreted as NOPs preceding the next command. +// (They are still important for bus pacing though.) +assign rx_rrdy = + state_is_idle || + state == S_CMD || + state == S_WADDR || + state == S_RADDR || + state_is_wdata; + +assign tx_wdata = state_is_wdata ? rx_rdata : dm_data[7:0]; +assign tx_wvld = (state_is_wdata && state_is_wdata) || state_is_rdata; + +assign psel = + state == S_WSETUP || + state == S_WACCESS || + state == S_RSETUP || + state == S_RACCESS; + +assign penable = + state == S_WACCESS || + state == S_RACCESS; + +assign pwrite = + state == S_WSETUP || + state == S_WACCESS; + +assign paddr = dm_addr; +assign pwdata = dm_data; + +endmodule diff --git a/hdl/debug/hazard3_uart_dtm_fifo.v b/hdl/debug/hazard3_uart_dtm_fifo.v new file mode 100644 index 0000000..e5517da --- /dev/null +++ b/hdl/debug/hazard3_uart_dtm_fifo.v @@ -0,0 +1,61 @@ +/********************************************************************** + * DO WHAT THE FUCK YOU WANT TO AND DON'T BLAME US PUBLIC LICENSE * + * Version 3, April 2008 * + * * + * Copyright (C) 2021 Luke Wren * + * * + * Everyone is permitted to copy and distribute verbatim or modified * + * copies of this license document and accompanying software, and * + * changing either is allowed. * + * * + * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION * + * * + * 0. You just DO WHAT THE FUCK YOU WANT TO. * + * 1. We're NOT RESPONSIBLE WHEN IT DOESN'T FUCKING WORK. * + * * + *********************************************************************/ + +// Nothing to see here, just a sync FIFO + +module hazard3_uart_dtm_fifo #( + parameter WIDTH = 8, + parameter LOG_DEPTH = 2 +) ( + input wire clk, + input wire rst_n, + + input wire [WIDTH-1:0] wdata, + input wire wvld, + output wire wrdy, + + output wire [WIDTH-1:0] rdata, + output wire rvld, + input wire rrdy +); + +reg [WIDTH-1:0] fifo_mem [0:(1 << LOG_DEPTH) - 1]; + +reg [LOG_DEPTH:0] wptr; +reg [LOG_DEPTH:0] rptr; + +assign wrdy = (rptr ^ {1'b1, {LOG_DEPTH{1'b0}}}) != wptr; +assign rvld = rptr != wptr; + +always @ (posedge clk or negedge rst_n) begin + if (!rst_n) begin + wptr <= {LOG_DEPTH+1{1'b0}}; + rptr <= {LOG_DEPTH+1{1'b0}}; + end else begin + if (wvld && wrdy) begin + fifo_mem[wptr[LOG_DEPTH-1:0]] <= wdata; + wptr <= wptr + 1'b1; + end + if (rvld && rrdy) begin + rptr <= rptr + 1'b1; + end + end +end + +assign rdata = fifo_mem[rptr[LOG_DEPTH-1:0]]; + +endmodule diff --git a/hdl/hazard3_config.vh b/hdl/hazard3_config.vh index 44dc685..d216af9 100644 --- a/hdl/hazard3_config.vh +++ b/hdl/hazard3_config.vh @@ -55,7 +55,7 @@ parameter NUM_IRQ = 32, // ID registers // JEDEC JEP106-compliant vendor ID, can be left at 0 if "not implemented or -// that this is a non-commercial implementation" (RISC-V spec). +// [...] this is a non-commercial implementation" (RISC-V spec). // 31:7 is continuation code count, 6:0 is ID. Parity bit is not stored. parameter MVENDORID_VAL = 32'h0,