Avatar

ATMEGA328P INTERNAL COMPARATOR

Sep 27th, 2020 | by: ELECTRONOOBS
Views 248
Maybe not a lot of you guys know that the ATmega328 microcontroller has a programmable internal comparator. This could have the positive input connected to pin D6 and the negative inputs connected to any of the inputs A0 to A7 of the Arduino. The output of the comparator could create an interruption and that is very usefull. I've used this comparator for my Arduino ESC project in order to simplify the circuit and code to be faster.

See Video



Part 1.1 - Comparator Blocks


Below we have the blocks diagram from the ATmega328 datasheet. Let me explain it. In the middle there is the programmable comparator. Around it, each part could be configured with some bits taht we will go through one by one. Changing the value of these bits, we can put the comaprator into falling or rising mode detection, to be connected to D6 or not, ot to A0 to A7 and we could read the output value or run an interruption. The bits we need to change are the ACBG, the ACME, ADEN and those two bits ACIS1 and ACIS0. So let's see.

Part 2.1 - Bit ACI from ACSR Register


Ok, let's go one by one. First bit you need to change is bit 4 from the ACSR register, which os the bit ACI as you can see below in the table below from this datasheet If we set this bit to 1, the comparator output interrupt is actrive and we can set the rising or falling edge mode woith bits ACIS0 and ACIS1. Som first thing, to enable the interruption and the comparator we set bit ACI to 1 as below. Remember taht in Arduino, when working with registers, we put "0" with an AND (&) operation and we place "1" with an OR (|) opeartion. See code below.
003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e00410043005300520020007c003d0020004200300030003000310030003000300030003b002000200020002000200020002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f0054006800690073002000770069006c006c00200073006500740020006200690074002000340020006f0066002000740068006500200041004300530052002000720065006700690073007400650072002c00200073006f00200062006900740020004100430049002c00200074006f00200062006500200065007100750061006c00200074006f0020002200310022003c002f007300700061006e003e

Part 2.2 - Bit ACBG from ACSR Register


As you can also see in the table above, bit ACBG is bit 6 from the ACSR register of 8 bits. If we read below, this bit controls the positive input of the comparator. If the bit is set to 1, the positive input of the comparator is connected to a constant analog value called bandgap reference as you can see in the block diagram above. When the bit is cleared, so equal to 0, the positive input is connected to AIN0 which is connected to pin D6 of the Arduino. For today example, taht's what we want. So we need to set bit ACBG to 0 so we do ACSR &= B11011111; in order to put bit 6 to 0. In any case, by default, this bit is already 0.
003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e0041004300530052002000260061006d0070003b003d0020004200310031003000310031003100310031003b002000200020002000200020002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f0054006800690073002000770069006c006c00200073006500740020006200690074002000360020006f0066002000740068006500200041004300530052002000720065006700690073007400650072002c00200073006f002000620069007400200041004300420047002c00200074006f00200062006500200065007100750061006c00200074006f0020002200300022003c002f007300700061006e003e

Part 2.3 - Bit ADEN from ADCSRA Register


Ok, if you check the block diagram above, with bits ADEN and ACME we can enable and select the negative input of the comparator. This input could be connected to inputs A0 to A7 of the Arduino. But for that, we need to put first ADEN bit to 0 in order to turn off the ADC module. You see, if you use the A0 to A7 pins as inputs for the comparator you can't use them as ADC inputs as well, so we turn off the ADC module. So we need to set bit ADEN to 0 so we do ADCSRA = (0 << ADEN); in order to put bit 7 to 0. Have in mind: We could do this only while the conversion of the comparator is made and the rest of the code set it back to 1 so we could use the ADC as well.
003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e0041004400430053005200410020003d00200028003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006e0075006d00620065007200220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c00200030002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e0030003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e00200026006c0074003b0026006c0074003b0020004100440045004e0029003b00200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002a00200053006500740020004100440045004e002000620069007400200074006f0020003000200073006f002000770065002000640069007300610062006c0065002000740068006500200041004400430020006d006f00640075006c0065002000620065006300610075007300650020000a00200020007700650020007500730065002000740068006500200061006e0061006c006f006700200069006e00700075007400730020004100300020002d0020004100370020006100730020006e006500670061007400690076006500200069006e00700075007400730020006f0066002000740068006500200063006f006d00610070007200610074006f0072002a002f003c002f007300700061006e003e

Part 2.4 - Bit ACME from ADCSRB Register


Now we need to set ACME bit to 1 in order to use the ADC multiplexer to selects the negative input to the Analog Comparator. If this bit is 1, we can use the MUX and select between inputs A0 to A7. So we need to set bit ACME to 1 so we do ADCSRB = (1 << ACME); in order to put bit 6 to 1.
003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e0041004400430053005200420020003d00200028003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006e0075006d00620065007200220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c00200030002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e0031003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e00200026006c0074003b0026006c0074003b002000410043004d00450029003b00200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00200045006e00610062006c006500200074006800650020004d00550058002000730065006c006500630074006f007200200066006f00720020006e006500670061007400690076006500200069006e0070007500740020006f006600200063006f006d00700061007200610074006f0072003c002f007300700061006e003e

Part 2.5 - ADMUX bits


As you can see the table below, with ADEN set to 0 and ACME set to 1, by giving values to bits 2, 1 and 0 for the MUX value, we can select which of the inputs A0 to A7 will be connected to the negative input of the comparator. Let's say we want A0 to be connected. So we do ADMUX = 0. If you want A5 for example, it would be ADMUX = 5;
003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e00410044004d005500580020003d0020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006e0075006d00620065007200220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c00200030002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e0030003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e003b0020002000200020002000200020002000200020002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f002000530065006c00650063007400200041003000200061007300200063006f006d00700061007200610074006f00720020006e006500670061007400690076006500200069006e007000750074003c002f007300700061006e003e

Part 2.6 - Bits ACIS 0 and 1


Remember from above that with bits ACIS0 and ACIS1 we select if the detection is made on rising edge or falling edge. These bits are bit 0 and 1 from the same ACSR register as before. So, as you can see below with "10" we set the mode on falling edge and with "11" we set it to rising edge. So, for example, we need to set bits ACSI 1 and 0 to be "1" and "1" so we do ACSR |= B00000011; in order to put bits 0 and 1 to be "1" and "1".
003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e00410043005300520020007c003d0020004200300030003000300030003000310031003b0020002000200020002000200020002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00200042003000300030003000300030003100310020002d002000530065007400200069006e00740065007200720075007000740020006f006e00200072006900730069006e006700200065006400670065002a002f003c002f007300700061006e003e

Part 3.0 - ACO bit


Ok, so now everything is set for the interruption rutine. Remember taht we have D6 as positive input, we have A0 as negative input and the comparator set to rising edge as you can see in the code below. Now let's take a look on how to use the interruption routine. So, the ACSR register bit 5 is the ACO bit. As you can see below, this bit has the value of the comparatour output. So just iamgine this, if we are into rising mode and ACO is "0", when ACO passes to be "1", that means the comaprator detected a pulse that rised above the signal palced on the positive input. So, each time ACO changes its value, the ISR will trigger.
003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e00410043005300520020007c003d0020004200300030003000310030003000300030003b002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00200043006c00650061007200200066006c0061006700200063006f006d00700061007200610074006f007200200069006e007400650072007200750070007400200028004100430049002000620069007400200074006f002000310029003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a002000200041004300530052002000260061006d0070003b003d0020004200310031003000310031003100310031003b002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f002000530065007400200041004300420047002c00200074006f00200062006500200065007100750061006c00200074006f0020002200300022003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a002000200041004400430053005200410020003d00200028003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006e0075006d00620065007200220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c00200030002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e0030003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e00200026006c0074003b0026006c0074003b0020004100440045004e0029003b002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f002000440069007300610062006c0065002000740068006500200041004400430020006d006f00640075006c006500200062006500630061007500730065003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a002000200041004400430053005200420020003d00200028003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006e0075006d00620065007200220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c00200030002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e0031003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e00200026006c0074003b0026006c0074003b002000410043004d00450029003b002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00200045006e00610062006c006500200074006800650020004d00550058002000730065006c006500630074006f007200200066006f00720020006e006500670061007400690076006500200069006e0070007500740020006f006600200063006f006d00700061007200610074006f0072003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a0020002000410044004d005500580020003d0020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006e0075006d00620065007200220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c00200030002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e0030003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e003b00200020002000200020002000200020002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f002000530065006c00650063007400200041003000200061007300200063006f006d00700061007200610074006f00720020006e006500670061007400690076006500200069006e00700075007400200020003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a0020002000410043005300520020007c003d0020004200300030003000300030003000310031003b002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f002000530065007400200069006e00740065007200720075007000740020006f006e00200072006900730069006e006700200065006400670065002a002f003c002f007300700061006e003e

Part 3.1 - ISR vector


Remember that each time the comparator output changes from 1 to 0 or from 0 to 1, the ACO bit will also change and the ISR will trigger. So, the ISR (ANALOG_COMP_vect) loop will run. Now look at the code below. When we enter the interruption, first we check if we are into rising or falling mode by looking at the first 2 bits of the ACSR register, bits ACIS1 and ACIS0. If we are into falling mode and ACO is 0, taht means the signal changed from HIGH to LOW. If we are in to rising mode and ACO is 1, the signal changed from LOW to HIGH. To check the ACO value, we check bit 5 of the ACSR register with an AND (&) operation. Remember to change the mode for rising or falling for the next loop.
003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e0020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00200049006e00740065007200720075006d007000740069006f006e00200076006500630074006f007200200066006f0072002000740068006500200041006e0061006c006f006700200063006f006d00700061007200610074006f0072003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a004900530052002000280041004e0041004c004f0047005f0043004f004d0050005f007600650063007400290020007b002000200020002000200020000a00200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006200750069006c0074005f0069006e00220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a0020007200670062002800350037002c0020003100310035002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e00690066003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e00280041004300530052002000260061006d0070003b002000420030003000300030003000300031003000290020002000200020002000200020002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00490066002000770065002000610072006500200069006e0074006f002000660061006c006c0069006e006700200065006400670065003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a00200020007b000a0020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006200750069006c0074005f0069006e00220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a0020007200670062002800350037002c0020003100310035002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e00690066003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e0028002100280041004300530052002000260061006d0070003b0020004200300030003100300030003000300030002900290020007b002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00490066002000410043004f00200069007300200030002000280077006500200068006100760065002000740068006100740020002100200066006f007200200069006e007600650072007300650029003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00410020006300680061006e00670065002000660072006f006d0020004800490047004800200074006f0020004c004f00570020007700610073002000640065007400650063007400650064003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f0044006f0020007700680061007400200079006f0075002000770061006e007400200074006f00200064006f00200068006500720065002e002e002e003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a00090020002000410043005300520020007c003d0020004200300030003000300030003000310031003b002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f002000520065006d0065006d00620065007200200074006f007000200073006500740020006200610063006b002000740068006500200069006e00740065007200720075007000740020006f006e00200072006900730069006e00670020006500640067006500200066006f00720020006e0065007800740020004900530052003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a0020002000200020007d000a00200020007d000a00200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006200750069006c0074005f0069006e00220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a0020007200670062002800350037002c0020003100310035002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e0065006c00730065003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f0065006c00730065002c002000690066002000770065002000610072006500200069006e0074006f00200072006900730069006e006700200065006400670065003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a00200020007b000a0020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006200750069006c0074005f0069006e00220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a0020007200670062002800350037002c0020003100310035002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e00690066003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e002800280041004300530052002000260061006d0070003b002000420030003000310030003000300030003000290029007b002000200020002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00490066002000410043004f002000690073002000310020003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00410020006300680061006e00670065002000660072006f006d0020004c004f005700200074006f002000480049004700480020007700610073002000640065007400650063007400650064003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f0044006f0020007700680061007400200079006f0075002000770061006e007400200074006f00200064006f00200068006500720065002e002e002e003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a00090020002000410043005300520020007c003d0020004200300030003000300030003000310030003b002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f002000520065006d0065006d00620065007200200074006f007000200073006500740020006200610063006b002000740068006500200069006e00740065007200720075007000740020006f006e002000660061006c006c0069006e00670020006500640067006500200066006f00720020006e0065007800740020004900530052003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a0020002000200020007d0020002000200020000a00200020007d00200020000a007d003c002f007300700061006e003e

Part 4 - Full code



003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006b006500790077006f0072006400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a002000720067006200280030002c0020003100350031002c00200031003500370029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e0076006f00690064003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e0020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006200750069006c0074005f0069006e00220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a0020007200670062002800350037002c0020003100310035002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e00730065007400750070003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e002800290020007b000a0020002000410043005300520020007c003d0020004200300030003000310030003000300030003b002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00200043006c00650061007200200066006c0061006700200063006f006d00700061007200610074006f007200200069006e007400650072007200750070007400200028004100430049002000620069007400200074006f002000310029003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a002000200041004300530052002000260061006d0070003b003d0020004200310031003000310031003100310031003b002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f002000530065007400200041004300420047002c00200074006f00200062006500200065007100750061006c00200074006f0020002200300022003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a002000200041004400430053005200410020003d00200028003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006e0075006d00620065007200220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c00200030002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e0030003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e002000260061006d0070003b00260061006d0070003b0020004100440045004e0029003b002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f002000440069007300610062006c0065002000740068006500200041004400430020006d006f00640075006c006500200062006500630061007500730065003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a002000200041004400430053005200420020003d00200028003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006e0075006d00620065007200220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c00200030002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e0031003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e002000260061006d0070003b00260061006d0070003b002000410043004d00450029003b002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00200045006e00610062006c006500200074006800650020004d00550058002000730065006c006500630074006f007200200066006f00720020006e006500670061007400690076006500200069006e0070007500740020006f006600200063006f006d00700061007200610074006f0072003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a0020002000410044004d005500580020003d0020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006e0075006d00620065007200220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c00200030002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e0030003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e003b00200020002000200020002000200020002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f002000530065006c00650063007400200041003000200061007300200063006f006d00700061007200610074006f00720020006e006500670061007400690076006500200069006e00700075007400200020003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a0020002000410043005300520020007c003d0020004200300030003000300030003000310031003b002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f002000530065007400200069006e00740065007200720075007000740020006f006e00200072006900730069006e006700200065006400670065002a002f003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a007d000a000a003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006b006500790077006f0072006400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a002000720067006200280030002c0020003100350031002c00200031003500370029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e0076006f00690064003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e0020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006200750069006c0074005f0069006e00220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a0020007200670062002800350037002c0020003100310035002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e006c006f006f0070003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e002800290020007b000a00200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f0044006f0020007700680061007400200079006f0075002000770061006e007400200074006f00200064006f00200069006e00200074006800650020006c006f006f0070002e002e002e00200020003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a007d000a000a003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00200049006e00740065007200720075006d007000740069006f006e00200076006500630074006f007200200066006f0072002000740068006500200041006e0061006c006f006700200063006f006d00700061007200610074006f0072003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a004900530052002000280041004e0041004c004f0047005f0043004f004d0050005f007600650063007400290020007b002000200020002000200020000a00200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006200750069006c0074005f0069006e00220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a0020007200670062002800350037002c0020003100310035002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e00690066003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e00280041004300530052002000260061006d0070003b002000420030003000310030003000300031003000290020002000200020002000200020002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00490066002000770065002000610072006500200069006e0074006f002000660061006c006c0069006e006700200065006400670065003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a00200020007b000a0020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006200750069006c0074005f0069006e00220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a0020007200670062002800350037002c0020003100310035002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e00690066003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e0028002100280041004300530052002000260061006d0070003b0020004200300030003100300030003000300030002900290020007b002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00490066002000410043004f00200069007300200030002000280077006500200068006100760065002000740068006100740020002100200066006f007200200069006e007600650072007300650029003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00410020006300680061006e00670065002000660072006f006d0020004800490047004800200074006f0020004c004f00570020007700610073002000640065007400650063007400650064003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f0044006f0020007700680061007400200079006f0075002000770061006e007400200074006f00200064006f00200068006500720065002e002e002e003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a00200020002000200020002000410043005300520020007c003d0020004200300030003000300030003000310031003b002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f002000520065006d0065006d00620065007200200074006f007000200073006500740020006200610063006b002000740068006500200069006e00740065007200720075007000740020006f006e00200072006900730069006e00670020006500640067006500200066006f00720020006e0065007800740020004900530052003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a0020002000200020007d000a00200020007d000a00200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006200750069006c0074005f0069006e00220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a0020007200670062002800350037002c0020003100310035002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e0065006c00730065003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f0065006c00730065002c002000690066002000770065002000610072006500200069006e0074006f00200072006900730069006e006700200065006400670065003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a00200020007b000a0020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d006200750069006c0074005f0069006e00220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a0020007200670062002800350037002c0020003100310035002c002000300029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e00690066003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e002800280041004300530052002000260061006d0070003b002000420030003000310030003000300030003000290029007b002000200020002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00490066002000410043004f002000690073002000310020003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f00410020006300680061006e00670065002000660072006f006d0020004c004f005700200074006f002000480049004700480020007700610073002000640065007400650063007400650064003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f0044006f0020007700680061007400200079006f0075002000770061006e007400200074006f00200064006f00200068006500720065002e002e002e003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a00200020002000200020002000410043005300520020007c003d0020004200300030003000300030003000310030003b002000200020002000200020003c002f007300700061006e003e003c007300700061006e00200063006c006100730073003d00220068006c006a0073002d0063006f006d006d0065006e007400220020007300740079006c0065003d00220062006f0078002d00730069007a0069006e0067003a00200062006f0072006400650072002d0062006f0078003b00200063006f006c006f0072003a00200072006700620028003100330036002c0020003100330036002c00200031003300360029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0022003e002f002f002000520065006d0065006d00620065007200200074006f007000200073006500740020006200610063006b002000740068006500200069006e00740065007200720075007000740020006f006e002000660061006c006c0069006e00670020006500640067006500200066006f00720020006e0065007800740020004900530052003c002f007300700061006e003e003c007300700061006e0020007300740079006c0065003d00220063006f006c006f0072003a0020007200670062002800360038002c002000360038002c0020003600380029003b00200066006f006e0074002d00660061006d0069006c0079003a0020004d0065006e006c006f002c0020004d006f006e00610063006f002c00200043006f006e0073006f006c00610073002c0020002600710075006f0074003b0043006f007500720069006500720020004e00650077002600710075006f0074003b002c0020006d006f006e006f00730070006100630065003b00200066006f006e0074002d00730069007a0065003a00200031003300700078003b00200066006f006e0074002d007700650069006700680074003a0020003400300030003b002000770068006900740065002d00730070006100630065003a0020007000720065002d0077007200610070003b0020006200610063006b00670072006f0075006e0064002d0063006f006c006f0072003a00200072006700620028003200340030002c0020003200340030002c00200032003400300029003b0022003e000a0020002000200020007d0020002000200020000a00200020007d00200020000a007d003c002f007300700061006e003e

Part 5 - See the video


So guys, that's how you set and use the internal comparator. In my project of the Arduino ESC, I've used this comparator. Remember, the ESC has 3 phases so I needed inputs A0, A1 and A2 as negative input for the comparator. So, during the code; I've used the MUX bits to change between inputs and ACIS bits to change between rising and falling. Se the video below.

I hope that you like this tutorial. If you consider supporting my work, buy my PCBs on my shop, or maybe consider supporting me on PATREON or if you want, make a PayPal donation. Thank you very much.

0 Comments

Login or Sign Up to post comments on this tutorial.