2C chart - assuming that the variables X and Y are dependent. (Artigo Lee e Costa_2009)

library(extraDistr)
library(knitr)

Correlation = 0.30

#in control
lamb_1_in <- 1
lamb_2_in <- 1
lamb_3_in <- 0.4285714  
lamb_x <- lamb_1_in+lamb_3_in
lamb_y <- lamb_2_in+lamb_3_in
LSC_1=qpois(0.0027,lower.tail = F,lamb_x); "LSC_1"; LSC_1
[1] "LSC_1"
[1] 6
LSC_2=qpois(0.0027,lower.tail = F,lamb_y); "LSC_2"; LSC_2
[1] "LSC_2"
[1] 6
LIC_1=LIC_2=0
result<-0
for (x in 0:LSC_1) {
  for (y in 0:LSC_2) {
  beta_biv = dbvpois(x, y, lamb_1_in, lamb_2_in, lamb_3_in)
#  print(beta_biv)
  result=result+beta_biv
  }}
ARLo=1/(1-result); "ARLo"; ARLo
[1] "ARLo"
[1] 724.0651
# shift 
lamb_1_out = c(1,0.9494114,0.9036814,0.8616244,0.8224794,1.2500000,1.1988680,1.1518480,1.1080830,1.5000000,1.4484920,1.4005500,2.0000000)
lamb_2_out = c(1,1.3065540,1.6179670,1.9330530,2.2510510,1.2500000,1.5560110,1.8661340,2.1795120,1.5000000,1.8056350,2.1148350,2.0000000)
lamb_3_out = c(0.4285714,0.4791600,0.5248900,0.5669470,0.6060920,0.5357140,0.5868460,0.6338660,0.6776310,0.6428570,0.6943650,0.7423075,0.8571429)
lamb_x <- lamb_1_out+lamb_3_out
lamb_y <- lamb_2_out+lamb_3_out
ro <- lamb_3_out/sqrt((lamb_1_out+lamb_3_out)*(lamb_2_out+lamb_3_out))
shiftx = lamb_x/(lamb_1_in+lamb_3_in)
shifty = lamb_y/(lamb_2_in+lamb_3_in)
result<-0
for (x in 0:LSC_1) {
  for (y in 0:LSC_2) {
  beta_biv = dbvpois(x, y, lamb_1_out, lamb_2_out, lamb_3_out)
  result=result+beta_biv
  }}
ARL1=round(1/(1-result) ,2) #"ARL1";ARL1
kable(round(data.frame(shiftx,shifty,lamb_1_out, lamb_2_out, lamb_3_out, lamb_x, lamb_y, ro, ARL1), digits = 5),format = "pandoc")


 shiftx   shifty   lamb_1_out   lamb_2_out   lamb_3_out    lamb_x    lamb_y    ro     ARL1
-------  -------  -----------  -----------  -----------  --------  --------  ----  -------
   1.00     1.00      1.00000      1.00000      0.42857   1.42857   1.42857   0.3   724.07
   1.00     1.25      0.94941      1.30655      0.47916   1.42857   1.78571   0.3   320.79
   1.00     1.50      0.90368      1.61797      0.52489   1.42857   2.14286   0.3   140.19
   1.00     1.75      0.86162      1.93305      0.56695   1.42857   2.50000   0.3    67.75
   1.00     2.00      0.82248      2.25105      0.60609   1.42857   2.85714   0.3    36.59
   1.25     1.25      1.25000      1.25000      0.53571   1.78571   1.78571   0.3   207.64
   1.25     1.50      1.19887      1.55601      0.58685   1.78571   2.14286   0.3   114.03
   1.25     1.75      1.15185      1.86613      0.63387   1.78571   2.50000   0.3    61.32
   1.25     2.00      1.10808      2.17951      0.67763   1.78571   2.85714   0.3    34.77
   1.50     1.50      1.50000      1.50000      0.64286   2.14286   2.14286   0.3    79.28
   1.50     1.75      1.44849      1.80564      0.69436   2.14286   2.50000   0.3    50.03
   1.50     2.00      1.40055      2.11483      0.74231   2.14286   2.85714   0.3    31.03
   2.00     2.00      2.00000      2.00000      0.85714   2.85714   2.85714   0.3    19.84

Correlation = 0.50

#in control
lamb_1_in <- 1
lamb_2_in <- 1
lamb_3_in <- 1
lamb_x <- lamb_1_in+lamb_3_in
lamb_y <- lamb_2_in+lamb_3_in
LSC_1=qpois(0.0027,lower.tail = F,lamb_x); "LSC_1"; LSC_1
[1] "LSC_1"
[1] 7
LSC_2=qpois(0.0027,lower.tail = F,lamb_y); "LSC_2"; LSC_2
[1] "LSC_2"
[1] 7
LIC_1=LIC_2=0
result<-0
for (x in 0:LSC_1) {
  for (y in 0:LSC_2) {
  beta_biv = dbvpois(x, y, lamb_1_in, lamb_2_in, lamb_3_in)
#  print(beta_biv)
  result=result+beta_biv
  }}
ARLo=1/(1-result); "ARLo"; ARLo
[1] "ARLo"
[1] 477.9742
# shift 
lamb_1_out = c(1,0.8819660,0.7752551,0.6771244,0.5857865,1.2500000,1.1306940,1.0209800,0.9188613,1.5000000,1.3798150,1.2679490,2.0000000)
lamb_2_out = c(1,1.3819660,1.7752550,2.1771240,2.5857870,1.2500000,1.6306940,2.0209800,2.4188610,1.5000000,1.8798150,2.2679490,2.0000000)
lamb_3_out = c(1.0000,1.1180340,1.2247450,1.3228760,1.4142140,1.2500000,1.3693060,1.4790200,1.5811390,1.5000000,1.6201850,1.7320510,2.0000000)
lamb_x <- lamb_1_out+lamb_3_out
lamb_y <- lamb_2_out+lamb_3_out
ro <- lamb_3_out/sqrt((lamb_1_out+lamb_3_out)*(lamb_2_out+lamb_3_out))
shiftx = lamb_x/(lamb_1_in+lamb_3_in)
shifty = lamb_y/(lamb_2_in+lamb_3_in)
result<-0
for (x in 0:LSC_1) {
  for (y in 0:LSC_2) {
  beta_biv = dbvpois(x, y, lamb_1_out, lamb_2_out, lamb_3_out)
  result=result+beta_biv
  }}
ARL1=round(1/(1-result) ,2) #"ARL1";ARL1
kable(round(data.frame(shiftx,shifty,lamb_1_out, lamb_2_out, lamb_3_out, lamb_x, lamb_y, ro, ARL1), digits = 5),format = "pandoc")


 shiftx   shifty   lamb_1_out   lamb_2_out   lamb_3_out   lamb_x   lamb_y    ro     ARL1
-------  -------  -----------  -----------  -----------  -------  -------  ----  -------
   1.00     1.00      1.00000      1.00000      1.00000      2.0      2.0   0.5   477.97
   1.00     1.25      0.88197      1.38197      1.11803      2.0      2.5   0.5   195.41
   1.00     1.50      0.77526      1.77526      1.22474      2.0      3.0   0.5    79.29
   1.00     1.75      0.67712      2.17712      1.32288      2.0      3.5   0.5    36.67
   1.00     2.00      0.58579      2.58579      1.41421      2.0      4.0   0.5    19.42
   1.25     1.25      1.25000      1.25000      1.25000      2.5      2.5   0.5   125.99
   1.25     1.50      1.13069      1.63069      1.36931      2.5      3.0   0.5    66.18
   1.25     1.75      1.02098      2.02098      1.47902      2.5      3.5   0.5    34.05
   1.25     2.00      0.91886      2.41886      1.58114      2.5      4.0   0.5    18.81
   1.50     1.50      1.50000      1.50000      1.50000      3.0      3.0   0.5    46.03
   1.50     1.75      1.37982      1.87982      1.62018      3.0      3.5   0.5    28.41
   1.50     2.00      1.26795      2.26795      1.73205      3.0      4.0   0.5    17.22
   2.00     2.00      2.00000      2.00000      2.00000      4.0      4.0   0.5    11.34

Correlation = 0.70

#in control
lamb_1_in <- 1
lamb_2_in <- 1
lamb_3_in <- 2.333333
lamb_x <- lamb_1_in+lamb_3_in
lamb_y <- lamb_2_in+lamb_3_in
LSC_1=qpois(0.0027,lower.tail = F,lamb_x); "LSC_1"; LSC_1
[1] "LSC_1"
[1] 9
LSC_2=qpois(0.0027,lower.tail = F,lamb_y); "LSC_2"; LSC_2
[1] "LSC_2"
[1] 9
LIC_1=LIC_2=0
result<-0
for (x in 0:LSC_1) {
  for (y in 0:LSC_2) {
  beta_biv = dbvpois(x, y, lamb_1_in, lamb_2_in, lamb_3_in)
#  print(beta_biv)
  result=result+beta_biv
  }}
ARLo=1/(1-result); "ARLo"; ARLo
[1] "ARLo"
[1] 242.1556
# shift 
lamb_1_out = c(1,0.7245875,0.4755954,0.2466236,0.0335018,1.2500000,0.9716186,0.7156204,0.4773430,1.5000000,1.2195680,0.9585484,2.0000000)
lamb_2_out = c(1,1.5579210,2.1422620,2.7466240,3.3668350,1.2500000,1.8049520,2.3822870,2.9773430,1.5000000,2.0529010,2.6252150,2.0000000)
lamb_3_out = c(2.3333,2.6087460,2.8577380,3.0867100,3.2998310,2.9166660,3.1950480,3.4510460,3.6893240,3.5000000,3.7804320,4.0414520,4.6666660)
lamb_x <- lamb_1_out+lamb_3_out
lamb_y <- lamb_2_out+lamb_3_out
ro <- lamb_3_out/sqrt((lamb_1_out+lamb_3_out)*(lamb_2_out+lamb_3_out))
shiftx = lamb_x/(lamb_1_in+lamb_3_in)
shifty = lamb_y/(lamb_2_in+lamb_3_in)
result<-0
for (x in 0:LSC_1) {
  for (y in 0:LSC_2) {
  beta_biv = dbvpois(x, y, lamb_1_out, lamb_2_out, lamb_3_out)
  result=result+beta_biv
  }}
ARL1=round(1/(1-result) ,2) #"ARL1";ARL1
kable(round(data.frame(shiftx,shifty,lamb_1_out, lamb_2_out, lamb_3_out, lamb_x, lamb_y, ro, ARL1), digits = 5),format = "pandoc")


  shiftx    shifty   lamb_1_out   lamb_2_out   lamb_3_out    lamb_x    lamb_y    ro     ARL1
--------  --------  -----------  -----------  -----------  --------  --------  ----  -------
 0.99999   0.99999      1.00000      1.00000      2.33330   3.33330   3.33330   0.7   242.17
 1.00000   1.25000      0.72459      1.55792      2.60875   3.33333   4.16667   0.7    85.61
 1.00000   1.50000      0.47560      2.14226      2.85774   3.33333   5.00000   0.7    30.94
 1.00000   1.75000      0.24662      2.74662      3.08671   3.33333   5.83333   0.7    13.69
 1.00000   2.00000      0.03350      3.36684      3.29983   3.33333   6.66667   0.7     7.28
 1.25000   1.25000      1.25000      1.25000      2.91667   4.16667   4.16667   0.7    56.17
 1.25000   1.50000      0.97162      1.80495      3.19505   4.16667   5.00000   0.7    27.45
 1.25000   1.75000      0.71562      2.38229      3.45105   4.16667   5.83333   0.7    13.29
 1.25000   2.00000      0.47734      2.97734      3.68932   4.16667   6.66667   0.7     7.23
 1.50000   1.50000      1.50000      1.50000      3.50000   5.00000   5.00000   0.7    19.50
 1.50000   1.75000      1.21957      2.05290      3.78043   5.00000   5.83333   0.7    11.70
 1.50000   2.00000      0.95855      2.62521      4.04145   5.00000   6.66667   0.7     6.94
 2.00000   2.00000      2.00000      2.00000      4.66667   6.66667   6.66667   0.7     4.95
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIDJDICBjaGFydCAgLSBhc3N1bWluZyB0aGF0IHRoZSB2YXJpYWJsZXMgWCBhbmQgWSBhcmUgZGVwZW5kZW50LiAgKEFydGlnbyBMZWUgZSBDb3N0YV8yMDA5KQ0KYGBge3J9DQpsaWJyYXJ5KGV4dHJhRGlzdHIpDQpsaWJyYXJ5KGtuaXRyKQ0KYGBgDQoNCiMgQ29ycmVsYXRpb24gPSAwLjMwDQpgYGB7cn0NCiNpbiBjb250cm9sDQpsYW1iXzFfaW4gPC0gMQ0KbGFtYl8yX2luIDwtIDENCmxhbWJfM19pbiA8LSAwLjQyODU3MTQgIA0KbGFtYl94IDwtIGxhbWJfMV9pbitsYW1iXzNfaW4NCmxhbWJfeSA8LSBsYW1iXzJfaW4rbGFtYl8zX2luDQoNCkxTQ18xPXFwb2lzKDAuMDAyNyxsb3dlci50YWlsID0gRixsYW1iX3gpOyAiTFNDXzEiOyBMU0NfMQ0KTFNDXzI9cXBvaXMoMC4wMDI3LGxvd2VyLnRhaWwgPSBGLGxhbWJfeSk7ICJMU0NfMiI7IExTQ18yDQpMSUNfMT1MSUNfMj0wDQoNCnJlc3VsdDwtMA0KZm9yICh4IGluIDA6TFNDXzEpIHsNCiAgZm9yICh5IGluIDA6TFNDXzIpIHsNCiAgYmV0YV9iaXYgPSBkYnZwb2lzKHgsIHksIGxhbWJfMV9pbiwgbGFtYl8yX2luLCBsYW1iXzNfaW4pDQojICBwcmludChiZXRhX2JpdikNCiAgcmVzdWx0PXJlc3VsdCtiZXRhX2Jpdg0KICB9fQ0KQVJMbz0xLygxLXJlc3VsdCk7ICJBUkxvIjsgQVJMbw0KDQojIHNoaWZ0IA0KbGFtYl8xX291dCA9IGMoMSwwLjk0OTQxMTQsMC45MDM2ODE0LDAuODYxNjI0NCwwLjgyMjQ3OTQsMS4yNTAwMDAwLDEuMTk4ODY4MCwxLjE1MTg0ODAsMS4xMDgwODMwLDEuNTAwMDAwMCwxLjQ0ODQ5MjAsMS40MDA1NTAwLDIuMDAwMDAwMCkNCmxhbWJfMl9vdXQgPSBjKDEsMS4zMDY1NTQwLDEuNjE3OTY3MCwxLjkzMzA1MzAsMi4yNTEwNTEwLDEuMjUwMDAwMCwxLjU1NjAxMTAsMS44NjYxMzQwLDIuMTc5NTEyMCwxLjUwMDAwMDAsMS44MDU2MzUwLDIuMTE0ODM1MCwyLjAwMDAwMDApDQpsYW1iXzNfb3V0ID0gYygwLjQyODU3MTQsMC40NzkxNjAwLDAuNTI0ODkwMCwwLjU2Njk0NzAsMC42MDYwOTIwLDAuNTM1NzE0MCwwLjU4Njg0NjAsMC42MzM4NjYwLDAuNjc3NjMxMCwwLjY0Mjg1NzAsMC42OTQzNjUwLDAuNzQyMzA3NSwwLjg1NzE0MjkpDQpsYW1iX3ggPC0gbGFtYl8xX291dCtsYW1iXzNfb3V0DQpsYW1iX3kgPC0gbGFtYl8yX291dCtsYW1iXzNfb3V0DQpybyA8LSBsYW1iXzNfb3V0L3NxcnQoKGxhbWJfMV9vdXQrbGFtYl8zX291dCkqKGxhbWJfMl9vdXQrbGFtYl8zX291dCkpDQoNCnNoaWZ0eCA9IGxhbWJfeC8obGFtYl8xX2luK2xhbWJfM19pbikNCnNoaWZ0eSA9IGxhbWJfeS8obGFtYl8yX2luK2xhbWJfM19pbikNCg0KcmVzdWx0PC0wDQpmb3IgKHggaW4gMDpMU0NfMSkgew0KICBmb3IgKHkgaW4gMDpMU0NfMikgew0KICBiZXRhX2JpdiA9IGRidnBvaXMoeCwgeSwgbGFtYl8xX291dCwgbGFtYl8yX291dCwgbGFtYl8zX291dCkNCiAgcmVzdWx0PXJlc3VsdCtiZXRhX2Jpdg0KICB9fQ0KQVJMMT1yb3VuZCgxLygxLXJlc3VsdCkgLDIpICMiQVJMMSI7QVJMMQ0KDQprYWJsZShyb3VuZChkYXRhLmZyYW1lKHNoaWZ0eCxzaGlmdHksbGFtYl8xX291dCwgbGFtYl8yX291dCwgbGFtYl8zX291dCwgbGFtYl94LCBsYW1iX3ksIHJvLCBBUkwxKSwgZGlnaXRzID0gNSksZm9ybWF0ID0gInBhbmRvYyIpDQpgYGANCg0KDQojIENvcnJlbGF0aW9uID0gMC41MA0KYGBge3J9DQojaW4gY29udHJvbA0KbGFtYl8xX2luIDwtIDENCmxhbWJfMl9pbiA8LSAxDQpsYW1iXzNfaW4gPC0gMQ0KbGFtYl94IDwtIGxhbWJfMV9pbitsYW1iXzNfaW4NCmxhbWJfeSA8LSBsYW1iXzJfaW4rbGFtYl8zX2luDQoNCkxTQ18xPXFwb2lzKDAuMDAyNyxsb3dlci50YWlsID0gRixsYW1iX3gpOyAiTFNDXzEiOyBMU0NfMQ0KTFNDXzI9cXBvaXMoMC4wMDI3LGxvd2VyLnRhaWwgPSBGLGxhbWJfeSk7ICJMU0NfMiI7IExTQ18yDQpMSUNfMT1MSUNfMj0wDQoNCnJlc3VsdDwtMA0KZm9yICh4IGluIDA6TFNDXzEpIHsNCiAgZm9yICh5IGluIDA6TFNDXzIpIHsNCiAgYmV0YV9iaXYgPSBkYnZwb2lzKHgsIHksIGxhbWJfMV9pbiwgbGFtYl8yX2luLCBsYW1iXzNfaW4pDQojICBwcmludChiZXRhX2JpdikNCiAgcmVzdWx0PXJlc3VsdCtiZXRhX2Jpdg0KICB9fQ0KQVJMbz0xLygxLXJlc3VsdCk7ICJBUkxvIjsgQVJMbw0KDQojIHNoaWZ0IA0KbGFtYl8xX291dCA9IGMoMSwwLjg4MTk2NjAsMC43NzUyNTUxLDAuNjc3MTI0NCwwLjU4NTc4NjUsMS4yNTAwMDAwLDEuMTMwNjk0MCwxLjAyMDk4MDAsMC45MTg4NjEzLDEuNTAwMDAwMCwxLjM3OTgxNTAsMS4yNjc5NDkwLDIuMDAwMDAwMCkNCmxhbWJfMl9vdXQgPSBjKDEsMS4zODE5NjYwLDEuNzc1MjU1MCwyLjE3NzEyNDAsMi41ODU3ODcwLDEuMjUwMDAwMCwxLjYzMDY5NDAsMi4wMjA5ODAwLDIuNDE4ODYxMCwxLjUwMDAwMDAsMS44Nzk4MTUwLDIuMjY3OTQ5MCwyLjAwMDAwMDApDQpsYW1iXzNfb3V0ID0gYygxLjAwMDAsMS4xMTgwMzQwLDEuMjI0NzQ1MCwxLjMyMjg3NjAsMS40MTQyMTQwLDEuMjUwMDAwMCwxLjM2OTMwNjAsMS40NzkwMjAwLDEuNTgxMTM5MCwxLjUwMDAwMDAsMS42MjAxODUwLDEuNzMyMDUxMCwyLjAwMDAwMDApDQpsYW1iX3ggPC0gbGFtYl8xX291dCtsYW1iXzNfb3V0DQpsYW1iX3kgPC0gbGFtYl8yX291dCtsYW1iXzNfb3V0DQpybyA8LSBsYW1iXzNfb3V0L3NxcnQoKGxhbWJfMV9vdXQrbGFtYl8zX291dCkqKGxhbWJfMl9vdXQrbGFtYl8zX291dCkpDQoNCnNoaWZ0eCA9IGxhbWJfeC8obGFtYl8xX2luK2xhbWJfM19pbikNCnNoaWZ0eSA9IGxhbWJfeS8obGFtYl8yX2luK2xhbWJfM19pbikNCg0KcmVzdWx0PC0wDQpmb3IgKHggaW4gMDpMU0NfMSkgew0KICBmb3IgKHkgaW4gMDpMU0NfMikgew0KICBiZXRhX2JpdiA9IGRidnBvaXMoeCwgeSwgbGFtYl8xX291dCwgbGFtYl8yX291dCwgbGFtYl8zX291dCkNCiAgcmVzdWx0PXJlc3VsdCtiZXRhX2Jpdg0KICB9fQ0KQVJMMT1yb3VuZCgxLygxLXJlc3VsdCkgLDIpICMiQVJMMSI7QVJMMQ0KDQprYWJsZShyb3VuZChkYXRhLmZyYW1lKHNoaWZ0eCxzaGlmdHksbGFtYl8xX291dCwgbGFtYl8yX291dCwgbGFtYl8zX291dCwgbGFtYl94LCBsYW1iX3ksIHJvLCBBUkwxKSwgZGlnaXRzID0gNSksZm9ybWF0ID0gInBhbmRvYyIpDQpgYGANCg0KDQojIENvcnJlbGF0aW9uID0gMC43MA0KYGBge3J9DQojaW4gY29udHJvbA0KbGFtYl8xX2luIDwtIDENCmxhbWJfMl9pbiA8LSAxDQpsYW1iXzNfaW4gPC0gMi4zMzMzMzMNCmxhbWJfeCA8LSBsYW1iXzFfaW4rbGFtYl8zX2luDQpsYW1iX3kgPC0gbGFtYl8yX2luK2xhbWJfM19pbg0KDQpMU0NfMT1xcG9pcygwLjAwMjcsbG93ZXIudGFpbCA9IEYsbGFtYl94KTsgIkxTQ18xIjsgTFNDXzENCkxTQ18yPXFwb2lzKDAuMDAyNyxsb3dlci50YWlsID0gRixsYW1iX3kpOyAiTFNDXzIiOyBMU0NfMg0KTElDXzE9TElDXzI9MA0KDQpyZXN1bHQ8LTANCmZvciAoeCBpbiAwOkxTQ18xKSB7DQogIGZvciAoeSBpbiAwOkxTQ18yKSB7DQogIGJldGFfYml2ID0gZGJ2cG9pcyh4LCB5LCBsYW1iXzFfaW4sIGxhbWJfMl9pbiwgbGFtYl8zX2luKQ0KIyAgcHJpbnQoYmV0YV9iaXYpDQogIHJlc3VsdD1yZXN1bHQrYmV0YV9iaXYNCiAgfX0NCkFSTG89MS8oMS1yZXN1bHQpOyAiQVJMbyI7IEFSTG8NCg0KIyBzaGlmdCANCmxhbWJfMV9vdXQgPSBjKDEsMC43MjQ1ODc1LDAuNDc1NTk1NCwwLjI0NjYyMzYsMC4wMzM1MDE4LDEuMjUwMDAwMCwwLjk3MTYxODYsMC43MTU2MjA0LDAuNDc3MzQzMCwxLjUwMDAwMDAsMS4yMTk1NjgwLDAuOTU4NTQ4NCwyLjAwMDAwMDApDQpsYW1iXzJfb3V0ID0gYygxLDEuNTU3OTIxMCwyLjE0MjI2MjAsMi43NDY2MjQwLDMuMzY2ODM1MCwxLjI1MDAwMDAsMS44MDQ5NTIwLDIuMzgyMjg3MCwyLjk3NzM0MzAsMS41MDAwMDAwLDIuMDUyOTAxMCwyLjYyNTIxNTAsMi4wMDAwMDAwKQ0KbGFtYl8zX291dCA9IGMoMi4zMzMzLDIuNjA4NzQ2MCwyLjg1NzczODAsMy4wODY3MTAwLDMuMjk5ODMxMCwyLjkxNjY2NjAsMy4xOTUwNDgwLDMuNDUxMDQ2MCwzLjY4OTMyNDAsMy41MDAwMDAwLDMuNzgwNDMyMCw0LjA0MTQ1MjAsNC42NjY2NjYwKQ0KbGFtYl94IDwtIGxhbWJfMV9vdXQrbGFtYl8zX291dA0KbGFtYl95IDwtIGxhbWJfMl9vdXQrbGFtYl8zX291dA0Kcm8gPC0gbGFtYl8zX291dC9zcXJ0KChsYW1iXzFfb3V0K2xhbWJfM19vdXQpKihsYW1iXzJfb3V0K2xhbWJfM19vdXQpKQ0KDQpzaGlmdHggPSBsYW1iX3gvKGxhbWJfMV9pbitsYW1iXzNfaW4pDQpzaGlmdHkgPSBsYW1iX3kvKGxhbWJfMl9pbitsYW1iXzNfaW4pDQoNCnJlc3VsdDwtMA0KZm9yICh4IGluIDA6TFNDXzEpIHsNCiAgZm9yICh5IGluIDA6TFNDXzIpIHsNCiAgYmV0YV9iaXYgPSBkYnZwb2lzKHgsIHksIGxhbWJfMV9vdXQsIGxhbWJfMl9vdXQsIGxhbWJfM19vdXQpDQogIHJlc3VsdD1yZXN1bHQrYmV0YV9iaXYNCiAgfX0NCkFSTDE9cm91bmQoMS8oMS1yZXN1bHQpICwyKSAjIkFSTDEiO0FSTDENCg0Ka2FibGUocm91bmQoZGF0YS5mcmFtZShzaGlmdHgsc2hpZnR5LGxhbWJfMV9vdXQsIGxhbWJfMl9vdXQsIGxhbWJfM19vdXQsIGxhbWJfeCwgbGFtYl95LCBybywgQVJMMSksIGRpZ2l0cyA9IDUpLGZvcm1hdCA9ICJwYW5kb2MiKQ0KYGBgDQo=