Data Preprocessing

Importing the Data

Data imported using the functions shQuote() and paste()

sales1.ours <- c(4960.41, 6832.49, 8258.02, 5642.55, 6468.93, 5258.59,
               6217.21, 9218.7, 5726.75, 8214.29, 8932.64, 9295.66,
               9258.06, 5007.65, 9221.29, 9690.34, 5325.62, 8027.41,
               7152.6, 8947.42, 9329.27, 5912.72, 5413.41, 10391.6,
               5997.37, 4567.35, 8296.11, 7622.47, 10271.6, 4817.3,
               6613.89, 10423.5, 8881.03, 10196.8, 7985.85, 10367.5,
               7130.69, 7694.28, 6255.13, 7851.37, 10107.2, 10376.4,
               6860.18, 6821.77, 6476.13, 9527.42)
sales1.competitor <- c(3814.55, 4784.18, 1696.35, 9113.88, 10772.98,
                      3631.26, 9527.9, 7806.29, 10500, 6890.67, 8048.16,
                      3620.4, 3946.07, 2229.71, 10550.2, 5007.26, 9873.22,
                      4926.48, 5212.84, 10438.7, 5757.86, 3388.45, 
                      6429.97, 7676.87, 6727.72, 9087.33, 10444, 9135.64,
                      10300, 5349.38, 8270.39, 6026.13, 9314.74, 8142.23)
sales2.ours <- c(8117.99, 4877.18, 9923.17, 7899.34, 9600.43, 4784.7,
             10150.4, 7146, 5001.22, 4935.55, 8325.62, 8121.26, 7474.38,
             9085.15, 5684.88, 6962.25, 6911.91, 5979.44, 6910.81,
             8653.46, 5080.04, 7968.13, 7648.03, 10024.8, 8122.5,
             5435.23, 5837.22, 4784.97, 9522.59, 10226.7, 9899.77,
             6240.26, 5448.68, 9404.81, 7377.72, 5753.05, 6734.27,
             5845.7, 7144.39, 8814.34, 8839.03, 10372.3, 7834.13,
             6544.11, 9311.07, 4766.91, 10383.4, 5534.78, 6064.76,
             6061.98, 5177.43, 7037.6, 8162.49, 8728.4, 7821.87, 5592.15,
             6371.55, 6927.05, 7106.73, 5311.97, 9822.17, 5245.32,
             6970.61, 8774.27, 6869.43, 10398.4, 5923.86, 6979.11,
             7415.85, 7825.28, 7900.99, 10415.5, 9159.3, 4770.21,
             5727.9, 5078.09, 6859.2, 10291.1, 9807.69, 9234.28,7303.47,
             4816.87, 4953.42, 10253.7, 8387.12, 6316.28, 8354.45,
             6676.34, 8245.92, 5594.23, 8272.41, 8696.17, 8587.47,
             6101.63, 7655.59, 5009.93, 8638.31, 8262.56, 8810.01,
             9400.79, 7160.68, 8371.18, 8925.81, 10351.4, 8981.91,
             6833.37, 6232.5, 6905.41, 6352.07, 7166.12, 8849.34,
             5669.59, 7384.45, 4688.73, 5958.54, 6027.91, 5273.85,
             5256.11, 8283.5, 7350.54, 7765.91, 6331.13, 8974.42,
             10006.6, 10030.7, 6101.54, 8417.39, 5934.85, 6007.38,
             9854.29, 10125.7, 6525.76, 7786.46, 8448.19, 6950.69,
             8728.3, 8454.44, 10331.3, 8638.29, 10160.3, 9858.3, 10240.5,
             7074.98, 10123.5, 4930.81, 7093.34, 5797.43, 6093.43,
             8335.15, 5781.67, 6531.31, 7716.6, 6164.2, 7440.39, 4885.48,
             7324.15, 6968.21, 9336.29, 9882, 8815.63, 10300.3, 7657.18,
             9775.82, 8073.75, 6231.13, 9392.7, 10494.8, 8178.39, 6060.26,
             6744.2, 8291.58, 9767.94, 5204.55, 8094.57, 7816.5, 10246.6,
             9674.28, 9571.36, 5924.92, 5509.03, 9435.72, 7631.84,
             9242.48, 9677.7, 7718.31, 5688.47, 8500.66, 5549.29, 8357.37,
             8516.31, 4627.19, 9091.74, 9054.66, 6778.98, 9813.24,
             10185.4, 5293.3, 5081.38, 9457.05, 9068.09, 7619.48, 4615.31,
             6956.77, 6515.06, 5062.55, 7918.94, 7761.39, 9159.32,
             10213.3, 6858.72, 9599.44, 7850.09, 5743.76, 7858.43,
             10464.3, 7553.68, 9896.11, 7352.34, 10095.5, 8345.62,
             7019.57, 8375.5, 5894.46, 5947.82, 7947.08, 10070.5, 7243.05,
             8470.08, 6786.72, 7391.75, 8375.47, 5995.94, 6085.48,
             8721.17, 6687.19, 8532.04, 9724.97, 6674.4, 6375.91, 6768.96,
             7358.11, 5443.5)
sales2.competitor <- c(7625.87, 5837.27, 12164.9, 12045.8, 1105.68,
                       10774.4, 10691.7, 12586.1, 6060.27, 5804.11,
                       5016.12, 11507, 9489, 12542.9, 4522.77, 11085,
                       9746.04, 6061.03, 11305.8, 4668.64, 11464.8,
                       8737.44, 11818.8, 6985.72, 3998.48, 1463.21,
                       2242.89, 10779.2, 8576.05, 3731.57, 12462.1,
                       5499.64, 5998.38, 677.689, 6879.42, 9244.96,
                       2970.9, 10584.3, 6738.44, 3257.09, 11241.7,
                       11945.8, 9682.99, 5462.87, 5586.8, 12864.5,
                       12153.1, 11413.1, 7397.72, 9387.54, 8797.98,
                       9251.82, 10969.7, 10642.2, 4374.07, 9267.44, 10111,
                       11118.4, 10390, 9364.4, 2759.09, 10955.1, 10154.8,
                       12108.5, 12063.3, 6050.16, 11002.4, 9840.76,
                       5708.45, 7339.71, 9760.99, 12617.4, 7262.15,
                       11723.3, 10289.6, 4334.76, 7850.78, 11957.6,
                       9774.52, 12782.1, 11636.9, 9858.89, 12199.3,
                       7836.13, 9130.15, 11457.2, 8056.32, 10785.8,
                       11713.3, 8853.94, 8709.53, 11174.5, 8348.51,
                       8831.87, 10572.5, 6441.93, 12164, 11694.5, 8413.24,
                       10400.8, 5094.21, 11704.4, 9083.06, 11322.4,
                       9192.48, 4227.7, 11072.2, 11426.7, 2992.29,
                       8307.88, 11939.9, 12251.1, 12103.6, 8490.95,
                       12134.7, 6233.89, 8616.06, 10563.4, 5265.06,
                       9441.57, 4140.73, 8601.92, 4387.71, 1628.92,
                       10506.8, 11581, 8375.65, 12575.1, 11773.1, 3625.79,
                       4030.63, 10059.9, 4580.3, 5618.32, 4876.98,
                       11019.9, 11789.6, 9131.24, 4473.07, 9363.19,
                       9188.94, 6650.25, 11639.9, 12376.2, 6547.93,
                       6272.21, 3156.43, 8705.16, 562.226, 5363.15,
                       12957.8, 6509.7, 7026.19, 3484.21, 7832.21,
                       12440.7, 6295.22, 8243.43, 11535.1, 5710.38,
                       3447.32, 4994.76, 11365.9, 6414.05, 8611.54, 10741,
                       7994.54, 12568.1, 9983.25, 5525.25, 11023.9,
                       5205.45, 11296.8, 10005.3, 4216, 11249.4, 6591.14,
                       4668.43, 12286, 9078.32, 4822.94, 4639.8, 12976.8,
                       8292.33, 12529.3, 10887.4, 10495.6, 11452.5, 12478,
                       5508.96, 11995.8, 3443.92, 4408.83, 4963.43,
                       11813.5, 12154.7) 
sales3.ours <- c(8117.99, 4877.18, 9923.17, 7899.34, 9600.43, 4784.7,
                 10150.4, 7146, 5001.22, 4935.55, 8325.62, 8121.26,
                 7474.38, 9085.15, 5684.88, 6962.25, 6911.91, 5979.44,
                 6910.81)
sales3.competitor <- c(10015.87, 8942.88, 5290.47, 11283.98, 4533.3,
                       12657.22, 6316.43, 1899.44, 1982.79, 5577.97,
                       5589.69, 11888.34, 3951.26, 8762.66, 4585.79,
                       5866.45, 5894.63, 5179.4, 4764.7)
sales4.ours <- c(4960.41, 6832.49, 8258.02, 5642.55, 6468.93, 5258.59,
                 6217.21, 9218.7, 5912.72, 5413.41, 10391.6, 5997.37,
                 4567.35, 8296.11, 7622.47)
sales4.competitor <- c(3814.55, 4784.18, 1696.35, 9113.88, 8732.48,
                       3631.26, 9527.9, 7806.29, 3388.45, 6429.97,
                       7676.87, 6727.72, 9087.33, 10444, 9135.64, 10300,
                       5349.38, 8270.39, 6026.13, 9314.74, 8142.23)

Sales I

Average sales difference

Create a 98% confidence interval for the difference of average our company’s average sales and that of the competition. Assume that the population standard deviations are 1700 (our company) and 2700 (their company)

sd1.ours <- 1700
sd1.competitor <- 2700
n1.ours <- length(sales1.ours)
n1.competitor <- length(sales1.competitor)
mean1.ours <- mean(sales1.ours)
mean1.competitor <- mean(sales1.competitor)

Answer

To find the difference of the average of our companies sales and that of the other companies sales, we use the formula below for \(\sigma_{\bar{x}_{1}-\bar{x}_{2}}\): \[ \begin{align} \sigma_{\bar{x}_{1}-\bar{x}_{2}} &= \sqrt{\frac{\sigma^{2}_{\textrm{ours}}}{n_{1}}+\frac{\sigma_{\textrm{competitor}}^{2}}{n_{2}}}\\ &= \sqrt{\frac{1700^{2}}{46}+\frac{2700^2}{34}} \end{align} \]

sigma1 <- sqrt(((sd1.ours)^2 / n1.ours) + ((sd1.competitor)^2 / n1.competitor) )

Calculating \(z_{c}\)

zc1 = qnorm((1 + 0.98) / 2)

To calculate (\(E\)): \[ E = z_{c} \sigma_{\bar{x}_{1}-\bar{x}_{2}} \]

moe1 <- z1 * sigma1

To calculate : \[ \begin{align} \textrm{CI}_{\textrm{lower}} &= \left(\bar{x}_{1} - \bar{x}_{2}\right) - E\\ \textrm{CI}_{\textrm{upper}} &= \left(\bar{x}_{1} - \bar{x}_{2}\right) + E \end{align} \]

mean1 <- mean1.ours - mean1.competitor
confidence1.upper <- mean1 - moe1
confidence1.lower <- mean1 + moe1

Two variable hypothesis testing with known \(\sigma\)

Suppose that our company’s overall standard deviation of sales is $1700 and that of the competition is $2700. Perform an appropriate two sample hypothesis testing at 0.05 level of significance manually to test whether our company’s average sales in more than that of the competition.

Answer

The standard deviations are still \(\sigma_{\textrm{ours}} = \$1700\) and \(\sigma_{\textrm{competitor}} = \$2700\),
and \(n1\) & \(n2\) are \(\geq 30\).
The formula for calculating \(H_{0}\) and \(H_{a}\) is given as: \[ \begin{align} H_{0} &: \mu_{\textrm{ours}} - \mu_{\textrm{competitor}} > \mu_{0}\\ H_{a} &: \mu_{\textrm{ours}} - \mu_{\textrm{competitor}} < \mu_{0} \end{align} \] Next we are required to calculate our test statistic \(z\), which can be obtained using the following formula: \[ \begin{align} z &=\frac{\left(\bar{x}_{\textrm{ours}} - \bar{x}_{\textrm{competitor}}\right) - \mu_{0}}{\sigma_{\bar{x}_{1}-\bar{x}_{2}}}\\ &=\frac{\left(7692.28 - 7012.99\right) - 0}{526.53} \end{align} \] We will calculate this below, along with the \(P\) value and \(z_{\textrm{crit}}\):

z1 <- mean1 / sigma1
p1 <- 1 - pnorm(z1)
zcrit <- qnorm(1 - 0.05)

Now that we have calculated \(P\), \(z\), and \(z_{\textrm{crit}}\), we can test to see which hypothesis to reject. \[ \begin{align} H_{0}\textrm{ if }& z \geq z_{\textrm{crit}}\\ H_{a}\textrm{ if }& P \leq \alpha \end{align} \] We can use R to create logical statements to determine the which to reject:

if(z1 >= zcrit && p1 <= 0.05){
  print("Reject Null Hypothesis")
} else {
  print("Reject Alternate Hypothesis")
}
[1] "Reject Alternate Hypothesis"

This tells us that we should reject \(H_{a}\).

Two variable hypothesis testing with unknown \(\sigma\)

Suppose that the standard deviation of our sales and that of the competition are unknow; however, they are known not to be equal. Perform an appropriate two sample hypotheses testing manually at 0.05 level of significance to test whether our company’s average sales in more than that of the competition.

Answer

LS0tDQp0aXRsZTogIlByb2plY3QgNSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQpgYGB7ciBlY2hvPUZBTFNFfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpgYGANCiMgRGF0YSBQcmVwcm9jZXNzaW5nDQojIyBJbXBvcnRpbmcgdGhlIERhdGENCkRhdGEgaW1wb3J0ZWQgdXNpbmcgdGhlIGZ1bmN0aW9ucyBzaFF1b3RlKCkgYW5kIHBhc3RlKCkNCmBgYHtyfQ0Kc2FsZXMxLm91cnMgPC0gYyg0OTYwLjQxLCA2ODMyLjQ5LCA4MjU4LjAyLCA1NjQyLjU1LCA2NDY4LjkzLCA1MjU4LjU5LA0KICAgICAgICAgICAgICAgNjIxNy4yMSwgOTIxOC43LCA1NzI2Ljc1LCA4MjE0LjI5LCA4OTMyLjY0LCA5Mjk1LjY2LA0KICAgICAgICAgICAgICAgOTI1OC4wNiwgNTAwNy42NSwgOTIyMS4yOSwgOTY5MC4zNCwgNTMyNS42MiwgODAyNy40MSwNCiAgICAgICAgICAgICAgIDcxNTIuNiwgODk0Ny40MiwgOTMyOS4yNywgNTkxMi43MiwgNTQxMy40MSwgMTAzOTEuNiwNCiAgICAgICAgICAgICAgIDU5OTcuMzcsIDQ1NjcuMzUsIDgyOTYuMTEsIDc2MjIuNDcsIDEwMjcxLjYsIDQ4MTcuMywNCiAgICAgICAgICAgICAgIDY2MTMuODksIDEwNDIzLjUsIDg4ODEuMDMsIDEwMTk2LjgsIDc5ODUuODUsIDEwMzY3LjUsDQogICAgICAgICAgICAgICA3MTMwLjY5LCA3Njk0LjI4LCA2MjU1LjEzLCA3ODUxLjM3LCAxMDEwNy4yLCAxMDM3Ni40LA0KICAgICAgICAgICAgICAgNjg2MC4xOCwgNjgyMS43NywgNjQ3Ni4xMywgOTUyNy40MikNCnNhbGVzMS5jb21wZXRpdG9yIDwtIGMoMzgxNC41NSwgNDc4NC4xOCwgMTY5Ni4zNSwgOTExMy44OCwgMTA3NzIuOTgsDQogICAgICAgICAgICAgICAgICAgICAgMzYzMS4yNiwgOTUyNy45LCA3ODA2LjI5LCAxMDUwMCwgNjg5MC42NywgODA0OC4xNiwNCiAgICAgICAgICAgICAgICAgICAgICAzNjIwLjQsIDM5NDYuMDcsIDIyMjkuNzEsIDEwNTUwLjIsIDUwMDcuMjYsIDk4NzMuMjIsDQogICAgICAgICAgICAgICAgICAgICAgNDkyNi40OCwgNTIxMi44NCwgMTA0MzguNywgNTc1Ny44NiwgMzM4OC40NSwgDQogICAgICAgICAgICAgICAgICAgICAgNjQyOS45NywgNzY3Ni44NywgNjcyNy43MiwgOTA4Ny4zMywgMTA0NDQsIDkxMzUuNjQsDQogICAgICAgICAgICAgICAgICAgICAgMTAzMDAsIDUzNDkuMzgsIDgyNzAuMzksIDYwMjYuMTMsIDkzMTQuNzQsIDgxNDIuMjMpDQpgYGANCg0KYGBge3J9DQpzYWxlczIub3VycyA8LSBjKDgxMTcuOTksIDQ4NzcuMTgsIDk5MjMuMTcsIDc4OTkuMzQsIDk2MDAuNDMsIDQ3ODQuNywNCiAgICAgICAgICAgICAxMDE1MC40LCA3MTQ2LCA1MDAxLjIyLCA0OTM1LjU1LCA4MzI1LjYyLCA4MTIxLjI2LCA3NDc0LjM4LA0KICAgICAgICAgICAgIDkwODUuMTUsIDU2ODQuODgsIDY5NjIuMjUsIDY5MTEuOTEsIDU5NzkuNDQsIDY5MTAuODEsDQogICAgICAgICAgICAgODY1My40NiwgNTA4MC4wNCwgNzk2OC4xMywgNzY0OC4wMywgMTAwMjQuOCwgODEyMi41LA0KICAgICAgICAgICAgIDU0MzUuMjMsIDU4MzcuMjIsIDQ3ODQuOTcsIDk1MjIuNTksIDEwMjI2LjcsIDk4OTkuNzcsDQogICAgICAgICAgICAgNjI0MC4yNiwgNTQ0OC42OCwgOTQwNC44MSwgNzM3Ny43MiwgNTc1My4wNSwgNjczNC4yNywNCiAgICAgICAgICAgICA1ODQ1LjcsIDcxNDQuMzksIDg4MTQuMzQsIDg4MzkuMDMsIDEwMzcyLjMsIDc4MzQuMTMsDQogICAgICAgICAgICAgNjU0NC4xMSwgOTMxMS4wNywgNDc2Ni45MSwgMTAzODMuNCwgNTUzNC43OCwgNjA2NC43NiwNCiAgICAgICAgICAgICA2MDYxLjk4LCA1MTc3LjQzLCA3MDM3LjYsIDgxNjIuNDksIDg3MjguNCwgNzgyMS44NywgNTU5Mi4xNSwNCiAgICAgICAgICAgICA2MzcxLjU1LCA2OTI3LjA1LCA3MTA2LjczLCA1MzExLjk3LCA5ODIyLjE3LCA1MjQ1LjMyLA0KICAgICAgICAgICAgIDY5NzAuNjEsIDg3NzQuMjcsIDY4NjkuNDMsIDEwMzk4LjQsIDU5MjMuODYsIDY5NzkuMTEsDQogICAgICAgICAgICAgNzQxNS44NSwgNzgyNS4yOCwgNzkwMC45OSwgMTA0MTUuNSwgOTE1OS4zLCA0NzcwLjIxLA0KICAgICAgICAgICAgIDU3MjcuOSwgNTA3OC4wOSwgNjg1OS4yLCAxMDI5MS4xLCA5ODA3LjY5LCA5MjM0LjI4LDczMDMuNDcsDQogICAgICAgICAgICAgNDgxNi44NywgNDk1My40MiwgMTAyNTMuNywgODM4Ny4xMiwgNjMxNi4yOCwgODM1NC40NSwNCiAgICAgICAgICAgICA2Njc2LjM0LCA4MjQ1LjkyLCA1NTk0LjIzLCA4MjcyLjQxLCA4Njk2LjE3LCA4NTg3LjQ3LA0KICAgICAgICAgICAgIDYxMDEuNjMsIDc2NTUuNTksIDUwMDkuOTMsIDg2MzguMzEsIDgyNjIuNTYsIDg4MTAuMDEsDQogICAgICAgICAgICAgOTQwMC43OSwgNzE2MC42OCwgODM3MS4xOCwgODkyNS44MSwgMTAzNTEuNCwgODk4MS45MSwNCiAgICAgICAgICAgICA2ODMzLjM3LCA2MjMyLjUsIDY5MDUuNDEsIDYzNTIuMDcsIDcxNjYuMTIsIDg4NDkuMzQsDQogICAgICAgICAgICAgNTY2OS41OSwgNzM4NC40NSwgNDY4OC43MywgNTk1OC41NCwgNjAyNy45MSwgNTI3My44NSwNCiAgICAgICAgICAgICA1MjU2LjExLCA4MjgzLjUsIDczNTAuNTQsIDc3NjUuOTEsIDYzMzEuMTMsIDg5NzQuNDIsDQogICAgICAgICAgICAgMTAwMDYuNiwgMTAwMzAuNywgNjEwMS41NCwgODQxNy4zOSwgNTkzNC44NSwgNjAwNy4zOCwNCiAgICAgICAgICAgICA5ODU0LjI5LCAxMDEyNS43LCA2NTI1Ljc2LCA3Nzg2LjQ2LCA4NDQ4LjE5LCA2OTUwLjY5LA0KICAgICAgICAgICAgIDg3MjguMywgODQ1NC40NCwgMTAzMzEuMywgODYzOC4yOSwgMTAxNjAuMywgOTg1OC4zLCAxMDI0MC41LA0KICAgICAgICAgICAgIDcwNzQuOTgsIDEwMTIzLjUsIDQ5MzAuODEsIDcwOTMuMzQsIDU3OTcuNDMsIDYwOTMuNDMsDQogICAgICAgICAgICAgODMzNS4xNSwgNTc4MS42NywgNjUzMS4zMSwgNzcxNi42LCA2MTY0LjIsIDc0NDAuMzksIDQ4ODUuNDgsDQogICAgICAgICAgICAgNzMyNC4xNSwgNjk2OC4yMSwgOTMzNi4yOSwgOTg4MiwgODgxNS42MywgMTAzMDAuMywgNzY1Ny4xOCwNCiAgICAgICAgICAgICA5Nzc1LjgyLCA4MDczLjc1LCA2MjMxLjEzLCA5MzkyLjcsIDEwNDk0LjgsIDgxNzguMzksIDYwNjAuMjYsDQogICAgICAgICAgICAgNjc0NC4yLCA4MjkxLjU4LCA5NzY3Ljk0LCA1MjA0LjU1LCA4MDk0LjU3LCA3ODE2LjUsIDEwMjQ2LjYsDQogICAgICAgICAgICAgOTY3NC4yOCwgOTU3MS4zNiwgNTkyNC45MiwgNTUwOS4wMywgOTQzNS43MiwgNzYzMS44NCwNCiAgICAgICAgICAgICA5MjQyLjQ4LCA5Njc3LjcsIDc3MTguMzEsIDU2ODguNDcsIDg1MDAuNjYsIDU1NDkuMjksIDgzNTcuMzcsDQogICAgICAgICAgICAgODUxNi4zMSwgNDYyNy4xOSwgOTA5MS43NCwgOTA1NC42NiwgNjc3OC45OCwgOTgxMy4yNCwNCiAgICAgICAgICAgICAxMDE4NS40LCA1MjkzLjMsIDUwODEuMzgsIDk0NTcuMDUsIDkwNjguMDksIDc2MTkuNDgsIDQ2MTUuMzEsDQogICAgICAgICAgICAgNjk1Ni43NywgNjUxNS4wNiwgNTA2Mi41NSwgNzkxOC45NCwgNzc2MS4zOSwgOTE1OS4zMiwNCiAgICAgICAgICAgICAxMDIxMy4zLCA2ODU4LjcyLCA5NTk5LjQ0LCA3ODUwLjA5LCA1NzQzLjc2LCA3ODU4LjQzLA0KICAgICAgICAgICAgIDEwNDY0LjMsIDc1NTMuNjgsIDk4OTYuMTEsIDczNTIuMzQsIDEwMDk1LjUsIDgzNDUuNjIsDQogICAgICAgICAgICAgNzAxOS41NywgODM3NS41LCA1ODk0LjQ2LCA1OTQ3LjgyLCA3OTQ3LjA4LCAxMDA3MC41LCA3MjQzLjA1LA0KICAgICAgICAgICAgIDg0NzAuMDgsIDY3ODYuNzIsIDczOTEuNzUsIDgzNzUuNDcsIDU5OTUuOTQsIDYwODUuNDgsDQogICAgICAgICAgICAgODcyMS4xNywgNjY4Ny4xOSwgODUzMi4wNCwgOTcyNC45NywgNjY3NC40LCA2Mzc1LjkxLCA2NzY4Ljk2LA0KICAgICAgICAgICAgIDczNTguMTEsIDU0NDMuNSkNCnNhbGVzMi5jb21wZXRpdG9yIDwtIGMoNzYyNS44NywgNTgzNy4yNywgMTIxNjQuOSwgMTIwNDUuOCwgMTEwNS42OCwNCiAgICAgICAgICAgICAgICAgICAgICAgMTA3NzQuNCwgMTA2OTEuNywgMTI1ODYuMSwgNjA2MC4yNywgNTgwNC4xMSwNCiAgICAgICAgICAgICAgICAgICAgICAgNTAxNi4xMiwgMTE1MDcsIDk0ODksIDEyNTQyLjksIDQ1MjIuNzcsIDExMDg1LA0KICAgICAgICAgICAgICAgICAgICAgICA5NzQ2LjA0LCA2MDYxLjAzLCAxMTMwNS44LCA0NjY4LjY0LCAxMTQ2NC44LA0KICAgICAgICAgICAgICAgICAgICAgICA4NzM3LjQ0LCAxMTgxOC44LCA2OTg1LjcyLCAzOTk4LjQ4LCAxNDYzLjIxLA0KICAgICAgICAgICAgICAgICAgICAgICAyMjQyLjg5LCAxMDc3OS4yLCA4NTc2LjA1LCAzNzMxLjU3LCAxMjQ2Mi4xLA0KICAgICAgICAgICAgICAgICAgICAgICA1NDk5LjY0LCA1OTk4LjM4LCA2NzcuNjg5LCA2ODc5LjQyLCA5MjQ0Ljk2LA0KICAgICAgICAgICAgICAgICAgICAgICAyOTcwLjksIDEwNTg0LjMsIDY3MzguNDQsIDMyNTcuMDksIDExMjQxLjcsDQogICAgICAgICAgICAgICAgICAgICAgIDExOTQ1LjgsIDk2ODIuOTksIDU0NjIuODcsIDU1ODYuOCwgMTI4NjQuNSwNCiAgICAgICAgICAgICAgICAgICAgICAgMTIxNTMuMSwgMTE0MTMuMSwgNzM5Ny43MiwgOTM4Ny41NCwgODc5Ny45OCwNCiAgICAgICAgICAgICAgICAgICAgICAgOTI1MS44MiwgMTA5NjkuNywgMTA2NDIuMiwgNDM3NC4wNywgOTI2Ny40NCwgMTAxMTEsDQogICAgICAgICAgICAgICAgICAgICAgIDExMTE4LjQsIDEwMzkwLCA5MzY0LjQsIDI3NTkuMDksIDEwOTU1LjEsIDEwMTU0LjgsDQogICAgICAgICAgICAgICAgICAgICAgIDEyMTA4LjUsIDEyMDYzLjMsIDYwNTAuMTYsIDExMDAyLjQsIDk4NDAuNzYsDQogICAgICAgICAgICAgICAgICAgICAgIDU3MDguNDUsIDczMzkuNzEsIDk3NjAuOTksIDEyNjE3LjQsIDcyNjIuMTUsDQogICAgICAgICAgICAgICAgICAgICAgIDExNzIzLjMsIDEwMjg5LjYsIDQzMzQuNzYsIDc4NTAuNzgsIDExOTU3LjYsDQogICAgICAgICAgICAgICAgICAgICAgIDk3NzQuNTIsIDEyNzgyLjEsIDExNjM2LjksIDk4NTguODksIDEyMTk5LjMsDQogICAgICAgICAgICAgICAgICAgICAgIDc4MzYuMTMsIDkxMzAuMTUsIDExNDU3LjIsIDgwNTYuMzIsIDEwNzg1LjgsDQogICAgICAgICAgICAgICAgICAgICAgIDExNzEzLjMsIDg4NTMuOTQsIDg3MDkuNTMsIDExMTc0LjUsIDgzNDguNTEsDQogICAgICAgICAgICAgICAgICAgICAgIDg4MzEuODcsIDEwNTcyLjUsIDY0NDEuOTMsIDEyMTY0LCAxMTY5NC41LCA4NDEzLjI0LA0KICAgICAgICAgICAgICAgICAgICAgICAxMDQwMC44LCA1MDk0LjIxLCAxMTcwNC40LCA5MDgzLjA2LCAxMTMyMi40LA0KICAgICAgICAgICAgICAgICAgICAgICA5MTkyLjQ4LCA0MjI3LjcsIDExMDcyLjIsIDExNDI2LjcsIDI5OTIuMjksDQogICAgICAgICAgICAgICAgICAgICAgIDgzMDcuODgsIDExOTM5LjksIDEyMjUxLjEsIDEyMTAzLjYsIDg0OTAuOTUsDQogICAgICAgICAgICAgICAgICAgICAgIDEyMTM0LjcsIDYyMzMuODksIDg2MTYuMDYsIDEwNTYzLjQsIDUyNjUuMDYsDQogICAgICAgICAgICAgICAgICAgICAgIDk0NDEuNTcsIDQxNDAuNzMsIDg2MDEuOTIsIDQzODcuNzEsIDE2MjguOTIsDQogICAgICAgICAgICAgICAgICAgICAgIDEwNTA2LjgsIDExNTgxLCA4Mzc1LjY1LCAxMjU3NS4xLCAxMTc3My4xLCAzNjI1Ljc5LA0KICAgICAgICAgICAgICAgICAgICAgICA0MDMwLjYzLCAxMDA1OS45LCA0NTgwLjMsIDU2MTguMzIsIDQ4NzYuOTgsDQogICAgICAgICAgICAgICAgICAgICAgIDExMDE5LjksIDExNzg5LjYsIDkxMzEuMjQsIDQ0NzMuMDcsIDkzNjMuMTksDQogICAgICAgICAgICAgICAgICAgICAgIDkxODguOTQsIDY2NTAuMjUsIDExNjM5LjksIDEyMzc2LjIsIDY1NDcuOTMsDQogICAgICAgICAgICAgICAgICAgICAgIDYyNzIuMjEsIDMxNTYuNDMsIDg3MDUuMTYsIDU2Mi4yMjYsIDUzNjMuMTUsDQogICAgICAgICAgICAgICAgICAgICAgIDEyOTU3LjgsIDY1MDkuNywgNzAyNi4xOSwgMzQ4NC4yMSwgNzgzMi4yMSwNCiAgICAgICAgICAgICAgICAgICAgICAgMTI0NDAuNywgNjI5NS4yMiwgODI0My40MywgMTE1MzUuMSwgNTcxMC4zOCwNCiAgICAgICAgICAgICAgICAgICAgICAgMzQ0Ny4zMiwgNDk5NC43NiwgMTEzNjUuOSwgNjQxNC4wNSwgODYxMS41NCwgMTA3NDEsDQogICAgICAgICAgICAgICAgICAgICAgIDc5OTQuNTQsIDEyNTY4LjEsIDk5ODMuMjUsIDU1MjUuMjUsIDExMDIzLjksDQogICAgICAgICAgICAgICAgICAgICAgIDUyMDUuNDUsIDExMjk2LjgsIDEwMDA1LjMsIDQyMTYsIDExMjQ5LjQsIDY1OTEuMTQsDQogICAgICAgICAgICAgICAgICAgICAgIDQ2NjguNDMsIDEyMjg2LCA5MDc4LjMyLCA0ODIyLjk0LCA0NjM5LjgsIDEyOTc2LjgsDQogICAgICAgICAgICAgICAgICAgICAgIDgyOTIuMzMsIDEyNTI5LjMsIDEwODg3LjQsIDEwNDk1LjYsIDExNDUyLjUsIDEyNDc4LA0KICAgICAgICAgICAgICAgICAgICAgICA1NTA4Ljk2LCAxMTk5NS44LCAzNDQzLjkyLCA0NDA4LjgzLCA0OTYzLjQzLA0KICAgICAgICAgICAgICAgICAgICAgICAxMTgxMy41LCAxMjE1NC43KSANCmBgYA0KDQpgYGB7cn0NCnNhbGVzMy5vdXJzIDwtIGMoODExNy45OSwgNDg3Ny4xOCwgOTkyMy4xNywgNzg5OS4zNCwgOTYwMC40MywgNDc4NC43LA0KICAgICAgICAgICAgICAgICAxMDE1MC40LCA3MTQ2LCA1MDAxLjIyLCA0OTM1LjU1LCA4MzI1LjYyLCA4MTIxLjI2LA0KICAgICAgICAgICAgICAgICA3NDc0LjM4LCA5MDg1LjE1LCA1Njg0Ljg4LCA2OTYyLjI1LCA2OTExLjkxLCA1OTc5LjQ0LA0KICAgICAgICAgICAgICAgICA2OTEwLjgxKQ0Kc2FsZXMzLmNvbXBldGl0b3IgPC0gYygxMDAxNS44NywgODk0Mi44OCwgNTI5MC40NywgMTEyODMuOTgsIDQ1MzMuMywNCiAgICAgICAgICAgICAgICAgICAgICAgMTI2NTcuMjIsIDYzMTYuNDMsIDE4OTkuNDQsIDE5ODIuNzksIDU1NzcuOTcsDQogICAgICAgICAgICAgICAgICAgICAgIDU1ODkuNjksIDExODg4LjM0LCAzOTUxLjI2LCA4NzYyLjY2LCA0NTg1Ljc5LA0KICAgICAgICAgICAgICAgICAgICAgICA1ODY2LjQ1LCA1ODk0LjYzLCA1MTc5LjQsIDQ3NjQuNykNCmBgYA0KDQpgYGB7cn0NCnNhbGVzNC5vdXJzIDwtIGMoNDk2MC40MSwgNjgzMi40OSwgODI1OC4wMiwgNTY0Mi41NSwgNjQ2OC45MywgNTI1OC41OSwNCiAgICAgICAgICAgICAgICAgNjIxNy4yMSwgOTIxOC43LCA1OTEyLjcyLCA1NDEzLjQxLCAxMDM5MS42LCA1OTk3LjM3LA0KICAgICAgICAgICAgICAgICA0NTY3LjM1LCA4Mjk2LjExLCA3NjIyLjQ3KQ0Kc2FsZXM0LmNvbXBldGl0b3IgPC0gYygzODE0LjU1LCA0Nzg0LjE4LCAxNjk2LjM1LCA5MTEzLjg4LCA4NzMyLjQ4LA0KICAgICAgICAgICAgICAgICAgICAgICAzNjMxLjI2LCA5NTI3LjksIDc4MDYuMjksIDMzODguNDUsIDY0MjkuOTcsDQogICAgICAgICAgICAgICAgICAgICAgIDc2NzYuODcsIDY3MjcuNzIsIDkwODcuMzMsIDEwNDQ0LCA5MTM1LjY0LCAxMDMwMCwNCiAgICAgICAgICAgICAgICAgICAgICAgNTM0OS4zOCwgODI3MC4zOSwgNjAyNi4xMywgOTMxNC43NCwgODE0Mi4yMykNCmBgYA0KDQojIFNhbGVzIEkNCiMjIEF2ZXJhZ2Ugc2FsZXMgZGlmZmVyZW5jZQ0KQ3JlYXRlIGEgOThcJSBjb25maWRlbmNlIGludGVydmFsIGZvciB0aGUgZGlmZmVyZW5jZSBvZiBhdmVyYWdlIG91ciBjb21wYW55J3MgYXZlcmFnZSBzYWxlcyBhbmQgdGhhdCBvZiB0aGUgY29tcGV0aXRpb24uIEFzc3VtZSB0aGF0IHRoZSBwb3B1bGF0aW9uIHN0YW5kYXJkIGRldmlhdGlvbnMgYXJlIDE3MDAgKG91ciBjb21wYW55KSBhbmQgMjcwMCAodGhlaXIgY29tcGFueSkNCg0KYGBge3J9DQpzZDEub3VycyA8LSAxNzAwDQpzZDEuY29tcGV0aXRvciA8LSAyNzAwDQpuMS5vdXJzIDwtIGxlbmd0aChzYWxlczEub3VycykNCm4xLmNvbXBldGl0b3IgPC0gbGVuZ3RoKHNhbGVzMS5jb21wZXRpdG9yKQ0KbWVhbjEub3VycyA8LSBtZWFuKHNhbGVzMS5vdXJzKQ0KbWVhbjEuY29tcGV0aXRvciA8LSBtZWFuKHNhbGVzMS5jb21wZXRpdG9yKQ0KYGBgDQoNCiMjIyBBbnN3ZXINClRvIGZpbmQgdGhlIGRpZmZlcmVuY2Ugb2YgdGhlIGF2ZXJhZ2Ugb2Ygb3VyIGNvbXBhbmllcyBzYWxlcyBhbmQgdGhhdCBvZiB0aGUgb3RoZXIgY29tcGFuaWVzIHNhbGVzLCB3ZSB1c2UgdGhlIGZvcm11bGEgYmVsb3cgZm9yICRcc2lnbWFfe1xiYXJ7eH1fezF9LVxiYXJ7eH1fezJ9fSQ6DQpcWw0KXGJlZ2lue2FsaWdufQ0KXHNpZ21hX3tcYmFye3h9X3sxfS1cYmFye3h9X3syfX0gJj0gIFxzcXJ0e1xmcmFje1xzaWdtYV57Mn1fe1x0ZXh0cm17b3Vyc319fXtuX3sxfX0rXGZyYWN7XHNpZ21hX3tcdGV4dHJte2NvbXBldGl0b3J9fV57Mn19e25fezJ9fX1cXA0KJj0gXHNxcnR7XGZyYWN7MTcwMF57Mn19ezQ2fStcZnJhY3syNzAwXjJ9ezM0fX0NClxlbmR7YWxpZ259DQpcXQ0KYGBge3J9DQpzaWdtYTEgPC0gc3FydCgoKHNkMS5vdXJzKV4yIC8gbjEub3VycykgKyAoKHNkMS5jb21wZXRpdG9yKV4yIC8gbjEuY29tcGV0aXRvcikgKQ0KYGBgDQoNCkNhbGN1bGF0aW5nICR6X3tjfSQNCmBgYHtyfQ0KemMxID0gcW5vcm0oKDEgKyAwLjk4KSAvIDIpDQpgYGANCg0KVG8gY2FsY3VsYXRlIFx0ZXh0YmZ7TWFyZ2luIG9mIEVycm9yfSAoJEUkKToNClxbDQpFID0gel97Y30gXHNpZ21hX3tcYmFye3h9X3sxfS1cYmFye3h9X3syfX0NClxdDQpgYGB7cn0NCm1vZTEgPC0gejEgKiBzaWdtYTENCmBgYA0KDQpUbyBjYWxjdWxhdGUgXHRleHRiZntDSSBMaW1pdHN9Og0KXFsNClxiZWdpbnthbGlnbn0NClx0ZXh0cm17Q0l9X3tcdGV4dHJte2xvd2VyfX0gJj0gXGxlZnQoXGJhcnt4fV97MX0gLSBcYmFye3h9X3syfVxyaWdodCkgLSBFXFwNClx0ZXh0cm17Q0l9X3tcdGV4dHJte3VwcGVyfX0gJj0gXGxlZnQoXGJhcnt4fV97MX0gLSBcYmFye3h9X3syfVxyaWdodCkgKyBFDQpcZW5ke2FsaWdufQ0KXF0NCmBgYHtyfQ0KbWVhbjEgPC0gbWVhbjEub3VycyAtIG1lYW4xLmNvbXBldGl0b3INCmNvbmZpZGVuY2UxLnVwcGVyIDwtIG1lYW4xIC0gbW9lMQ0KY29uZmlkZW5jZTEubG93ZXIgPC0gbWVhbjEgKyBtb2UxDQpgYGANCg0KIyMgVHdvIHZhcmlhYmxlIGh5cG90aGVzaXMgdGVzdGluZyB3aXRoIGtub3duICRcc2lnbWEkDQpTdXBwb3NlIHRoYXQgb3VyIGNvbXBhbnnigJlzIG92ZXJhbGwgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIHNhbGVzIGlzIFwkMTcwMCBhbmQgdGhhdCBvZiB0aGUgY29tcGV0aXRpb24gaXMgXCQyNzAwLiBQZXJmb3JtIGFuIGFwcHJvcHJpYXRlIHR3byBzYW1wbGUgaHlwb3RoZXNpcyB0ZXN0aW5nIGF0IDAuMDUgbGV2ZWwgb2Ygc2lnbmlmaWNhbmNlIG1hbnVhbGx5IHRvIHRlc3Qgd2hldGhlciBvdXIgY29tcGFueeKAmXMgYXZlcmFnZSBzYWxlcyBpbiBtb3JlIHRoYW4gdGhhdCBvZiB0aGUgY29tcGV0aXRpb24uDQoNCiMjIyBBbnN3ZXINClRoZSBzdGFuZGFyZCBkZXZpYXRpb25zIGFyZSBzdGlsbCAkXHNpZ21hX3tcdGV4dHJte291cnN9fSA9IFwkMTcwMCQgYW5kDQokXHNpZ21hX3tcdGV4dHJte2NvbXBldGl0b3J9fSA9IFwkMjcwMCQsICANCmFuZCAkbjEkIFwmICRuMiQgYXJlICRcZ2VxIDMwJC4gIA0KVGhlIGZvcm11bGEgZm9yIGNhbGN1bGF0aW5nICRIX3swfSQgYW5kICRIX3thfSQgaXMgZ2l2ZW4gYXM6DQpcWw0KXGJlZ2lue2FsaWdufQ0KSF97MH0gJjogXG11X3tcdGV4dHJte291cnN9fSAtIFxtdV97XHRleHRybXtjb21wZXRpdG9yfX0gPiBcbXVfezB9XFwNCkhfe2F9ICY6IFxtdV97XHRleHRybXtvdXJzfX0gLSBcbXVfe1x0ZXh0cm17Y29tcGV0aXRvcn19IDwgXG11X3swfQ0KXGVuZHthbGlnbn0NClxdDQpOZXh0IHdlIGFyZSByZXF1aXJlZCB0byBjYWxjdWxhdGUgb3VyIHRlc3Qgc3RhdGlzdGljICR6JCwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybXVsYToNClxbDQpcYmVnaW57YWxpZ259DQp6ICY9XGZyYWN7XGxlZnQoXGJhcnt4fV97XHRleHRybXtvdXJzfX0gLSBcYmFye3h9X3tcdGV4dHJte2NvbXBldGl0b3J9fVxyaWdodCkgLSBcbXVfezB9fXtcc2lnbWFfe1xiYXJ7eH1fezF9LVxiYXJ7eH1fezJ9fX1cXA0KJj1cZnJhY3tcbGVmdCg3NjkyLjI4IC0gNzAxMi45OVxyaWdodCkgLSAwfXs1MjYuNTN9DQpcZW5ke2FsaWdufQ0KXF0NCldlIHdpbGwgY2FsY3VsYXRlIHRoaXMgYmVsb3csIGFsb25nIHdpdGggdGhlICRQJCB2YWx1ZSBhbmQgJHpfe1x0ZXh0cm17Y3JpdH19JDoNCmBgYHtyfQ0KejEgPC0gbWVhbjEgLyBzaWdtYTENCnAxIDwtIDEgLSBwbm9ybSh6MSkNCnpjcml0IDwtIHFub3JtKDEgLSAwLjA1KQ0KYGBgDQoNCk5vdyB0aGF0IHdlIGhhdmUgY2FsY3VsYXRlZCAkUCQsICR6JCwgYW5kICR6X3tcdGV4dHJte2NyaXR9fSQsIHdlIGNhbg0KdGVzdCB0byBzZWUgd2hpY2ggaHlwb3RoZXNpcyB0byByZWplY3QuDQpcWw0KXGJlZ2lue2FsaWdufQ0KSF97MH1cdGV4dHJteyBpZiB9JiB6IFxnZXEgel97XHRleHRybXtjcml0fX1cXA0KSF97YX1cdGV4dHJteyBpZiB9JiBQIFxsZXEgXGFscGhhDQpcZW5ke2FsaWdufQ0KXF0NCldlIGNhbiB1c2UgUiB0byBjcmVhdGUgbG9naWNhbCBzdGF0ZW1lbnRzIHRvIGRldGVybWluZSB0aGUgd2hpY2ggdG8gcmVqZWN0Og0KYGBge3J9DQppZih6MSA+PSB6Y3JpdCAmJiBwMSA8PSAwLjA1KXsNCiAgcHJpbnQoIlJlamVjdCBOdWxsIEh5cG90aGVzaXMiKQ0KfSBlbHNlIHsNCiAgcHJpbnQoIlJlamVjdCBBbHRlcm5hdGUgSHlwb3RoZXNpcyIpDQp9DQpgYGANClRoaXMgdGVsbHMgdXMgdGhhdCB3ZSBzaG91bGQgcmVqZWN0ICRIX3thfSQuDQoNCiMjIFR3byB2YXJpYWJsZSBoeXBvdGhlc2lzIHRlc3Rpbmcgd2l0aCB1bmtub3duICRcc2lnbWEkDQpTdXBwb3NlIHRoYXQgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBvZiBvdXIgc2FsZXMgYW5kIHRoYXQgb2YgdGhlIGNvbXBldGl0aW9uIGFyZQ0KdW5rbm93OyBob3dldmVyLCB0aGV5IGFyZSBrbm93biBub3QgdG8gYmUgZXF1YWwuIFBlcmZvcm0gYW4gYXBwcm9wcmlhdGUgdHdvDQpzYW1wbGUgaHlwb3RoZXNlcyB0ZXN0aW5nIG1hbnVhbGx5IGF0IDAuMDUgbGV2ZWwgb2Ygc2lnbmlmaWNhbmNlIHRvIHRlc3Qgd2hldGhlcg0Kb3VyIGNvbXBhbnnigJlzIGF2ZXJhZ2Ugc2FsZXMgaW4gbW9yZSB0aGFuIHRoYXQgb2YgdGhlIGNvbXBldGl0aW9uLg0KDQojIyMgQW5zd2Vy