CPI Homework - Solution
Q1) Lines

Q2) Labels

Q3) Scales

LS0tDQp0aXRsZTogIkhXNyBTdWJtaXNzaW9uIC0gTm9haCBTdGFjeSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMgQ1BJIEhvbWV3b3JrIC0gU29sdXRpb24NCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCg0KDQojIExvYWQgZGF0YSBmcm9tIGNwaV9kYXRhMS5jc3YuDQojIFVzZSBjb2xfbmFtZXMgdG8gYWRkIHNlcmllc2lkLCB5ZWFyLCBtb250aF9hc190ZXh0LCBhbmQgcHJpY2UuDQp0X2NwaV9yYXcgPC0gcmVhZF9jc3YoImNwaV9kYXRhMS5jc3YiLA0KICAgICAgICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNlcmllc2lkIiwgInllYXIiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vbnRoX2FzX3RleHQiLCAicHJpY2UiKSkNCg0KIyBMb2FkIGRhdGEgZnJvbSBjcGlfb3ZlcnZpZXdfYW5kX2NvZGVzLmNzdg0KIyBVc2UgdGhlIGNvbW1lbnQgb3B0aW9uIHRvIHNraXAgYWxsIGxpbmVzIHN0YXJ0aW5nIHdpdGggIw0KIyBBTHNvIHRha2UgYSBtaW51dGUgdG8gbWFrZSBhbGwgb2YgdGhlIGZpZWxkIG5hbWVzIGNsZWFuZXIsIHVzaW5nDQojIHNlcmllc2lkLCB0aXRsZSwgZGVzY3JpcHRpb24NCnRfY29kZXNfcmF3IDwtIHJlYWRfY3N2KCJjcGlfb3ZlcnZpZXdfYW5kX2NvZGVzLmNzdiIsDQogICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gIiMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gYygic2VyaWVzaWQiLCAidGl0bGUiLCAiZGVzY3JpcHRpb24iKSkNCg0KDQojIEZpbmQgdGhlIHN0YXJ0aW5nIChiYXNlKSBwcmljZSBmb3IgZWFjaCBvZiBvdXIgaXRlbXMuDQp0X2NwaV9maXJzdCA8LSBmaWx0ZXIodF9jcGlfcmF3LCB5ZWFyID09IDIwMTIsIG1vbnRoX2FzX3RleHQgPT0gIkphbiIpICU+JQ0KICByZW5hbWUob3JpZ2luYWxfcHJpY2UgPSBwcmljZSkgJT4lDQogIHNlbGVjdChzZXJpZXNpZCwgb3JpZ2luYWxfcHJpY2UpDQoNCiMgSm9pbiB0b2dldGhlciB0aGUgZGF0YXNldHMgDQp0X2NwaSA8LSB0X2NwaV9yYXcgJT4lIA0KICBsZWZ0X2pvaW4odF9jb2Rlc19yYXcsIGJ5ID0gYygic2VyaWVzaWQiKSkgJT4lIA0KICBsZWZ0X2pvaW4odF9jcGlfZmlyc3QsIGJ5ID0gInNlcmllc2lkIikgJT4lDQogIG11dGF0ZShwcmljZV9hc19wZXJjZW50ID0gcHJpY2UgLyBvcmlnaW5hbF9wcmljZSkgJT4lIA0KICBtdXRhdGUoZGF0ZV9hc190ZXh0ID0gcGFzdGUobW9udGhfYXNfdGV4dCwgIjEsIiwgeWVhcikpICU+JSANCiAgbXV0YXRlKGQgPSBtZHkoZGF0ZV9hc190ZXh0KSkgJT4lIA0KICBzZWxlY3QodGl0bGUsIHByaWNlLCBwcmljZV9hc19wZXJjZW50LCBkKQ0KDQpgYGANCg0KDQojIFExKSBMaW5lcw0KDQoNCmBgYHtyIGVjaG89RkFMU0V9DQpnZ3Bsb3QoZGF0YSA9IHRfY3BpKSArDQogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gZCwgeSA9IHByaWNlX2FzX3BlcmNlbnQsIGNvbG9yID0gdGl0bGUpKSArDQogIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IHltZCgnMjAxMi0xLTEnKSkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAxLjAwKSArDQogIGdlb21fcmVjdCh4bWluID0geW1kKCcyMDIyLTAxLTAxJyksIA0KICAgICAgICAgICAgeG1heCA9IHltZCgnMjAyMi0xMi0zMScpLA0KICAgICAgICAgICAgeW1pbiA9IDEuMjUsIHltYXggPSBJbmYsDQogICAgICAgICAgICBhbHBoYSA9IDAuMDAzLA0KICAgICAgICAgICAgZmlsbCA9ICdyZWQnKSsNCiAgbGFicyh0aXRsZSA9ICJQcmljZSBhcyBQZXJjZW50IE92ZXIgVGltZSIpICsNCiAgeGxhYigiRGF0ZSIpICsgDQogIHlsYWIoIlByaWNlIGFzIFBlcmNlbnQiKSArDQogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KHNjYWxlID0gMTAwKSkNCg0KcGxvdDEgPC0gZ2dwbG90KGRhdGEgPSB0X2NwaSkgKw0KICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IGQsIHkgPSBwcmljZV9hc19wZXJjZW50LCBjb2xvciA9IHRpdGxlKSkgKw0KICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSB5bWQoJzIwMTItMS0xJykpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMS4wMCkgKw0KICBnZW9tX3JlY3QoeG1pbiA9IHltZCgnMjAyMi0wMS0wMScpLCANCiAgICAgICAgICAgIHhtYXggPSB5bWQoJzIwMjItMTItMzEnKSwNCiAgICAgICAgICAgIHltaW4gPSAxLjI1LCB5bWF4ID0gSW5mLA0KICAgICAgICAgICAgYWxwaGEgPSAwLjAwMywNCiAgICAgICAgICAgIGZpbGwgPSAncmVkJykrDQogIGxhYnModGl0bGUgPSAiUHJpY2UgYXMgUGVyY2VudCBPdmVyIFRpbWUiKSArDQogIHhsYWIoIkRhdGUiKSArIA0KICB5bGFiKCJQcmljZSBhcyBQZXJjZW50IikgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50X2Zvcm1hdChzY2FsZSA9IDEwMCkpDQoNCmBgYA0KDQoNCg0KDQojIFEyKSBMYWJlbHMNCg0KDQpgYGB7ciBlY2hvPUZBTFNFLCB3YXJuaW5nID0gRkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQpsaWJyYXJ5KGdncmVwZWwpDQoNCnRfMjAyMiA8LSBmaWx0ZXIodF9jcGksIHllYXIoZCkgPT0gMjAyMiwgbW9udGgoZCkgPT0gMSkNCg0KZ2dwbG90KGRhdGEgPSB0XzIwMjIpICsNCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHggPSBkLCB5ID0gcHJpY2VfYXNfcGVyY2VudCwgY29sb3IgPSB0aXRsZSkpICsNCiAgZ2VvbV9sYWJlbF9yZXBlbChtYXBwaW5nID0gYWVzKHggPSBkLCB5ID0gcHJpY2VfYXNfcGVyY2VudCwgbGFiZWwgPSB0aXRsZSkpICsNCiAgbGFicyh0aXRsZSA9ICJQcmljZSUgaW4gSmFudWFyeSAyMDIyIikgKw0KICB4bGFiKCJEYXRlIikgKw0KICB5bGFiKCJQcmljZSUiKSArDQogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KHNjYWxlID0gMTAwKSkgKw0KICB0aGVtZV9idygpDQoNCnRfMjAyMiA8LSBmaWx0ZXIodF9jcGksIHllYXIoZCkgPT0gMjAyMiwgbW9udGgoZCkgPT0gMSkNCnBsb3QyIDwtIGdncGxvdChkYXRhID0gdF8yMDIyKSArDQogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gZCwgeSA9IHByaWNlX2FzX3BlcmNlbnQsIGNvbG9yID0gdGl0bGUpKSArDQogIGdlb21fbGFiZWxfcmVwZWwobWFwcGluZyA9IGFlcyh4ID0gZCwgeSA9IHByaWNlX2FzX3BlcmNlbnQsIGxhYmVsID0gdGl0bGUpKSArDQogIGxhYnModGl0bGUgPSAiUHJpY2UlIGluIEphbnVhcnkgMjAyMiIpICsNCiAgeGxhYigiRGF0ZSIpICsNCiAgeWxhYigiUHJpY2UlIikgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50X2Zvcm1hdChzY2FsZSA9IDEwMCkpICsNCiAgc2NhbGVfeF9kYXRlKGxpbWl0cyA9IGMoeW1kKCcyMDIyLTAxLTAxJyksIHltZCgnMjAyMi0wMS0wMScpKSkrDQogIHRoZW1lX2J3KCkNCg0KDQpgYGANCg0KDQoNCg0KIyBRMykgU2NhbGVzDQoNCmBgYHtyIGVjaG89RkFMU0V9DQoNCnRfMjAyMiA8LSBmaWx0ZXIodF9jcGksIHllYXIoZCkgPT0gMjAyMikNCg0KZ2dwbG90KGRhdGEgPSB0XzIwMjIpICsNCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IGQsIHkgPSBwcmljZV9hc19wZXJjZW50LCBjb2xvciA9IHRpdGxlKSkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpsYWJlbF9wZXJjZW50KDEwKSkgKw0KICBzY2FsZV94X2RhdGUobGFiZWxzID0gc2NhbGVzOjpkYXRlX2Zvcm1hdCgiJWIiKSxkYXRlX2JyZWFrcyA9ICIyIG1vbnRocyIpICsNCiAgbGFicyh0aXRsZSA9ICJQcmljZSUgaW4gMjAyMiIpICsNCiAgeGxhYigiRGF0ZSIpICsNCiAgeWxhYigiUHJpY2UlIikNCg0KcGxvdDMgPC0gZ2dwbG90KGRhdGEgPSB0XzIwMjIpICsNCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IGQsIHkgPSBwcmljZV9hc19wZXJjZW50LCBjb2xvciA9IHRpdGxlKSkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpsYWJlbF9wZXJjZW50KDEwKSkgKw0KICBzY2FsZV94X2RhdGUobGFiZWxzID0gc2NhbGVzOjpkYXRlX2Zvcm1hdCgiJWIiKSxkYXRlX2JyZWFrcyA9ICIyIG1vbnRocyIpICsNCiAgbGFicyh0aXRsZSA9ICJQcmljZSUgaW4gMjAyMiIpICsNCiAgeGxhYigiRGF0ZSIpICsNCiAgeWxhYigiUHJpY2UlIikNCiAgDQoNCiAgDQpgYGANCg0KIyBRNCkgQ29tYmluZSENClB1Ymxpc2hlZCBVUkw6ICAgaHR0cDovL3JwdWJzLi4uLg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgaW5jbHVkZT1GQUxTRX0NCmxpYnJhcnkoZ3JpZEV4dHJhKQ0KbGlicmFyeShncmlkKQ0KcGxvdDEgPC0gcGxvdDEgKyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpDQpwbG90MyA8LSBwbG90MyArIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCnZlcnQgPC0gYXJyYW5nZUdyb2IocGxvdDEsIHBsb3QzLCBuY29sID0gMSkNCmBgYA0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KZ3JpZC5hcnJhbmdlKHBsb3QyLCB2ZXJ0LCBuY29sPTIsIHdpZHRocz1jKDEuMywyKSkNCmBgYA==