Bc2000 (for the BCF2000 & BCR2000) group photo

Yahoo Groups archive

Bc2000 (for the BCF2000 & BCR2000)

Index last updated: 2026-04-28 23:16 UTC

Thread

NRPN confusion

NRPN confusion

2013-11-12 by <absent@...>

NRPN programing is confusing me.

I'm using a Novation A-Station, which has several critical controls addressable only via NRPN.

My misunderstanding is that you would select first a CC parameter number containing the packed parameter, and then somewhere magically select the actual parameter you wanted to control.

Imagine my surprise when all I saw was "parameter number" and the many thousands of values.
After hours of poking around the search engines, I am asking for help. I am totally confused. Can you only use *one* NRPN? OK, some kind of hex conversion happens at some point- I get that.

Thanks.














This has probably been covered, but searching group messages seems to no longer work on any of my computers... thanks, Yahoo.

RE: NRPN confusion

2013-11-13 by <rpcfender@...>

RPN (registered parameter numbers) and NRPN are ways to increase the number of Continuous Controllers Midi can use.
It works the same a Bank selection for Patches

NRPN
CC98 LSB
CC99 MSB

in hex on channel 1

B0 62 LSB
B0 63 MSB

As MSB (most significant byte) and LSB can be between 0 and 127 combined it becomes a 14 bit number from 0 to 16,383 controllers

So once you have said what controller you are talking about, you send its value

For 0 to 127 type controllers
B0 06 value
or
B0 26 value


or if your controller has 14 bit values (0 to 16,383)


B0 06 MSB

B0 26 LSB


(There is an increment and decrement as well.)

Once the controller has been selected it doesn't have to be selected again so you can send


B0 62 LSB
B0 63 MSB

B0 26 value 1

B0 26 value 2

B0 26 value 3

etc


Just the same as Banks and Patches.

All the best
Royce

RE: RE: NRPN confusion

2013-11-13 by <absent@...>

Where am confused is that the entry for parameter number is not hex.

The A-Station lists CC numbers as "packed parameters" with what I think are supposed to be 8-bit numbers to assign a specific -packed sub-parameter.

It's been very difficult to find information on this. I am getting the impression that this sort of thing is a small step removed from deep MIDI user-end voodoo.
I have yet to encounter anyone in real life that actually has heard of NRPNs :D . I've been getting a lot of blank stares and referrals to basic MIDI texts.





---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

RPN (registered parameter numbers) and NRPN are ways to increase the number of Continuous Controllers Midi can use.
It works the same a Bank selection for Patches

NRPN
CC98 LSB
CC99 MSB

in hex on channel 1

B0 62 LSB
B0 63 MSB

As MSB (most significant byte) and LSB can be between 0 and 127 combined it becomes a 14 bit number from 0 to 16,383 controllers

So once you have said what controller you are talking about, you send its value

For 0 to 127 type controllers
B0 06 value
or
B0 26 value


or if your controller has 14 bit values (0 to 16,383)


B0 06 MSB

B0 26 LSB


(There is an increment and decrement as well.)

Once the controller has been selected it doesn't have to be selected again so you can send


B0 62 LSB
B0 63 MSB

B0 26 value 1

B0 26 value 2

B0 26 value 3

etc


Just the same as Banks and Patches.

All the best
Royce

Re: [bc2000] RE: RE: NRPN confusion

2013-11-13 by sghookings@tiscali.co.uk

Well you just did encounter someone who not only understands NRPNs but gave a great explanation

The BCR expects the address and range of values. Then u have to say if you are sending just 7 or full 14 bits.

Good luck in interpreting NRPNs






-------- Original message --------
From: absent@frognet.net
Date: 13/11/2013 15:47 (GMT+00:00)
To: bc2000@yahoogroups.com
Subject: [bc2000] RE: RE: NRPN confusion


Where am confused is that the entry for parameter number is not hex.

The A-Station lists CC numbers as "packed parameters" with what I think are supposed to be 8-bit numbers to assign a specific -packed sub-parameter.

It's been very difficult to find information on this. I am getting the impression that this sort of thing is a small step removed from deep MIDI user-end voodoo.
I have yet to encounter anyone in real life that actually has heard of NRPNs :D . I've been getting a lot of blank stares and referrals to basic MIDI texts.





---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

RPN (registered parameter numbers) and NRPN are ways to increase the number of Continuous Controllers Midi can use.
It works the same a Bank selection fo r Patches

NRPN
CC98 LSB
CC99 MSB

in hex on channel 1

B0 62 LSB
B0 63 MSB

As MSB (most significant byte) and LSB can be between 0 and 127 combined it becomes a 14 bit number from 0 to 16,383 controllers

So once you have said what controller you are talking about, you send its value

For 0 to 127 type controllers
B0 06 value
or
B0 26 value


or if your controller has 14 bit values (0 to 16,383)


B0 06 MSB

B0 26 LSB


(There is an increment and decrement as well.)

Once the controller has been selected it doesn't have to be selected again so you can send


B0 62 LSB
B0 63 MSB

B0 26 value 1

B0 26 value 2

B0 26 value 3

etc


Just the same as Banks and Patches.

All the best
Royce

RE: Re: [bc2000] RE: RE: NRPN confusion

2013-11-13 by <absent@...>

I also just saw a little more of what Royce described in the editor. More later, as I was still sleepy and seemed to have missed something obvious.



---In bc2000@yahoogroups.com, <sghookings@...> wrote:

Well you just did encounter someone who not only understands NRPNs but gave a great explanation

The BCR expects the address and range of values. Then u have to say if you are sending just 7 or full 14 bits.

Good luck in interpreting NRPNs






-------- Original message --------
From: absent@...
Date: 13/11/2013 15:47 (GMT+00:00)
To: bc2000@yahoogroups.com
Subject: [bc2000] RE: RE: NRPN confusion


Where am confused is that the entry for parameter number is not hex.

The A-Station lists CC numbers as "packed parameters" with what I think are supposed to be 8-bit numbers to assign a specific -packed sub-parameter.

It's been very difficult to find information on this. I am getting the impression that this sort of thing is a small step removed from deep MIDI user-end voodoo.
I have yet to encounter anyone in real life that actually has heard of NRPNs :D . I've been getting a lot of blank stares and referrals to basic MIDI texts.



Show quoted textHide quoted text
---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

RPN (registered parameter numbers) and NRPN are ways to increase the number of Continuous Controllers Midi can use.
It works the same a Bank selection fo r Patches

NRPN
CC98 LSB
CC99 MSB

in hex on channel 1

B0 62 LSB
B0 63 MSB

As MSB (most significant byte) and LSB can be between 0 and 127 combined it becomes a 14 bit number from 0 to 16,383 controllers

So once you have said what controller you are talking about, you send its value

For 0 to 127 type controllers
B0 06 value
or
B0 26 value


or if your controller has 14 bit values (0 to 16,383)


B0 06 MSB

B0 26 LSB


(There is an increment and decrement as well.)

Once the controller has been selected it doesn't have to be selected again so you can send


B0 62 LSB
B0 63 MSB

B0 26 value 1

B0 26 value 2

B0 26 value 3

etc


Just the same as Banks and Patches.

All the best
Royce

RE: NRPN confusion

2013-11-13 by <absent@...>

And I meant "met face to face".



---In bc2000@yahoogroups.com, <sghookings@...> wrote:

Well you just did encounter someone who not only understands NRPNs but gave a great explanation

The BCR expects the address and range of values. Then u have to say if you are sending just 7 or full 14 bits.

Good luck in interpreting NRPNs






-------- Original message --------
From: absent@...
Date: 13/11/2013 15:47 (GMT+00:00)
To: bc2000@yahoogroups.com
Subject: [bc2000] RE: RE: NRPN confusion


Where am confused is that the entry for parameter number is not hex.

The A-Station lists CC numbers as "packed parameters" with what I think are supposed to be 8-bit numbers to assign a specific -packed sub-parameter.

It's been very difficult to find information on this. I am getting the impression that this sort of thing is a small step removed from deep MIDI user-end voodoo.
I have yet to encounter anyone in real life that actually has heard of NRPNs :D . I've been getting a lot of blank stares and referrals to basic MIDI texts.



Show quoted textHide quoted text
---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

RPN (registered parameter numbers) and NRPN are ways to increase the number of Continuous Controllers Midi can use.
It works the same a Bank selection fo r Patches

NRPN
CC98 LSB
CC99 MSB

in hex on channel 1

B0 62 LSB
B0 63 MSB

As MSB (most significant byte) and LSB can be between 0 and 127 combined it becomes a 14 bit number from 0 to 16,383 controllers

So once you have said what controller you are talking about, you send its value

For 0 to 127 type controllers
B0 06 value
or
B0 26 value


or if your controller has 14 bit values (0 to 16,383)


B0 06 MSB

B0 26 LSB


(There is an increment and decrement as well.)

Once the controller has been selected it doesn't have to be selected again so you can send


B0 62 LSB
B0 63 MSB

B0 26 value 1

B0 26 value 2

B0 26 value 3

etc


Just the same as Banks and Patches.

All the best
Royce

RE: NRPN confusion

2013-11-13 by <absent@...>

First off, I have been unable to figure out what B0 means.



---In bc2000@yahoogroups.com, <absent@...> wrote:

And I meant "met face to face".

Show quoted textHide quoted text
---In bc2000@yahoogroups.com, <sghookings@...> wrote:

Well you just did encounter someone who not only understands NRPNs but gave a great explanation

The BCR expects the address and range of values. Then u have to say if you are sending just 7 or full 14 bits.

Good luck in interpreting NRPNs






-------- Original message --------
From: absent@...
Date: 13/11/2013 15:47 (GMT+00:00)
To: bc2000@yahoogroups.com
Subject: [bc2000] RE: RE: NRPN confusion


Where am confused is that the entry for parameter number is not hex.

The A-Station lists CC numbers as "packed parameters" with what I think are supposed to be 8-bit numbers to assign a specific -packed sub-parameter.

It's been very difficult to find information on this. I am getting the impression that this sort of thing is a small step removed from deep MIDI user-end voodoo.
I have yet to encounter anyone in real life that actually has heard of NRPNs :D . I've been getting a lot of blank stares and referrals to basic MIDI texts.





---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

RPN (registered parameter numbers) and NRPN are ways to increase the number of Continuous Controllers Midi can use.
It works the same a Bank selection fo r Patches

NRPN
CC98 LSB
CC99 MSB

in hex on channel 1

B0 62 LSB
B0 63 MSB

As MSB (most significant byte) and LSB can be between 0 and 127 combined it becomes a 14 bit number from 0 to 16,383 controllers

So once you have said what controller you are talking about, you send its value

For 0 to 127 type controllers
B0 06 value
or
B0 26 value


or if your controller has 14 bit values (0 to 16,383)


B0 06 MSB

B0 26 LSB


(There is an increment and decrement as well.)

Once the controller has been selected it doesn't have to be selected again so you can send


B0 62 LSB
B0 63 MSB

B0 26 value 1

B0 26 value 2

B0 26 value 3

etc


Just the same as Banks and Patches.

All the best
Royce

Re: [bc2000] RE: NRPN confusion

2013-11-13 by sghookings@tiscali.co.uk

0-9 -> 0 - 9
A - F -> 10 - 15

Look up midi status bits to see why b0 - bf (and his cousins line 8v - fv turn up)

v is often used to mean a nybble or also a bit.

Recall, data must be 7bits. Status, running status and realtime messages have to be 8bit
Sysex is always 7 bits except forstart and any 8 bit message will terminate it (except certain realtime ie midi clock).

Good luck
Steve H


Sent from Samsung Mobile



-------- Original message --------
From: absent@frognet.net
Date: 13/11/2013 17:59 (GMT+00:00)
To: bc2000@yahoogroups.com
Subject: [bc2000] RE: NRPN confusion


First off, I have been unable to figure out what B0 means.



---In bc2000@yahoogroups.com, <absent@...> wrote:

And I meant "met face to face".



---In bc2000@yahoogroups.com, <sghookings@...> wrote:

Well you just did encounter someone who not only understands NRPNs but gave a great explanation

The BCR expects the address and range of values. Then u have to say if you are sending just 7 or full 14 bits.

Good luck in interpreting NRPNs






-------- Original message --------
From: absent@...
Date: 13/11/2013 15:47 (GMT+00: 00)
To: bc2000@yahoogroups.com
Subject: [bc2000] RE: RE: NRPN confusion


Where am confused is that the entry for parameter number is not hex.

The A-Station lists CC numbers as "packed parameters" with what I think are supposed to be 8-bit numbers to assign a specific -packed sub-parameter.

It's been very difficult to find information on this. I am getting the impression that this sort of thing is a small step removed from deep MIDI user-end voodoo.
I have yet to encounter anyone in real life that actually has heard of NRPNs :D . I've been getting a lot of blank stares and referrals to basic MIDI texts.





---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

RPN (registered parameter numbers) and NRPN are ways to increase the number of Continuous Controllers Midi can use.
It works the same a Bank selection fo r Patches

NRPN
CC98 LSB
CC99 MSB

in hex on channel 1

B0 62 LSB
B0 63 MSB

As MSB (most significant byte) and LSB can be between 0 and 127 combined it becomes a 14 bit number from 0 to 16,383 controllers

So once you have said what controller you are talking about, you send its value

For 0 to 127 type controllers
B0 06 value
or
B0 26 value


or if your controller has 14 bit values (0 to 16,383)


B0 06 MSB

B0 26 LSB


( There is an increment and decrement as well.)

Once the controller has been selected it doesn't have to be selected again so you can send


B0 62 LSB
B0 63 MSB

B0 26 value 1

B0 26 value 2

B0 26 value 3

etc


Just the same as Banks and Patches.

All the best
Royce

RE: RE: NRPN confusion

2013-11-14 by <rpcfender@...>

Computers (this includes phones, washing machines and BC2000 etc) only talk in on/off or 0 and 1 called binary and each switch is called a bit.

We group these bits usually in blocks of 4 called a nibble.

Two of these nibbles are called a byte. So a byte has 8 bits or 8 on / off switches.

So counting in binary (that is only using 0 and 1) is

0 0

1 1

2 10 - this is the same process as when we reach 9 add 1 to it, we add a new column - start again = 10

3 11

4 100

5 101

6 110

7 111

8 1000

9 1001

10 1010

11 1011

12 1100

13 1101

14 1110

15 1111 and that is all we can count with 4 bits


So 0 to 15 is 16 values. It would be great if we could use a single character for each value.


So we make decimal...

10 = A

11 = B

12 = C

13 = D

14 = E

15 = F


When we need a bigger number we could just get another bit but lets grab an extra nibble and use a byte instead


0 = 00

1 = 01

...

14 = 0E

15 = 0F

16 = 10

17 = 11

...

124 =7C

125 =7D

126 =7E

127 =7F as Midi only uses 7 bits for data 127 is the biggest data number available as a single byte

128 =80

...

254 =FE

255 =FF biggest single byte value

256 =01 00 this is the usual display format for a 2 byte or 16 bit number right up to FF FF or 65535 in decimal.

Which do you find easier to read?


Now in Midi all the non-data stuff like 'I just pressed a note" and "change the patch to number" are all greater than 127 that is hex 80 (you see this also as 0x80 or $80 or 80h all the same thing) and bigger.


So as we need to know what channel it is, lets use the lower nibble for that.


So we can have commands or status bytes, as they are called, on any of 16 channels (0 to F)


B0 is continuous controller on channel 1 (we use the zero so the channel number is 1 more)

B3 is continuous controller on channel 4


80 is Note off channel 1


8n is Note off on some channel

9n is Note On

An is polyphonic pressure (Polyphonic Aftertouch)

Bn is CC continuous controller

Cn is PC patch change

Dn is Channel Pressure (Aftertouch)

En is PB Pitch bend


F0 to FF are system messages eg F0 is the start of system exclusive and F7 is end of system exclusive.


For a good reference to MIDI see

http://www.somascape.org/midi/tech/spec.html


As far as the packed data you will need to spell out exactly what you are trying to do.


All the best

Royce



---In bc2000@yahoogroups.com, <absent@frognet.net> wrote:

First off, I have been unable to figure out what B0 means.

Show quoted textHide quoted text
---In bc2000@yahoogroups.com, <absent@...> wrote:

And I meant "met face to face".



---In bc2000@yahoogroups.com, <sghookings@...> wrote:

Well you just did encounter someone who not only understands NRPNs but gave a great explanation

The BCR expects the address and range of values. Then u have to say if you are sending just 7 or full 14 bits.

Good luck in interpreting NRPNs






-------- Original message --------
From: absent@...
Date: 13/11/2013 15:47 (GMT+00:00)
To: bc2000@yahoogroups.com
Subject: [bc2000] RE: RE: NRPN confusion


Where am confused is that the entry for parameter number is not hex.

The A-Station lists CC numbers as "packed parameters" with what I think are supposed to be 8-bit numbers to assign a specific -packed sub-parameter.

It's been very difficult to find information on this. I am getting the impression that this sort of thing is a small step removed from deep MIDI user-end voodoo.
I have yet to encounter anyone in real life that actually has heard of NRPNs :D . I've been getting a lot of blank stares and referrals to basic MIDI texts.





---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

RPN (registered parameter numbers) and NRPN are ways to increase the number of Continuous Controllers Midi can use.
It works the same a Bank selection fo r Patches

NRPN
CC98 LSB
CC99 MSB

in hex on channel 1

B0 62 LSB
B0 63 MSB

As MSB (most significant byte) and LSB can be between 0 and 127 combined it becomes a 14 bit number from 0 to 16,383 controllers

So once you have said what controller you are talking about, you send its value

For 0 to 127 type controllers
B0 06 value
or
B0 26 value


or if your controller has 14 bit values (0 to 16,383)


B0 06 MSB

B0 26 LSB


(There is an increment and decrement as well.)

Once the controller has been selected it doesn't have to be selected again so you can send


B0 62 LSB
B0 63 MSB

B0 26 value 1

B0 26 value 2

B0 26 value 3

etc


Just the same as Banks and Patches.

All the best
Royce

RE: RE: RE: NRPN confusion

2013-11-14 by <absent@...>

Royce, did you have that all written out some where and just paste it?
I hope you didn't have to write all that on my account, but it's awesome!

Thank you so much for the explicit information.

I'm still early on (32 pages) in the BC Manager software manual, but I am reading it.
BTW, the MIDI utilities included in the thing are awesome!

Below, I explain exactly what I am trying to program.


I should have specified that the A-Station is a rack-mount sound module, and not a controller.
I have tried to enter the information below verbatim, but in case anyone is curious, here is a link to the actual manual.
http://us.novationmusic.com/support/product-downloads?product=A-
Station

-------------------------------
NOVATION A-Station



The manual for the Novation A-Station synthesizer provides a list of midi continuous-control numbers from 0-127.

Some of these are listed as follows:
------

71 : sound controller 2 (MIDI specified use)

A-Station use
Osc 1,2,3 octave/osc 1>2 Sync (see packed parameter 4)
----
When you see packed parameter 3, this is the information you get:

Packed Controller / NRPN parameter details -

bits 0-1 : 2 bit osc 1 waveform (sine, tri, saw,square)
bits 2-3 : osc 2
bits 4-5 : osc 3
bit 6 : osc 1 > 2 sync on

That is a 7 bit byte, correct?

There are eleven sets of packed parameters.
-----
I am now interpreting the manual differently.
This section is entitled "Packed Controller / NRPN Parameter Details

The page following the packed parameter details a "Midi NRPN list"
I'm now thinking that the packed parameters are not even NRPN's in the first place.
Although the packed parameters are my first concern, I will still need the NRPN's as well, but if I had interpreted that incorrectly, it certainly has not been simplifying the process.

"The A-Station uses a few NRPN's as detailed below.
Since less than 128 of them are used, only one NRPN bank msb is needed. Therefore only the NRPN lsb is transmitted/received and the NRPN msb is ignored and is not transmitted.
For future compatibility, assume that the NRPN msb is 0."

The NRPN's also contain some of the packed parameters (8,9,10).












---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

Computers (this includes phones, washing machines and BC2000 etc) only talk in on/off or 0 and 1 called binary and each switch is called a bit.

We group these bits usually in blocks of 4 called a nibble.

Two of these nibbles are called a byte. So a byte has 8 bits or 8 on / off switches.

So counting in binary (that is only using 0 and 1) is

0 0

1 1

2 10 - this is the same process as when we reach 9 add 1 to it, we add a new column - start again = 10

3 11

4 100

5 101

6 110

7 111

8 1000

9 1001

10 1010

11 1011

12 1100

13 1101

14 1110

15 1111 and that is all we can count with 4 bits


So 0 to 15 is 16 values. It would be great if we could use a single character for each value.


So we make decimal...

10 = A

11 = B

12 = C

13 = D

14 = E

15 = F


When we need a bigger number we could just get another bit but lets grab an extra nibble and use a byte instead


0 = 00

1 = 01

...

14 = 0E

15 = 0F

16 = 10

17 = 11

...

124 =7C

125 =7D

126 =7E

127 =7F as Midi only uses 7 bits for data 127 is the biggest data number available as a single byte

128 =80

...

254 =FE

255 =FF biggest single byte value

256 =01 00 this is the usual display format for a 2 byte or 16 bit number right up to FF FF or 65535 in decimal.

Which do you find easier to read?


Now in Midi all the non-data stuff like 'I just pressed a note" and "change the patch to number" are all greater than 127 that is hex 80 (you see this also as 0x80 or $80 or 80h all the same thing) and bigger.


So as we need to know what channel it is, lets use the lower nibble for that.


So we can have commands or status bytes, as they are called, on any of 16 channels (0 to F)


B0 is continuous controller on channel 1 (we use the zero so the channel number is 1 more)

B3 is continuous controller on channel 4


80 is Note off channel 1


8n is Note off on some channel

9n is Note On

An is polyphonic pressure (Polyphonic Aftertouch)

Bn is CC continuous controller

Cn is PC patch change

Dn is Channel Pressure (Aftertouch)

En is PB Pitch bend


F0 to FF are system messages eg F0 is the start of system exclusive and F7 is end of system exclusive.


For a good reference to MIDI see

http://www.somascape.org/midi/tech/spec.html


As far as the packed data you will need to spell out exactly what you are trying to do.


All the best

Royce

Show quoted textHide quoted text
---In bc2000@yahoogroups.com, <absent@...> wrote:

First off, I have been unable to figure out what B0 means.



---In bc2000@yahoogroups.com, <absent@...> wrote:

And I meant "met face to face".



---In bc2000@yahoogroups.com, <sghookings@...> wrote:

Well you just did encounter someone who not only understands NRPNs but gave a great explanation

The BCR expects the address and range of values. Then u have to say if you are sending just 7 or full 14 bits.

Good luck in interpreting NRPNs






-------- Original message --------
From: absent@...
Date: 13/11/2013 15:47 (GMT+00:00)
To: bc2000@yahoogroups.com
Subject: [bc2000] RE: RE: NRPN confusion


Where am confused is that the entry for parameter number is not hex.

The A-Station lists CC numbers as "packed parameters" with what I think are supposed to be 8-bit numbers to assign a specific -packed sub-parameter.

It's been very difficult to find information on this. I am getting the impression that this sort of thing is a small step removed from deep MIDI user-end voodoo.
I have yet to encounter anyone in real life that actually has heard of NRPNs :D . I've been getting a lot of blank stares and referrals to basic MIDI texts.





---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

RPN (registered parameter numbers) and NRPN are ways to increase the number of Continuous Controllers Midi can use.
It works the same a Bank selection fo r Patches

NRPN
CC98 LSB
CC99 MSB

in hex on channel 1

B0 62 LSB
B0 63 MSB

As MSB (most significant byte) and LSB can be between 0 and 127 combined it becomes a 14 bit number from 0 to 16,383 controllers

So once you have said what controller you are talking about, you send its value

For 0 to 127 type controllers
B0 06 value
or
B0 26 value


or if your controller has 14 bit values (0 to 16,383)


B0 06 MSB

B0 26 LSB


(There is an increment and decrement as well.)

Once the controller has been selected it doesn't have to be selected again so you can send


B0 62 LSB
B0 63 MSB

B0 26 value 1

B0 26 value 2

B0 26 value 3

etc


Just the same as Banks and Patches.

All the best
Royce

RE: NRPN confusion

2013-11-15 by <rpcfender@...>

There is also a Sound Quest editor for the A-Station and can assign CC messages from the BC to the different parameters.




---In bc2000@yahoogroups.com, <absent@frognet.net> wrote:

Royce, did you have that all written out some where and just paste it?
I hope you didn't have to write all that on my account, but it's awesome!

Thank you so much for the explicit information.

I'm still early on (32 pages) in the BC Manager software manual, but I am reading it.
BTW, the MIDI utilities included in the thing are awesome!

Below, I explain exactly what I am trying to program.


I should have specified that the A-Station is a rack-mount sound module, and not a controller.
I have tried to enter the information below verbatim, but in case anyone is curious, here is a link to the actual manual.
http://us.novationmusic.com/support/product-downloads?product=A-
Station

-------------------------------
NOVATION A-Station



The manual for the Novation A-Station synthesizer provides a list of midi continuous-control numbers from 0-127.

Some of these are listed as follows:
------

71 : sound controller 2 (MIDI specified use)

A-Station use
Osc 1,2,3 octave/osc 1>2 Sync (see packed parameter 4)
----
When you see packed parameter 3, this is the information you get:

Packed Controller / NRPN parameter details -

bits 0-1 : 2 bit osc 1 waveform (sine, tri, saw,square)
bits 2-3 : osc 2
bits 4-5 : osc 3
bit 6 : osc 1 > 2 sync on

That is a 7 bit byte, correct?

There are eleven sets of packed parameters.
-----
I am now interpreting the manual differently.
This section is entitled "Packed Controller / NRPN Parameter Details

The page following the packed parameter details a "Midi NRPN list"
I'm now thinking that the packed parameters are not even NRPN's in the first place.
Although the packed parameters are my first concern, I will still need the NRPN's as well, but if I had interpreted that incorrectly, it certainly has not been simplifying the process.

"The A-Station uses a few NRPN's as detailed below.
Since less than 128 of them are used, only one NRPN bank msb is needed. Therefore only the NRPN lsb is transmitted/received and the NRPN msb is ignored and is not transmitted.
For future compatibility, assume that the NRPN msb is 0."

The NRPN's also contain some of the packed parameters (8,9,10).










Show quoted textHide quoted text
---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

Computers (this includes phones, washing machines and BC2000 etc) only talk in on/off or 0 and 1 called binary and each switch is called a bit.

We group these bits usually in blocks of 4 called a nibble.

Two of these nibbles are called a byte. So a byte has 8 bits or 8 on / off switches.

So counting in binary (that is only using 0 and 1) is

0 0

1 1

2 10 - this is the same process as when we reach 9 add 1 to it, we add a new column - start again = 10

3 11

4 100

5 101

6 110

7 111

8 1000

9 1001

10 1010

11 1011

12 1100

13 1101

14 1110

15 1111 and that is all we can count with 4 bits


So 0 to 15 is 16 values. It would be great if we could use a single character for each value.


So we make decimal...

10 = A

11 = B

12 = C

13 = D

14 = E

15 = F


When we need a bigger number we could just get another bit but lets grab an extra nibble and use a byte instead


0 = 00

1 = 01

...

14 = 0E

15 = 0F

16 = 10

17 = 11

...

124 =7C

125 =7D

126 =7E

127 =7F as Midi only uses 7 bits for data 127 is the biggest data number available as a single byte

128 =80

...

254 =FE

255 =FF biggest single byte value

256 =01 00 this is the usual display format for a 2 byte or 16 bit number right up to FF FF or 65535 in decimal.

Which do you find easier to read?


Now in Midi all the non-data stuff like 'I just pressed a note" and "change the patch to number" are all greater than 127 that is hex 80 (you see this also as 0x80 or $80 or 80h all the same thing) and bigger.


So as we need to know what channel it is, lets use the lower nibble for that.


So we can have commands or status bytes, as they are called, on any of 16 channels (0 to F)


B0 is continuous controller on channel 1 (we use the zero so the channel number is 1 more)

B3 is continuous controller on channel 4


80 is Note off channel 1


8n is Note off on some channel

9n is Note On

An is polyphonic pressure (Polyphonic Aftertouch)

Bn is CC continuous controller

Cn is PC patch change

Dn is Channel Pressure (Aftertouch)

En is PB Pitch bend


F0 to FF are system messages eg F0 is the start of system exclusive and F7 is end of system exclusive.


For a good reference to MIDI see

http://www.somascape.org/midi/tech/spec.html


As far as the packed data you will need to spell out exactly what you are trying to do.


All the best

Royce



---In bc2000@yahoogroups.com, <absent@...> wrote:

First off, I have been unable to figure out what B0 means.



---In bc2000@yahoogroups.com, <absent@...> wrote:

And I meant "met face to face".



---In bc2000@yahoogroups.com, <sghookings@...> wrote:

Well you just did encounter someone who not only understands NRPNs but gave a great explanation

The BCR expects the address and range of values. Then u have to say if you are sending just 7 or full 14 bits.

Good luck in interpreting NRPNs






-------- Original message --------
From: absent@...
Date: 13/11/2013 15:47 (GMT+00:00)
To: bc2000@yahoogroups.com
Subject: [bc2000] RE: RE: NRPN confusion


Where am confused is that the entry for parameter number is not hex.

The A-Station lists CC numbers as "packed parameters" with what I think are supposed to be 8-bit numbers to assign a specific -packed sub-parameter.

It's been very difficult to find information on this. I am getting the impression that this sort of thing is a small step removed from deep MIDI user-end voodoo.
I have yet to encounter anyone in real life that actually has heard of NRPNs :D . I've been getting a lot of blank stares and referrals to basic MIDI texts.





---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

RPN (registered parameter numbers) and NRPN are ways to increase the number of Continuous Controllers Midi can use.
It works the same a Bank selection fo r Patches

NRPN
CC98 LSB
CC99 MSB

in hex on channel 1

B0 62 LSB
B0 63 MSB

As MSB (most significant byte) and LSB can be between 0 and 127 combined it becomes a 14 bit number from 0 to 16,383 controllers

So once you have said what controller you are talking about, you send its value

For 0 to 127 type controllers
B0 06 value
or
B0 26 value


or if your controller has 14 bit values (0 to 16,383)


B0 06 MSB

B0 26 LSB


(There is an increment and decrement as well.)

Once the controller has been selected it doesn't have to be selected again so you can send


B0 62 LSB
B0 63 MSB

B0 26 value 1

B0 26 value 2

B0 26 value 3

etc


Just the same as Banks and Patches.

All the best
Royce

RE: RE: RE: RE: NRPN confusion

2013-11-15 by <rpcfender@...>

I did type it all out. I pretend that it is a good substitute for the scales that I'm not playing enough.


Well I had a look at the Midi spec and I can't believe it.


It is an old synth but not that old and still using packed data parameters in Midi and worse than that they put it in controller messages (NRPN is an extension of CC messages).


Now the sad news for you, you can't change packed parameters, like the Osc waveforms without changing a whole lot of other parameters packed in there.

The BC does not allow you to add parameters together.


The only way you can get this machine to work properly is to write a program that will do the packing/unpacking for you.


I can understand the use of packing in the early days because of the cost memory, but now???

It can't be that there are too many parameters as they don't use a whole lot of available NRPNs


I had a look to see if you could change a parameter by sysex instead but there doesn't seem to be a command for parameter change. It just seems to use sysex for bulk dumps.


One last hope.
There is an editor on the web.
http://www.luigibianchi.com/AStatEdit/AStatEdit.htm
It only seems to have Midi In and out but perhaps you could ask him to add a controller port?
Then he could use controller values from the BC to pack the data.

The old Korg DW6000 uses packed data in its sysex for parameter change.
My solution is here .....
http://www.bwalk.com.au/DW6K/DW6k.html
(note that if you are using a browser addon 'HPPS everywhere' then you will get a warning. I don't know why - Just use http instead)


Sorry

Royce




---In bc2000@yahoogroups.com, <absent@frognet.net> wrote:

Royce, did you have that all written out some where and just paste it?
I hope you didn't have to write all that on my account, but it's awesome!

Thank you so much for the explicit information.

I'm still early on (32 pages) in the BC Manager software manual, but I am reading it.
BTW, the MIDI utilities included in the thing are awesome!

Below, I explain exactly what I am trying to program.


I should have specified that the A-Station is a rack-mount sound module, and not a controller.
I have tried to enter the information below verbatim, but in case anyone is curious, here is a link to the actual manual.
http://us.novationmusic.com/support/product-downloads?product=A-
Station

-------------------------------
NOVATION A-Station



The manual for the Novation A-Station synthesizer provides a list of midi continuous-control numbers from 0-127.

Some of these are listed as follows:
------

71 : sound controller 2 (MIDI specified use)

A-Station use
Osc 1,2,3 octave/osc 1>2 Sync (see packed parameter 4)
----
When you see packed parameter 3, this is the information you get:

Packed Controller / NRPN parameter details -

bits 0-1 : 2 bit osc 1 waveform (sine, tri, saw,square)
bits 2-3 : osc 2
bits 4-5 : osc 3
bit 6 : osc 1 > 2 sync on

That is a 7 bit byte, correct?

There are eleven sets of packed parameters.
-----
I am now interpreting the manual differently.
This section is entitled "Packed Controller / NRPN Parameter Details

The page following the packed parameter details a "Midi NRPN list"
I'm now thinking that the packed parameters are not even NRPN's in the first place.
Although the packed parameters are my first concern, I will still need the NRPN's as well, but if I had interpreted that incorrectly, it certainly has not been simplifying the process.

"The A-Station uses a few NRPN's as detailed below.
Since less than 128 of them are used, only one NRPN bank msb is needed. Therefore only the NRPN lsb is transmitted/received and the NRPN msb is ignored and is not transmitted.
For future compatibility, assume that the NRPN msb is 0."

The NRPN's also contain some of the packed parameters (8,9,10).










Show quoted textHide quoted text
---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

Computers (this includes phones, washing machines and BC2000 etc) only talk in on/off or 0 and 1 called binary and each switch is called a bit.

We group these bits usually in blocks of 4 called a nibble.

Two of these nibbles are called a byte. So a byte has 8 bits or 8 on / off switches.

So counting in binary (that is only using 0 and 1) is

0 0

1 1

2 10 - this is the same process as when we reach 9 add 1 to it, we add a new column - start again = 10

3 11

4 100

5 101

6 110

7 111

8 1000

9 1001

10 1010

11 1011

12 1100

13 1101

14 1110

15 1111 and that is all we can count with 4 bits


So 0 to 15 is 16 values. It would be great if we could use a single character for each value.


So we make decimal...

10 = A

11 = B

12 = C

13 = D

14 = E

15 = F


When we need a bigger number we could just get another bit but lets grab an extra nibble and use a byte instead


0 = 00

1 = 01

...

14 = 0E

15 = 0F

16 = 10

17 = 11

...

124 =7C

125 =7D

126 =7E

127 =7F as Midi only uses 7 bits for data 127 is the biggest data number available as a single byte

128 =80

...

254 =FE

255 =FF biggest single byte value

256 =01 00 this is the usual display format for a 2 byte or 16 bit number right up to FF FF or 65535 in decimal.

Which do you find easier to read?


Now in Midi all the non-data stuff like 'I just pressed a note" and "change the patch to number" are all greater than 127 that is hex 80 (you see this also as 0x80 or $80 or 80h all the same thing) and bigger.


So as we need to know what channel it is, lets use the lower nibble for that.


So we can have commands or status bytes, as they are called, on any of 16 channels (0 to F)


B0 is continuous controller on channel 1 (we use the zero so the channel number is 1 more)

B3 is continuous controller on channel 4


80 is Note off channel 1


8n is Note off on some channel

9n is Note On

An is polyphonic pressure (Polyphonic Aftertouch)

Bn is CC continuous controller

Cn is PC patch change

Dn is Channel Pressure (Aftertouch)

En is PB Pitch bend


F0 to FF are system messages eg F0 is the start of system exclusive and F7 is end of system exclusive.


For a good reference to MIDI see

http://www.somascape.org/midi/tech/spec.html


As far as the packed data you will need to spell out exactly what you are trying to do.


All the best

Royce



---In bc2000@yahoogroups.com, <absent@...> wrote:

First off, I have been unable to figure out what B0 means.



---In bc2000@yahoogroups.com, <absent@...> wrote:

And I meant "met face to face".



---In bc2000@yahoogroups.com, <sghookings@...> wrote:

Well you just did encounter someone who not only understands NRPNs but gave a great explanation

The BCR expects the address and range of values. Then u have to say if you are sending just 7 or full 14 bits.

Good luck in interpreting NRPNs






-------- Original message --------
From: absent@...
Date: 13/11/2013 15:47 (GMT+00:00)
To: bc2000@yahoogroups.com
Subject: [bc2000] RE: RE: NRPN confusion


Where am confused is that the entry for parameter number is not hex.

The A-Station lists CC numbers as "packed parameters" with what I think are supposed to be 8-bit numbers to assign a specific -packed sub-parameter.

It's been very difficult to find information on this. I am getting the impression that this sort of thing is a small step removed from deep MIDI user-end voodoo.
I have yet to encounter anyone in real life that actually has heard of NRPNs :D . I've been getting a lot of blank stares and referrals to basic MIDI texts.





---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

RPN (registered parameter numbers) and NRPN are ways to increase the number of Continuous Controllers Midi can use.
It works the same a Bank selection fo r Patches

NRPN
CC98 LSB
CC99 MSB

in hex on channel 1

B0 62 LSB
B0 63 MSB

As MSB (most significant byte) and LSB can be between 0 and 127 combined it becomes a 14 bit number from 0 to 16,383 controllers

So once you have said what controller you are talking about, you send its value

For 0 to 127 type controllers
B0 06 value
or
B0 26 value


or if your controller has 14 bit values (0 to 16,383)


B0 06 MSB

B0 26 LSB


(There is an increment and decrement as well.)

Once the controller has been selected it doesn't have to be selected again so you can send


B0 62 LSB
B0 63 MSB

B0 26 value 1

B0 26 value 2

B0 26 value 3

etc


Just the same as Banks and Patches.

All the best
Royce

RE: NRPN confusion

2013-11-15 by <absent@...>

I wonder if it's worth learning to code and rewriting the firmware for the BCR?
Probably not, I suppose.


Maybe there's fader motor code lurking in there that can disappear.

I like to fantasize about this sort of thing because I have an ancient 24-bit audio interface from a company that went out of business immediately. Some guys in the forum reverse-engineered the the thing, and one of them managed to finally write a driver for it that could work with Win2k instead of the system it was optomized for (Windows ME. Oops!).

I bought the thing in 1998 and it still works. It;s been installed in at least 6 different machines and still hasn't been destroyed. It works with Win 7, and I believe that Mostek did in fact write 64-bit drivers, but that might jut be an over-enthusiastic memory.

The Yahoo user group pulled together and did the impossible, and all ten of us that still use the GadgetLabs 8*24 have seen the impossible happen. So I have high hopes.









---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

I did type it all out. I pretend that it is a good substitute for the scales that I'm not playing enough.


Well I had a look at the Midi spec and I can't believe it.


It is an old synth but not that old and still using packed data parameters in Midi and worse than that they put it in controller messages (NRPN is an extension of CC messages).


Now the sad news for you, you can't change packed parameters, like the Osc waveforms without changing a whole lot of other parameters packed in there.

The BC does not allow you to add parameters together.


The only way you can get this machine to work properly is to write a program that will do the packing/unpacking for you.


I can understand the use of packing in the early days because of the cost memory, but now???

It can't be that there are too many parameters as they don't use a whole lot of available NRPNs


I had a look to see if you could change a parameter by sysex instead but there doesn't seem to be a command for parameter change. It just seems to use sysex for bulk dumps.


One last hope.
There is an editor on the web.
http://www.luigibianchi.com/AStatEdit/AStatEdit.htm
It only seems to have Midi In and out but perhaps you could ask him to add a controller port?
Then he could use controller values from the BC to pack the data.

The old Korg DW6000 uses packed data in its sysex for parameter change.
My solution is here .....
http://www.bwalk.com.au/DW6K/DW6k.html
(note that if you are using a browser addon 'HPPS everywhere' then you will get a warning. I don't know why - Just use http instead)


Sorry

Royce


Show quoted textHide quoted text
---In bc2000@yahoogroups.com, <absent@...> wrote:

Royce, did you have that all written out some where and just paste it?
I hope you didn't have to write all that on my account, but it's awesome!

Thank you so much for the explicit information.

I'm still early on (32 pages) in the BC Manager software manual, but I am reading it.
BTW, the MIDI utilities included in the thing are awesome!

Below, I explain exactly what I am trying to program.


I should have specified that the A-Station is a rack-mount sound module, and not a controller.
I have tried to enter the information below verbatim, but in case anyone is curious, here is a link to the actual manual.
http://us.novationmusic.com/support/product-downloads?product=A-
Station

-------------------------------
NOVATION A-Station



The manual for the Novation A-Station synthesizer provides a list of midi continuous-control numbers from 0-127.

Some of these are listed as follows:
------

71 : sound controller 2 (MIDI specified use)

A-Station use
Osc 1,2,3 octave/osc 1>2 Sync (see packed parameter 4)
----
When you see packed parameter 3, this is the information you get:

Packed Controller / NRPN parameter details -

bits 0-1 : 2 bit osc 1 waveform (sine, tri, saw,square)
bits 2-3 : osc 2
bits 4-5 : osc 3
bit 6 : osc 1 > 2 sync on

That is a 7 bit byte, correct?

There are eleven sets of packed parameters.
-----
I am now interpreting the manual differently.
This section is entitled "Packed Controller / NRPN Parameter Details

The page following the packed parameter details a "Midi NRPN list"
I'm now thinking that the packed parameters are not even NRPN's in the first place.
Although the packed parameters are my first concern, I will still need the NRPN's as well, but if I had interpreted that incorrectly, it certainly has not been simplifying the process.

"The A-Station uses a few NRPN's as detailed below.
Since less than 128 of them are used, only one NRPN bank msb is needed. Therefore only the NRPN lsb is transmitted/received and the NRPN msb is ignored and is not transmitted.
For future compatibility, assume that the NRPN msb is 0."

The NRPN's also contain some of the packed parameters (8,9,10).












---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

Computers (this includes phones, washing machines and BC2000 etc) only talk in on/off or 0 and 1 called binary and each switch is called a bit.

We group these bits usually in blocks of 4 called a nibble.

Two of these nibbles are called a byte. So a byte has 8 bits or 8 on / off switches.

So counting in binary (that is only using 0 and 1) is

0 0

1 1

2 10 - this is the same process as when we reach 9 add 1 to it, we add a new column - start again = 10

3 11

4 100

5 101

6 110

7 111

8 1000

9 1001

10 1010

11 1011

12 1100

13 1101

14 1110

15 1111 and that is all we can count with 4 bits


So 0 to 15 is 16 values. It would be great if we could use a single character for each value.


So we make decimal...

10 = A

11 = B

12 = C

13 = D

14 = E

15 = F


When we need a bigger number we could just get another bit but lets grab an extra nibble and use a byte instead


0 = 00

1 = 01

...

14 = 0E

15 = 0F

16 = 10

17 = 11

...

124 =7C

125 =7D

126 =7E

127 =7F as Midi only uses 7 bits for data 127 is the biggest data number available as a single byte

128 =80

...

254 =FE

255 =FF biggest single byte value

256 =01 00 this is the usual display format for a 2 byte or 16 bit number right up to FF FF or 65535 in decimal.

Which do you find easier to read?


Now in Midi all the non-data stuff like 'I just pressed a note" and "change the patch to number" are all greater than 127 that is hex 80 (you see this also as 0x80 or $80 or 80h all the same thing) and bigger.


So as we need to know what channel it is, lets use the lower nibble for that.


So we can have commands or status bytes, as they are called, on any of 16 channels (0 to F)


B0 is continuous controller on channel 1 (we use the zero so the channel number is 1 more)

B3 is continuous controller on channel 4


80 is Note off channel 1


8n is Note off on some channel

9n is Note On

An is polyphonic pressure (Polyphonic Aftertouch)

Bn is CC continuous controller

Cn is PC patch change

Dn is Channel Pressure (Aftertouch)

En is PB Pitch bend


F0 to FF are system messages eg F0 is the start of system exclusive and F7 is end of system exclusive.


For a good reference to MIDI see

http://www.somascape.org/midi/tech/spec.html


As far as the packed data you will need to spell out exactly what you are trying to do.


All the best

Royce



---In bc2000@yahoogroups.com, <absent@...> wrote:

First off, I have been unable to figure out what B0 means.



---In bc2000@yahoogroups.com, <absent@...> wrote:

And I meant "met face to face".



---In bc2000@yahoogroups.com, <sghookings@...> wrote:

Well you just did encounter someone who not only understands NRPNs but gave a great explanation

The BCR expects the address and range of values. Then u have to say if you are sending just 7 or full 14 bits.

Good luck in interpreting NRPNs






-------- Original message --------
From: absent@...
Date: 13/11/2013 15:47 (GMT+00:00)
To: bc2000@yahoogroups.com
Subject: [bc2000] RE: RE: NRPN confusion


Where am confused is that the entry for parameter number is not hex.

The A-Station lists CC numbers as "packed parameters" with what I think are supposed to be 8-bit numbers to assign a specific -packed sub-parameter.

It's been very difficult to find information on this. I am getting the impression that this sort of thing is a small step removed from deep MIDI user-end voodoo.
I have yet to encounter anyone in real life that actually has heard of NRPNs :D . I've been getting a lot of blank stares and referrals to basic MIDI texts.





---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

RPN (registered parameter numbers) and NRPN are ways to increase the number of Continuous Controllers Midi can use.
It works the same a Bank selection fo r Patches

NRPN
CC98 LSB
CC99 MSB

in hex on channel 1

B0 62 LSB
B0 63 MSB

As MSB (most significant byte) and LSB can be between 0 and 127 combined it becomes a 14 bit number from 0 to 16,383 controllers

So once you have said what controller you are talking about, you send its value

For 0 to 127 type controllers
B0 06 value
or
B0 26 value


or if your controller has 14 bit values (0 to 16,383)


B0 06 MSB

B0 26 LSB


(There is an increment and decrement as well.)

Once the controller has been selected it doesn't have to be selected again so you can send


B0 62 LSB
B0 63 MSB

B0 26 value 1

B0 26 value 2

B0 26 value 3

etc


Just the same as Banks and Patches.

All the best
Royce

RE: RE: RE: RE: RE: NRPN confusion

2013-11-15 by <absent@...>

Well, I feel less confused now.

So what the heck are they suposed to be doing with those, then?
Why are they even there?
Is that for internal control only? What is supposed to interface with those parameters?


So, now I have to research how packed parameters work in sequencing.
Man, I was really looking forward to real-time hardware control of basic things like, oh, say, maybe the oscillator controls.
*Now* the thing looks completely stupid to me.
I won't bore you with the physical interface details, but if you twiddle a lot, you're going to wear out some swtiches pretty fast.
It's an awesome thing, but I am really disappointed by this. There has to be *some* way to get hardware control for those features.
I'm going to throw a message in a bottle in Novation's general direction, just to see if they say anything interesting.

Thanks you so much. And I am *far* from done using the BCR2000.
I'll still use it with the Novation. I am just irritated at the Novation right now : D



---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

I did type it all out. I pretend that it is a good substitute for the scales that I'm not playing enough.


Well I had a look at the Midi spec and I can't believe it.


It is an old synth but not that old and still using packed data parameters in Midi and worse than that they put it in controller messages (NRPN is an extension of CC messages).


Now the sad news for you, you can't change packed parameters, like the Osc waveforms without changing a whole lot of other parameters packed in there.

The BC does not allow you to add parameters together.


The only way you can get this machine to work properly is to write a program that will do the packing/unpacking for you.


I can understand the use of packing in the early days because of the cost memory, but now???

It can't be that there are too many parameters as they don't use a whole lot of available NRPNs


I had a look to see if you could change a parameter by sysex instead but there doesn't seem to be a command for parameter change. It just seems to use sysex for bulk dumps.


One last hope.
There is an editor on the web.
http://www.luigibianchi.com/AStatEdit/AStatEdit.htm
It only seems to have Midi In and out but perhaps you could ask him to add a controller port?
Then he could use controller values from the BC to pack the data.

The old Korg DW6000 uses packed data in its sysex for parameter change.
My solution is here .....
http://www.bwalk.com.au/DW6K/DW6k.html
(note that if you are using a browser addon 'HPPS everywhere' then you will get a warning. I don't know why - Just use http instead)


Sorry

Royce


Show quoted textHide quoted text
---In bc2000@yahoogroups.com, <absent@...> wrote:

Royce, did you have that all written out some where and just paste it?
I hope you didn't have to write all that on my account, but it's awesome!

Thank you so much for the explicit information.

I'm still early on (32 pages) in the BC Manager software manual, but I am reading it.
BTW, the MIDI utilities included in the thing are awesome!

Below, I explain exactly what I am trying to program.


I should have specified that the A-Station is a rack-mount sound module, and not a controller.
I have tried to enter the information below verbatim, but in case anyone is curious, here is a link to the actual manual.
http://us.novationmusic.com/support/product-downloads?product=A-
Station

-------------------------------
NOVATION A-Station



The manual for the Novation A-Station synthesizer provides a list of midi continuous-control numbers from 0-127.

Some of these are listed as follows:
------

71 : sound controller 2 (MIDI specified use)

A-Station use
Osc 1,2,3 octave/osc 1>2 Sync (see packed parameter 4)
----
When you see packed parameter 3, this is the information you get:

Packed Controller / NRPN parameter details -

bits 0-1 : 2 bit osc 1 waveform (sine, tri, saw,square)
bits 2-3 : osc 2
bits 4-5 : osc 3
bit 6 : osc 1 > 2 sync on

That is a 7 bit byte, correct?

There are eleven sets of packed parameters.
-----
I am now interpreting the manual differently.
This section is entitled "Packed Controller / NRPN Parameter Details

The page following the packed parameter details a "Midi NRPN list"
I'm now thinking that the packed parameters are not even NRPN's in the first place.
Although the packed parameters are my first concern, I will still need the NRPN's as well, but if I had interpreted that incorrectly, it certainly has not been simplifying the process.

"The A-Station uses a few NRPN's as detailed below.
Since less than 128 of them are used, only one NRPN bank msb is needed. Therefore only the NRPN lsb is transmitted/received and the NRPN msb is ignored and is not transmitted.
For future compatibility, assume that the NRPN msb is 0."

The NRPN's also contain some of the packed parameters (8,9,10).












---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

Computers (this includes phones, washing machines and BC2000 etc) only talk in on/off or 0 and 1 called binary and each switch is called a bit.

We group these bits usually in blocks of 4 called a nibble.

Two of these nibbles are called a byte. So a byte has 8 bits or 8 on / off switches.

So counting in binary (that is only using 0 and 1) is

0 0

1 1

2 10 - this is the same process as when we reach 9 add 1 to it, we add a new column - start again = 10

3 11

4 100

5 101

6 110

7 111

8 1000

9 1001

10 1010

11 1011

12 1100

13 1101

14 1110

15 1111 and that is all we can count with 4 bits


So 0 to 15 is 16 values. It would be great if we could use a single character for each value.


So we make decimal...

10 = A

11 = B

12 = C

13 = D

14 = E

15 = F


When we need a bigger number we could just get another bit but lets grab an extra nibble and use a byte instead


0 = 00

1 = 01

...

14 = 0E

15 = 0F

16 = 10

17 = 11

...

124 =7C

125 =7D

126 =7E

127 =7F as Midi only uses 7 bits for data 127 is the biggest data number available as a single byte

128 =80

...

254 =FE

255 =FF biggest single byte value

256 =01 00 this is the usual display format for a 2 byte or 16 bit number right up to FF FF or 65535 in decimal.

Which do you find easier to read?


Now in Midi all the non-data stuff like 'I just pressed a note" and "change the patch to number" are all greater than 127 that is hex 80 (you see this also as 0x80 or $80 or 80h all the same thing) and bigger.


So as we need to know what channel it is, lets use the lower nibble for that.


So we can have commands or status bytes, as they are called, on any of 16 channels (0 to F)


B0 is continuous controller on channel 1 (we use the zero so the channel number is 1 more)

B3 is continuous controller on channel 4


80 is Note off channel 1


8n is Note off on some channel

9n is Note On

An is polyphonic pressure (Polyphonic Aftertouch)

Bn is CC continuous controller

Cn is PC patch change

Dn is Channel Pressure (Aftertouch)

En is PB Pitch bend


F0 to FF are system messages eg F0 is the start of system exclusive and F7 is end of system exclusive.


For a good reference to MIDI see

http://www.somascape.org/midi/tech/spec.html


As far as the packed data you will need to spell out exactly what you are trying to do.


All the best

Royce



---In bc2000@yahoogroups.com, <absent@...> wrote:

First off, I have been unable to figure out what B0 means.



---In bc2000@yahoogroups.com, <absent@...> wrote:

And I meant "met face to face".



---In bc2000@yahoogroups.com, <sghookings@...> wrote:

Well you just did encounter someone who not only understands NRPNs but gave a great explanation

The BCR expects the address and range of values. Then u have to say if you are sending just 7 or full 14 bits.

Good luck in interpreting NRPNs






-------- Original message --------
From: absent@...
Date: 13/11/2013 15:47 (GMT+00:00)
To: bc2000@yahoogroups.com
Subject: [bc2000] RE: RE: NRPN confusion


Where am confused is that the entry for parameter number is not hex.

The A-Station lists CC numbers as "packed parameters" with what I think are supposed to be 8-bit numbers to assign a specific -packed sub-parameter.

It's been very difficult to find information on this. I am getting the impression that this sort of thing is a small step removed from deep MIDI user-end voodoo.
I have yet to encounter anyone in real life that actually has heard of NRPNs :D . I've been getting a lot of blank stares and referrals to basic MIDI texts.





---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

RPN (registered parameter numbers) and NRPN are ways to increase the number of Continuous Controllers Midi can use.
It works the same a Bank selection fo r Patches

NRPN
CC98 LSB
CC99 MSB

in hex on channel 1

B0 62 LSB
B0 63 MSB

As MSB (most significant byte) and LSB can be between 0 and 127 combined it becomes a 14 bit number from 0 to 16,383 controllers

So once you have said what controller you are talking about, you send its value

For 0 to 127 type controllers
B0 06 value
or
B0 26 value


or if your controller has 14 bit values (0 to 16,383)


B0 06 MSB

B0 26 LSB


(There is an increment and decrement as well.)

Once the controller has been selected it doesn't have to be selected again so you can send


B0 62 LSB
B0 63 MSB

B0 26 value 1

B0 26 value 2

B0 26 value 3

etc


Just the same as Banks and Patches.

All the best
Royce

RE: RE: RE: RE: RE: RE: NRPN confusion

2013-11-15 by <absent@...>

Actually, what's alarming to me is that I somehow entirely failed to notice that all of the packed paramteres are "switching" functions that don't even need to be knobbed- just switched.

Ha ha, I looked up " MIDI Packed Paramters" in the search engine I use (Duckduckgo.com), and the first hit I found was from someone trying to sort out a Novation.
: D

This is The Future. Isn't there some space age thing I can get to just put a bunch of switches on that have values assigned to them of the appropriate type?

If this future was happening in the 1950's, we'd be able to buy kits at something similar to Radio Shack. At least in my brain we would. Which might explain why I even care about any of this.
Don't these kids today have some sort of " Adreno Razzberies " that will do this? Wouldn't they need it for that "Stepping Dub" thing they do with the "Steam Punk " rock?

*bangs head on floor*





---In bc2000@yahoogroups.com, <absent@...> wrote:

Well, I feel less confused now.

So what the heck are they suposed to be doing with those, then?
Why are they even there?
Is that for internal control only? What is supposed to interface with those parameters?


So, now I have to research how packed parameters work in sequencing.
Man, I was really looking forward to real-time hardware control of basic things like, oh, say, maybe the oscillator controls.
*Now* the thing looks completely stupid to me.
I won't bore you with the physical interface details, but if you twiddle a lot, you're going to wear out some swtiches pretty fast.
It's an awesome thing, but I am really disappointed by this. There has to be *some* way to get hardware control for those features.
I'm going to throw a message in a bottle in Novation's general direction, just to see if they say anything interesting.

Thanks you so much. And I am *far* from done using the BCR2000.
I'll still use it with the Novation. I am just irritated at the Novation right now : D

Show quoted textHide quoted text
---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

I did type it all out. I pretend that it is a good substitute for the scales that I'm not playing enough.


Well I had a look at the Midi spec and I can't believe it.


It is an old synth but not that old and still using packed data parameters in Midi and worse than that they put it in controller messages (NRPN is an extension of CC messages).


Now the sad news for you, you can't change packed parameters, like the Osc waveforms without changing a whole lot of other parameters packed in there.

The BC does not allow you to add parameters together.


The only way you can get this machine to work properly is to write a program that will do the packing/unpacking for you.


I can understand the use of packing in the early days because of the cost memory, but now???

It can't be that there are too many parameters as they don't use a whole lot of available NRPNs


I had a look to see if you could change a parameter by sysex instead but there doesn't seem to be a command for parameter change. It just seems to use sysex for bulk dumps.


One last hope.
There is an editor on the web.
http://www.luigibianchi.com/AStatEdit/AStatEdit.htm
It only seems to have Midi In and out but perhaps you could ask him to add a controller port?
Then he could use controller values from the BC to pack the data.

The old Korg DW6000 uses packed data in its sysex for parameter change.
My solution is here .....
http://www.bwalk.com.au/DW6K/DW6k.html
(note that if you are using a browser addon 'HPPS everywhere' then you will get a warning. I don't know why - Just use http instead)


Sorry

Royce




---In bc2000@yahoogroups.com, <absent@...> wrote:

Royce, did you have that all written out some where and just paste it?
I hope you didn't have to write all that on my account, but it's awesome!

Thank you so much for the explicit information.

I'm still early on (32 pages) in the BC Manager software manual, but I am reading it.
BTW, the MIDI utilities included in the thing are awesome!

Below, I explain exactly what I am trying to program.


I should have specified that the A-Station is a rack-mount sound module, and not a controller.
I have tried to enter the information below verbatim, but in case anyone is curious, here is a link to the actual manual.
http://us.novationmusic.com/support/product-downloads?product=A-
Station

-------------------------------
NOVATION A-Station



The manual for the Novation A-Station synthesizer provides a list of midi continuous-control numbers from 0-127.

Some of these are listed as follows:
------

71 : sound controller 2 (MIDI specified use)

A-Station use
Osc 1,2,3 octave/osc 1>2 Sync (see packed parameter 4)
----
When you see packed parameter 3, this is the information you get:

Packed Controller / NRPN parameter details -

bits 0-1 : 2 bit osc 1 waveform (sine, tri, saw,square)
bits 2-3 : osc 2
bits 4-5 : osc 3
bit 6 : osc 1 > 2 sync on

That is a 7 bit byte, correct?

There are eleven sets of packed parameters.
-----
I am now interpreting the manual differently.
This section is entitled "Packed Controller / NRPN Parameter Details

The page following the packed parameter details a "Midi NRPN list"
I'm now thinking that the packed parameters are not even NRPN's in the first place.
Although the packed parameters are my first concern, I will still need the NRPN's as well, but if I had interpreted that incorrectly, it certainly has not been simplifying the process.

"The A-Station uses a few NRPN's as detailed below.
Since less than 128 of them are used, only one NRPN bank msb is needed. Therefore only the NRPN lsb is transmitted/received and the NRPN msb is ignored and is not transmitted.
For future compatibility, assume that the NRPN msb is 0."

The NRPN's also contain some of the packed parameters (8,9,10).












---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

Computers (this includes phones, washing machines and BC2000 etc) only talk in on/off or 0 and 1 called binary and each switch is called a bit.

We group these bits usually in blocks of 4 called a nibble.

Two of these nibbles are called a byte. So a byte has 8 bits or 8 on / off switches.

So counting in binary (that is only using 0 and 1) is

0 0

1 1

2 10 - this is the same process as when we reach 9 add 1 to it, we add a new column - start again = 10

3 11

4 100

5 101

6 110

7 111

8 1000

9 1001

10 1010

11 1011

12 1100

13 1101

14 1110

15 1111 and that is all we can count with 4 bits


So 0 to 15 is 16 values. It would be great if we could use a single character for each value.


So we make decimal...

10 = A

11 = B

12 = C

13 = D

14 = E

15 = F


When we need a bigger number we could just get another bit but lets grab an extra nibble and use a byte instead


0 = 00

1 = 01

...

14 = 0E

15 = 0F

16 = 10

17 = 11

...

124 =7C

125 =7D

126 =7E

127 =7F as Midi only uses 7 bits for data 127 is the biggest data number available as a single byte

128 =80

...

254 =FE

255 =FF biggest single byte value

256 =01 00 this is the usual display format for a 2 byte or 16 bit number right up to FF FF or 65535 in decimal.

Which do you find easier to read?


Now in Midi all the non-data stuff like 'I just pressed a note" and "change the patch to number" are all greater than 127 that is hex 80 (you see this also as 0x80 or $80 or 80h all the same thing) and bigger.


So as we need to know what channel it is, lets use the lower nibble for that.


So we can have commands or status bytes, as they are called, on any of 16 channels (0 to F)


B0 is continuous controller on channel 1 (we use the zero so the channel number is 1 more)

B3 is continuous controller on channel 4


80 is Note off channel 1


8n is Note off on some channel

9n is Note On

An is polyphonic pressure (Polyphonic Aftertouch)

Bn is CC continuous controller

Cn is PC patch change

Dn is Channel Pressure (Aftertouch)

En is PB Pitch bend


F0 to FF are system messages eg F0 is the start of system exclusive and F7 is end of system exclusive.


For a good reference to MIDI see

http://www.somascape.org/midi/tech/spec.html


As far as the packed data you will need to spell out exactly what you are trying to do.


All the best

Royce



---In bc2000@yahoogroups.com, <absent@...> wrote:

First off, I have been unable to figure out what B0 means.



---In bc2000@yahoogroups.com, <absent@...> wrote:

And I meant "met face to face".



---In bc2000@yahoogroups.com, <sghookings@...> wrote:

Well you just did encounter someone who not only understands NRPNs but gave a great explanation

The BCR expects the address and range of values. Then u have to say if you are sending just 7 or full 14 bits.

Good luck in interpreting NRPNs






-------- Original message --------
From: absent@...
Date: 13/11/2013 15:47 (GMT+00:00)
To: bc2000@yahoogroups.com
Subject: [bc2000] RE: RE: NRPN confusion


Where am confused is that the entry for parameter number is not hex.

The A-Station lists CC numbers as "packed parameters" with what I think are supposed to be 8-bit numbers to assign a specific -packed sub-parameter.

It's been very difficult to find information on this. I am getting the impression that this sort of thing is a small step removed from deep MIDI user-end voodoo.
I have yet to encounter anyone in real life that actually has heard of NRPNs :D . I've been getting a lot of blank stares and referrals to basic MIDI texts.





---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

RPN (registered parameter numbers) and NRPN are ways to increase the number of Continuous Controllers Midi can use.
It works the same a Bank selection fo r Patches

NRPN
CC98 LSB
CC99 MSB

in hex on channel 1

B0 62 LSB
B0 63 MSB

As MSB (most significant byte) and LSB can be between 0 and 127 combined it becomes a 14 bit number from 0 to 16,383 controllers

So once you have said what controller you are talking about, you send its value

For 0 to 127 type controllers
B0 06 value
or
B0 26 value


or if your controller has 14 bit values (0 to 16,383)


B0 06 MSB

B0 26 LSB


(There is an increment and decrement as well.)

Once the controller has been selected it doesn't have to be selected again so you can send


B0 62 LSB
B0 63 MSB

B0 26 value 1

B0 26 value 2

B0 26 value 3

etc


Just the same as Banks and Patches.

All the best
Royce

RE: RE: RE: RE: RE: RE: RE: NRPN confusion

2013-11-15 by <rpcfender@...>

PHA+VGhlcmUgYXJlIHRocmVlIHRoaW5ncyB0aGF0IEkgc2VlIGFzIHNob3J0Y29taW5ncyBpbiB0aGUgQkM8L3A+PHA+IEl0IGNhbiYjMzk7dCBoYW5kbGUgMTRiaXQgbmVnYXRpdmUgbnVtYmVycyAtIGd1ZXNzIHdoYXQgRW11JiMzOTtzIFByb3RldXMgYW5kIFByb3RldXMgMjAwMCBzZXJpZXMgbW9kdWxlcyB1c2UuPC9wPjxwPkl0IGNhbiYjMzk7dCBoYW5kbGUgMTYgYml0IG51bWJlcnMgLSB1c2VkIGJ5IE1vcnBoZXVzIHN5bnRoLiBJZiBpdCBjb3VsZCB0aGVuIHlvdSBjb3VsZCBtYWtlIGl0IGhhbmRsZSAxNGJpdCBuZWdhdGl2ZXMuIFRoaXMgd291bGQgYmUgd2hhdCBJIHdvdWxkIG1vZCBmaXJzdC48YnI+PC9wPjxwPkFuZCwgb2YgY291cnNlLCBpdCBjYW4mIzM5O3QgaGFuZGxlIHBhY2tlZCBieXRlcyBiZWNhdXNlIHlvdSBjYW4mIzM5O3QgYWNjZXNzIHRoZSBvdGhlciBwYXJhbWV0ZXIgdmFsdWVzIHRvIGJ1aWxkIHRoZSBieXRlIC48L3A+PHA+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5UaGVyZSBpcyBhbiBleHRyYSB3aXNoIGFuZCB0aGF0IHdvdWxkIHRvIGJlIGFibGUgdG8gc2VuZCBhIHBhdGNoIGR1bXAgYW5kIGl0IHdvdWxkIHJlLXNldCBpdHMgdmFsdWVzLiBJIHRoaW5rIHRoYXQgd291bGQgYmUgdmVyeSBkaWZmaWN1bHQgdGhvdWdoLiBXb3JrcyB3ZWxsIHdpdGggYSBjb21wdXRlciBpbiBiZXR3ZWVuLjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5JbiB0aGUgc2NoZW1lIG9mIHRoaW5ncyBpdCBpcyBzdGlsbCBwcmV0dHkgYXdlc29tZS48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5JIHNlZW0gdG8gcmVtZW1iZXIgdGhlcmUgaXMgYSBzaXRlIHdoZXJlIHNvbWVvbmUgaGFzIHJldmVyc2UgZW5naW5lZXJlZCB0aGUgUk9NIGFuZCBoYWQgYW4gZXhhbXBsZSBvZiZuYnNwOyBhY2Nlc3NpbmcgdGhlIExFRCBzY3JlZW4uPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+VGhlIHF1aWNrKD8pIHNvbHV0aW9uIHdvdWxkIGJlIGEgcHJvZ3JhbSB0aGF0IGp1c3QgbGV0IGV2ZXJ5dGhpbmcgdGhyb3VnaCBleGNlcHQgdGhlIHRoZSBzcGVjaWFsIE5SUE4gdGhhdCB5b3UgaW52ZW50ZWQgdG8gY292ZXIgYWxsIHRoZSBzd2l0Y2hlZCBkYXRhLiA8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPllvdSB3b3VsZCBoYXZlIHRvIHNldCB1cCB0aGUgY3VycmVudCB2YWx1ZXMgb2YgdGhlIHN3aXRjaGVzLCBidXQgeW91IGNvdWxkIGRvIHRoaXMgYnkgaGF2aW5nIGEgJiMzOTtSZXF1ZXN0IFBhdGNoJiMzOTsgYnV0dG9uIHByb2dyYW1tZWQgb24gdGhlIEJDUiB0aGF0IHRoZSBwcm9ncmFtIHdvdWxkIGtub3cgd2hhdCBpdCBtZWFudCBhbmQgc2VudCBhIHJlcXVlc3QgY3VycmVudCBwYXRjaCB0byB0aGUgc3ludGggYXMgc3lzZXguPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPiBUaGUgcGF0Y2ggZGF0YSByZWNlaXZlZCBjb3VsZCBiZSB1c2VkIHRvIHNldCB0aGUgdmFsdWVzIG9mIGFsbCB0aGUgY29udHJvbHMgYW5kIHRoZSBwYWNrZWQgZGF0YSBOUlBOIGNvdWxkIGJlIGJ1aWx0IGJ5IGFkZGluZyB0aGUgaW5jb21pbmcgc3dpdGNoIHZhbHVlIHRvIHRoZSBvbmUgeW91IGdvdCBmcm9tIHRoZSBwYXRjaCBkYXRhLjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5BdCB0aGlzIHBvaW50IHlvdSBtaWdodCBhcyB3ZWxsIHdyaXRlIGFuIGVkaXRvci48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5BbGwgdGhlIGJlc3Q8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+Um95Y2U8YnI+PC9wPiA8ZGl2IGNsYXNzPSJ5Z3JvdXBzLXF1b3RlZCI+PGJyPjxicj4tLS1JbiBiYzIwMDBAeWFob29ncm91cHMuY29tLCAmbHQ7YWJzZW50QGZyb2duZXQubmV0Jmd0OyB3cm90ZTo8YnI+PGJyPjxkaXYgaWQ9InlncnBzLXlpdi0xNjU4MDU3NzIwIj48cD5BY3R1YWxseSwgd2hhdCYjMzk7cyBhbGFybWluZyB0byBtZSBpcyB0aGF0IEkgc29tZWhvdyBlbnRpcmVseSBmYWlsZWQgdG8gbm90aWNlIHRoYXQgYWxsIG9mIHRoZSBwYWNrZWQgcGFyYW10ZXJlcyBhcmUgJnF1b3Q7c3dpdGNoaW5nJnF1b3Q7IGZ1bmN0aW9ucyB0aGF0IGRvbiYjMzk7dCBldmVuIG5lZWQgdG8gYmUga25vYmJlZC0ganVzdCBzd2l0Y2hlZC48YnI+PGJyPkhhIGhhLCBJIGxvb2tlZCB1cCAmcXVvdDsgTUlESSBQYWNrZWQgUGFyYW10ZXJzJnF1b3Q7IGluIHRoZSBzZWFyY2ggZW5naW5lIEkgdXNlIChEdWNrZHVja2dvLmNvbSksIGFuZCB0aGUgZmlyc3QgaGl0IEkgZm91bmQgd2FzIGZyb20gc29tZW9uZSB0cnlpbmcgdG8gc29ydCBvdXQgYSBOb3ZhdGlvbi48YnI+OiBEPGJyPjxicj5UaGlzIGlzIFRoZSBGdXR1cmUuIElzbiYjMzk7dCB0aGVyZSBzb21lIHNwYWNlIGFnZSB0aGluZyBJIGNhbiBnZXQgdG8ganVzdCBwdXQgYSBidW5jaCBvZiBzd2l0Y2hlcyBvbiB0aGF0IGhhdmUgdmFsdWVzIGFzc2lnbmVkIHRvIHRoZW0gb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGU/PGJyPjxicj5JZiB0aGlzIGZ1dHVyZSB3YXMgaGFwcGVuaW5nIGluIHRoZSAxOTUwJiMzOTtzLCB3ZSYjMzk7ZCBiZSBhYmxlIHRvIGJ1eSBraXRzIGF0IHNvbWV0aGluZyBzaW1pbGFyIHRvIFJhZGlvIFNoYWNrLiBBdCBsZWFzdCBpbiBteSBicmFpbiB3ZSB3b3VsZC4gV2hpY2ggbWlnaHQgZXhwbGFpbiB3aHkgSSBldmVuIGNhcmUgYWJvdXQgYW55IG9mIHRoaXMuPGJyPkRvbiYjMzk7dCB0aGVzZSBraWRzIHRvZGF5IGhhdmUgc29tZSBzb3J0IG9mICZxdW90OyBBZHJlbm8gUmF6emJlcmllcyAmcXVvdDsgdGhhdCB3aWxsIGRvIHRoaXM/IFdvdWxkbiYjMzk7dCB0aGV5IG5lZWQgaXQgZm9yIHRoYXQmbmJzcDsgJnF1b3Q7U3RlcHBpbmcgRHViJnF1b3Q7IHRoaW5nIHRoZXkgZG8gd2l0aCB0aGUgJnF1b3Q7U3RlYW0gUHVuayAmcXVvdDsgcm9jaz88YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPipiYW5ncyBoZWFkIG9uIGZsb29yKjxicj48YnI+PGJyPjxicj48L3A+IDxkaXYgY2xhc3M9InlncnBzLXlpdi0xNjU4MDU3NzIweWdyb3Vwcy1xdW90ZWQiPjxicj48YnI+PGJsb2NrcXVvdGU+PHNwYW4gY2xhc3M9IiI+IC0tLUluIGJjMjAwMEB5YWhvb2dyb3Vwcy5jb20sICZsdDthYnNlbnRALi4uJmd0OyB3cm90ZTo8YnI+PGJyPjxkaXYgaWQ9InlncnBzLXlpdi0xNjU4MDU3NzIweWdycHMteWl2LTE2ODk2ODkwNzQiPjxwPldlbGwsIEkgZmVlbCBsZXNzIGNvbmZ1c2VkIG5vdy48YnI+PGJyPlNvIHdoYXQgdGhlIGhlY2sgYXJlIHRoZXkgc3Vwb3NlZCB0byBiZSBkb2luZyB3aXRoIHRob3NlLCB0aGVuPzxicj5XaHkgYXJlIHRoZXkgZXZlbiB0aGVyZT88YnI+SXMgdGhhdCBmb3IgaW50ZXJuYWwgY29udHJvbCBvbmx5PyBXaGF0IGlzIHN1cHBvc2VkIHRvIGludGVyZmFjZSB3aXRoIHRob3NlIHBhcmFtZXRlcnM/PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+U28sIG5vdyBJIGhhdmUgdG8gcmVzZWFyY2ggaG93IHBhY2tlZCBwYXJhbWV0ZXJzIHdvcmsgaW4gc2VxdWVuY2luZy48YnI+TWFuLCBJIHdhcyByZWFsbHkgbG9va2luZyBmb3J3YXJkIHRvIHJlYWwtdGltZSBoYXJkd2FyZSBjb250cm9sIG9mIGJhc2ljIHRoaW5ncyBsaWtlLCBvaCwgc2F5LCBtYXliZSB0aGUgb3NjaWxsYXRvciBjb250cm9scy48YnI+Kk5vdyogdGhlIHRoaW5nIGxvb2tzIGNvbXBsZXRlbHkgc3R1cGlkIHRvIG1lLjxicj5JIHdvbiYjMzk7dCBib3JlIHlvdSB3aXRoIHRoZSBwaHlzaWNhbCBpbnRlcmZhY2UgZGV0YWlscywgYnV0IGlmIHlvdSB0d2lkZGxlIGEgbG90LCB5b3UmIzM5O3JlIGdvaW5nIHRvIHdlYXIgb3V0IHNvbWUgc3d0aWNoZXMgcHJldHR5IGZhc3QuPGJyPkl0JiMzOTtzIGFuIGF3ZXNvbWUgdGhpbmcsIGJ1dCBJIGFtIHJlYWxseSBkaXNhcHBvaW50ZWQgYnkgdGhpcy4gVGhlcmUgaGFzIHRvIGJlICpzb21lKiB3YXkgdG8gZ2V0IGhhcmR3YXJlIGNvbnRyb2wgZm9yIHRob3NlIGZlYXR1cmVzLjxicj5JJiMzOTttIGdvaW5nIHRvIHRocm93IGEgbWVzc2FnZSBpbiBhIGJvdHRsZSBpbiBOb3ZhdGlvbiYjMzk7cyBnZW5lcmFsIGRpcmVjdGlvbiwganVzdCB0byBzZWUgaWYgdGhleSBzYXkgYW55dGhpbmcgaW50ZXJlc3RpbmcuPGJyPjxicj5UaGFua3MgeW91IHNvIG11Y2guIEFuZCBJIGFtICpmYXIqIGZyb20gZG9uZSB1c2luZyB0aGUgQkNSMjAwMC48YnI+SSYjMzk7bGwgc3RpbGwgdXNlIGl0IHdpdGggdGhlIE5vdmF0aW9uLiBJIGFtIGp1c3QgaXJyaXRhdGVkIGF0IHRoZSBOb3ZhdGlvbiByaWdodCBub3cgOiBEPGJyPjwvcD4gPGRpdiBjbGFzcz0ieWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NHlncm91cHMtcXVvdGVkIj48YnI+PGJyPjxibG9ja3F1b3RlPjxzcGFuIGNsYXNzPSJ5Z3Jwcy15aXYtMTY1ODA1NzcyMCI+IC0tLUluIGJjMjAwMEB5YWhvb2dyb3Vwcy5jb20sICZsdDtycGNmZW5kZXJALi4uJmd0OyB3cm90ZTo8YnI+PGJyPjxkaXYgaWQ9InlncnBzLXlpdi0xNjU4MDU3NzIweWdycHMteWl2LTE2ODk2ODkwNzR5Z3Jwcy15aXYtNDgyODg3Mzg0Ij48cD5JIGRpZCB0eXBlIGl0IGFsbCBvdXQuIEkgcHJldGVuZCB0aGF0IGl0IGlzIGEgZ29vZCBzdWJzdGl0dXRlIGZvciB0aGUgc2NhbGVzIHRoYXQgSSYjMzk7bSBub3QgcGxheWluZyBlbm91Z2guPC9wPjxwPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+Jm5ic3A7V2VsbCBJIGhhZCBhIGxvb2sgYXQgdGhlIE1pZGkgc3BlYyBhbmQgSSBjYW4mIzM5O3QgYmVsaWV2ZSBpdC48L3A+PHA+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5JdCBpcyBhbiBvbGQgc3ludGggYnV0IG5vdCB0aGF0IG9sZCBhbmQgc3RpbGwmbmJzcDsgdXNpbmcgcGFja2VkIGRhdGEgcGFyYW1ldGVycyBpbiBNaWRpIGFuZCB3b3JzZSB0aGFuIHRoYXQgdGhleSBwdXQgaXQgaW4gY29udHJvbGxlciBtZXNzYWdlcyAoTlJQTiBpcyBhbiBleHRlbnNpb24gb2YgQ0MgbWVzc2FnZXMpLjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPk5vdyB0aGUgc2FkIG5ld3MgZm9yIHlvdSwgeW91IGNhbiYjMzk7dCBjaGFuZ2UgcGFja2VkIHBhcmFtZXRlcnMsIGxpa2UgdGhlIE9zYyB3YXZlZm9ybXMgd2l0aG91dCBjaGFuZ2luZyBhIHdob2xlIGxvdCBvZiBvdGhlciBwYXJhbWV0ZXJzIHBhY2tlZCBpbiB0aGVyZS48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+VGhlIEJDIGRvZXMgbm90IGFsbG93IHlvdSB0byBhZGQgcGFyYW1ldGVycyB0b2dldGhlci48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5UaGUgb25seSB3YXkgeW91IGNhbiBnZXQgdGhpcyBtYWNoaW5lIHRvIHdvcmsgcHJvcGVybHkgaXMgdG8gd3JpdGUgYSBwcm9ncmFtIHRoYXQgd2lsbCBkbyB0aGUgcGFja2luZy91bnBhY2tpbmcgZm9yIHlvdS48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5JIGNhbiB1bmRlcnN0YW5kIHRoZSB1c2Ugb2YgcGFja2luZyBpbiB0aGUgZWFybHkgZGF5cyBiZWNhdXNlIG9mIHRoZSBjb3N0IG1lbW9yeSwgYnV0IG5vdz8/PzwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5JdCBjYW4mIzM5O3QgYmUgdGhhdCB0aGVyZSBhcmUgdG9vIG1hbnkgcGFyYW1ldGVycyBhcyB0aGV5IGRvbiYjMzk7dCB1c2UgYSB3aG9sZSBsb3Qgb2YgYXZhaWxhYmxlIE5SUE5zPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+SSBoYWQgYSBsb29rIHRvIHNlZSBpZiB5b3UgY291bGQgY2hhbmdlIGEgcGFyYW1ldGVyIGJ5IHN5c2V4IGluc3RlYWQgYnV0IHRoZXJlIGRvZXNuJiMzOTt0IHNlZW0gdG8gYmUgYSBjb21tYW5kIGZvciBwYXJhbWV0ZXIgY2hhbmdlLiBJdCBqdXN0IHNlZW1zIHRvIHVzZSBzeXNleCBmb3IgYnVsayBkdW1wcy48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+T25lIGxhc3QgaG9wZS48YnI+VGhlcmUgaXMgYW4gZWRpdG9yIG9uIHRoZSB3ZWIuPGJyPmh0dHA6Ly93d3cubHVpZ2liaWFuY2hpLmNvbS9BU3RhdEVkaXQvQVN0YXRFZGl0Lmh0bTxicj5JdCBvbmx5IHNlZW1zIHRvIGhhdmUgTWlkaSBJbiBhbmQgb3V0IGJ1dCBwZXJoYXBzIHlvdSBjb3VsZCBhc2sgaGltIHRvIGFkZCBhIGNvbnRyb2xsZXIgcG9ydD88YnI+VGhlbiBoZSBjb3VsZCB1c2UgY29udHJvbGxlciB2YWx1ZXMgZnJvbSB0aGUgQkMgdG8gcGFjayB0aGUgZGF0YS48YnI+PGJyPlRoZSBvbGQgS29yZyBEVzYwMDAgdXNlcyBwYWNrZWQgZGF0YSBpbiBpdHMgc3lzZXggZm9yIHBhcmFtZXRlciBjaGFuZ2UuPGJyPk15IHNvbHV0aW9uIGlzIGhlcmUgLi4uLi48YnI+aHR0cDovL3d3dy5id2Fsay5jb20uYXUvRFc2Sy9EVzZrLmh0bWw8YnI+Jm5ic3A7KG5vdGUgdGhhdCBpZiB5b3UgYXJlIHVzaW5nIGEgYnJvd3NlciBhZGRvbiAmIzM5O0hQUFMgZXZlcnl3aGVyZSYjMzk7IHRoZW4geW91IHdpbGwgZ2V0IGEgd2FybmluZy4gSSBkb24mIzM5O3Qga25vdyB3aHkgLSBKdXN0IHVzZSBodHRwIGluc3RlYWQpPGJyPjxicj48YnI+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+U29ycnk8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+Um95Y2U8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PGRpdiBjbGFzcz0ieWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NHlncnBzLXlpdi00ODI4ODczODR5Z3JvdXBzLXF1b3RlZCI+PGJyPjxicj48YmxvY2txdW90ZT48c3BhbiBjbGFzcz0ieWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NCI+IC0tLUluIGJjMjAwMEB5YWhvb2dyb3Vwcy5jb20sICZsdDthYnNlbnRALi4uJmd0OyB3cm90ZTo8YnI+PGJyPjxkaXYgaWQ9InlncnBzLXlpdi0xNjU4MDU3NzIweWdycHMteWl2LTE2ODk2ODkwNzR5Z3Jwcy15aXYtNDgyODg3Mzg0eWdycHMteWl2LTE4NTI4OTEzNDQiPjxwPlJveWNlLCBkaWQgeW91IGhhdmUgdGhhdCBhbGwgd3JpdHRlbiBvdXQgc29tZSB3aGVyZSBhbmQganVzdCBwYXN0ZSBpdD88YnI+SSBob3BlIHlvdSBkaWRuJiMzOTt0IGhhdmUgdG8gd3JpdGUgYWxsIHRoYXQgb24gbXkgYWNjb3VudCwgYnV0IGl0JiMzOTtzIGF3ZXNvbWUhPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPlRoYW5rIHlvdSBzbyBtdWNoIGZvciB0aGUgZXhwbGljaXQgaW5mb3JtYXRpb24uPGJyPjxicj5JJiMzOTttIHN0aWxsIGVhcmx5IG9uICgzMiBwYWdlcykgaW4gdGhlIEJDIE1hbmFnZXIgc29mdHdhcmUgbWFudWFsLCBidXQgSSBhbSByZWFkaW5nIGl0Ljxicj5CVFcsIHRoZSBNSURJIHV0aWxpdGllcyBpbmNsdWRlZCBpbiB0aGUgdGhpbmcgYXJlIGF3ZXNvbWUhIDxicj48YnI+QmVsb3csIEkgZXhwbGFpbiBleGFjdGx5IHdoYXQgSSBhbSB0cnlpbmcgdG8gcHJvZ3JhbS48YnI+PGJyPjxicj5JIHNob3VsZCBoYXZlIHNwZWNpZmllZCB0aGF0IHRoZSBBLVN0YXRpb24gaXMgYSByYWNrLW1vdW50IHNvdW5kIG1vZHVsZSwgYW5kIG5vdCBhIGNvbnRyb2xsZXIuPGJyPkkgaGF2ZSB0cmllZCB0byBlbnRlciB0aGUgaW5mb3JtYXRpb24gYmVsb3cgdmVyYmF0aW0sIGJ1dCBpbiBjYXNlIGFueW9uZSBpcyBjdXJpb3VzLCBoZXJlIGlzIGEgbGluayB0byB0aGUgYWN0dWFsIG1hbnVhbC48YnI+aHR0cDovL3VzLm5vdmF0aW9ubXVzaWMuY29tL3N1cHBvcnQvcHJvZHVjdC1kb3dubG9hZHM/cHJvZHVjdD1BLTxicj5TdGF0aW9uPGJyPjxicj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyPk5PVkFUSU9OIEEtU3RhdGlvbjxicj48YnI+PGJyPjxicj5UaGUgbWFudWFsIGZvciB0aGUgTm92YXRpb24gQS1TdGF0aW9uIHN5bnRoZXNpemVyIHByb3ZpZGVzIGEgbGlzdCBvZiBtaWRpIGNvbnRpbnVvdXMtY29udHJvbCBudW1iZXJzIGZyb20gMC0xMjcuPGJyPjxicj4mbmJzcDtTb21lIG9mIHRoZXNlIGFyZSBsaXN0ZWQgYXMgZm9sbG93czo8YnI+LS0tLS0tPGJyPjxicj43MSA6IHNvdW5kIGNvbnRyb2xsZXIgMiAoTUlESSBzcGVjaWZpZWQgdXNlKTxicj48YnI+QS1TdGF0aW9uIHVzZTxicj5Pc2MgMSwyLDMgb2N0YXZlL29zYyAxJmd0OzIgU3luYyAoc2VlIHBhY2tlZCBwYXJhbWV0ZXIgNCkgPGJyPi0tLS08YnI+V2hlbiB5b3Ugc2VlIHBhY2tlZCBwYXJhbWV0ZXIgMywgdGhpcyBpcyB0aGUgaW5mb3JtYXRpb24geW91IGdldDo8YnI+PGJyPlBhY2tlZCBDb250cm9sbGVyIC8gTlJQTiBwYXJhbWV0ZXIgZGV0YWlscyAtPGJyPjxicj5iaXRzIDAtMSA6IDIgYml0IG9zYyAxIHdhdmVmb3JtIChzaW5lLCB0cmksIHNhdyxzcXVhcmUpPGJyPmJpdHMgMi0zIDogb3NjIDI8YnI+Yml0cyA0LTUgOiBvc2MgMyA8YnI+Yml0IDYmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgOiBvc2MgMSAmZ3Q7IDIgc3luYyBvbjxicj48YnI+VGhhdCBpcyBhIDcgYml0IGJ5dGUsIGNvcnJlY3Q/PGJyPjxicj5UaGVyZSBhcmUgZWxldmVuIHNldHMgb2YgcGFja2VkIHBhcmFtZXRlcnMuPGJyPi0tLS0tPGJyPkkgYW0gbm93IGludGVycHJldGluZyB0aGUgbWFudWFsIGRpZmZlcmVudGx5Ljxicj5UaGlzIHNlY3Rpb24gaXMgZW50aXRsZWQgJnF1b3Q7UGFja2VkIENvbnRyb2xsZXIgLyBOUlBOIFBhcmFtZXRlciBEZXRhaWxzPGJyPjxicj5UaGUgcGFnZSBmb2xsb3dpbmcgdGhlIHBhY2tlZCBwYXJhbWV0ZXIgZGV0YWlscyBhICZxdW90O01pZGkgTlJQTiBsaXN0JnF1b3Q7PGJyPkkmIzM5O20gbm93IHRoaW5raW5nIHRoYXQgdGhlIHBhY2tlZCBwYXJhbWV0ZXJzIGFyZSBub3QgZXZlbiBOUlBOJiMzOTtzIGluIHRoZSBmaXJzdCBwbGFjZS48YnI+QWx0aG91Z2ggdGhlIHBhY2tlZCBwYXJhbWV0ZXJzIGFyZSBteSBmaXJzdCBjb25jZXJuLCBJIHdpbGwgc3RpbGwgbmVlZCB0aGUgTlJQTiYjMzk7cyZuYnNwOyBhcyB3ZWxsLCBidXQgaWYgSSBoYWQgaW50ZXJwcmV0ZWQgdGhhdCBpbmNvcnJlY3RseSwgaXQgY2VydGFpbmx5IGhhcyBub3QgYmVlbiBzaW1wbGlmeWluZyB0aGUgcHJvY2Vzcy48YnI+Jm5ic3A7PGJyPiZxdW90O1RoZSBBLVN0YXRpb24gdXNlcyBhIGZldyBOUlBOJiMzOTtzIGFzIGRldGFpbGVkIGJlbG93Ljxicj5TaW5jZSBsZXNzIHRoYW4gMTI4IG9mIHRoZW0gYXJlIHVzZWQsJm5ic3A7IG9ubHkgb25lIE5SUE4gYmFuayBtc2IgaXMgbmVlZGVkLiBUaGVyZWZvcmUgb25seSB0aGUgTlJQTiBsc2IgaXMgdHJhbnNtaXR0ZWQvcmVjZWl2ZWQgYW5kIHRoZSBOUlBOIG1zYiBpcyBpZ25vcmVkIGFuZCBpcyBub3QgdHJhbnNtaXR0ZWQuPGJyPkZvciBmdXR1cmUgY29tcGF0aWJpbGl0eSwgYXNzdW1lIHRoYXQgdGhlIE5SUE4gbXNiIGlzIDAuJnF1b3Q7PGJyPjxicj5UaGUgTlJQTiYjMzk7cyBhbHNvIGNvbnRhaW4gc29tZSBvZiB0aGUgcGFja2VkIHBhcmFtZXRlcnMgKDgsOSwxMCkuPGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48L3A+IDxkaXYgY2xhc3M9InlncnBzLXlpdi0xNjU4MDU3NzIweWdycHMteWl2LTE2ODk2ODkwNzR5Z3Jwcy15aXYtNDgyODg3Mzg0eWdycHMteWl2LTE4NTI4OTEzNDR5Z3JvdXBzLXF1b3RlZCI+PGJyPjxicj48YmxvY2txdW90ZT48c3BhbiBjbGFzcz0ieWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NHlncnBzLXlpdi00ODI4ODczODQiPiAtLS1JbiBiYzIwMDBAeWFob29ncm91cHMuY29tLCAmbHQ7cnBjZmVuZGVyQC4uLiZndDsgd3JvdGU6PGJyPjxicj48ZGl2IGlkPSJ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncnBzLXlpdi0xNjg5Njg5MDc0eWdycHMteWl2LTQ4Mjg4NzM4NHlncnBzLXlpdi0xODUyODkxMzQ0eWdycHMteWl2LTY3ODc0ODYwOSI+PHA+Q29tcHV0ZXJzICh0aGlzIGluY2x1ZGVzIHBob25lcywgd2FzaGluZyBtYWNoaW5lcyBhbmQgQkMyMDAwIGV0Yykgb25seSB0YWxrIGluIG9uL29mZiBvciAwIGFuZCAxIGNhbGxlZCZuYnNwOyBiaW5hcnkgYW5kIGVhY2ggc3dpdGNoIGlzIGNhbGxlZCBhIGJpdC48L3A+PHA+V2UgZ3JvdXAgdGhlc2UgYml0cyB1c3VhbGx5IGluIGJsb2NrcyBvZiA0IGNhbGxlZCBhIG5pYmJsZS48L3A+PHA+VHdvIG9mIHRoZXNlIG5pYmJsZXMgYXJlIGNhbGxlZCBhIGJ5dGUuIFNvIGEgYnl0ZSBoYXMgOCBiaXRzIG9yIDggb24gLyBvZmYgc3dpdGNoZXMuPGJyPjwvcD48cD5TbyBjb3VudGluZyBpbiBiaW5hcnkgKHRoYXQgaXMgb25seSB1c2luZyAwIGFuZCAxKSBpcyA8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjAmbmJzcDsgMDxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MSZuYnNwOyAxPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4yJm5ic3A7IDEwJm5ic3A7Jm5ic3A7IC0gdGhpcyBpcyB0aGUgc2FtZSBwcm9jZXNzIGFzIHdoZW4gd2UgcmVhY2ggOSBhZGQgMSB0byBpdCwgd2UgYWRkIGEgbmV3IGNvbHVtbiAtIHN0YXJ0IGFnYWluID0gMTA8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MyZuYnNwOyAxMTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij40Jm5ic3A7IDEwMDwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij41Jm5ic3A7IDEwMTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij42Jm5ic3A7IDExMDwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij43Jm5ic3A7IDExMTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij44Jm5ic3A7IDEwMDA8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+OSZuYnNwOyAxMDAxPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjEwIDEwMTA8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTEgMTAxMTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xMiAxMTAwPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjEzIDExMDE8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTQgMTExMDwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xNSAxMTExIGFuZCB0aGF0IGlzIGFsbCB3ZSBjYW4gY291bnQgd2l0aCA0IGJpdHM8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5TbyAwIHRvIDE1IGlzIDE2IHZhbHVlcy4gSXQgd291bGQgYmUgZ3JlYXQgaWYgd2UgY291bGQgdXNlIGEgc2luZ2xlIGNoYXJhY3RlciBmb3IgZWFjaCB2YWx1ZS48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5TbyB3ZSBtYWtlIGRlY2ltYWwuLi4gPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xMCA9IEE8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTEgPSBCPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjEyID0gQzwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xMyA9IEQ8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTQgPSBFPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjE1ID0gRjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPldoZW4gd2UgbmVlZCBhIGJpZ2dlciBudW1iZXIgd2UgY291bGQganVzdCBnZXQgYW5vdGhlciBiaXQgYnV0IGxldHMgZ3JhYiBhbiBleHRyYSBuaWJibGUgYW5kIHVzZSBhIGJ5dGUgaW5zdGVhZDxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4wID0gMDA8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MSA9IDAxPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPi4uLjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xNCA9IDBFPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjE1ID0gMEY8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTYgPSAxMDxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTcgPSAxMTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4uLi48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTI0ID03Qzxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTI1ID03RDxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTI2ID03RTxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTI3ID03RiBhcyBNaWRpIG9ubHkgdXNlcyA3IGJpdHMgZm9yIGRhdGEgMTI3IGlzIHRoZSBiaWdnZXN0IGRhdGEgbnVtYmVyIGF2YWlsYWJsZSBhcyBhIHNpbmdsZSBieXRlPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xMjggPTgwPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4uLi48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MjU0ID1GRTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4yNTUgPUZGIGJpZ2dlc3Qgc2luZ2xlIGJ5dGUgdmFsdWU8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjI1NiA9MDEgMDAmbmJzcDsgdGhpcyBpcyB0aGUgdXN1YWwgZGlzcGxheSBmb3JtYXQgZm9yIGEgMiBieXRlIG9yIDE2IGJpdCBudW1iZXIgcmlnaHQgdXAgdG8gRkYgRkYgb3IgNjU1MzUgaW4gZGVjaW1hbC4gPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5XaGljaCBkbyB5b3UgZmluZCBlYXNpZXIgdG8gcmVhZD88YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+Tm93IGluIE1pZGkgYWxsIHRoZSBub24tZGF0YSBzdHVmZiBsaWtlICYjMzk7SSBqdXN0IHByZXNzZWQgYSBub3RlJnF1b3Q7IGFuZCAmcXVvdDtjaGFuZ2UgdGhlIHBhdGNoIHRvIG51bWJlciZxdW90OyBhcmUgYWxsIGdyZWF0ZXIgdGhhbiAxMjcgdGhhdCBpcyBoZXggODAmbmJzcDsgKHlvdSBzZWUgdGhpcyBhbHNvIGFzIDB4ODAgb3IgJDgwIG9yIDgwaCBhbGwgdGhlIHNhbWUgdGhpbmcpIGFuZCBiaWdnZXIuPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPlNvIGFzIHdlIG5lZWQmbmJzcDsgdG8ga25vdyB3aGF0IGNoYW5uZWwgaXQgaXMsIGxldHMgdXNlIHRoZSBsb3dlciBuaWJibGUgZm9yIHRoYXQuPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+U28gd2UgY2FuIGhhdmUgY29tbWFuZHMgb3Igc3RhdHVzIGJ5dGVzLCBhcyB0aGV5IGFyZSBjYWxsZWQsIG9uIGFueSBvZiAxNiBjaGFubmVscyAoMCB0byBGKTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkIwIGlzIGNvbnRpbnVvdXMgY29udHJvbGxlciBvbiBjaGFubmVsIDEgKHdlIHVzZSB0aGUgemVybyBzbyB0aGUgY2hhbm5lbCBudW1iZXIgaXMgMSBtb3JlKTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5CMyBpcyBjb250aW51b3VzIGNvbnRyb2xsZXIgb24gY2hhbm5lbCA0PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+ODAgaXMgTm90ZSBvZmYgY2hhbm5lbCAxPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+OG4gaXMgTm90ZSBvZmYgb24gc29tZSBjaGFubmVsPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij45biBpcyBOb3RlIE9uPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkFuIGlzIHBvbHlwaG9uaWMgcHJlc3N1cmUgKFBvbHlwaG9uaWMgQWZ0ZXJ0b3VjaCk8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+Qm4gaXMgQ0MgY29udGludW91cyBjb250cm9sbGVyPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkNuIGlzIFBDIHBhdGNoIGNoYW5nZTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5EbiBpcyBDaGFubmVsIFByZXNzdXJlIChBZnRlcnRvdWNoKTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5FbiBpcyBQQiBQaXRjaCBiZW5kPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+RjAgdG8gRkYgYXJlIHN5c3RlbSBtZXNzYWdlcyBlZyBGMCBpcyB0aGUgc3RhcnQgb2Ygc3lzdGVtIGV4Y2x1c2l2ZSBhbmQgRjcgaXMgZW5kIG9mIHN5c3RlbSBleGNsdXNpdmUuPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+Rm9yIGEgZ29vZCByZWZlcmVuY2UgdG8gTUlESSBzZWU8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPmh0dHA6Ly93d3cuc29tYXNjYXBlLm9yZy9taWRpL3RlY2gvc3BlYy5odG1sPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+QXMgZmFyIGFzIHRoZSBwYWNrZWQgZGF0YSB5b3Ugd2lsbCBuZWVkIHRvIHNwZWxsIG91dCBleGFjdGx5IHdoYXQgeW91IGFyZSB0cnlpbmcgdG8gZG8uPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+QWxsIHRoZSBiZXN0PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPlJveWNlPGJyPjwvcD48ZGl2IGNsYXNzPSJ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncnBzLXlpdi0xNjg5Njg5MDc0eWdycHMteWl2LTQ4Mjg4NzM4NHlncnBzLXlpdi0xODUyODkxMzQ0eWdycHMteWl2LTY3ODc0ODYwOXlncm91cHMtcXVvdGVkIj48YnI+PGJyPjxibG9ja3F1b3RlPjxzcGFuIGNsYXNzPSJ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncnBzLXlpdi0xNjg5Njg5MDc0eWdycHMteWl2LTQ4Mjg4NzM4NHlncnBzLXlpdi0xODUyODkxMzQ0Ij4gLS0tSW4gYmMyMDAwQHlhaG9vZ3JvdXBzLmNvbSwgJmx0O2Fic2VudEAuLi4mZ3Q7IHdyb3RlOjxicj48YnI+PGRpdiBpZD0ieWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NHlncnBzLXlpdi00ODI4ODczODR5Z3Jwcy15aXYtMTg1Mjg5MTM0NHlncnBzLXlpdi02Nzg3NDg2MDl5Z3Jwcy15aXYtMTg1MjA2ODcwOSI+PHA+Rmlyc3Qgb2ZmLCBJIGhhdmUgYmVlbiB1bmFibGUgdG8gZmlndXJlIG91dCAmbmJzcDt3aGF0IEIwIG1lYW5zLiZuYnNwOzwvcD4gPGRpdiBjbGFzcz0ieWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NHlncnBzLXlpdi00ODI4ODczODR5Z3Jwcy15aXYtMTg1Mjg5MTM0NHlncnBzLXlpdi02Nzg3NDg2MDl5Z3Jwcy15aXYtMTg1MjA2ODcwOXlncm91cHMtcXVvdGVkIj48YnI+PGJyPjxibG9ja3F1b3RlPjxzcGFuIGNsYXNzPSJ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncnBzLXlpdi0xNjg5Njg5MDc0eWdycHMteWl2LTQ4Mjg4NzM4NHlncnBzLXlpdi0xODUyODkxMzQ0eWdycHMteWl2LTY3ODc0ODYwOSI+IC0tLUluIGJjMjAwMEB5YWhvb2dyb3Vwcy5jb20sICZsdDthYnNlbnRALi4uJmd0OyB3cm90ZTo8YnI+PGJyPjxkaXYgaWQ9InlncnBzLXlpdi0xNjU4MDU3NzIweWdycHMteWl2LTE2ODk2ODkwNzR5Z3Jwcy15aXYtNDgyODg3Mzg0eWdycHMteWl2LTE4NTI4OTEzNDR5Z3Jwcy15aXYtNjc4NzQ4NjA5eWdycHMteWl2LTE4NTIwNjg3MDl5Z3Jwcy15aXYtMzI0Mzk1MzY5Ij48cD5BbmQgSSBtZWFudCAmcXVvdDttZXQgZmFjZSB0byBmYWNlJnF1b3Q7Ljxicj48YnI+Jm5ic3A7PC9wPiA8ZGl2IGNsYXNzPSJ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncnBzLXlpdi0xNjg5Njg5MDc0eWdycHMteWl2LTQ4Mjg4NzM4NHlncnBzLXlpdi0xODUyODkxMzQ0eWdycHMteWl2LTY3ODc0ODYwOXlncnBzLXlpdi0xODUyMDY4NzA5eWdycHMteWl2LTMyNDM5NTM2OXlncm91cHMtcXVvdGVkIj48YnI+PGJyPjxibG9ja3F1b3RlPjxzcGFuIGNsYXNzPSJ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncnBzLXlpdi0xNjg5Njg5MDc0eWdycHMteWl2LTQ4Mjg4NzM4NHlncnBzLXlpdi0xODUyODkxMzQ0eWdycHMteWl2LTY3ODc0ODYwOXlncnBzLXlpdi0xODUyMDY4NzA5Ij4gLS0tSW4gYmMyMDAwQHlhaG9vZ3JvdXBzLmNvbSwgJmx0O3NnaG9va2luZ3NALi4uJmd0OyB3cm90ZTo8YnI+PGJyPjxkaXYgaWQ9InlncnBzLXlpdi0xNjU4MDU3NzIweWdycHMteWl2LTE2ODk2ODkwNzR5Z3Jwcy15aXYtNDgyODg3Mzg0eWdycHMteWl2LTE4NTI4OTEzNDR5Z3Jwcy15aXYtNjc4NzQ4NjA5eWdycHMteWl2LTE4NTIwNjg3MDl5Z3Jwcy15aXYtMzI0Mzk1MzY5eWdycHMteWl2LTE1ODkyMDk4MzAiPjxkaXY+PGRpdj48L2Rpdj48ZGl2PldlbGwgeW91IGp1c3QgZGlkIGVuY291bnRlciBzb21lb25lIHdobyBub3Qgb25seSB1bmRlcnN0YW5kcyBOUlBOcyBidXQgZ2F2ZSBhIGdyZWF0IGV4cGxhbmF0aW9uPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5UaGUgQkNSIGV4cGVjdHMgdGhlIGFkZHJlc3MgYW5kIHJhbmdlIG9mIHZhbHVlcy4gVGhlbiB1IGhhdmUgdG8gc2F5IGlmIHlvdSBhcmUgc2VuZGluZyBqdXN0IDcgb3IgZnVsbCAxNCBiaXRzLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+R29vZCBsdWNrIGluIGludGVycHJldGluZyBOUlBOczwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGRpdiBzdHlsZT0iZm9udC1zaXplOjc1JTtjb2xvcjojNTc1NzU3OyI+PGJyPjwvZGl2PjwvZGl2PjwvZGl2Pjxicj48YnI+PGJyPi0tLS0tLS0tIE9yaWdpbmFsIG1lc3NhZ2UgLS0tLS0tLS08YnI+RnJvbTogYWJzZW50QC4uLiA8YnI+RGF0ZTogMTMvMTEvMjAxMyAgMTU6NDcgIChHTVQrMDA6MDApIDxicj5UbzogYmMyMDAwQHlhaG9vZ3JvdXBzLmNvbSA8YnI+U3ViamVjdDogW2JjMjAwMF0gUkU6IFJFOiBOUlBOIGNvbmZ1c2lvbiA8YnI+IDxicj48YnI+CjxzcGFuIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4mbmJzcDs8L3NwYW4+CgoKCiAgICA8ZGl2IGlkPSJ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncnBzLXlpdi0xNjg5Njg5MDc0eWdycHMteWl2LTQ4Mjg4NzM4NHlncnBzLXlpdi0xODUyODkxMzQ0eWdycHMteWl2LTY3ODc0ODYwOXlncnBzLXlpdi0xODUyMDY4NzA5eWdycHMteWl2LTMyNDM5NTM2OXlncnBzLXlpdi0xNTg5MjA5ODMweWdycC10ZXh0Ij4KICAgICAgCiAgICAgIAogICAgICA8cD5XaGVyZSAmbmJzcDthbSBjb25mdXNlZCBpcyB0aGF0IHRoZSBlbnRyeSBmb3IgcGFyYW1ldGVyIG51bWJlciBpcyBub3QgaGV4Ljxicj48YnI+VGhlIEEtU3RhdGlvbiBsaXN0cyBDQyBudW1iZXJzIGFzICZxdW90O3BhY2tlZCBwYXJhbWV0ZXJzJnF1b3Q7IHdpdGggd2hhdCBJIHRoaW5rIGFyZSBzdXBwb3NlZCB0byBiZSA4LWJpdCAmbmJzcDtudW1iZXJzIHRvIGFzc2lnbiBhIHNwZWNpZmljIC1wYWNrZWQgc3ViLXBhcmFtZXRlci48YnI+PGJyPkl0JiMzOTtzIGJlZW4gdmVyeSBkaWZmaWN1bHQgdG8gZmluZCBpbmZvcm1hdGlvbiBvbiB0aGlzLiBJIGFtIGdldHRpbmcgdGhlIGltcHJlc3Npb24gdGhhdCB0aGlzIHNvcnQgb2YgdGhpbmcgaXMgYSBzbWFsbCBzdGVwIHJlbW92ZWQgZnJvbSBkZWVwIE1JREkgdXNlci1lbmQgdm9vZG9vLjxicj5JIGhhdmUgeWV0IHRvIGVuY291bnRlciBhbnlvbmUgaW4gcmVhbCBsaWZlIHRoYXQgYWN0dWFsbHkgaGFzIGhlYXJkIG9mIE5SUE5zIDpEIC4gSSYjMzk7dmUgYmVlbiBnZXR0aW5nIGEgbG90IG9mIGJsYW5rIHN0YXJlcyBhbmQgcmVmZXJyYWxzIHRvIGJhc2ljIE1JREkgdGV4dHMuPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PGJyPjwvcD4gPGRpdiBjbGFzcz0ieWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NHlncnBzLXlpdi00ODI4ODczODR5Z3Jwcy15aXYtMTg1Mjg5MTM0NHlncnBzLXlpdi02Nzg3NDg2MDl5Z3Jwcy15aXYtMTg1MjA2ODcwOXlncnBzLXlpdi0zMjQzOTUzNjl5Z3Jwcy15aXYtMTU4OTIwOTgzMHlncm91cHMtcXVvdGVkIj48YnI+PGJyPjxibG9ja3F1b3RlPjxzcGFuIGNsYXNzPSJ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncnBzLXlpdi0xNjg5Njg5MDc0eWdycHMteWl2LTQ4Mjg4NzM4NHlncnBzLXlpdi0xODUyODkxMzQ0eWdycHMteWl2LTY3ODc0ODYwOXlncnBzLXlpdi0xODUyMDY4NzA5eWdycHMteWl2LTMyNDM5NTM2OSI+IC0tLUluIGJjMjAwMEB5YWhvb2dyb3Vwcy5jb20sICZsdDtycGNmZW5kZXJALi4uJmd0OyB3cm90ZTo8YnI+PGJyPjxkaXYgaWQ9InlncnBzLXlpdi0xNjU4MDU3NzIweWdycHMteWl2LTE2ODk2ODkwNzR5Z3Jwcy15aXYtNDgyODg3Mzg0eWdycHMteWl2LTE4NTI4OTEzNDR5Z3Jwcy15aXYtNjc4NzQ4NjA5eWdycHMteWl2LTE4NTIwNjg3MDl5Z3Jwcy15aXYtMzI0Mzk1MzY5eWdycHMteWl2LTE1ODkyMDk4MzB5Z3Jwcy15aXYtMTk5MDY5NDA4OSI+UlBOIChyZWdpc3RlcmVkIHBhcmFtZXRlciBudW1iZXJzKSBhbmQgTlJQTiBhcmUgd2F5cyB0byBpbmNyZWFzZSB0aGUgbnVtYmVyIG9mIENvbnRpbnVvdXMgQ29udHJvbGxlcnMgTWlkaSBjYW4gdXNlLjxicj5JdCB3b3JrcyB0aGUgc2FtZSBhIEJhbmsgc2VsZWN0aW9uIGZvCnIgUGF0Y2hlczxicj48YnI+TlJQTjxicj5DQzk4Jm5ic3A7IExTQjxicj5DQzk5IE1TQjxicj48YnI+aW4gaGV4IG9uIGNoYW5uZWwgMTxicj48YnI+QjAgNjIgTFNCPGJyPkIwIDYzIE1TQjxicj48YnI+QXMgTVNCIChtb3N0IHNpZ25pZmljYW50IGJ5dGUpIGFuZCBMU0IgY2FuIGJlIGJldHdlZW4gMCBhbmQgMTI3IGNvbWJpbmVkIGl0IGJlY29tZXMgYSAxNCBiaXQgbnVtYmVyIGZyb20gMCB0byZuYnNwOyAxNiwzODMgY29udHJvbGxlcnM8YnI+PGJyPlNvIG9uY2UgeW91IGhhdmUgc2FpZCB3aGF0IGNvbnRyb2xsZXIgeW91IGFyZSB0YWxraW5nIGFib3V0LCB5b3Ugc2VuZCBpdHMgdmFsdWU8YnI+PGJyPkZvciAwIHRvIDEyNyB0eXBlIGNvbnRyb2xsZXJzPGJyPkIwIDA2IHZhbHVlIDxicj5vcjxicj5CMCAyNiB2YWx1ZTxicj48cD48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPm9yIGlmIHlvdXIgY29udHJvbGxlciBoYXMgMTQgYml0IHZhbHVlcyAoMCB0byAxNiwzODMpPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkIwIDA2IE1TQjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5CMCAyNiBMU0I8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cD4oVGhlcmUgaXMgYW4gaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYXMgd2VsbC4pPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5PbmNlIHRoZSBjb250cm9sbGVyIGhhcyBiZWVuIHNlbGVjdGVkIGl0IGRvZXNuJiMzOTt0IGhhdmUgdG8gYmUgc2VsZWN0ZWQgYWdhaW4gc28geW91IGNhbiBzZW5kPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkIwIDYyIExTQjxicj5CMCA2MyBNU0I8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+QjAgMjYgdmFsdWUgMTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5CMCAyNiB2YWx1ZSAyPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkIwIDI2IHZhbHVlIDM8YnI+PC9wPmV0Yzxicj48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+IDwvcD48ZGl2IGNsYXNzPSJ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncnBzLXlpdi0xNjg5Njg5MDc0eWdycHMteWl2LTQ4Mjg4NzM4NHlncnBzLXlpdi0xODUyODkxMzQ0eWdycHMteWl2LTY3ODc0ODYwOXlncnBzLXlpdi0xODUyMDY4NzA5eWdycHMteWl2LTMyNDM5NTM2OXlncnBzLXlpdi0xNTg5MjA5ODMweWdycHMteWl2LTE5OTA2OTQwODl5Z3JvdXBzLXF1b3RlZCI+SnVzdCB0aGUgc2FtZSBhcyBCYW5rcyBhbmQgUGF0Y2hlcy48YnI+PGJyPkFsbCB0aGUgYmVzdDxicj5Sb3ljZTxicj48ZGl2IGlkPSJ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncnBzLXlpdi0xNjg5Njg5MDc0eWdycHMteWl2LTQ4Mjg4NzM4NHlncnBzLXlpdi0xODUyODkxMzQ0eWdycHMteWl2LTY3ODc0ODYwOXlncnBzLXlpdi0xODUyMDY4NzA5eWdycHMteWl2LTMyNDM5NTM2OXlncnBzLXlpdi0xNTg5MjA5ODMweWdycHMteWl2LTE5OTA2OTQwODl5Z3Jwcy15aXYtMTY1ODkyMjA0Ij48YnI+PC9kaXY+PC9kaXY+PC9kaXY+PC9zcGFuPjwvYmxvY2txdW90ZT48L2Rpdj4KCiAgICA8L2Rpdj4KICAgICAKCiAgICAKCgoKCgoKCjwvZGl2PiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYmxvY2txdW90ZT48L2Rpdj48L(Message over 64 KB, truncated)

RE: RE: RE: RE: RE: RE: RE: RE: NRPN confusion

2013-11-16 by <absent@...>

re re re re re re


 The BCR will still open up the A-Station plenty, but little things like inaccessible arppegiator on/off were just stupid IMHO, especially coming from a company that designs interfaces. 
You have to make compromises in life, I guess.

Using a software solution for the rest is not the end of the world, I'd just rather not divide my DAW's resources further.
I mostly don't even use plug-ins unless I have to.
Then again, having the interface on my dektop already doesn't really mean the end of the world. I can re-purpose a tiny old laptop I have if I can find the right virtual control software.
There's gotta be something reasonable.
 I seem to remember Sound Diver being super expensive.








 

---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

 There are three things that I see as shortcomings in the BC
 It can't handle 14bit negative numbers - guess what Emu's Proteus and Proteus 2000 series modules use.
 It can't handle 16 bit numbers - used by Morpheus synth. If it could then you could make it handle 14bit negatives. This would be what I would mod first.

 And, of course, it can't handle packed bytes because you can't access the other parameter values to build the byte .
 

 There is an extra wish and that would to be able to send a patch dump and it would re-set its values. I think that would be very difficult though. Works well with a computer in between.

 

 In the scheme of things it is still pretty awesome.
 

 I seem to remember there is a site where someone has reverse engineered the ROM and had an example of  accessing the LED screen.
 

 The quick(?) solution would be a program that just let everything through except the the special NRPN that you invented to cover all the switched data. 

 You would have to set up the current values of the switches, but you could do this by having a 'Request Patch' button programmed on the BCR that the program would know what it meant and sent a request current patch to the synth as sysex.
 The patch data received could be used to set the values of all the controls and the packed data NRPN could be built by adding the incoming switch value to the one you got from the patch data.
 At this point you might as well write an editor.

 

 

 All the best
 Royce

 

 ---In bc2000@yahoogroups.com, <absent@...> wrote:

 Actually, what's alarming to me is that I somehow entirely failed to notice that all of the packed paramteres are "switching" functions that don't even need to be knobbed- just switched.

Ha ha, I looked up " MIDI Packed Paramters" in the search engine I use (Duckduckgo.com), and the first hit I found was from someone trying to sort out a Novation.
: D

This is The Future. Isn't there some space age thing I can get to just put a bunch of switches on that have values assigned to them of the appropriate type?

If this future was happening in the 1950's, we'd be able to buy kits at something similar to Radio Shack. At least in my brain we would. Which might explain why I even care about any of this.
Don't these kids today have some sort of " Adreno Razzberies " that will do this? Wouldn't they need it for that  "Stepping Dub" thing they do with the "Steam Punk " rock?

 *bangs head on floor*




 

 ---In bc2000@yahoogroups.com, <absent@...> wrote:

 Well, I feel less confused now.

So what the heck are they suposed to be doing with those, then?
Why are they even there?
Is that for internal control only? What is supposed to interface with those parameters?

 
So, now I have to research how packed parameters work in sequencing.
Man, I was really looking forward to real-time hardware control of basic things like, oh, say, maybe the oscillator controls.
*Now* the thing looks completely stupid to me.
I won't bore you with the physical interface details, but if you twiddle a lot, you're going to wear out some swtiches pretty fast.
It's an awesome thing, but I am really disappointed by this. There has to be *some* way to get hardware control for those features.
I'm going to throw a message in a bottle in Novation's general direction, just to see if they say anything interesting.

Thanks you so much. And I am *far* from done using the BCR2000.
I'll still use it with the Novation. I am just irritated at the Novation right now : D

 

 ---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

 I did type it all out. I pretend that it is a good substitute for the scales that I'm not playing enough.
 

  Well I had a look at the Midi spec and I can't believe it.
 

 It is an old synth but not that old and still  using packed data parameters in Midi and worse than that they put it in controller messages (NRPN is an extension of CC messages).
 

 Now the sad news for you, you can't change packed parameters, like the Osc waveforms without changing a whole lot of other parameters packed in there.
 The BC does not allow you to add parameters together.
 

 The only way you can get this machine to work properly is to write a program that will do the packing/unpacking for you.
 

 I can understand the use of packing in the early days because of the cost memory, but now???
 It can't be that there are too many parameters as they don't use a whole lot of available NRPNs
 

 I had a look to see if you could change a parameter by sysex instead but there doesn't seem to be a command for parameter change. It just seems to use sysex for bulk dumps.

 

One last hope.
There is an editor on the web.
http://www.luigibianchi.com/AStatEdit/AStatEdit.htm
It only seems to have Midi In and out but perhaps you could ask him to add a controller port?
Then he could use controller values from the BC to pack the data.

The old Korg DW6000 uses packed data in its sysex for parameter change.
My solution is here .....
http://www.bwalk.com.au/DW6K/DW6k.html
 (note that if you are using a browser addon 'HPPS everywhere' then you will get a warning. I don't know why - Just use http instead)


 Sorry
 Royce

 

 

 ---In bc2000@yahoogroups.com, <absent@...> wrote:

 Royce, did you have that all written out some where and just paste it?
I hope you didn't have to write all that on my account, but it's awesome!
 Thank you so much for the explicit information.

I'm still early on (32 pages) in the BC Manager software manual, but I am reading it.
BTW, the MIDI utilities included in the thing are awesome! 

Below, I explain exactly what I am trying to program.


I should have specified that the A-Station is a rack-mount sound module, and not a controller.
I have tried to enter the information below verbatim, but in case anyone is curious, here is a link to the actual manual.
http://us.novationmusic.com/support/product-downloads?product=A-
Station

-------------------------------
NOVATION A-Station



The manual for the Novation A-Station synthesizer provides a list of midi continuous-control numbers from 0-127.

 Some of these are listed as follows:
------

71 : sound controller 2 (MIDI specified use)

A-Station use
Osc 1,2,3 octave/osc 1>2 Sync (see packed parameter 4) 
----
When you see packed parameter 3, this is the information you get:

Packed Controller / NRPN parameter details -

bits 0-1 : 2 bit osc 1 waveform (sine, tri, saw,square)
bits 2-3 : osc 2
bits 4-5 : osc 3 
bit 6      : osc 1 > 2 sync on

That is a 7 bit byte, correct?

There are eleven sets of packed parameters.
-----
I am now interpreting the manual differently.
This section is entitled "Packed Controller / NRPN Parameter Details

The page following the packed parameter details a "Midi NRPN list"
I'm now thinking that the packed parameters are not even NRPN's in the first place.
Although the packed parameters are my first concern, I will still need the NRPN's  as well, but if I had interpreted that incorrectly, it certainly has not been simplifying the process.
 
"The A-Station uses a few NRPN's as detailed below.
Since less than 128 of them are used,  only one NRPN bank msb is needed. Therefore only the NRPN lsb is transmitted/received and the NRPN msb is ignored and is not transmitted.
For future compatibility, assume that the NRPN msb is 0."

The NRPN's also contain some of the packed parameters (8,9,10).











 

 ---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

 Computers (this includes phones, washing machines and BC2000 etc) only talk in on/off or 0 and 1 called  binary and each switch is called a bit.
 We group these bits usually in blocks of 4 called a nibble.
 Two of these nibbles are called a byte. So a byte has 8 bits or 8 on / off switches.

 So counting in binary (that is only using 0 and 1) is 

 0  0

 1  1

 2  10   - this is the same process as when we reach 9 add 1 to it, we add a new column - start again = 10
 3  11
 4  100
 5  101
 6  110
 7  111
 8  1000
 9  1001
 10 1010
 11 1011
 12 1100
 13 1101
 14 1110
 15 1111 and that is all we can count with 4 bits
 

 So 0 to 15 is 16 values. It would be great if we could use a single character for each value.
 

 So we make decimal... 

 10 = A
 11 = B
 12 = C
 13 = D
 14 = E
 15 = F
 

 When we need a bigger number we could just get another bit but lets grab an extra nibble and use a byte instead

 

 0 = 00
 1 = 01
 ...
 14 = 0E
 15 = 0F
 16 = 10

 17 = 11
 ...
 124 =7C

 125 =7D

 126 =7E

 127 =7F as Midi only uses 7 bits for data 127 is the biggest data number available as a single byte

 128 =80

 ...
 254 =FE
 255 =FF biggest single byte value

 256 =01 00  this is the usual display format for a 2 byte or 16 bit number right up to FF FF or 65535 in decimal. 

 Which do you find easier to read?

 

 Now in Midi all the non-data stuff like 'I just pressed a note" and "change the patch to number" are all greater than 127 that is hex 80  (you see this also as 0x80 or $80 or 80h all the same thing) and bigger.

 

 So as we need  to know what channel it is, lets use the lower nibble for that.
 

 So we can have commands or status bytes, as they are called, on any of 16 channels (0 to F)
 

 B0 is continuous controller on channel 1 (we use the zero so the channel number is 1 more)
 B3 is continuous controller on channel 4
 

 80 is Note off channel 1
 

 8n is Note off on some channel

 9n is Note On
 An is polyphonic pressure (Polyphonic Aftertouch)
 Bn is CC continuous controller
 Cn is PC patch change
 Dn is Channel Pressure (Aftertouch)
 En is PB Pitch bend
 

 F0 to FF are system messages eg F0 is the start of system exclusive and F7 is end of system exclusive.
 

 For a good reference to MIDI see

 http://www.somascape.org/midi/tech/spec.html
 

 As far as the packed data you will need to spell out exactly what you are trying to do.
 

 All the best
 Royce

 

 ---In bc2000@yahoogroups.com, <absent@...> wrote:

 First off, I have been unable to figure out  what B0 means. 
 

 ---In bc2000@yahoogroups.com, <absent@...> wrote:

 And I meant "met face to face".

 
 

 ---In bc2000@yahoogroups.com, <sghookings@...> wrote:

 
 Well you just did encounter someone who not only understands NRPNs but gave a great explanation
 

 The BCR expects the address and range of values. Then u have to say if you are sending just 7 or full 14 bits.
 

 Good luck in interpreting NRPNs
Show quoted textHide quoted text
-------- Original message --------
From: absent@... 
Date: 13/11/2013 15:47 (GMT+00:00) 
To: bc2000@yahoogroups.com 
Subject: [bc2000] RE: RE: NRPN confusion 
 

   Where  am confused is that the entry for parameter number is not hex.

The A-Station lists CC numbers as "packed parameters" with what I think are supposed to be 8-bit  numbers to assign a specific -packed sub-parameter.

It's been very difficult to find information on this. I am getting the impression that this sort of thing is a small step removed from deep MIDI user-end voodoo.
I have yet to encounter anyone in real life that actually has heard of NRPNs :D . I've been getting a lot of blank stares and referrals to basic MIDI texts.

 


 

 ---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

 RPN (registered parameter numbers) and NRPN are ways to increase the number of Continuous Controllers Midi can use.
It works the same a Bank selection fo r Patches

NRPN
CC98  LSB
CC99 MSB

in hex on channel 1

B0 62 LSB
B0 63 MSB

As MSB (most significant byte) and LSB can be between 0 and 127 combined it becomes a 14 bit number from 0 to  16,383 controllers

So once you have said what controller you are talking about, you send its value

For 0 to 127 type controllers
B0 06 value 
or
B0 26 value
 

 or if your controller has 14 bit values (0 to 16,383)

 

 B0 06 MSB
 B0 26 LSB
 

 (There is an increment and decrement as well.)

 Once the controller has been selected it doesn't have to be selected again so you can send

 

 B0 62 LSB
B0 63 MSB
 B0 26 value 1
 B0 26 value 2
 B0 26 value 3

etc
 
 
 Just the same as Banks and Patches.

All the best
Royce

RE: RE: RE: RE: RE: RE: RE: RE: RE: NRPN confusion

2013-11-16 by <rpcfender@...>

PHA+VGhlIG1hbnVhbCBzYXlzIHRoYXQgaXMgcmVzcG9uZHMgdG8gU3lzdGVtIHJlYWx0aW1lIG1lc3NhZ2VzLjwvcD48cD5Ucnkgc2V0dGluZyB1cCBhIGJ1dHRvbiB3aXRoIGFuIG9uIHZhbHVlIG9mJm5ic3A7IEZBIChzdGFydCkgYW5kIG9mZiBvZiBGQyAoc3RvcCkgYW5kIHNlZSBpZiB0aGF0IHN0YXJ0cyBhbmQgc3RvcHMgdGhlIGFycC48YnI+PC9wPjxwPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+JGJ1dHRvbiA1MiA7IEJvdHRvbSByaWdodDxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+LnNob3d2YWx1ZSBvbjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+Lm1vZGUgdG9nZ2xlPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4uZGVmYXVsdCAkRkM8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPi5taW5tYXggJEZBICRGQzxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+LnR4IHZhbCZuYnNwOzwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkFsbCB0aGUgYmVzdDwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5Sb3ljZTxicj48L3A+IDxkaXYgY2xhc3M9Inlncm91cHMtcXVvdGVkIj48YnI+PGJyPi0tLUluIGJjMjAwMEB5YWhvb2dyb3Vwcy5jb20sICZsdDthYnNlbnRAZnJvZ25ldC5uZXQmZ3Q7IHdyb3RlOjxicj48YnI+PGRpdiBpZD0ieWdycHMteWl2LTE3NzUxMDk5MjMiPjxwPiZuYnNwO3JlIHJlIHJlIHJlIHJlIHJlPGJyPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+VGhlIEJDUiB3aWxsIHN0aWxsIG9wZW4gdXAgdGhlIEEtU3RhdGlvbiBwbGVudHksIGJ1dCBsaXR0bGUgdGhpbmdzIGxpa2UgaW5hY2Nlc3NpYmxlIGFycHBlZ2lhdG9yIG9uL29mZiB3ZXJlIGp1c3Qgc3R1cGlkIElNSE8sIGVzcGVjaWFsbHkgY29taW5nIGZyb20gYSBjb21wYW55IHRoYXQgZGVzaWducyBpbnRlcmZhY2VzLiA8YnI+WW91IGhhdmUgdG8gbWFrZSBjb21wcm9taXNlcyBpbiBsaWZlLCBJIGd1ZXNzLjxicj48YnI+VXNpbmcgYSBzb2Z0d2FyZSBzb2x1dGlvbiBmb3IgdGhlIHJlc3QgaXMgbm90IHRoZSBlbmQgb2YgdGhlIHdvcmxkLCBJJiMzOTtkIGp1c3QgcmF0aGVyIG5vdCBkaXZpZGUgbXkgREFXJiMzOTtzIHJlc291cmNlcyBmdXJ0aGVyLjxicj5JIG1vc3RseSBkb24mIzM5O3QgZXZlbiB1c2UgcGx1Zy1pbnMgdW5sZXNzIEkgaGF2ZSB0by48YnI+VGhlbiBhZ2FpbiwgaGF2aW5nIHRoZSBpbnRlcmZhY2Ugb24gbXkgZGVrdG9wIGFscmVhZHkgZG9lc24mIzM5O3QgcmVhbGx5IG1lYW4gdGhlIGVuZCBvZiB0aGUgd29ybGQuIEkgY2FuIHJlLXB1cnBvc2UgYSB0aW55IG9sZCBsYXB0b3AgSSBoYXZlIGlmIEkgY2FuIGZpbmQgdGhlIHJpZ2h0IHZpcnR1YWwgY29udHJvbCBzb2Z0d2FyZS48YnI+VGhlcmUmIzM5O3MgZ290dGEgYmUgc29tZXRoaW5nIHJlYXNvbmFibGUuPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkkgc2VlbSB0byByZW1lbWJlciBTb3VuZCBEaXZlciBiZWluZyBzdXBlciBleHBlbnNpdmUuPGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48L3A+IDxkaXYgY2xhc3M9InlncnBzLXlpdi0xNzc1MTA5OTIzeWdyb3Vwcy1xdW90ZWQiPjxicj48YnI+PGJsb2NrcXVvdGU+PHNwYW4gY2xhc3M9IiI+IC0tLUluIGJjMjAwMEB5YWhvb2dyb3Vwcy5jb20sICZsdDtycGNmZW5kZXJALi4uJmd0OyB3cm90ZTo8YnI+PGJyPjxkaXYgaWQ9InlncnBzLXlpdi0xNzc1MTA5OTIzeWdycHMteWl2LTU5NTE3NDk3NiI+PHA+VGhlcmUgYXJlIHRocmVlIHRoaW5ncyB0aGF0IEkgc2VlIGFzIHNob3J0Y29taW5ncyBpbiB0aGUgQkM8L3A+PHA+IEl0IGNhbiYjMzk7dCBoYW5kbGUgMTRiaXQgbmVnYXRpdmUgbnVtYmVycyAtIGd1ZXNzIHdoYXQgRW11JiMzOTtzIFByb3RldXMgYW5kIFByb3RldXMgMjAwMCBzZXJpZXMgbW9kdWxlcyB1c2UuPC9wPjxwPkl0IGNhbiYjMzk7dCBoYW5kbGUgMTYgYml0IG51bWJlcnMgLSB1c2VkIGJ5IE1vcnBoZXVzIHN5bnRoLiBJZiBpdCBjb3VsZCB0aGVuIHlvdSBjb3VsZCBtYWtlIGl0IGhhbmRsZSAxNGJpdCBuZWdhdGl2ZXMuIFRoaXMgd291bGQgYmUgd2hhdCBJIHdvdWxkIG1vZCBmaXJzdC48YnI+PC9wPjxwPkFuZCwgb2YgY291cnNlLCBpdCBjYW4mIzM5O3QgaGFuZGxlIHBhY2tlZCBieXRlcyBiZWNhdXNlIHlvdSBjYW4mIzM5O3QgYWNjZXNzIHRoZSBvdGhlciBwYXJhbWV0ZXIgdmFsdWVzIHRvIGJ1aWxkIHRoZSBieXRlIC48L3A+PHA+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5UaGVyZSBpcyBhbiBleHRyYSB3aXNoIGFuZCB0aGF0IHdvdWxkIHRvIGJlIGFibGUgdG8gc2VuZCBhIHBhdGNoIGR1bXAgYW5kIGl0IHdvdWxkIHJlLXNldCBpdHMgdmFsdWVzLiBJIHRoaW5rIHRoYXQgd291bGQgYmUgdmVyeSBkaWZmaWN1bHQgdGhvdWdoLiBXb3JrcyB3ZWxsIHdpdGggYSBjb21wdXRlciBpbiBiZXR3ZWVuLjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5JbiB0aGUgc2NoZW1lIG9mIHRoaW5ncyBpdCBpcyBzdGlsbCBwcmV0dHkgYXdlc29tZS48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5JIHNlZW0gdG8gcmVtZW1iZXIgdGhlcmUgaXMgYSBzaXRlIHdoZXJlIHNvbWVvbmUgaGFzIHJldmVyc2UgZW5naW5lZXJlZCB0aGUgUk9NIGFuZCBoYWQgYW4gZXhhbXBsZSBvZiZuYnNwOyBhY2Nlc3NpbmcgdGhlIExFRCBzY3JlZW4uPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+VGhlIHF1aWNrKD8pIHNvbHV0aW9uIHdvdWxkIGJlIGEgcHJvZ3JhbSB0aGF0IGp1c3QgbGV0IGV2ZXJ5dGhpbmcgdGhyb3VnaCBleGNlcHQgdGhlIHRoZSBzcGVjaWFsIE5SUE4gdGhhdCB5b3UgaW52ZW50ZWQgdG8gY292ZXIgYWxsIHRoZSBzd2l0Y2hlZCBkYXRhLiA8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPllvdSB3b3VsZCBoYXZlIHRvIHNldCB1cCB0aGUgY3VycmVudCB2YWx1ZXMgb2YgdGhlIHN3aXRjaGVzLCBidXQgeW91IGNvdWxkIGRvIHRoaXMgYnkgaGF2aW5nIGEgJiMzOTtSZXF1ZXN0IFBhdGNoJiMzOTsgYnV0dG9uIHByb2dyYW1tZWQgb24gdGhlIEJDUiB0aGF0IHRoZSBwcm9ncmFtIHdvdWxkIGtub3cgd2hhdCBpdCBtZWFudCBhbmQgc2VudCBhIHJlcXVlc3QgY3VycmVudCBwYXRjaCB0byB0aGUgc3ludGggYXMgc3lzZXguPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPiBUaGUgcGF0Y2ggZGF0YSByZWNlaXZlZCBjb3VsZCBiZSB1c2VkIHRvIHNldCB0aGUgdmFsdWVzIG9mIGFsbCB0aGUgY29udHJvbHMgYW5kIHRoZSBwYWNrZWQgZGF0YSBOUlBOIGNvdWxkIGJlIGJ1aWx0IGJ5IGFkZGluZyB0aGUgaW5jb21pbmcgc3dpdGNoIHZhbHVlIHRvIHRoZSBvbmUgeW91IGdvdCBmcm9tIHRoZSBwYXRjaCBkYXRhLjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5BdCB0aGlzIHBvaW50IHlvdSBtaWdodCBhcyB3ZWxsIHdyaXRlIGFuIGVkaXRvci48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5BbGwgdGhlIGJlc3Q8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+Um95Y2U8YnI+PC9wPiA8ZGl2IGNsYXNzPSJ5Z3Jwcy15aXYtMTc3NTEwOTkyM3lncnBzLXlpdi01OTUxNzQ5NzZ5Z3JvdXBzLXF1b3RlZCI+PGJyPjxicj48YmxvY2txdW90ZT48c3BhbiBjbGFzcz0ieWdycHMteWl2LTE3NzUxMDk5MjMiPiAtLS1JbiBiYzIwMDBAeWFob29ncm91cHMuY29tLCAmbHQ7YWJzZW50QC4uLiZndDsgd3JvdGU6PGJyPjxicj48ZGl2IGlkPSJ5Z3Jwcy15aXYtMTc3NTEwOTkyM3lncnBzLXlpdi01OTUxNzQ5NzZ5Z3Jwcy15aXYtMTY1ODA1NzcyMCI+PHA+QWN0dWFsbHksIHdoYXQmIzM5O3MgYWxhcm1pbmcgdG8gbWUgaXMgdGhhdCBJIHNvbWVob3cgZW50aXJlbHkgZmFpbGVkIHRvIG5vdGljZSB0aGF0IGFsbCBvZiB0aGUgcGFja2VkIHBhcmFtdGVyZXMgYXJlICZxdW90O3N3aXRjaGluZyZxdW90OyBmdW5jdGlvbnMgdGhhdCBkb24mIzM5O3QgZXZlbiBuZWVkIHRvIGJlIGtub2JiZWQtIGp1c3Qgc3dpdGNoZWQuPGJyPjxicj5IYSBoYSwgSSBsb29rZWQgdXAgJnF1b3Q7IE1JREkgUGFja2VkIFBhcmFtdGVycyZxdW90OyBpbiB0aGUgc2VhcmNoIGVuZ2luZSBJIHVzZSAoRHVja2R1Y2tnby5jb20pLCBhbmQgdGhlIGZpcnN0IGhpdCBJIGZvdW5kIHdhcyBmcm9tIHNvbWVvbmUgdHJ5aW5nIHRvIHNvcnQgb3V0IGEgTm92YXRpb24uPGJyPjogRDxicj48YnI+VGhpcyBpcyBUaGUgRnV0dXJlLiBJc24mIzM5O3QgdGhlcmUgc29tZSBzcGFjZSBhZ2UgdGhpbmcgSSBjYW4gZ2V0IHRvIGp1c3QgcHV0IGEgYnVuY2ggb2Ygc3dpdGNoZXMgb24gdGhhdCBoYXZlIHZhbHVlcyBhc3NpZ25lZCB0byB0aGVtIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlPzxicj48YnI+SWYgdGhpcyBmdXR1cmUgd2FzIGhhcHBlbmluZyBpbiB0aGUgMTk1MCYjMzk7cywgd2UmIzM5O2QgYmUgYWJsZSB0byBidXkga2l0cyBhdCBzb21ldGhpbmcgc2ltaWxhciB0byBSYWRpbyBTaGFjay4gQXQgbGVhc3QgaW4gbXkgYnJhaW4gd2Ugd291bGQuIFdoaWNoIG1pZ2h0IGV4cGxhaW4gd2h5IEkgZXZlbiBjYXJlIGFib3V0IGFueSBvZiB0aGlzLjxicj5Eb24mIzM5O3QgdGhlc2Uga2lkcyB0b2RheSBoYXZlIHNvbWUgc29ydCBvZiAmcXVvdDsgQWRyZW5vIFJhenpiZXJpZXMgJnF1b3Q7IHRoYXQgd2lsbCBkbyB0aGlzPyBXb3VsZG4mIzM5O3QgdGhleSBuZWVkIGl0IGZvciB0aGF0Jm5ic3A7ICZxdW90O1N0ZXBwaW5nIER1YiZxdW90OyB0aGluZyB0aGV5IGRvIHdpdGggdGhlICZxdW90O1N0ZWFtIFB1bmsgJnF1b3Q7IHJvY2s/PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4qYmFuZ3MgaGVhZCBvbiBmbG9vcio8YnI+PGJyPjxicj48YnI+PC9wPiA8ZGl2IGNsYXNzPSJ5Z3Jwcy15aXYtMTc3NTEwOTkyM3lncnBzLXlpdi01OTUxNzQ5NzZ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncm91cHMtcXVvdGVkIj48YnI+PGJyPjxibG9ja3F1b3RlPjxzcGFuIGNsYXNzPSJ5Z3Jwcy15aXYtMTc3NTEwOTkyM3lncnBzLXlpdi01OTUxNzQ5NzYiPiAtLS1JbiBiYzIwMDBAeWFob29ncm91cHMuY29tLCAmbHQ7YWJzZW50QC4uLiZndDsgd3JvdGU6PGJyPjxicj48ZGl2IGlkPSJ5Z3Jwcy15aXYtMTc3NTEwOTkyM3lncnBzLXlpdi01OTUxNzQ5NzZ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncnBzLXlpdi0xNjg5Njg5MDc0Ij48cD5XZWxsLCBJIGZlZWwgbGVzcyBjb25mdXNlZCBub3cuPGJyPjxicj5TbyB3aGF0IHRoZSBoZWNrIGFyZSB0aGV5IHN1cG9zZWQgdG8gYmUgZG9pbmcgd2l0aCB0aG9zZSwgdGhlbj88YnI+V2h5IGFyZSB0aGV5IGV2ZW4gdGhlcmU/PGJyPklzIHRoYXQgZm9yIGludGVybmFsIGNvbnRyb2wgb25seT8gV2hhdCBpcyBzdXBwb3NlZCB0byBpbnRlcmZhY2Ugd2l0aCB0aG9zZSBwYXJhbWV0ZXJzPzxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPlNvLCBub3cgSSBoYXZlIHRvIHJlc2VhcmNoIGhvdyBwYWNrZWQgcGFyYW1ldGVycyB3b3JrIGluIHNlcXVlbmNpbmcuPGJyPk1hbiwgSSB3YXMgcmVhbGx5IGxvb2tpbmcgZm9yd2FyZCB0byByZWFsLXRpbWUgaGFyZHdhcmUgY29udHJvbCBvZiBiYXNpYyB0aGluZ3MgbGlrZSwgb2gsIHNheSwgbWF5YmUgdGhlIG9zY2lsbGF0b3IgY29udHJvbHMuPGJyPipOb3cqIHRoZSB0aGluZyBsb29rcyBjb21wbGV0ZWx5IHN0dXBpZCB0byBtZS48YnI+SSB3b24mIzM5O3QgYm9yZSB5b3Ugd2l0aCB0aGUgcGh5c2ljYWwgaW50ZXJmYWNlIGRldGFpbHMsIGJ1dCBpZiB5b3UgdHdpZGRsZSBhIGxvdCwgeW91JiMzOTtyZSBnb2luZyB0byB3ZWFyIG91dCBzb21lIHN3dGljaGVzIHByZXR0eSBmYXN0Ljxicj5JdCYjMzk7cyBhbiBhd2Vzb21lIHRoaW5nLCBidXQgSSBhbSByZWFsbHkgZGlzYXBwb2ludGVkIGJ5IHRoaXMuIFRoZXJlIGhhcyB0byBiZSAqc29tZSogd2F5IHRvIGdldCBoYXJkd2FyZSBjb250cm9sIGZvciB0aG9zZSBmZWF0dXJlcy48YnI+SSYjMzk7bSBnb2luZyB0byB0aHJvdyBhIG1lc3NhZ2UgaW4gYSBib3R0bGUgaW4gTm92YXRpb24mIzM5O3MgZ2VuZXJhbCBkaXJlY3Rpb24sIGp1c3QgdG8gc2VlIGlmIHRoZXkgc2F5IGFueXRoaW5nIGludGVyZXN0aW5nLjxicj48YnI+VGhhbmtzIHlvdSBzbyBtdWNoLiBBbmQgSSBhbSAqZmFyKiBmcm9tIGRvbmUgdXNpbmcgdGhlIEJDUjIwMDAuPGJyPkkmIzM5O2xsIHN0aWxsIHVzZSBpdCB3aXRoIHRoZSBOb3ZhdGlvbi4gSSBhbSBqdXN0IGlycml0YXRlZCBhdCB0aGUgTm92YXRpb24gcmlnaHQgbm93IDogRDxicj48L3A+IDxkaXYgY2xhc3M9InlncnBzLXlpdi0xNzc1MTA5OTIzeWdycHMteWl2LTU5NTE3NDk3NnlncnBzLXlpdi0xNjU4MDU3NzIweWdycHMteWl2LTE2ODk2ODkwNzR5Z3JvdXBzLXF1b3RlZCI+PGJyPjxicj48YmxvY2txdW90ZT48c3BhbiBjbGFzcz0ieWdycHMteWl2LTE3NzUxMDk5MjN5Z3Jwcy15aXYtNTk1MTc0OTc2eWdycHMteWl2LTE2NTgwNTc3MjAiPiAtLS1JbiBiYzIwMDBAeWFob29ncm91cHMuY29tLCAmbHQ7cnBjZmVuZGVyQC4uLiZndDsgd3JvdGU6PGJyPjxicj48ZGl2IGlkPSJ5Z3Jwcy15aXYtMTc3NTEwOTkyM3lncnBzLXlpdi01OTUxNzQ5NzZ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncnBzLXlpdi0xNjg5Njg5MDc0eWdycHMteWl2LTQ4Mjg4NzM4NCI+PHA+SSBkaWQgdHlwZSBpdCBhbGwgb3V0LiBJIHByZXRlbmQgdGhhdCBpdCBpcyBhIGdvb2Qgc3Vic3RpdHV0ZSBmb3IgdGhlIHNjYWxlcyB0aGF0IEkmIzM5O20gbm90IHBsYXlpbmcgZW5vdWdoLjwvcD48cD48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPiZuYnNwO1dlbGwgSSBoYWQgYSBsb29rIGF0IHRoZSBNaWRpIHNwZWMgYW5kIEkgY2FuJiMzOTt0IGJlbGlldmUgaXQuPC9wPjxwPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+SXQgaXMgYW4gb2xkIHN5bnRoIGJ1dCBub3QgdGhhdCBvbGQgYW5kIHN0aWxsJm5ic3A7IHVzaW5nIHBhY2tlZCBkYXRhIHBhcmFtZXRlcnMgaW4gTWlkaSBhbmQgd29yc2UgdGhhbiB0aGF0IHRoZXkgcHV0IGl0IGluIGNvbnRyb2xsZXIgbWVzc2FnZXMgKE5SUE4gaXMgYW4gZXh0ZW5zaW9uIG9mIENDIG1lc3NhZ2VzKS48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5Ob3cgdGhlIHNhZCBuZXdzIGZvciB5b3UsIHlvdSBjYW4mIzM5O3QgY2hhbmdlIHBhY2tlZCBwYXJhbWV0ZXJzLCBsaWtlIHRoZSBPc2Mgd2F2ZWZvcm1zIHdpdGhvdXQgY2hhbmdpbmcgYSB3aG9sZSBsb3Qgb2Ygb3RoZXIgcGFyYW1ldGVycyBwYWNrZWQgaW4gdGhlcmUuPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPlRoZSBCQyBkb2VzIG5vdCBhbGxvdyB5b3UgdG8gYWRkIHBhcmFtZXRlcnMgdG9nZXRoZXIuPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+VGhlIG9ubHkgd2F5IHlvdSBjYW4gZ2V0IHRoaXMgbWFjaGluZSB0byB3b3JrIHByb3Blcmx5IGlzIHRvIHdyaXRlIGEgcHJvZ3JhbSB0aGF0IHdpbGwgZG8gdGhlIHBhY2tpbmcvdW5wYWNraW5nIGZvciB5b3UuPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+SSBjYW4gdW5kZXJzdGFuZCB0aGUgdXNlIG9mIHBhY2tpbmcgaW4gdGhlIGVhcmx5IGRheXMgYmVjYXVzZSBvZiB0aGUgY29zdCBtZW1vcnksIGJ1dCBub3c/Pz88L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+SXQgY2FuJiMzOTt0IGJlIHRoYXQgdGhlcmUgYXJlIHRvbyBtYW55IHBhcmFtZXRlcnMgYXMgdGhleSBkb24mIzM5O3QgdXNlIGEgd2hvbGUgbG90IG9mIGF2YWlsYWJsZSBOUlBOczwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkkgaGFkIGEgbG9vayB0byBzZWUgaWYgeW91IGNvdWxkIGNoYW5nZSBhIHBhcmFtZXRlciBieSBzeXNleCBpbnN0ZWFkIGJ1dCB0aGVyZSBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIGEgY29tbWFuZCBmb3IgcGFyYW1ldGVyIGNoYW5nZS4gSXQganVzdCBzZWVtcyB0byB1c2Ugc3lzZXggZm9yIGJ1bGsgZHVtcHMuPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPk9uZSBsYXN0IGhvcGUuPGJyPlRoZXJlIGlzIGFuIGVkaXRvciBvbiB0aGUgd2ViLjxicj5odHRwOi8vd3d3Lmx1aWdpYmlhbmNoaS5jb20vQVN0YXRFZGl0L0FTdGF0RWRpdC5odG08YnI+SXQgb25seSBzZWVtcyB0byBoYXZlIE1pZGkgSW4gYW5kIG91dCBidXQgcGVyaGFwcyB5b3UgY291bGQgYXNrIGhpbSB0byBhZGQgYSBjb250cm9sbGVyIHBvcnQ/PGJyPlRoZW4gaGUgY291bGQgdXNlIGNvbnRyb2xsZXIgdmFsdWVzIGZyb20gdGhlIEJDIHRvIHBhY2sgdGhlIGRhdGEuPGJyPjxicj5UaGUgb2xkIEtvcmcgRFc2MDAwIHVzZXMgcGFja2VkIGRhdGEgaW4gaXRzIHN5c2V4IGZvciBwYXJhbWV0ZXIgY2hhbmdlLjxicj5NeSBzb2x1dGlvbiBpcyBoZXJlIC4uLi4uPGJyPmh0dHA6Ly93d3cuYndhbGsuY29tLmF1L0RXNksvRFc2ay5odG1sPGJyPiZuYnNwOyhub3RlIHRoYXQgaWYgeW91IGFyZSB1c2luZyBhIGJyb3dzZXIgYWRkb24gJiMzOTtIUFBTIGV2ZXJ5d2hlcmUmIzM5OyB0aGVuIHlvdSB3aWxsIGdldCBhIHdhcm5pbmcuIEkgZG9uJiMzOTt0IGtub3cgd2h5IC0gSnVzdCB1c2UgaHR0cCBpbnN0ZWFkKTxicj48YnI+PGJyPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPlNvcnJ5PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPlJveWNlPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxkaXYgY2xhc3M9InlncnBzLXlpdi0xNzc1MTA5OTIzeWdycHMteWl2LTU5NTE3NDk3NnlncnBzLXlpdi0xNjU4MDU3NzIweWdycHMteWl2LTE2ODk2ODkwNzR5Z3Jwcy15aXYtNDgyODg3Mzg0eWdyb3Vwcy1xdW90ZWQiPjxicj48YnI+PGJsb2NrcXVvdGU+PHNwYW4gY2xhc3M9InlncnBzLXlpdi0xNzc1MTA5OTIzeWdycHMteWl2LTU5NTE3NDk3NnlncnBzLXlpdi0xNjU4MDU3NzIweWdycHMteWl2LTE2ODk2ODkwNzQiPiAtLS1JbiBiYzIwMDBAeWFob29ncm91cHMuY29tLCAmbHQ7YWJzZW50QC4uLiZndDsgd3JvdGU6PGJyPjxicj48ZGl2IGlkPSJ5Z3Jwcy15aXYtMTc3NTEwOTkyM3lncnBzLXlpdi01OTUxNzQ5NzZ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncnBzLXlpdi0xNjg5Njg5MDc0eWdycHMteWl2LTQ4Mjg4NzM4NHlncnBzLXlpdi0xODUyODkxMzQ0Ij48cD5Sb3ljZSwgZGlkIHlvdSBoYXZlIHRoYXQgYWxsIHdyaXR0ZW4gb3V0IHNvbWUgd2hlcmUgYW5kIGp1c3QgcGFzdGUgaXQ/PGJyPkkgaG9wZSB5b3UgZGlkbiYjMzk7dCBoYXZlIHRvIHdyaXRlIGFsbCB0aGF0IG9uIG15IGFjY291bnQsIGJ1dCBpdCYjMzk7cyBhd2Vzb21lITwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5UaGFuayB5b3Ugc28gbXVjaCBmb3IgdGhlIGV4cGxpY2l0IGluZm9ybWF0aW9uLjxicj48YnI+SSYjMzk7bSBzdGlsbCBlYXJseSBvbiAoMzIgcGFnZXMpIGluIHRoZSBCQyBNYW5hZ2VyIHNvZnR3YXJlIG1hbnVhbCwgYnV0IEkgYW0gcmVhZGluZyBpdC48YnI+QlRXLCB0aGUgTUlESSB1dGlsaXRpZXMgaW5jbHVkZWQgaW4gdGhlIHRoaW5nIGFyZSBhd2Vzb21lISA8YnI+PGJyPkJlbG93LCBJIGV4cGxhaW4gZXhhY3RseSB3aGF0IEkgYW0gdHJ5aW5nIHRvIHByb2dyYW0uPGJyPjxicj48YnI+SSBzaG91bGQgaGF2ZSBzcGVjaWZpZWQgdGhhdCB0aGUgQS1TdGF0aW9uIGlzIGEgcmFjay1tb3VudCBzb3VuZCBtb2R1bGUsIGFuZCBub3QgYSBjb250cm9sbGVyLjxicj5JIGhhdmUgdHJpZWQgdG8gZW50ZXIgdGhlIGluZm9ybWF0aW9uIGJlbG93IHZlcmJhdGltLCBidXQgaW4gY2FzZSBhbnlvbmUgaXMgY3VyaW91cywgaGVyZSBpcyBhIGxpbmsgdG8gdGhlIGFjdHVhbCBtYW51YWwuPGJyPmh0dHA6Ly91cy5ub3ZhdGlvbm11c2ljLmNvbS9zdXBwb3J0L3Byb2R1Y3QtZG93bmxvYWRzP3Byb2R1Y3Q9QS08YnI+U3RhdGlvbjxicj48YnI+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj5OT1ZBVElPTiBBLVN0YXRpb248YnI+PGJyPjxicj48YnI+VGhlIG1hbnVhbCBmb3IgdGhlIE5vdmF0aW9uIEEtU3RhdGlvbiBzeW50aGVzaXplciBwcm92aWRlcyBhIGxpc3Qgb2YgbWlkaSBjb250aW51b3VzLWNvbnRyb2wgbnVtYmVycyBmcm9tIDAtMTI3Ljxicj48YnI+Jm5ic3A7U29tZSBvZiB0aGVzZSBhcmUgbGlzdGVkIGFzIGZvbGxvd3M6PGJyPi0tLS0tLTxicj48YnI+NzEgOiBzb3VuZCBjb250cm9sbGVyIDIgKE1JREkgc3BlY2lmaWVkIHVzZSk8YnI+PGJyPkEtU3RhdGlvbiB1c2U8YnI+T3NjIDEsMiwzIG9jdGF2ZS9vc2MgMSZndDsyIFN5bmMgKHNlZSBwYWNrZWQgcGFyYW1ldGVyIDQpIDxicj4tLS0tPGJyPldoZW4geW91IHNlZSBwYWNrZWQgcGFyYW1ldGVyIDMsIHRoaXMgaXMgdGhlIGluZm9ybWF0aW9uIHlvdSBnZXQ6PGJyPjxicj5QYWNrZWQgQ29udHJvbGxlciAvIE5SUE4gcGFyYW1ldGVyIGRldGFpbHMgLTxicj48YnI+Yml0cyAwLTEgOiAyIGJpdCBvc2MgMSB3YXZlZm9ybSAoc2luZSwgdHJpLCBzYXcsc3F1YXJlKTxicj5iaXRzIDItMyA6IG9zYyAyPGJyPmJpdHMgNC01IDogb3NjIDMgPGJyPmJpdCA2Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDogb3NjIDEgJmd0OyAyIHN5bmMgb248YnI+PGJyPlRoYXQgaXMgYSA3IGJpdCBieXRlLCBjb3JyZWN0Pzxicj48YnI+VGhlcmUgYXJlIGVsZXZlbiBzZXRzIG9mIHBhY2tlZCBwYXJhbWV0ZXJzLjxicj4tLS0tLTxicj5JIGFtIG5vdyBpbnRlcnByZXRpbmcgdGhlIG1hbnVhbCBkaWZmZXJlbnRseS48YnI+VGhpcyBzZWN0aW9uIGlzIGVudGl0bGVkICZxdW90O1BhY2tlZCBDb250cm9sbGVyIC8gTlJQTiBQYXJhbWV0ZXIgRGV0YWlsczxicj48YnI+VGhlIHBhZ2UgZm9sbG93aW5nIHRoZSBwYWNrZWQgcGFyYW1ldGVyIGRldGFpbHMgYSAmcXVvdDtNaWRpIE5SUE4gbGlzdCZxdW90Ozxicj5JJiMzOTttIG5vdyB0aGlua2luZyB0aGF0IHRoZSBwYWNrZWQgcGFyYW1ldGVycyBhcmUgbm90IGV2ZW4gTlJQTiYjMzk7cyBpbiB0aGUgZmlyc3QgcGxhY2UuPGJyPkFsdGhvdWdoIHRoZSBwYWNrZWQgcGFyYW1ldGVycyBhcmUgbXkgZmlyc3QgY29uY2VybiwgSSB3aWxsIHN0aWxsIG5lZWQgdGhlIE5SUE4mIzM5O3MmbmJzcDsgYXMgd2VsbCwgYnV0IGlmIEkgaGFkIGludGVycHJldGVkIHRoYXQgaW5jb3JyZWN0bHksIGl0IGNlcnRhaW5seSBoYXMgbm90IGJlZW4gc2ltcGxpZnlpbmcgdGhlIHByb2Nlc3MuPGJyPiZuYnNwOzxicj4mcXVvdDtUaGUgQS1TdGF0aW9uIHVzZXMgYSBmZXcgTlJQTiYjMzk7cyBhcyBkZXRhaWxlZCBiZWxvdy48YnI+U2luY2UgbGVzcyB0aGFuIDEyOCBvZiB0aGVtIGFyZSB1c2VkLCZuYnNwOyBvbmx5IG9uZSBOUlBOIGJhbmsgbXNiIGlzIG5lZWRlZC4gVGhlcmVmb3JlIG9ubHkgdGhlIE5SUE4gbHNiIGlzIHRyYW5zbWl0dGVkL3JlY2VpdmVkIGFuZCB0aGUgTlJQTiBtc2IgaXMgaWdub3JlZCBhbmQgaXMgbm90IHRyYW5zbWl0dGVkLjxicj5Gb3IgZnV0dXJlIGNvbXBhdGliaWxpdHksIGFzc3VtZSB0aGF0IHRoZSBOUlBOIG1zYiBpcyAwLiZxdW90Ozxicj48YnI+VGhlIE5SUE4mIzM5O3MgYWxzbyBjb250YWluIHNvbWUgb2YgdGhlIHBhY2tlZCBwYXJhbWV0ZXJzICg4LDksMTApLjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PC9wPiA8ZGl2IGNsYXNzPSJ5Z3Jwcy15aXYtMTc3NTEwOTkyM3lncnBzLXlpdi01OTUxNzQ5NzZ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncnBzLXlpdi0xNjg5Njg5MDc0eWdycHMteWl2LTQ4Mjg4NzM4NHlncnBzLXlpdi0xODUyODkxMzQ0eWdyb3Vwcy1xdW90ZWQiPjxicj48YnI+PGJsb2NrcXVvdGU+PHNwYW4gY2xhc3M9InlncnBzLXlpdi0xNzc1MTA5OTIzeWdycHMteWl2LTU5NTE3NDk3NnlncnBzLXlpdi0xNjU4MDU3NzIweWdycHMteWl2LTE2ODk2ODkwNzR5Z3Jwcy15aXYtNDgyODg3Mzg0Ij4gLS0tSW4gYmMyMDAwQHlhaG9vZ3JvdXBzLmNvbSwgJmx0O3JwY2ZlbmRlckAuLi4mZ3Q7IHdyb3RlOjxicj48YnI+PGRpdiBpZD0ieWdycHMteWl2LTE3NzUxMDk5MjN5Z3Jwcy15aXYtNTk1MTc0OTc2eWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NHlncnBzLXlpdi00ODI4ODczODR5Z3Jwcy15aXYtMTg1Mjg5MTM0NHlncnBzLXlpdi02Nzg3NDg2MDkiPjxwPkNvbXB1dGVycyAodGhpcyBpbmNsdWRlcyBwaG9uZXMsIHdhc2hpbmcgbWFjaGluZXMgYW5kIEJDMjAwMCBldGMpIG9ubHkgdGFsayBpbiBvbi9vZmYgb3IgMCBhbmQgMSBjYWxsZWQmbmJzcDsgYmluYXJ5IGFuZCBlYWNoIHN3aXRjaCBpcyBjYWxsZWQgYSBiaXQuPC9wPjxwPldlIGdyb3VwIHRoZXNlIGJpdHMgdXN1YWxseSBpbiBibG9ja3Mgb2YgNCBjYWxsZWQgYSBuaWJibGUuPC9wPjxwPlR3byBvZiB0aGVzZSBuaWJibGVzIGFyZSBjYWxsZWQgYSBieXRlLiBTbyBhIGJ5dGUgaGFzIDggYml0cyBvciA4IG9uIC8gb2ZmIHN3aXRjaGVzLjxicj48L3A+PHA+U28gY291bnRpbmcgaW4gYmluYXJ5ICh0aGF0IGlzIG9ubHkgdXNpbmcgMCBhbmQgMSkgaXMgPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4wJm5ic3A7IDA8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjEmbmJzcDsgMTxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MiZuYnNwOyAxMCZuYnNwOyZuYnNwOyAtIHRoaXMgaXMgdGhlIHNhbWUgcHJvY2VzcyBhcyB3aGVuIHdlIHJlYWNoIDkgYWRkIDEgdG8gaXQsIHdlIGFkZCBhIG5ldyBjb2x1bW4gLSBzdGFydCBhZ2FpbiA9IDEwPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjMmbmJzcDsgMTE8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+NCZuYnNwOyAxMDA8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+NSZuYnNwOyAxMDE8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+NiZuYnNwOyAxMTA8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+NyZuYnNwOyAxMTE8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+OCZuYnNwOyAxMDAwPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjkmbmJzcDsgMTAwMTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xMCAxMDEwPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjExIDEwMTE8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTIgMTEwMDwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xMyAxMTAxPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjE0IDExMTA8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTUgMTExMSBhbmQgdGhhdCBpcyBhbGwgd2UgY2FuIGNvdW50IHdpdGggNCBiaXRzPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+U28gMCB0byAxNSBpcyAxNiB2YWx1ZXMuIEl0IHdvdWxkIGJlIGdyZWF0IGlmIHdlIGNvdWxkIHVzZSBhIHNpbmdsZSBjaGFyYWN0ZXIgZm9yIGVhY2ggdmFsdWUuPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+U28gd2UgbWFrZSBkZWNpbWFsLi4uIDxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTAgPSBBPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjExID0gQjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xMiA9IEM8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTMgPSBEPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjE0ID0gRTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xNSA9IEY8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5XaGVuIHdlIG5lZWQgYSBiaWdnZXIgbnVtYmVyIHdlIGNvdWxkIGp1c3QgZ2V0IGFub3RoZXIgYml0IGJ1dCBsZXRzIGdyYWIgYW4gZXh0cmEgbmliYmxlIGFuZCB1c2UgYSBieXRlIGluc3RlYWQ8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MCA9IDAwPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjEgPSAwMTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4uLi48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTQgPSAwRTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xNSA9IDBGPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjE2ID0gMTA8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjE3ID0gMTE8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+Li4uPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjEyNCA9N0M8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjEyNSA9N0Q8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjEyNiA9N0U8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjEyNyA9N0YgYXMgTWlkaSBvbmx5IHVzZXMgNyBiaXRzIGZvciBkYXRhIDEyNyBpcyB0aGUgYmlnZ2VzdCBkYXRhIG51bWJlciBhdmFpbGFibGUgYXMgYSBzaW5nbGUgYnl0ZTxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTI4ID04MDxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+Li4uPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjI1NCA9RkU8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MjU1ID1GRiBiaWdnZXN0IHNpbmdsZSBieXRlIHZhbHVlPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4yNTYgPTAxIDAwJm5ic3A7IHRoaXMgaXMgdGhlIHVzdWFsIGRpc3BsYXkgZm9ybWF0IGZvciBhIDIgYnl0ZSBvciAxNiBiaXQgbnVtYmVyIHJpZ2h0IHVwIHRvIEZGIEZGIG9yIDY1NTM1IGluIGRlY2ltYWwuIDxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+V2hpY2ggZG8geW91IGZpbmQgZWFzaWVyIHRvIHJlYWQ/PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPk5vdyBpbiBNaWRpIGFsbCB0aGUgbm9uLWRhdGEgc3R1ZmYgbGlrZSAmIzM5O0kganVzdCBwcmVzc2VkIGEgbm90ZSZxdW90OyBhbmQgJnF1b3Q7Y2hhbmdlIHRoZSBwYXRjaCB0byBudW1iZXImcXVvdDsgYXJlIGFsbCBncmVhdGVyIHRoYW4gMTI3IHRoYXQgaXMgaGV4IDgwJm5ic3A7ICh5b3Ugc2VlIHRoaXMgYWxzbyBhcyAweDgwIG9yICQ4MCBvciA4MGggYWxsIHRoZSBzYW1lIHRoaW5nKSBhbmQgYmlnZ2VyLjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5TbyBhcyB3ZSBuZWVkJm5ic3A7IHRvIGtub3cgd2hhdCBjaGFubmVsIGl0IGlzLCBsZXRzIHVzZSB0aGUgbG93ZXIgbmliYmxlIGZvciB0aGF0LjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPlNvIHdlIGNhbiBoYXZlIGNvbW1hbmRzIG9yIHN0YXR1cyBieXRlcywgYXMgdGhleSBhcmUgY2FsbGVkLCBvbiBhbnkgb2YgMTYgY2hhbm5lbHMgKDAgdG8gRik8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5CMCBpcyBjb250aW51b3VzIGNvbnRyb2xsZXIgb24gY2hhbm5lbCAxICh3ZSB1c2UgdGhlIHplcm8gc28gdGhlIGNoYW5uZWwgbnVtYmVyIGlzIDEgbW9yZSk8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+QjMgaXMgY29udGludW91cyBjb250cm9sbGVyIG9uIGNoYW5uZWwgNDwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjgwIGlzIE5vdGUgb2ZmIGNoYW5uZWwgMTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjhuIGlzIE5vdGUgb2ZmIG9uIHNvbWUgY2hhbm5lbDxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+OW4gaXMgTm90ZSBPbjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5BbiBpcyBwb2x5cGhvbmljIHByZXNzdXJlIChQb2x5cGhvbmljIEFmdGVydG91Y2gpPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkJuIGlzIENDIGNvbnRpbnVvdXMgY29udHJvbGxlcjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5DbiBpcyBQQyBwYXRjaCBjaGFuZ2U8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+RG4gaXMgQ2hhbm5lbCBQcmVzc3VyZSAoQWZ0ZXJ0b3VjaCk8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+RW4gaXMgUEIgUGl0Y2ggYmVuZDwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkYwIHRvIEZGIGFyZSBzeXN0ZW0gbWVzc2FnZXMgZWcgRjAgaXMgdGhlIHN0YXJ0IG9mIHN5c3RlbSBleGNsdXNpdmUgYW5kIEY3IGlzIGVuZCBvZiBzeXN0ZW0gZXhjbHVzaXZlLjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkZvciBhIGdvb2QgcmVmZXJlbmNlIHRvIE1JREkgc2VlPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5odHRwOi8vd3d3LnNvbWFzY2FwZS5vcmcvbWlkaS90ZWNoL3NwZWMuaHRtbDwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkFzIGZhciBhcyB0aGUgcGFja2VkIGRhdGEgeW91IHdpbGwgbmVlZCB0byBzcGVsbCBvdXQgZXhhY3RseSB3aGF0IHlvdSBhcmUgdHJ5aW5nIHRvIGRvLjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkFsbCB0aGUgYmVzdDwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5Sb3ljZTxicj48L3A+PGRpdiBjbGFzcz0ieWdycHMteWl2LTE3NzUxMDk5MjN5Z3Jwcy15aXYtNTk1MTc0OTc2eWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NHlncnBzLXlpdi00ODI4ODczODR5Z3Jwcy15aXYtMTg1Mjg5MTM0NHlncnBzLXlpdi02Nzg3NDg2MDl5Z3JvdXBzLXF1b3RlZCI+PGJyPjxicj48YmxvY2txdW90ZT48c3BhbiBjbGFzcz0ieWdycHMteWl2LTE3NzUxMDk5MjN5Z3Jwcy15aXYtNTk1MTc0OTc2eWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NHlncnBzLXlpdi00ODI4ODczODR5Z3Jwcy15aXYtMTg1Mjg5MTM0NCI+IC0tLUluIGJjMjAwMEB5YWhvb2dyb3Vwcy5jb20sICZsdDthYnNlbnRALi4uJmd0OyB3cm90ZTo8YnI+PGJyPjxkaXYgaWQ9InlncnBzLXlpdi0xNzc1MTA5OTIzeWdycHMteWl2LTU5NTE3NDk3NnlncnBzLXlpdi0xNjU4MDU3NzIweWdycHMteWl2LTE2ODk2ODkwNzR5Z3Jwcy15aXYtNDgyODg3Mzg0eWdycHMteWl2LTE4NTI4OTEzNDR5Z3Jwcy15aXYtNjc4NzQ4NjA5eWdycHMteWl2LTE4NTIwNjg3MDkiPjxwPkZpcnN0IG9mZiwgSSBoYXZlIGJlZW4gdW5hYmxlIHRvIGZpZ3VyZSBvdXQgJm5ic3A7d2hhdCBCMCBtZWFucy4mbmJzcDs8L3A+IDxkaXYgY2xhc3M9InlncnBzLXlpdi0xNzc1MTA5OTIzeWdycHMteWl2LTU5NTE3NDk3NnlncnBzLXlpdi0xNjU4MDU3NzIweWdycHMteWl2LTE2ODk2ODkwNzR5Z3Jwcy15aXYtNDgyODg3Mzg0eWdycHMteWl2LTE4NTI4OTEzNDR5Z3Jwcy15aXYtNjc4NzQ4NjA5eWdycHMteWl2LTE4NTIwNjg3MDl5Z3JvdXBzLXF1b3RlZCI+PGJyPjxicj48YmxvY2txdW90ZT48c3BhbiBjbGFzcz0ieWdycHMteWl2LTE3NzUxMDk5MjN5Z3Jwcy15aXYtNTk1MTc0OTc2eWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NHlncnBzLXlpdi00ODI4ODczODR5Z3Jwcy15aXYtMTg1Mjg5MTM0NHlncnBzLXlpdi02Nzg3NDg2MDkiPiAtLS1JbiBiYzIwMDBAeWFob29ncm91cHMuY29tLCAmbHQ7YWJzZW50QC4uLiZndDsgd3JvdGU6PGJyPjxicj48ZGl2IGlkPSJ5Z3Jwcy15aXYtMTc3NTEwOTkyM3lncnBzLXlpdi01OTUxNzQ5NzZ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncnBzLXlpdi0xNjg5Njg5MDc0eWdycHMteWl2LTQ4Mjg4NzM4NHlncnBzLXlpdi0xODUyODkxMzQ0eWdycHMteWl2LTY3ODc0ODYwOXlncnBzLXlpdi0xODUyMDY4NzA5eWdycHMteWl2LTMyNDM5NTM2OSI+PHA+QW5kIEkgbWVhbnQgJnF1b3Q7bWV0IGZhY2UgdG8gZmFjZSZxdW90Oy48YnI+PGJyPiZuYnNwOzwvcD4gPGRpdiBjbGFzcz0ieWdycHMteWl2LTE3NzUxMDk5MjN5Z3Jwcy15aXYtNTk1MTc0OTc2eWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NHlncnBzLXlpdi00ODI4ODczODR5Z3Jwcy15aXYtMTg1Mjg5MTM0NHlncnBzLXlpdi02Nzg3NDg2MDl5Z3Jwcy15aXYtMTg1MjA2ODcwOXlncnBzLXlpdi0zMjQzOTUzNjl5Z3JvdXBzLXF1b3RlZCI+PGJyPjxicj48YmxvY2txdW90ZT48c3BhbiBjbGFzcz0ieWdycHMteWl2LTE3NzUxMDk5MjN5Z3Jwcy15aXYtNTk1MTc0OTc2eWdyc(Message over 64 KB, truncated)

RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: NRPN confusion

2013-11-16 by <absent@...>

Um95Y2U7PGJyPjxicj5EbyB5b3UgZmVlbCB0aGlzIGlzIHRoZSBhcHByb3ByaWF0ZSByZXF1ZXN0Pzxicj48YnI+PGJyPkhlbGxvLCBOb3ZhdGlvbiE8YnI+PGJyPjxicj5JIGNvdWxkIHJlYWxseSB1c2Ugc29tZSBhZHZpY2UuPGJyPjxicj5BZnRlciBtYW55IG1hbnkgd2Vla3MsIGF0IChsZWFzdCBhIHdlZWsmIzM5O3Mgd29ydGggb2YgaG91cnMsIGFuZCBwcm9iYWJseSBtb3JlKSwgSSBhbSBkZWFkIHN0dW1wZWQuIEJhZmZsZWQuIEhvcGVsZXNzLjxicj48YnI+PGJyPkkgb3duIGFuIEEtU3RhdGlvbiwgd2hpY2ggaXMgbGVnYWN5LCBidXQgcGxlYXNlIGhlYXIgbWUgb3V0IGJyaWVmbHkgaWYgeW91IGNhbi48YnI+PGJyPkkgdW5kZXJzdGFuZCBmYWlybHkgd2VsbCZuYnNwOyB0aGUgcHJvcGVyIGFwcGxpY2F0aW9uIGFuZCB1c2FnZSBvZiBNSURJIENDIGFzc2lnbm1lbnQsIGFuZCBJIHdhcyB2ZXJ5IHBsZWFzZWQgYnkgdGhlIG1hbnkgcG9zc2liaWxpdGllcyBhbmQgb3B0aW9ucyB0aGUgQS1TdGF0aW9uIG9mZmVycy48YnI+QWNjZXNzIHRvIHRoZSBwYWNrZWQgcGFyYW1ldGVycywgaG93ZXZlciwmbmJzcDsgaXMgZXNjYXBpbmcgbWUuPGJyPjxicj5JIGFtIGEga25vYiB0d2Vha2VyLiBJIGhhdmUgYmVlbiB1c2luZyBhbmFsb2cgc3ludGhzIHNpbmNlIDE5ODguIEFuZCBsaXZlIG9zY2lsbGF0b3IgYW5kIGJhc2ljIGFycGVnZ2lhdGlvbiBjb250cm9scyBhcmUgZmFpcmx5IGltcG9ydGFudCBmZWF0dXJlcyB0byBtZS48YnI+PGJyPldoYXQgZG8gSSBuZWVkIHRvIGRvPyBJIHdhbnQgbGl2ZSBjb250cm9sIG9mIG1vc3Qgb2YgdGhlIHBhY2tlZCBwYXJhbWV0ZXIgc3dpdGNoaW5nIGZ1bmN0aW9ucy48YnI+PGJyPkFsc28sIGlzIHRoZSBzeXNleCBjYXBhYmxlIG9mIGJlaW5nIHVzZWQgZm9yIHJlYWwtdGltZSBjb250cm9sIGluc3RlYWQ/PGJyPjxicj5JJiMzOTtkIHJlYWxseSBsaWtlIHRvIGVsaW1pbmF0ZSB0aGUgdXNlIG9mIHRoZSBzd2l0Y2hlcyBvbiB0aGUgZnJvbnQgYW5kIHRoZSB0b2dnbGluZyB0aHJvdWdoIG1lbnVzIHRvIGFjY2VzcyBvc2NpbGxhdG9yIGFuZCBhcnBlZ2dpYXRpb24gY29udHJvbHMuPGJyPkkgaGF2ZSBhIG5ldXJvbG9naWNhbCBkaXNvcmRlciB0aGF0IG1ha2VzIGl0IHZlcnkgaGFyZCB0byByZW1lbWJlciB3aGVyZSBJJiMzOTttIGF0IGluIHRoZXJlLjxicj48YnI+PGJyPkhvdyBzaG91bGQgSSBhY2Nlc3MgdGhlIHN3aXRjaGluZyBwYWNrZWQgcGFyYW1ldGVycyBmcm9tIGFuIG91dHNpZGUgY29udHJvbGxlcj88YnI+PGJyPjxicj5UaGFuayB5b3UgdmVyeSBtdWNoLDxicj48YnI+V2lsbGlhbSA8YnI+PGJyPjxicj48ZGl2IGNsYXNzPSJ5Z3JvdXBzLXF1b3RlZCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPjxicj48YnI+LS0tSW4gYmMyMDAwQHlhaG9vZ3JvdXBzLmNvbSwgJmx0O3JwY2ZlbmRlckAuLi4mZ3Q7IHdyb3RlOjxicj48YnI+PGRpdiBpZD0ieWdycHMteWl2LTIwNDExNjI4MjUiPjxwPlRoZSBtYW51YWwgc2F5cyB0aGF0IGlzIHJlc3BvbmRzIHRvIFN5c3RlbSByZWFsdGltZSBtZXNzYWdlcy48L3A+PHA+VHJ5IHNldHRpbmcgdXAgYSBidXR0b24gd2l0aCBhbiBvbiB2YWx1ZSBvZiZuYnNwOyBGQSAoc3RhcnQpIGFuZCBvZmYgb2YgRkMgKHN0b3ApIGFuZCBzZWUgaWYgdGhhdCBzdGFydHMgYW5kIHN0b3BzIHRoZSBhcnAuPGJyPjwvcD48cD48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPiRidXR0b24gNTIgOyBCb3R0b20gcmlnaHQ8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPi5zaG93dmFsdWUgb248YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPi5tb2RlIHRvZ2dsZTxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+LmRlZmF1bHQgJEZDPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4ubWlubWF4ICRGQSAkRkM8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPi50eCB2YWwmbmJzcDs8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5BbGwgdGhlIGJlc3Q8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+Um95Y2U8YnI+PC9wPiA8ZGl2IGNsYXNzPSJ5Z3Jwcy15aXYtMjA0MTE2MjgyNXlncm91cHMtcXVvdGVkIj48YnI+PGJyPjxibG9ja3F1b3RlPjxzcGFuIGNsYXNzPSIiPiAtLS1JbiBiYzIwMDBAeWFob29ncm91cHMuY29tLCAmbHQ7YWJzZW50QC4uLiZndDsgd3JvdGU6PGJyPjxicj48ZGl2IGlkPSJ5Z3Jwcy15aXYtMjA0MTE2MjgyNXlncnBzLXlpdi0xNzc1MTA5OTIzIj48cD4mbmJzcDtyZSByZSByZSByZSByZSByZTxicj48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPlRoZSBCQ1Igd2lsbCBzdGlsbCBvcGVuIHVwIHRoZSBBLVN0YXRpb24gcGxlbnR5LCBidXQgbGl0dGxlIHRoaW5ncyBsaWtlIGluYWNjZXNzaWJsZSBhcnBwZWdpYXRvciBvbi9vZmYgd2VyZSBqdXN0IHN0dXBpZCBJTUhPLCBlc3BlY2lhbGx5IGNvbWluZyBmcm9tIGEgY29tcGFueSB0aGF0IGRlc2lnbnMgaW50ZXJmYWNlcy4gPGJyPllvdSBoYXZlIHRvIG1ha2UgY29tcHJvbWlzZXMgaW4gbGlmZSwgSSBndWVzcy48YnI+PGJyPlVzaW5nIGEgc29mdHdhcmUgc29sdXRpb24gZm9yIHRoZSByZXN0IGlzIG5vdCB0aGUgZW5kIG9mIHRoZSB3b3JsZCwgSSYjMzk7ZCBqdXN0IHJhdGhlciBub3QgZGl2aWRlIG15IERBVyYjMzk7cyByZXNvdXJjZXMgZnVydGhlci48YnI+SSBtb3N0bHkgZG9uJiMzOTt0IGV2ZW4gdXNlIHBsdWctaW5zIHVubGVzcyBJIGhhdmUgdG8uPGJyPlRoZW4gYWdhaW4sIGhhdmluZyB0aGUgaW50ZXJmYWNlIG9uIG15IGRla3RvcCBhbHJlYWR5IGRvZXNuJiMzOTt0IHJlYWxseSBtZWFuIHRoZSBlbmQgb2YgdGhlIHdvcmxkLiBJIGNhbiByZS1wdXJwb3NlIGEgdGlueSBvbGQgbGFwdG9wIEkgaGF2ZSBpZiBJIGNhbiBmaW5kIHRoZSByaWdodCB2aXJ0dWFsIGNvbnRyb2wgc29mdHdhcmUuPGJyPlRoZXJlJiMzOTtzIGdvdHRhIGJlIHNvbWV0aGluZyByZWFzb25hYmxlLjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5JIHNlZW0gdG8gcmVtZW1iZXIgU291bmQgRGl2ZXIgYmVpbmcgc3VwZXIgZXhwZW5zaXZlLjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PC9wPiA8ZGl2IGNsYXNzPSJ5Z3Jwcy15aXYtMjA0MTE2MjgyNXlncnBzLXlpdi0xNzc1MTA5OTIzeWdyb3Vwcy1xdW90ZWQiPjxicj48YnI+PGJsb2NrcXVvdGU+PHNwYW4gY2xhc3M9InlncnBzLXlpdi0yMDQxMTYyODI1Ij4gLS0tSW4gYmMyMDAwQHlhaG9vZ3JvdXBzLmNvbSwgJmx0O3JwY2ZlbmRlckAuLi4mZ3Q7IHdyb3RlOjxicj48YnI+PGRpdiBpZD0ieWdycHMteWl2LTIwNDExNjI4MjV5Z3Jwcy15aXYtMTc3NTEwOTkyM3lncnBzLXlpdi01OTUxNzQ5NzYiPjxwPlRoZXJlIGFyZSB0aHJlZSB0aGluZ3MgdGhhdCBJIHNlZSBhcyBzaG9ydGNvbWluZ3MgaW4gdGhlIEJDPC9wPjxwPiBJdCBjYW4mIzM5O3QgaGFuZGxlIDE0Yml0IG5lZ2F0aXZlIG51bWJlcnMgLSBndWVzcyB3aGF0IEVtdSYjMzk7cyBQcm90ZXVzIGFuZCBQcm90ZXVzIDIwMDAgc2VyaWVzIG1vZHVsZXMgdXNlLjwvcD48cD5JdCBjYW4mIzM5O3QgaGFuZGxlIDE2IGJpdCBudW1iZXJzIC0gdXNlZCBieSBNb3JwaGV1cyBzeW50aC4gSWYgaXQgY291bGQgdGhlbiB5b3UgY291bGQgbWFrZSBpdCBoYW5kbGUgMTRiaXQgbmVnYXRpdmVzLiBUaGlzIHdvdWxkIGJlIHdoYXQgSSB3b3VsZCBtb2QgZmlyc3QuPGJyPjwvcD48cD5BbmQsIG9mIGNvdXJzZSwgaXQgY2FuJiMzOTt0IGhhbmRsZSBwYWNrZWQgYnl0ZXMgYmVjYXVzZSB5b3UgY2FuJiMzOTt0IGFjY2VzcyB0aGUgb3RoZXIgcGFyYW1ldGVyIHZhbHVlcyB0byBidWlsZCB0aGUgYnl0ZSAuPC9wPjxwPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+VGhlcmUgaXMgYW4gZXh0cmEgd2lzaCBhbmQgdGhhdCB3b3VsZCB0byBiZSBhYmxlIHRvIHNlbmQgYSBwYXRjaCBkdW1wIGFuZCBpdCB3b3VsZCByZS1zZXQgaXRzIHZhbHVlcy4gSSB0aGluayB0aGF0IHdvdWxkIGJlIHZlcnkgZGlmZmljdWx0IHRob3VnaC4gV29ya3Mgd2VsbCB3aXRoIGEgY29tcHV0ZXIgaW4gYmV0d2Vlbi48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+SW4gdGhlIHNjaGVtZSBvZiB0aGluZ3MgaXQgaXMgc3RpbGwgcHJldHR5IGF3ZXNvbWUuPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+SSBzZWVtIHRvIHJlbWVtYmVyIHRoZXJlIGlzIGEgc2l0ZSB3aGVyZSBzb21lb25lIGhhcyByZXZlcnNlIGVuZ2luZWVyZWQgdGhlIFJPTSBhbmQgaGFkIGFuIGV4YW1wbGUgb2YmbmJzcDsgYWNjZXNzaW5nIHRoZSBMRUQgc2NyZWVuLjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPlRoZSBxdWljayg/KSBzb2x1dGlvbiB3b3VsZCBiZSBhIHByb2dyYW0gdGhhdCBqdXN0IGxldCBldmVyeXRoaW5nIHRocm91Z2ggZXhjZXB0IHRoZSB0aGUgc3BlY2lhbCBOUlBOIHRoYXQgeW91IGludmVudGVkIHRvIGNvdmVyIGFsbCB0aGUgc3dpdGNoZWQgZGF0YS4gPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5Zb3Ugd291bGQgaGF2ZSB0byBzZXQgdXAgdGhlIGN1cnJlbnQgdmFsdWVzIG9mIHRoZSBzd2l0Y2hlcywgYnV0IHlvdSBjb3VsZCBkbyB0aGlzIGJ5IGhhdmluZyBhICYjMzk7UmVxdWVzdCBQYXRjaCYjMzk7IGJ1dHRvbiBwcm9ncmFtbWVkIG9uIHRoZSBCQ1IgdGhhdCB0aGUgcHJvZ3JhbSB3b3VsZCBrbm93IHdoYXQgaXQgbWVhbnQgYW5kIHNlbnQgYSByZXF1ZXN0IGN1cnJlbnQgcGF0Y2ggdG8gdGhlIHN5bnRoIGFzIHN5c2V4LjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4gVGhlIHBhdGNoIGRhdGEgcmVjZWl2ZWQgY291bGQgYmUgdXNlZCB0byBzZXQgdGhlIHZhbHVlcyBvZiBhbGwgdGhlIGNvbnRyb2xzIGFuZCB0aGUgcGFja2VkIGRhdGEgTlJQTiBjb3VsZCBiZSBidWlsdCBieSBhZGRpbmcgdGhlIGluY29taW5nIHN3aXRjaCB2YWx1ZSB0byB0aGUgb25lIHlvdSBnb3QgZnJvbSB0aGUgcGF0Y2ggZGF0YS48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+QXQgdGhpcyBwb2ludCB5b3UgbWlnaHQgYXMgd2VsbCB3cml0ZSBhbiBlZGl0b3IuPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+QWxsIHRoZSBiZXN0PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPlJveWNlPGJyPjwvcD4gPGRpdiBjbGFzcz0ieWdycHMteWl2LTIwNDExNjI4MjV5Z3Jwcy15aXYtMTc3NTEwOTkyM3lncnBzLXlpdi01OTUxNzQ5NzZ5Z3JvdXBzLXF1b3RlZCI+PGJyPjxicj48YmxvY2txdW90ZT48c3BhbiBjbGFzcz0ieWdycHMteWl2LTIwNDExNjI4MjV5Z3Jwcy15aXYtMTc3NTEwOTkyMyI+IC0tLUluIGJjMjAwMEB5YWhvb2dyb3Vwcy5jb20sICZsdDthYnNlbnRALi4uJmd0OyB3cm90ZTo8YnI+PGJyPjxkaXYgaWQ9InlncnBzLXlpdi0yMDQxMTYyODI1eWdycHMteWl2LTE3NzUxMDk5MjN5Z3Jwcy15aXYtNTk1MTc0OTc2eWdycHMteWl2LTE2NTgwNTc3MjAiPjxwPkFjdHVhbGx5LCB3aGF0JiMzOTtzIGFsYXJtaW5nIHRvIG1lIGlzIHRoYXQgSSBzb21laG93IGVudGlyZWx5IGZhaWxlZCB0byBub3RpY2UgdGhhdCBhbGwgb2YgdGhlIHBhY2tlZCBwYXJhbXRlcmVzIGFyZSAmcXVvdDtzd2l0Y2hpbmcmcXVvdDsgZnVuY3Rpb25zIHRoYXQgZG9uJiMzOTt0IGV2ZW4gbmVlZCB0byBiZSBrbm9iYmVkLSBqdXN0IHN3aXRjaGVkLjxicj48YnI+SGEgaGEsIEkgbG9va2VkIHVwICZxdW90OyBNSURJIFBhY2tlZCBQYXJhbXRlcnMmcXVvdDsgaW4gdGhlIHNlYXJjaCBlbmdpbmUgSSB1c2UgKER1Y2tkdWNrZ28uY29tKSwgYW5kIHRoZSBmaXJzdCBoaXQgSSBmb3VuZCB3YXMgZnJvbSBzb21lb25lIHRyeWluZyB0byBzb3J0IG91dCBhIE5vdmF0aW9uLjxicj46IEQ8YnI+PGJyPlRoaXMgaXMgVGhlIEZ1dHVyZS4gSXNuJiMzOTt0IHRoZXJlIHNvbWUgc3BhY2UgYWdlIHRoaW5nIEkgY2FuIGdldCB0byBqdXN0IHB1dCBhIGJ1bmNoIG9mIHN3aXRjaGVzIG9uIHRoYXQgaGF2ZSB2YWx1ZXMgYXNzaWduZWQgdG8gdGhlbSBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZT88YnI+PGJyPklmIHRoaXMgZnV0dXJlIHdhcyBoYXBwZW5pbmcgaW4gdGhlIDE5NTAmIzM5O3MsIHdlJiMzOTtkIGJlIGFibGUgdG8gYnV5IGtpdHMgYXQgc29tZXRoaW5nIHNpbWlsYXIgdG8gUmFkaW8gU2hhY2suIEF0IGxlYXN0IGluIG15IGJyYWluIHdlIHdvdWxkLiBXaGljaCBtaWdodCBleHBsYWluIHdoeSBJIGV2ZW4gY2FyZSBhYm91dCBhbnkgb2YgdGhpcy48YnI+RG9uJiMzOTt0IHRoZXNlIGtpZHMgdG9kYXkgaGF2ZSBzb21lIHNvcnQgb2YgJnF1b3Q7IEFkcmVubyBSYXp6YmVyaWVzICZxdW90OyB0aGF0IHdpbGwgZG8gdGhpcz8gV291bGRuJiMzOTt0IHRoZXkgbmVlZCBpdCBmb3IgdGhhdCZuYnNwOyAmcXVvdDtTdGVwcGluZyBEdWImcXVvdDsgdGhpbmcgdGhleSBkbyB3aXRoIHRoZSAmcXVvdDtTdGVhbSBQdW5rICZxdW90OyByb2NrPzxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+KmJhbmdzIGhlYWQgb24gZmxvb3IqPGJyPjxicj48YnI+PGJyPjwvcD4gPGRpdiBjbGFzcz0ieWdycHMteWl2LTIwNDExNjI4MjV5Z3Jwcy15aXYtMTc3NTEwOTkyM3lncnBzLXlpdi01OTUxNzQ5NzZ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncm91cHMtcXVvdGVkIj48YnI+PGJyPjxibG9ja3F1b3RlPjxzcGFuIGNsYXNzPSJ5Z3Jwcy15aXYtMjA0MTE2MjgyNXlncnBzLXlpdi0xNzc1MTA5OTIzeWdycHMteWl2LTU5NTE3NDk3NiI+IC0tLUluIGJjMjAwMEB5YWhvb2dyb3Vwcy5jb20sICZsdDthYnNlbnRALi4uJmd0OyB3cm90ZTo8YnI+PGJyPjxkaXYgaWQ9InlncnBzLXlpdi0yMDQxMTYyODI1eWdycHMteWl2LTE3NzUxMDk5MjN5Z3Jwcy15aXYtNTk1MTc0OTc2eWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NCI+PHA+V2VsbCwgSSBmZWVsIGxlc3MgY29uZnVzZWQgbm93Ljxicj48YnI+U28gd2hhdCB0aGUgaGVjayBhcmUgdGhleSBzdXBvc2VkIHRvIGJlIGRvaW5nIHdpdGggdGhvc2UsIHRoZW4/PGJyPldoeSBhcmUgdGhleSBldmVuIHRoZXJlPzxicj5JcyB0aGF0IGZvciBpbnRlcm5hbCBjb250cm9sIG9ubHk/IFdoYXQgaXMgc3VwcG9zZWQgdG8gaW50ZXJmYWNlIHdpdGggdGhvc2UgcGFyYW1ldGVycz88YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj5Tbywgbm93IEkgaGF2ZSB0byByZXNlYXJjaCBob3cgcGFja2VkIHBhcmFtZXRlcnMgd29yayBpbiBzZXF1ZW5jaW5nLjxicj5NYW4sIEkgd2FzIHJlYWxseSBsb29raW5nIGZvcndhcmQgdG8gcmVhbC10aW1lIGhhcmR3YXJlIGNvbnRyb2wgb2YgYmFzaWMgdGhpbmdzIGxpa2UsIG9oLCBzYXksIG1heWJlIHRoZSBvc2NpbGxhdG9yIGNvbnRyb2xzLjxicj4qTm93KiB0aGUgdGhpbmcgbG9va3MgY29tcGxldGVseSBzdHVwaWQgdG8gbWUuPGJyPkkgd29uJiMzOTt0IGJvcmUgeW91IHdpdGggdGhlIHBoeXNpY2FsIGludGVyZmFjZSBkZXRhaWxzLCBidXQgaWYgeW91IHR3aWRkbGUgYSBsb3QsIHlvdSYjMzk7cmUgZ29pbmcgdG8gd2VhciBvdXQgc29tZSBzd3RpY2hlcyBwcmV0dHkgZmFzdC48YnI+SXQmIzM5O3MgYW4gYXdlc29tZSB0aGluZywgYnV0IEkgYW0gcmVhbGx5IGRpc2FwcG9pbnRlZCBieSB0aGlzLiBUaGVyZSBoYXMgdG8gYmUgKnNvbWUqIHdheSB0byBnZXQgaGFyZHdhcmUgY29udHJvbCBmb3IgdGhvc2UgZmVhdHVyZXMuPGJyPkkmIzM5O20gZ29pbmcgdG8gdGhyb3cgYSBtZXNzYWdlIGluIGEgYm90dGxlIGluIE5vdmF0aW9uJiMzOTtzIGdlbmVyYWwgZGlyZWN0aW9uLCBqdXN0IHRvIHNlZSBpZiB0aGV5IHNheSBhbnl0aGluZyBpbnRlcmVzdGluZy48YnI+PGJyPlRoYW5rcyB5b3Ugc28gbXVjaC4gQW5kIEkgYW0gKmZhciogZnJvbSBkb25lIHVzaW5nIHRoZSBCQ1IyMDAwLjxicj5JJiMzOTtsbCBzdGlsbCB1c2UgaXQgd2l0aCB0aGUgTm92YXRpb24uIEkgYW0ganVzdCBpcnJpdGF0ZWQgYXQgdGhlIE5vdmF0aW9uIHJpZ2h0IG5vdyA6IEQ8YnI+PC9wPiA8ZGl2IGNsYXNzPSJ5Z3Jwcy15aXYtMjA0MTE2MjgyNXlncnBzLXlpdi0xNzc1MTA5OTIzeWdycHMteWl2LTU5NTE3NDk3NnlncnBzLXlpdi0xNjU4MDU3NzIweWdycHMteWl2LTE2ODk2ODkwNzR5Z3JvdXBzLXF1b3RlZCI+PGJyPjxicj48YmxvY2txdW90ZT48c3BhbiBjbGFzcz0ieWdycHMteWl2LTIwNDExNjI4MjV5Z3Jwcy15aXYtMTc3NTEwOTkyM3lncnBzLXlpdi01OTUxNzQ5NzZ5Z3Jwcy15aXYtMTY1ODA1NzcyMCI+IC0tLUluIGJjMjAwMEB5YWhvb2dyb3Vwcy5jb20sICZsdDtycGNmZW5kZXJALi4uJmd0OyB3cm90ZTo8YnI+PGJyPjxkaXYgaWQ9InlncnBzLXlpdi0yMDQxMTYyODI1eWdycHMteWl2LTE3NzUxMDk5MjN5Z3Jwcy15aXYtNTk1MTc0OTc2eWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NHlncnBzLXlpdi00ODI4ODczODQiPjxwPkkgZGlkIHR5cGUgaXQgYWxsIG91dC4gSSBwcmV0ZW5kIHRoYXQgaXQgaXMgYSBnb29kIHN1YnN0aXR1dGUgZm9yIHRoZSBzY2FsZXMgdGhhdCBJJiMzOTttIG5vdCBwbGF5aW5nIGVub3VnaC48L3A+PHA+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4mbmJzcDtXZWxsIEkgaGFkIGEgbG9vayBhdCB0aGUgTWlkaSBzcGVjIGFuZCBJIGNhbiYjMzk7dCBiZWxpZXZlIGl0LjwvcD48cD48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkl0IGlzIGFuIG9sZCBzeW50aCBidXQgbm90IHRoYXQgb2xkIGFuZCBzdGlsbCZuYnNwOyB1c2luZyBwYWNrZWQgZGF0YSBwYXJhbWV0ZXJzIGluIE1pZGkgYW5kIHdvcnNlIHRoYW4gdGhhdCB0aGV5IHB1dCBpdCBpbiBjb250cm9sbGVyIG1lc3NhZ2VzIChOUlBOIGlzIGFuIGV4dGVuc2lvbiBvZiBDQyBtZXNzYWdlcykuPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+Tm93IHRoZSBzYWQgbmV3cyBmb3IgeW91LCB5b3UgY2FuJiMzOTt0IGNoYW5nZSBwYWNrZWQgcGFyYW1ldGVycywgbGlrZSB0aGUgT3NjIHdhdmVmb3JtcyB3aXRob3V0IGNoYW5naW5nIGEgd2hvbGUgbG90IG9mIG90aGVyIHBhcmFtZXRlcnMgcGFja2VkIGluIHRoZXJlLjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5UaGUgQkMgZG9lcyBub3QgYWxsb3cgeW91IHRvIGFkZCBwYXJhbWV0ZXJzIHRvZ2V0aGVyLjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPlRoZSBvbmx5IHdheSB5b3UgY2FuIGdldCB0aGlzIG1hY2hpbmUgdG8gd29yayBwcm9wZXJseSBpcyB0byB3cml0ZSBhIHByb2dyYW0gdGhhdCB3aWxsIGRvIHRoZSBwYWNraW5nL3VucGFja2luZyBmb3IgeW91LjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkkgY2FuIHVuZGVyc3RhbmQgdGhlIHVzZSBvZiBwYWNraW5nIGluIHRoZSBlYXJseSBkYXlzIGJlY2F1c2Ugb2YgdGhlIGNvc3QgbWVtb3J5LCBidXQgbm93Pz8/PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkl0IGNhbiYjMzk7dCBiZSB0aGF0IHRoZXJlIGFyZSB0b28gbWFueSBwYXJhbWV0ZXJzIGFzIHRoZXkgZG9uJiMzOTt0IHVzZSBhIHdob2xlIGxvdCBvZiBhdmFpbGFibGUgTlJQTnM8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5JIGhhZCBhIGxvb2sgdG8gc2VlIGlmIHlvdSBjb3VsZCBjaGFuZ2UgYSBwYXJhbWV0ZXIgYnkgc3lzZXggaW5zdGVhZCBidXQgdGhlcmUgZG9lc24mIzM5O3Qgc2VlbSB0byBiZSBhIGNvbW1hbmQgZm9yIHBhcmFtZXRlciBjaGFuZ2UuIEl0IGp1c3Qgc2VlbXMgdG8gdXNlIHN5c2V4IGZvciBidWxrIGR1bXBzLjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD5PbmUgbGFzdCBob3BlLjxicj5UaGVyZSBpcyBhbiBlZGl0b3Igb24gdGhlIHdlYi48YnI+aHR0cDovL3d3dy5sdWlnaWJpYW5jaGkuY29tL0FTdGF0RWRpdC9BU3RhdEVkaXQuaHRtPGJyPkl0IG9ubHkgc2VlbXMgdG8gaGF2ZSBNaWRpIEluIGFuZCBvdXQgYnV0IHBlcmhhcHMgeW91IGNvdWxkIGFzayBoaW0gdG8gYWRkIGEgY29udHJvbGxlciBwb3J0Pzxicj5UaGVuIGhlIGNvdWxkIHVzZSBjb250cm9sbGVyIHZhbHVlcyBmcm9tIHRoZSBCQyB0byBwYWNrIHRoZSBkYXRhLjxicj48YnI+VGhlIG9sZCBLb3JnIERXNjAwMCB1c2VzIHBhY2tlZCBkYXRhIGluIGl0cyBzeXNleCBmb3IgcGFyYW1ldGVyIGNoYW5nZS48YnI+TXkgc29sdXRpb24gaXMgaGVyZSAuLi4uLjxicj5odHRwOi8vd3d3LmJ3YWxrLmNvbS5hdS9EVzZLL0RXNmsuaHRtbDxicj4mbmJzcDsobm90ZSB0aGF0IGlmIHlvdSBhcmUgdXNpbmcgYSBicm93c2VyIGFkZG9uICYjMzk7SFBQUyBldmVyeXdoZXJlJiMzOTsgdGhlbiB5b3Ugd2lsbCBnZXQgYSB3YXJuaW5nLiBJIGRvbiYjMzk7dCBrbm93IHdoeSAtIEp1c3QgdXNlIGh0dHAgaW5zdGVhZCk8YnI+PGJyPjxicj48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5Tb3JyeTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5Sb3ljZTxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48ZGl2IGNsYXNzPSJ5Z3Jwcy15aXYtMjA0MTE2MjgyNXlncnBzLXlpdi0xNzc1MTA5OTIzeWdycHMteWl2LTU5NTE3NDk3NnlncnBzLXlpdi0xNjU4MDU3NzIweWdycHMteWl2LTE2ODk2ODkwNzR5Z3Jwcy15aXYtNDgyODg3Mzg0eWdyb3Vwcy1xdW90ZWQiPjxicj48YnI+PGJsb2NrcXVvdGU+PHNwYW4gY2xhc3M9InlncnBzLXlpdi0yMDQxMTYyODI1eWdycHMteWl2LTE3NzUxMDk5MjN5Z3Jwcy15aXYtNTk1MTc0OTc2eWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NCI+IC0tLUluIGJjMjAwMEB5YWhvb2dyb3Vwcy5jb20sICZsdDthYnNlbnRALi4uJmd0OyB3cm90ZTo8YnI+PGJyPjxkaXYgaWQ9InlncnBzLXlpdi0yMDQxMTYyODI1eWdycHMteWl2LTE3NzUxMDk5MjN5Z3Jwcy15aXYtNTk1MTc0OTc2eWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NHlncnBzLXlpdi00ODI4ODczODR5Z3Jwcy15aXYtMTg1Mjg5MTM0NCI+PHA+Um95Y2UsIGRpZCB5b3UgaGF2ZSB0aGF0IGFsbCB3cml0dGVuIG91dCBzb21lIHdoZXJlIGFuZCBqdXN0IHBhc3RlIGl0Pzxicj5JIGhvcGUgeW91IGRpZG4mIzM5O3QgaGF2ZSB0byB3cml0ZSBhbGwgdGhhdCBvbiBteSBhY2NvdW50LCBidXQgaXQmIzM5O3MgYXdlc29tZSE8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+VGhhbmsgeW91IHNvIG11Y2ggZm9yIHRoZSBleHBsaWNpdCBpbmZvcm1hdGlvbi48YnI+PGJyPkkmIzM5O20gc3RpbGwgZWFybHkgb24gKDMyIHBhZ2VzKSBpbiB0aGUgQkMgTWFuYWdlciBzb2Z0d2FyZSBtYW51YWwsIGJ1dCBJIGFtIHJlYWRpbmcgaXQuPGJyPkJUVywgdGhlIE1JREkgdXRpbGl0aWVzIGluY2x1ZGVkIGluIHRoZSB0aGluZyBhcmUgYXdlc29tZSEgPGJyPjxicj5CZWxvdywgSSBleHBsYWluIGV4YWN0bHkgd2hhdCBJIGFtIHRyeWluZyB0byBwcm9ncmFtLjxicj48YnI+PGJyPkkgc2hvdWxkIGhhdmUgc3BlY2lmaWVkIHRoYXQgdGhlIEEtU3RhdGlvbiBpcyBhIHJhY2stbW91bnQgc291bmQgbW9kdWxlLCBhbmQgbm90IGEgY29udHJvbGxlci48YnI+SSBoYXZlIHRyaWVkIHRvIGVudGVyIHRoZSBpbmZvcm1hdGlvbiBiZWxvdyB2ZXJiYXRpbSwgYnV0IGluIGNhc2UgYW55b25lIGlzIGN1cmlvdXMsIGhlcmUgaXMgYSBsaW5rIHRvIHRoZSBhY3R1YWwgbWFudWFsLjxicj5odHRwOi8vdXMubm92YXRpb25tdXNpYy5jb20vc3VwcG9ydC9wcm9kdWN0LWRvd25sb2Fkcz9wcm9kdWN0PUEtPGJyPlN0YXRpb248YnI+PGJyPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+Tk9WQVRJT04gQS1TdGF0aW9uPGJyPjxicj48YnI+PGJyPlRoZSBtYW51YWwgZm9yIHRoZSBOb3ZhdGlvbiBBLVN0YXRpb24gc3ludGhlc2l6ZXIgcHJvdmlkZXMgYSBsaXN0IG9mIG1pZGkgY29udGludW91cy1jb250cm9sIG51bWJlcnMgZnJvbSAwLTEyNy48YnI+PGJyPiZuYnNwO1NvbWUgb2YgdGhlc2UgYXJlIGxpc3RlZCBhcyBmb2xsb3dzOjxicj4tLS0tLS08YnI+PGJyPjcxIDogc291bmQgY29udHJvbGxlciAyIChNSURJIHNwZWNpZmllZCB1c2UpPGJyPjxicj5BLVN0YXRpb24gdXNlPGJyPk9zYyAxLDIsMyBvY3RhdmUvb3NjIDEmZ3Q7MiBTeW5jIChzZWUgcGFja2VkIHBhcmFtZXRlciA0KSA8YnI+LS0tLTxicj5XaGVuIHlvdSBzZWUgcGFja2VkIHBhcmFtZXRlciAzLCB0aGlzIGlzIHRoZSBpbmZvcm1hdGlvbiB5b3UgZ2V0Ojxicj48YnI+UGFja2VkIENvbnRyb2xsZXIgLyBOUlBOIHBhcmFtZXRlciBkZXRhaWxzIC08YnI+PGJyPmJpdHMgMC0xIDogMiBiaXQgb3NjIDEgd2F2ZWZvcm0gKHNpbmUsIHRyaSwgc2F3LHNxdWFyZSk8YnI+Yml0cyAyLTMgOiBvc2MgMjxicj5iaXRzIDQtNSA6IG9zYyAzIDxicj5iaXQgNiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA6IG9zYyAxICZndDsgMiBzeW5jIG9uPGJyPjxicj5UaGF0IGlzIGEgNyBiaXQgYnl0ZSwgY29ycmVjdD88YnI+PGJyPlRoZXJlIGFyZSBlbGV2ZW4gc2V0cyBvZiBwYWNrZWQgcGFyYW1ldGVycy48YnI+LS0tLS08YnI+SSBhbSBub3cgaW50ZXJwcmV0aW5nIHRoZSBtYW51YWwgZGlmZmVyZW50bHkuPGJyPlRoaXMgc2VjdGlvbiBpcyBlbnRpdGxlZCAmcXVvdDtQYWNrZWQgQ29udHJvbGxlciAvIE5SUE4gUGFyYW1ldGVyIERldGFpbHM8YnI+PGJyPlRoZSBwYWdlIGZvbGxvd2luZyB0aGUgcGFja2VkIHBhcmFtZXRlciBkZXRhaWxzIGEgJnF1b3Q7TWlkaSBOUlBOIGxpc3QmcXVvdDs8YnI+SSYjMzk7bSBub3cgdGhpbmtpbmcgdGhhdCB0aGUgcGFja2VkIHBhcmFtZXRlcnMgYXJlIG5vdCBldmVuIE5SUE4mIzM5O3MgaW4gdGhlIGZpcnN0IHBsYWNlLjxicj5BbHRob3VnaCB0aGUgcGFja2VkIHBhcmFtZXRlcnMgYXJlIG15IGZpcnN0IGNvbmNlcm4sIEkgd2lsbCBzdGlsbCBuZWVkIHRoZSBOUlBOJiMzOTtzJm5ic3A7IGFzIHdlbGwsIGJ1dCBpZiBJIGhhZCBpbnRlcnByZXRlZCB0aGF0IGluY29ycmVjdGx5LCBpdCBjZXJ0YWlubHkgaGFzIG5vdCBiZWVuIHNpbXBsaWZ5aW5nIHRoZSBwcm9jZXNzLjxicj4mbmJzcDs8YnI+JnF1b3Q7VGhlIEEtU3RhdGlvbiB1c2VzIGEgZmV3IE5SUE4mIzM5O3MgYXMgZGV0YWlsZWQgYmVsb3cuPGJyPlNpbmNlIGxlc3MgdGhhbiAxMjggb2YgdGhlbSBhcmUgdXNlZCwmbmJzcDsgb25seSBvbmUgTlJQTiBiYW5rIG1zYiBpcyBuZWVkZWQuIFRoZXJlZm9yZSBvbmx5IHRoZSBOUlBOIGxzYiBpcyB0cmFuc21pdHRlZC9yZWNlaXZlZCBhbmQgdGhlIE5SUE4gbXNiIGlzIGlnbm9yZWQgYW5kIGlzIG5vdCB0cmFuc21pdHRlZC48YnI+Rm9yIGZ1dHVyZSBjb21wYXRpYmlsaXR5LCBhc3N1bWUgdGhhdCB0aGUgTlJQTiBtc2IgaXMgMC4mcXVvdDs8YnI+PGJyPlRoZSBOUlBOJiMzOTtzIGFsc28gY29udGFpbiBzb21lIG9mIHRoZSBwYWNrZWQgcGFyYW1ldGVycyAoOCw5LDEwKS48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjwvcD4gPGRpdiBjbGFzcz0ieWdycHMteWl2LTIwNDExNjI4MjV5Z3Jwcy15aXYtMTc3NTEwOTkyM3lncnBzLXlpdi01OTUxNzQ5NzZ5Z3Jwcy15aXYtMTY1ODA1NzcyMHlncnBzLXlpdi0xNjg5Njg5MDc0eWdycHMteWl2LTQ4Mjg4NzM4NHlncnBzLXlpdi0xODUyODkxMzQ0eWdyb3Vwcy1xdW90ZWQiPjxicj48YnI+PGJsb2NrcXVvdGU+PHNwYW4gY2xhc3M9InlncnBzLXlpdi0yMDQxMTYyODI1eWdycHMteWl2LTE3NzUxMDk5MjN5Z3Jwcy15aXYtNTk1MTc0OTc2eWdycHMteWl2LTE2NTgwNTc3MjB5Z3Jwcy15aXYtMTY4OTY4OTA3NHlncnBzLXlpdi00ODI4ODczODQiPiAtLS1JbiBiYzIwMDBAeWFob29ncm91cHMuY29tLCAmbHQ7cnBjZmVuZGVyQC4uLiZndDsgd3JvdGU6PGJyPjxicj48ZGl2IGlkPSJ5Z3Jwcy15aXYtMjA0MTE2MjgyNXlncnBzLXlpdi0xNzc1MTA5OTIzeWdycHMteWl2LTU5NTE3NDk3NnlncnBzLXlpdi0xNjU4MDU3NzIweWdycHMteWl2LTE2ODk2ODkwNzR5Z3Jwcy15aXYtNDgyODg3Mzg0eWdycHMteWl2LTE4NTI4OTEzNDR5Z3Jwcy15aXYtNjc4NzQ4NjA5Ij48cD5Db21wdXRlcnMgKHRoaXMgaW5jbHVkZXMgcGhvbmVzLCB3YXNoaW5nIG1hY2hpbmVzIGFuZCBCQzIwMDAgZXRjKSBvbmx5IHRhbGsgaW4gb24vb2ZmIG9yIDAgYW5kIDEgY2FsbGVkJm5ic3A7IGJpbmFyeSBhbmQgZWFjaCBzd2l0Y2ggaXMgY2FsbGVkIGEgYml0LjwvcD48cD5XZSBncm91cCB0aGVzZSBiaXRzIHVzdWFsbHkgaW4gYmxvY2tzIG9mIDQgY2FsbGVkIGEgbmliYmxlLjwvcD48cD5Ud28gb2YgdGhlc2UgbmliYmxlcyBhcmUgY2FsbGVkIGEgYnl0ZS4gU28gYSBieXRlIGhhcyA4IGJpdHMgb3IgOCBvbiAvIG9mZiBzd2l0Y2hlcy48YnI+PC9wPjxwPlNvIGNvdW50aW5nIGluIGJpbmFyeSAodGhhdCBpcyBvbmx5IHVzaW5nIDAgYW5kIDEpIGlzIDxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MCZuYnNwOyAwPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xJm5ic3A7IDE8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjImbmJzcDsgMTAmbmJzcDsmbmJzcDsgLSB0aGlzIGlzIHRoZSBzYW1lIHByb2Nlc3MgYXMgd2hlbiB3ZSByZWFjaCA5IGFkZCAxIHRvIGl0LCB3ZSBhZGQgYSBuZXcgY29sdW1uIC0gc3RhcnQgYWdhaW4gPSAxMDwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4zJm5ic3A7IDExPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjQmbmJzcDsgMTAwPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjUmbmJzcDsgMTAxPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjYmbmJzcDsgMTEwPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjcmbmJzcDsgMTExPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjgmbmJzcDsgMTAwMDwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij45Jm5ic3A7IDEwMDE8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTAgMTAxMDwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xMSAxMDExPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjEyIDExMDA8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTMgMTEwMTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xNCAxMTEwPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjE1IDExMTEgYW5kIHRoYXQgaXMgYWxsIHdlIGNhbiBjb3VudCB3aXRoIDQgYml0czwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPlNvIDAgdG8gMTUgaXMgMTYgdmFsdWVzLiBJdCB3b3VsZCBiZSBncmVhdCBpZiB3ZSBjb3VsZCB1c2UgYSBzaW5nbGUgY2hhcmFjdGVyIGZvciBlYWNoIHZhbHVlLjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPlNvIHdlIG1ha2UgZGVjaW1hbC4uLiA8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjEwID0gQTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xMSA9IEI8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTIgPSBDPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjEzID0gRDwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xNCA9IEU8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTUgPSBGPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+V2hlbiB3ZSBuZWVkIGEgYmlnZ2VyIG51bWJlciB3ZSBjb3VsZCBqdXN0IGdldCBhbm90aGVyIGJpdCBidXQgbGV0cyBncmFiIGFuIGV4dHJhIG5pYmJsZSBhbmQgdXNlIGEgYnl0ZSBpbnN0ZWFkPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjAgPSAwMDwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xID0gMDE8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+Li4uPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjE0ID0gMEU8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MTUgPSAwRjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xNiA9IDEwPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xNyA9IDExPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPi4uLjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xMjQgPTdDPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xMjUgPTdEPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xMjYgPTdFPGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4xMjcgPTdGIGFzIE1pZGkgb25seSB1c2VzIDcgYml0cyBmb3IgZGF0YSAxMjcgaXMgdGhlIGJpZ2dlc3QgZGF0YSBudW1iZXIgYXZhaWxhYmxlIGFzIGEgc2luZ2xlIGJ5dGU8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjEyOCA9ODA8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPi4uLjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij4yNTQgPUZFPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjI1NSA9RkYgYmlnZ2VzdCBzaW5nbGUgYnl0ZSB2YWx1ZTxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+MjU2ID0wMSAwMCZuYnNwOyB0aGlzIGlzIHRoZSB1c3VhbCBkaXNwbGF5IGZvcm1hdCBmb3IgYSAyIGJ5dGUgb3IgMTYgYml0IG51bWJlciByaWdodCB1cCB0byBGRiBGRiBvciA2NTUzNSBpbiBkZWNpbWFsLiA8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPldoaWNoIGRvIHlvdSBmaW5kIGVhc2llciB0byByZWFkPzxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5Ob3cgaW4gTWlkaSBhbGwgdGhlIG5vbi1kYXRhIHN0dWZmIGxpa2UgJiMzOTtJIGp1c3QgcHJlc3NlZCBhIG5vdGUmcXVvdDsgYW5kICZxdW90O2NoYW5nZSB0aGUgcGF0Y2ggdG8gbnVtYmVyJnF1b3Q7IGFyZSBhbGwgZ3JlYXRlciB0aGFuIDEyNyB0aGF0IGlzIGhleCA4MCZuYnNwOyAoeW91IHNlZSB0aGlzIGFsc28gYXMgMHg4MCBvciAkODAgb3IgODBoIGFsbCB0aGUgc2FtZSB0aGluZykgYW5kIGJpZ2dlci48YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+U28gYXMgd2UgbmVlZCZuYnNwOyB0byBrbm93IHdoYXQgY2hhbm5lbCBpdCBpcywgbGV0cyB1c2UgdGhlIGxvd2VyIG5pYmJsZSBmb3IgdGhhdC48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5TbyB3ZSBjYW4gaGF2ZSBjb21tYW5kcyBvciBzdGF0dXMgYnl0ZXMsIGFzIHRoZXkgYXJlIGNhbGxlZCwgb24gYW55IG9mIDE2IGNoYW5uZWxzICgwIHRvIEYpPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjxicj48L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+QjAgaXMgY29udGludW91cyBjb250cm9sbGVyIG9uIGNoYW5uZWwgMSAod2UgdXNlIHRoZSB6ZXJvIHNvIHRoZSBjaGFubmVsIG51bWJlciBpcyAxIG1vcmUpPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkIzIGlzIGNvbnRpbnVvdXMgY29udHJvbGxlciBvbiBjaGFubmVsIDQ8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij44MCBpcyBOb3RlIG9mZiBjaGFubmVsIDE8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+PGJyPjwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij44biBpcyBOb3RlIG9mZiBvbiBzb21lIGNoYW5uZWw8YnI+PC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPjluIGlzIE5vdGUgT248L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+QW4gaXMgcG9seXBob25pYyBwcmVzc3VyZSAoUG9seXBob25pYyBBZnRlcnRvdWNoKTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsIDAsIDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zdHlsZTpub3JtYWw7Ij5CbiBpcyBDQyBjb250aW51b3VzIGNvbnRyb2xsZXI8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc3R5bGU6bm9ybWFsOyI+Q24gaXMgUEMgcGF0Y2ggY2hhbmdlPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkRuIGlzIENoYW5uZWwgUHJlc3N1cmUgKEFmdGVydG91Y2gpPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2IoMCwgMCwgMCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXN0eWxlOm5vcm1hbDsiPkVuIGlzIFBCIFBpdGNoIGJlbmQ8L3A+PHAgc3R5bGU9ImNvbG9yOnJnYigwLCAwLCAwKTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjtiYWNrZ3JvdW5kLWNvb(Message over 64 KB, truncated)

RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: NRPN confusion

2013-11-16 by <absent@...>

Also, It's going to be a few days before I can get this all tested, so you'll hear from me then.

Friday morning I managed to get arpeggiator on/off working from one of the knobs. I lost the setting before I saved it, and I forget what I did. :/
  
 

---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

 The manual says that is responds to System realtime messages.
 Try setting up a button with an on value of  FA (start) and off of FC (stop) and see if that starts and stops the arp.

 

 $button 52 ; Bottom right

 .showvalue on

 .mode toggle

 .default $FC

 .minmax $FA $FC

 .tx val 
 

 All the best
 Royce

 

 ---In bc2000@yahoogroups.com, <absent@...> wrote:

  re re re re re re


 The BCR will still open up the A-Station plenty, but little things like inaccessible arppegiator on/off were just stupid IMHO, especially coming from a company that designs interfaces. 
You have to make compromises in life, I guess.

Using a software solution for the rest is not the end of the world, I'd just rather not divide my DAW's resources further.
I mostly don't even use plug-ins unless I have to.
Then again, having the interface on my dektop already doesn't really mean the end of the world. I can re-purpose a tiny old laptop I have if I can find the right virtual control software.
There's gotta be something reasonable.
 I seem to remember Sound Diver being super expensive.








 

 ---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

 There are three things that I see as shortcomings in the BC
 It can't handle 14bit negative numbers - guess what Emu's Proteus and Proteus 2000 series modules use.
 It can't handle 16 bit numbers - used by Morpheus synth. If it could then you could make it handle 14bit negatives. This would be what I would mod first.

 And, of course, it can't handle packed bytes because you can't access the other parameter values to build the byte .
 

 There is an extra wish and that would to be able to send a patch dump and it would re-set its values. I think that would be very difficult though. Works well with a computer in between.

 

 In the scheme of things it is still pretty awesome.
 

 I seem to remember there is a site where someone has reverse engineered the ROM and had an example of  accessing the LED screen.
 

 The quick(?) solution would be a program that just let everything through except the the special NRPN that you invented to cover all the switched data. 

 You would have to set up the current values of the switches, but you could do this by having a 'Request Patch' button programmed on the BCR that the program would know what it meant and sent a request current patch to the synth as sysex.
 The patch data received could be used to set the values of all the controls and the packed data NRPN could be built by adding the incoming switch value to the one you got from the patch data.
 At this point you might as well write an editor.

 

 

 All the best
 Royce

 

 ---In bc2000@yahoogroups.com, <absent@...> wrote:

 Actually, what's alarming to me is that I somehow entirely failed to notice that all of the packed paramteres are "switching" functions that don't even need to be knobbed- just switched.

Ha ha, I looked up " MIDI Packed Paramters" in the search engine I use (Duckduckgo.com), and the first hit I found was from someone trying to sort out a Novation.
: D

This is The Future. Isn't there some space age thing I can get to just put a bunch of switches on that have values assigned to them of the appropriate type?

If this future was happening in the 1950's, we'd be able to buy kits at something similar to Radio Shack. At least in my brain we would. Which might explain why I even care about any of this.
Don't these kids today have some sort of " Adreno Razzberies " that will do this? Wouldn't they need it for that  "Stepping Dub" thing they do with the "Steam Punk " rock?

 *bangs head on floor*




 

 ---In bc2000@yahoogroups.com, <absent@...> wrote:

 Well, I feel less confused now.

So what the heck are they suposed to be doing with those, then?
Why are they even there?
Is that for internal control only? What is supposed to interface with those parameters?

 
So, now I have to research how packed parameters work in sequencing.
Man, I was really looking forward to real-time hardware control of basic things like, oh, say, maybe the oscillator controls.
*Now* the thing looks completely stupid to me.
I won't bore you with the physical interface details, but if you twiddle a lot, you're going to wear out some swtiches pretty fast.
It's an awesome thing, but I am really disappointed by this. There has to be *some* way to get hardware control for those features.
I'm going to throw a message in a bottle in Novation's general direction, just to see if they say anything interesting.

Thanks you so much. And I am *far* from done using the BCR2000.
I'll still use it with the Novation. I am just irritated at the Novation right now : D

 

 ---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

 I did type it all out. I pretend that it is a good substitute for the scales that I'm not playing enough.
 

  Well I had a look at the Midi spec and I can't believe it.
 

 It is an old synth but not that old and still  using packed data parameters in Midi and worse than that they put it in controller messages (NRPN is an extension of CC messages).
 

 Now the sad news for you, you can't change packed parameters, like the Osc waveforms without changing a whole lot of other parameters packed in there.
 The BC does not allow you to add parameters together.
 

 The only way you can get this machine to work properly is to write a program that will do the packing/unpacking for you.
 

 I can understand the use of packing in the early days because of the cost memory, but now???
 It can't be that there are too many parameters as they don't use a whole lot of available NRPNs
 

 I had a look to see if you could change a parameter by sysex instead but there doesn't seem to be a command for parameter change. It just seems to use sysex for bulk dumps.

 

One last hope.
There is an editor on the web.
http://www.luigibianchi.com/AStatEdit/AStatEdit.htm
It only seems to have Midi In and out but perhaps you could ask him to add a controller port?
Then he could use controller values from the BC to pack the data.

The old Korg DW6000 uses packed data in its sysex for parameter change.
My solution is here .....
http://www.bwalk.com.au/DW6K/DW6k.html
 (note that if you are using a browser addon 'HPPS everywhere' then you will get a warning. I don't know why - Just use http instead)


 Sorry
 Royce

 

 

 ---In bc2000@yahoogroups.com, <absent@...> wrote:

 Royce, did you have that all written out some where and just paste it?
I hope you didn't have to write all that on my account, but it's awesome!
 Thank you so much for the explicit information.

I'm still early on (32 pages) in the BC Manager software manual, but I am reading it.
BTW, the MIDI utilities included in the thing are awesome! 

Below, I explain exactly what I am trying to program.


I should have specified that the A-Station is a rack-mount sound module, and not a controller.
I have tried to enter the information below verbatim, but in case anyone is curious, here is a link to the actual manual.
http://us.novationmusic.com/support/product-downloads?product=A-
Station

-------------------------------
NOVATION A-Station



The manual for the Novation A-Station synthesizer provides a list of midi continuous-control numbers from 0-127.

 Some of these are listed as follows:
------

71 : sound controller 2 (MIDI specified use)

A-Station use
Osc 1,2,3 octave/osc 1>2 Sync (see packed parameter 4) 
----
When you see packed parameter 3, this is the information you get:

Packed Controller / NRPN parameter details -

bits 0-1 : 2 bit osc 1 waveform (sine, tri, saw,square)
bits 2-3 : osc 2
bits 4-5 : osc 3 
bit 6      : osc 1 > 2 sync on

That is a 7 bit byte, correct?

There are eleven sets of packed parameters.
-----
I am now interpreting the manual differently.
This section is entitled "Packed Controller / NRPN Parameter Details

The page following the packed parameter details a "Midi NRPN list"
I'm now thinking that the packed parameters are not even NRPN's in the first place.
Although the packed parameters are my first concern, I will still need the NRPN's  as well, but if I had interpreted that incorrectly, it certainly has not been simplifying the process.
 
"The A-Station uses a few NRPN's as detailed below.
Since less than 128 of them are used,  only one NRPN bank msb is needed. Therefore only the NRPN lsb is transmitted/received and the NRPN msb is ignored and is not transmitted.
For future compatibility, assume that the NRPN msb is 0."

The NRPN's also contain some of the packed parameters (8,9,10).











 

 ---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

 Computers (this includes phones, washing machines and BC2000 etc) only talk in on/off or 0 and 1 called  binary and each switch is called a bit.
 We group these bits usually in blocks of 4 called a nibble.
 Two of these nibbles are called a byte. So a byte has 8 bits or 8 on / off switches.

 So counting in binary (that is only using 0 and 1) is 

 0  0

 1  1

 2  10   - this is the same process as when we reach 9 add 1 to it, we add a new column - start again = 10
 3  11
 4  100
 5  101
 6  110
 7  111
 8  1000
 9  1001
 10 1010
 11 1011
 12 1100
 13 1101
 14 1110
 15 1111 and that is all we can count with 4 bits
 

 So 0 to 15 is 16 values. It would be great if we could use a single character for each value.
 

 So we make decimal... 

 10 = A
 11 = B
 12 = C
 13 = D
 14 = E
 15 = F
 

 When we need a bigger number we could just get another bit but lets grab an extra nibble and use a byte instead

 

 0 = 00
 1 = 01
 ...
 14 = 0E
 15 = 0F
 16 = 10

 17 = 11
 ...
 124 =7C

 125 =7D

 126 =7E

 127 =7F as Midi only uses 7 bits for data 127 is the biggest data number available as a single byte

 128 =80

 ...
 254 =FE
 255 =FF biggest single byte value

 256 =01 00  this is the usual display format for a 2 byte or 16 bit number right up to FF FF or 65535 in decimal. 

 Which do you find easier to read?

 

 Now in Midi all the non-data stuff like 'I just pressed a note" and "change the patch to number" are all greater than 127 that is hex 80  (you see this also as 0x80 or $80 or 80h all the same thing) and bigger.

 

 So as we need  to know what channel it is, lets use the lower nibble for that.
 

 So we can have commands or status bytes, as they are called, on any of 16 channels (0 to F)
 

 B0 is continuous controller on channel 1 (we use the zero so the channel number is 1 more)
 B3 is continuous controller on channel 4
 

 80 is Note off channel 1
 

 8n is Note off on some channel

 9n is Note On
 An is polyphonic pressure (Polyphonic Aftertouch)
 Bn is CC continuous controller
 Cn is PC patch change
 Dn is Channel Pressure (Aftertouch)
 En is PB Pitch bend
 

 F0 to FF are system messages eg F0 is the start of system exclusive and F7 is end of system exclusive.
 

 For a good reference to MIDI see

 http://www.somascape.org/midi/tech/spec.html
 

 As far as the packed data you will need to spell out exactly what you are trying to do.
 

 All the best
 Royce

 

 ---In bc2000@yahoogroups.com, <absent@...> wrote:

 First off, I have been unable to figure out  what B0 means. 
 

 ---In bc2000@yahoogroups.com, <absent@...> wrote:

 And I meant "met face to face".

 
 

 ---In bc2000@yahoogroups.com, <sghookings@...> wrote:

 
 Well you just did encounter someone who not only understands NRPNs but gave a great explanation
 

 The BCR expects the address and range of values. Then u have to say if you are sending just 7 or full 14 bits.
 

 Good luck in interpreting NRPNs
Show quoted textHide quoted text
-------- Original message --------
From: absent@... 
Date: 13/11/2013 15:47 (GMT+00:00) 
To: bc2000@yahoogroups.com 
Subject: [bc2000] RE: RE: NRPN confusion 
 

   Where  am confused is that the entry for parameter number is not hex.

The A-Station lists CC numbers as "packed parameters" with what I think are supposed to be 8-bit  numbers to assign a specific -packed sub-parameter.

It's been very difficult to find information on this. I am getting the impression that this sort of thing is a small step removed from deep MIDI user-end voodoo.
I have yet to encounter anyone in real life that actually has heard of NRPNs :D . I've been getting a lot of blank stares and referrals to basic MIDI texts.

 


 

 ---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

 RPN (registered parameter numbers) and NRPN are ways to increase the number of Continuous Controllers Midi can use.
It works the same a Bank selection fo r Patches

NRPN
CC98  LSB
CC99 MSB

in hex on channel 1

B0 62 LSB
B0 63 MSB

As MSB (most significant byte) and LSB can be between 0 and 127 combined it becomes a 14 bit number from 0 to  16,383 controllers

So once you have said what controller you are talking about, you send its value

For 0 to 127 type controllers
B0 06 value 
or
B0 26 value
 

 or if your controller has 14 bit values (0 to 16,383)

 

 B0 06 MSB
 B0 26 LSB
 

 (There is an increment and decrement as well.)

 Once the controller has been selected it doesn't have to be selected again so you can send

 

 B0 62 LSB
B0 63 MSB
 B0 26 value 1
 B0 26 value 2
 B0 26 value 3

etc
 
 
 Just the same as Banks and Patches.

All the best
Royce

RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: NRPN confusion

2013-11-20 by <rpcfender@...>

The letter sounds fine. I doubt if they'll come over to your place and beat you up, then again I doubt if much will happen unless they make the OS open source so you can change it.


The thing about packed data is that you can change one thing (arp stop/start) if you know what all the other things are and you are happy to leave them the same.

So if you are happy with

Bits 0 & 1 = 0 for a single octave 0000 0000

Bit 2 On/Off - this is what you change 0000 0n00 (you add 4 for On)

Bit 3 Key sync = 1 On = 0000 1000

Bit 4 Latch = 1 On = 0001 0000

Bit 5 & 6 Internal & external = 1& 0 = 0100 0000

Add them together = 0101 1n00

So

Arp On = 0101 1100 = $5C

Arp Off = 0101 1000 = $58


Set up your toggleon button with NRPN and these values.

All the best
Royce



---In bc2000@yahoogroups.com, <absent@frognet.net> wrote:

Also, It's going to be a few days before I can get this all tested, so you'll hear from me then.

Friday morning I managed to get arpeggiator on/off working from one of the knobs. I lost the setting before I saved it, and I forget what I did. :/

Show quoted textHide quoted text
---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

The manual says that is responds to System realtime messages.

Try setting up a button with an on value of FA (start) and off of FC (stop) and see if that starts and stops the arp.


$button 52 ; Bottom right

.showvalue on

.mode toggle

.default $FC

.minmax $FA $FC

.tx val


All the best

Royce



---In bc2000@yahoogroups.com, <absent@...> wrote:

re re re re re re

The BCR will still open up the A-Station plenty, but little things like inaccessible arppegiator on/off were just stupid IMHO, especially coming from a company that designs interfaces.
You have to make compromises in life, I guess.

Using a software solution for the rest is not the end of the world, I'd just rather not divide my DAW's resources further.
I mostly don't even use plug-ins unless I have to.
Then again, having the interface on my dektop already doesn't really mean the end of the world. I can re-purpose a tiny old laptop I have if I can find the right virtual control software.
There's gotta be something reasonable.

I seem to remember Sound Diver being super expensive.









---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

There are three things that I see as shortcomings in the BC

It can't handle 14bit negative numbers - guess what Emu's Proteus and Proteus 2000 series modules use.

It can't handle 16 bit numbers - used by Morpheus synth. If it could then you could make it handle 14bit negatives. This would be what I would mod first.

And, of course, it can't handle packed bytes because you can't access the other parameter values to build the byte .


There is an extra wish and that would to be able to send a patch dump and it would re-set its values. I think that would be very difficult though. Works well with a computer in between.


In the scheme of things it is still pretty awesome.


I seem to remember there is a site where someone has reverse engineered the ROM and had an example of accessing the LED screen.


The quick(?) solution would be a program that just let everything through except the the special NRPN that you invented to cover all the switched data.

You would have to set up the current values of the switches, but you could do this by having a 'Request Patch' button programmed on the BCR that the program would know what it meant and sent a request current patch to the synth as sysex.

The patch data received could be used to set the values of all the controls and the packed data NRPN could be built by adding the incoming switch value to the one you got from the patch data.

At this point you might as well write an editor.



All the best

Royce



---In bc2000@yahoogroups.com, <absent@...> wrote:

Actually, what's alarming to me is that I somehow entirely failed to notice that all of the packed paramteres are "switching" functions that don't even need to be knobbed- just switched.

Ha ha, I looked up " MIDI Packed Paramters" in the search engine I use (Duckduckgo.com), and the first hit I found was from someone trying to sort out a Novation.
: D

This is The Future. Isn't there some space age thing I can get to just put a bunch of switches on that have values assigned to them of the appropriate type?

If this future was happening in the 1950's, we'd be able to buy kits at something similar to Radio Shack. At least in my brain we would. Which might explain why I even care about any of this.
Don't these kids today have some sort of " Adreno Razzberies " that will do this? Wouldn't they need it for that "Stepping Dub" thing they do with the "Steam Punk " rock?

*bangs head on floor*





---In bc2000@yahoogroups.com, <absent@...> wrote:

Well, I feel less confused now.

So what the heck are they suposed to be doing with those, then?
Why are they even there?
Is that for internal control only? What is supposed to interface with those parameters?


So, now I have to research how packed parameters work in sequencing.
Man, I was really looking forward to real-time hardware control of basic things like, oh, say, maybe the oscillator controls.
*Now* the thing looks completely stupid to me.
I won't bore you with the physical interface details, but if you twiddle a lot, you're going to wear out some swtiches pretty fast.
It's an awesome thing, but I am really disappointed by this. There has to be *some* way to get hardware control for those features.
I'm going to throw a message in a bottle in Novation's general direction, just to see if they say anything interesting.

Thanks you so much. And I am *far* from done using the BCR2000.
I'll still use it with the Novation. I am just irritated at the Novation right now : D



---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

I did type it all out. I pretend that it is a good substitute for the scales that I'm not playing enough.


Well I had a look at the Midi spec and I can't believe it.


It is an old synth but not that old and still using packed data parameters in Midi and worse than that they put it in controller messages (NRPN is an extension of CC messages).


Now the sad news for you, you can't change packed parameters, like the Osc waveforms without changing a whole lot of other parameters packed in there.

The BC does not allow you to add parameters together.


The only way you can get this machine to work properly is to write a program that will do the packing/unpacking for you.


I can understand the use of packing in the early days because of the cost memory, but now???

It can't be that there are too many parameters as they don't use a whole lot of available NRPNs


I had a look to see if you could change a parameter by sysex instead but there doesn't seem to be a command for parameter change. It just seems to use sysex for bulk dumps.


One last hope.
There is an editor on the web.
http://www.luigibianchi.com/AStatEdit/AStatEdit.htm
It only seems to have Midi In and out but perhaps you could ask him to add a controller port?
Then he could use controller values from the BC to pack the data.

The old Korg DW6000 uses packed data in its sysex for parameter change.
My solution is here .....
http://www.bwalk.com.au/DW6K/DW6k.html
(note that if you are using a browser addon 'HPPS everywhere' then you will get a warning. I don't know why - Just use http instead)


Sorry

Royce




---In bc2000@yahoogroups.com, <absent@...> wrote:

Royce, did you have that all written out some where and just paste it?
I hope you didn't have to write all that on my account, but it's awesome!

Thank you so much for the explicit information.

I'm still early on (32 pages) in the BC Manager software manual, but I am reading it.
BTW, the MIDI utilities included in the thing are awesome!

Below, I explain exactly what I am trying to program.


I should have specified that the A-Station is a rack-mount sound module, and not a controller.
I have tried to enter the information below verbatim, but in case anyone is curious, here is a link to the actual manual.
http://us.novationmusic.com/support/product-downloads?product=A-
Station

-------------------------------
NOVATION A-Station



The manual for the Novation A-Station synthesizer provides a list of midi continuous-control numbers from 0-127.

Some of these are listed as follows:
------

71 : sound controller 2 (MIDI specified use)

A-Station use
Osc 1,2,3 octave/osc 1>2 Sync (see packed parameter 4)
----
When you see packed parameter 3, this is the information you get:

Packed Controller / NRPN parameter details -

bits 0-1 : 2 bit osc 1 waveform (sine, tri, saw,square)
bits 2-3 : osc 2
bits 4-5 : osc 3
bit 6 : osc 1 > 2 sync on

That is a 7 bit byte, correct?

There are eleven sets of packed parameters.
-----
I am now interpreting the manual differently.
This section is entitled "Packed Controller / NRPN Parameter Details

The page following the packed parameter details a "Midi NRPN list"
I'm now thinking that the packed parameters are not even NRPN's in the first place.
Although the packed parameters are my first concern, I will still need the NRPN's as well, but if I had interpreted that incorrectly, it certainly has not been simplifying the process.

"The A-Station uses a few NRPN's as detailed below.
Since less than 128 of them are used, only one NRPN bank msb is needed. Therefore only the NRPN lsb is transmitted/received and the NRPN msb is ignored and is not transmitted.
For future compatibility, assume that the NRPN msb is 0."

The NRPN's also contain some of the packed parameters (8,9,10).












---In bc2000@yahoogroups.com, <rpcfender@...> wrote:

Computers (this includes phones, washing machines and BC2000 etc) only talk in on/off or 0 and 1 called binary and each switch is called a bit.

We group these bits usually in blocks of 4 called a nibble.

Two of these nibbles are called a byte. So a byte has 8 bits or 8 on / off switches.

So counting in binary (that is only using 0 and 1) is

0 0

1 1

2 10 - this is the same process as when we reach 9 add 1 to it, we add a new column - start again = 10

3 11

4 100

5 101

6 110

7 111

8 1000

9 1001

10 1010

11 1011

12 1100

13 1101

14 1110

15 1111 and that is all we can count with 4 bits


So 0 to 15 is 16 values. It would be great if we could use a single character for each value.


So we make decimal...

10 = A

11 = B

12 = C

13 = D

14 = E

15 = F


When we need a bigger number we could just get another bit but lets grab an extra nibble and use a byte instead


0 = 00

1 = 01

...

14 = 0E

15 = 0F

16 = 10

17 = 11

...

124 =7C

125 =7D

126 =7E

127 =7F as Midi only uses 7 bits for data 127 is the biggest data number available as a single byte

128 =80

...

254 =FE

255 =FF biggest single byte value

256 =01 00 this is the usual display format for a 2 byte or 16 bit number right up to FF FF or 65535 in decimal.

Which do you find easier to read?


Now in Midi all the non-data stuff like 'I just pressed a note" and "change the patch to number" are all greater than 127 that is hex 80 (you see this also as 0x80 or $80 or 80h all the same thing) and bigger.


So as we need to know what channel it is, lets use the lower nibble for that.


So we can have commands or status bytes, as they are called, on any of 16 channels (0 to F)

RE: NRPN confusion

2014-01-20 by <absent@...>

It's been a crazy few months, but I am finally digging back into the packed parameter issue.

I just sent the message to Novation (I apparently didn't hit "send" last time).

(Since I got back to town I've mostly been struggling with getting a pair of MOTU Midi Timpiece AV's to function together instead of working on the A-Station. : / What a nightmare *that* has turned out to be! But, that's an issue for another forum!)

Anyway. more news as news arrives.

Re: NRPN confusion

2014-03-28 by <absent@...>

A further check-in:

The crazy couple of months turned into several more (although they have been the good kind of crazy).
I have not walked away from trying to addressing the above issues.
I'll spare you all the stories.

Anyway, I have heard back from both Behringer and Novation. As soon as I get many more repairs knocked off the bench, I can get back to this issue.

FWIW, I have made tremendous progress in honing my vintage analog repair skills.

William

Re: NRPN confusion

2015-07-25 by absent@...

I'm finally getting back to BC usage. The crazy few months I mentioned back there resulted in me getting married ;D !!!

It's a pretty sweet deal.

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.