Analytics of Amazon Prime Video

Case Study (Web Scraping)

1 Dataset

library(DT)
library(readr)

# Baca data
data <- read_csv("dataset.csv")

# Tampilkan tabel interaktif
datatable(data, 
          options = list(pageLength = 5, 
                         autoWidth = TRUE,
                         searching = TRUE,
                         scrollX = TRUE),
          caption = 'Tabel Interaktif Data dari dataset.csv')

2 3 Tren / Poin Penting dari Data

library(tidyverse)
library(lubridate)

# 1. Tren jumlah konten berdasarkan 'type' (Movie vs TV Show)
type_trend <- data %>%
  count(type) %>%
  arrange(desc(n))

print(type_trend)
## # A tibble: 2 × 2
##   type        n
##   <chr>   <int>
## 1 Movie    7814
## 2 TV Show  1854
# 2. Jumlah konten berdasarkan tahun rilis (release_year)
year_trend <- data %>%
  count(release_year) %>%
  arrange(desc(n))

print(year_trend)
## # A tibble: 100 × 2
##    release_year     n
##           <dbl> <int>
##  1         2021  1442
##  2         2020   962
##  3         2019   929
##  4         2018   623
##  5         2017   562
##  6         2016   521
##  7         2014   391
##  8         2015   378
##  9         2013   289
## 10         2011   252
## # ℹ 90 more rows
# 3. Top 5 negara dengan jumlah konten terbanyak (country)
country_trend <- data %>%
  separate_rows(country, sep = ", ") %>% 
  count(country, sort = TRUE) %>%
  top_n(5, n)

print(country_trend)
## # A tibble: 5 × 2
##   country            n
##   <chr>          <int>
## 1 <NA>            8996
## 2 United States    334
## 3 India            246
## 4 United Kingdom    67
## 5 Canada            35

2.1 Interpretasi

2.1.1 1. Distribusi berdasarkan type (Movie vs TV Show):

  • Movie: Terdapat 7.814 konten berupa film.
  • TV Show: Terdapat 1.854 konten berupa acara TV.

Jumlah film (Movie) jauh lebih banyak dibandingkan dengan acara TV (TV Show). Ini menunjukkan bahwa platform (atau dataset) ini lebih banyak menyediakan film daripada serial atau acara TV.

2.1.2 2. Distribusi berdasarkan release_year (tahun rilis):

  • Tahun dengan jumlah konten terbanyak adalah 2021 dengan 1.442 judul.
  • Tahun 2020 dan 2019 juga menunjukkan jumlah yang cukup besar, masing-masing 962 dan 929 judul.
  • Setelah itu, jumlah konten menurun secara bertahap ke tahun-tahun sebelumnya.

Tren menunjukkan peningkatan jumlah konten yang dirilis dalam beberapa tahun terakhir, khususnya di tahun 2020 dan 2021. Hal ini bisa mengindikasikan pertumbuhan produksi konten yang cukup pesat di platform tersebut.

2.1.3 3. Distribusi berdasarkan country (negara produksi):

  • Banyak data country yang tidak terisi (NA) sebanyak 8.996, ini menunjukkan data negara produksi banyak yang kosong atau tidak tersedia.
  • Dari data yang terisi, United States menjadi negara dengan jumlah konten terbanyak yaitu 334 judul.
  • Diikuti oleh India (246), United Kingdom (67), dan Canada (35).

Meski banyak data yang kosong, terlihat bahwa sebagian besar konten berasal dari Amerika Serikat, India, dan Inggris. Ini mengindikasikan dominasi konten dari negara-negara tersebut di platform. Namun, banyak data yang tidak lengkap perlu diperhatikan untuk analisis lebih akurat.

3 Membersihkan dan Menyiapkan Data

library(DT)

data_clean <- data %>%
  distinct() %>%                              # Hapus duplikat
  drop_na(show_id, type, title, release_year) %>%  # Hapus baris dengan NA di kolom penting
  mutate(
    date_added = mdy(date_added),             # Ubah date_added ke format tanggal
    type = as.factor(type),                    # Ubah ke faktor jika perlu
    country = if_else(is.na(country), "Unknown", country),  # Isi NA country dengan "Unknown"
    duration_num = as.numeric(str_extract(duration, "\\d+")),  # Ekstrak angka dari duration (misal "90 min" jadi 90)
    release_year = as.integer(release_year)
  ) %>%
  filter(!is.na(duration_num))                 # Hapus baris yang gagal ekstrak duration  

# Tampilkan tabel interaktif
datatable(data_clean, 
          options = list(pageLength = 5,  # jumlah baris per halaman
                         autoWidth = TRUE),
          rownames = FALSE)

4 Visualisasi Data

library(tidyverse)
library(plotly) 

# 1. Visualisasi jumlah konten berdasarkan 'type'
type_count <- data_clean %>%
  count(type)

plot_type <- plot_ly(type_count, labels = ~type, values = ~n, type = 'pie') %>%
  layout(title = 'Distribusi Tipe Konten',
         legend = list(x = 0.1, y = 0.9))
plot_type
# 2. Visualisasi jumlah konten berdasarkan 'release_year' (top 10 tahun terbesar)
top_years <- data_clean %>%
  count(release_year) %>%
  arrange(desc(n)) %>%
  slice_max(n, n = 10) %>%
  mutate(release_year = as.factor(release_year))

plot_year <- plot_ly(top_years, x = ~release_year, y = ~n, type = 'bar',
                     marker = list(color = 'royalblue')) %>%
  layout(title = "Top 10 Tahun Rilis Terbanyak",
         xaxis = list(title = "Tahun Rilis"),
         yaxis = list(title = "Jumlah Konten"))
plot_year
# 3. Visualisasi negara dengan jumlah konten terbanyak (top 10)
top_countries <- data_clean %>%
  count(country) %>%
  arrange(desc(n)) %>%
  slice_max(n, n = 10) %>%
  mutate(country = factor(country, levels = rev(unique(country))))

plot_country <- plot_ly(top_countries, x = ~n, y = ~country, type = 'bar', orientation = 'h',
                        marker = list(color = 'darkgreen')) %>%
  layout(title = "Top 10 Negara Dengan Konten Terbanyak",
         xaxis = list(title = "Jumlah Konten"),
         yaxis = list(title = "Negara"))
plot_country

4.1 Interpretasi

4.1.1 1. Distribusi Tipe Konten (Pie Chart)

  • Insight: Sebagian besar konten yang tersedia adalah Movie (80.8%), sementara TV Show hanya 19.2%.
  • Makna: Ini menunjukkan bahwa platform lebih fokus menyediakan konten dalam format film dibanding serial TV.
  • Manfaat untuk stakeholder: Jika ingin memperluas pasar serial, maka perlu meningkatkan jumlah TV Show agar lebih seimbang.

4.1.2 2. Top 10 Tahun Rilis Terbanyak (Bar Chart)

  • Insight: Terdapat tren peningkatan jumlah konten setiap tahun, terutama dari 2016 hingga puncaknya di 2021.
  • Makna: Bisa jadi disebabkan oleh peningkatan produksi digital atau strategi platform untuk menambah konten baru secara agresif.
  • Manfaat untuk stakeholder: Penting untuk mempertahankan tren positif ini dengan terus merilis konten baru secara konsisten setiap tahun.

4.1.3 3. Top 10 Negara dengan Konten Terbanyak (Horizontal Bar Chart)

  • Insight: Sebagian besar data negara bertuliskan Unknown (tidak diketahui), namun dari data yang tersedia, United States, India, dan United Kingdom mendominasi.
  • Makna: Ketidaktahuan asal negara bisa jadi disebabkan oleh data yang tidak lengkap. Sementara dominasi negara tertentu bisa menunjukkan preferensi produksi.
  • Manfaat untuk stakeholder: Perlu perbaikan dalam pengisian metadata negara asal. Selain itu, bisa jadi peluang untuk meningkatkan konten dari negara lain agar lebih beragam.
LS0tDQp0aXRsZTogIkFuYWx5dGljcyBvZiBBbWF6b24gUHJpbWUgVmlkZW8iDQpzdWJ0aXRsZTogIkNhc2UgU3R1ZHkgKFdlYiBTY3JhcGluZykiDQphdXRob3I6IA0KICAiSXNuYWluaSBOdXIgSGFzYW5haCAoaXNuYWluaW5oYXNhbmFoMzlAZ21haWwuY29tKSINCmRhdGU6ICAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJvYm9ib29rOiAgICMgaHR0cHM6Ly9naXRodWIuY29tL2p1YmEvcm1kZm9ybWF0cw0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQogICAgdGh1bWJuYWlsczogdHJ1ZQ0KICAgIGxpZ2h0Ym94OiB0cnVlDQogICAgZ2FsbGVyeTogdHJ1ZQ0KICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICBkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgY3NzOiAic3R5bGUgKDEpLmNzcyINCiAgICBwYXJhbXM6DQogIGVjaG86IGZhbHNlDQplZGl0b3Jfb3B0aW9uczogDQogIG1hcmtkb3duOiANCiAgICB3cmFwOiA3Mg0KLS0tDQoNCiMgRGF0YXNldA0KDQpgYGB7ciwgZWNobz1UUlVFLHdhcm5pbmc9RkFMU0UsbWVzc2FnZT1GQUxTRX0NCmxpYnJhcnkoRFQpDQpsaWJyYXJ5KHJlYWRyKQ0KDQojIEJhY2EgZGF0YQ0KZGF0YSA8LSByZWFkX2NzdigiZGF0YXNldC5jc3YiKQ0KDQojIFRhbXBpbGthbiB0YWJlbCBpbnRlcmFrdGlmDQpkYXRhdGFibGUoZGF0YSwgDQogICAgICAgICAgb3B0aW9ucyA9IGxpc3QocGFnZUxlbmd0aCA9IDUsIA0KICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9XaWR0aCA9IFRSVUUsDQogICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoaW5nID0gVFJVRSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxYID0gVFJVRSksDQogICAgICAgICAgY2FwdGlvbiA9ICdUYWJlbCBJbnRlcmFrdGlmIERhdGEgZGFyaSBkYXRhc2V0LmNzdicpDQpgYGANCg0KIyAzIFRyZW4gLyBQb2luIFBlbnRpbmcgZGFyaSBEYXRhDQoNCmBgYHtyLCBlY2hvPVRSVUUsd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCg0KIyAxLiBUcmVuIGp1bWxhaCBrb250ZW4gYmVyZGFzYXJrYW4gJ3R5cGUnIChNb3ZpZSB2cyBUViBTaG93KQ0KdHlwZV90cmVuZCA8LSBkYXRhICU+JQ0KICBjb3VudCh0eXBlKSAlPiUNCiAgYXJyYW5nZShkZXNjKG4pKQ0KDQpwcmludCh0eXBlX3RyZW5kKQ0KDQojIDIuIEp1bWxhaCBrb250ZW4gYmVyZGFzYXJrYW4gdGFodW4gcmlsaXMgKHJlbGVhc2VfeWVhcikNCnllYXJfdHJlbmQgPC0gZGF0YSAlPiUNCiAgY291bnQocmVsZWFzZV95ZWFyKSAlPiUNCiAgYXJyYW5nZShkZXNjKG4pKQ0KDQpwcmludCh5ZWFyX3RyZW5kKQ0KDQojIDMuIFRvcCA1IG5lZ2FyYSBkZW5nYW4ganVtbGFoIGtvbnRlbiB0ZXJiYW55YWsgKGNvdW50cnkpDQpjb3VudHJ5X3RyZW5kIDwtIGRhdGEgJT4lDQogIHNlcGFyYXRlX3Jvd3MoY291bnRyeSwgc2VwID0gIiwgIikgJT4lIA0KICBjb3VudChjb3VudHJ5LCBzb3J0ID0gVFJVRSkgJT4lDQogIHRvcF9uKDUsIG4pDQoNCnByaW50KGNvdW50cnlfdHJlbmQpDQpgYGANCg0KIyMgSW50ZXJwcmV0YXNpDQoNCg0KIyMjIDEuICoqRGlzdHJpYnVzaSBiZXJkYXNhcmthbiB0eXBlIChNb3ZpZSB2cyBUViBTaG93KToqKg0KDQoqICoqTW92aWU6KiogVGVyZGFwYXQgNy44MTQga29udGVuIGJlcnVwYSBmaWxtLg0KKiAqKlRWIFNob3c6KiogVGVyZGFwYXQgMS44NTQga29udGVuIGJlcnVwYSBhY2FyYSBUVi4NCg0KSnVtbGFoIGZpbG0gKE1vdmllKSBqYXVoIGxlYmloIGJhbnlhayBkaWJhbmRpbmdrYW4gZGVuZ2FuIGFjYXJhIFRWIChUViBTaG93KS4gSW5pIG1lbnVuanVra2FuIGJhaHdhIHBsYXRmb3JtIChhdGF1IGRhdGFzZXQpIGluaSBsZWJpaCBiYW55YWsgbWVueWVkaWFrYW4gZmlsbSBkYXJpcGFkYSBzZXJpYWwgYXRhdSBhY2FyYSBUVi4NCg0KIyMjIDIuICoqRGlzdHJpYnVzaSBiZXJkYXNhcmthbiByZWxlYXNlX3llYXIgKHRhaHVuIHJpbGlzKToqKg0KDQoqIFRhaHVuIGRlbmdhbiBqdW1sYWgga29udGVuIHRlcmJhbnlhayBhZGFsYWggMjAyMSBkZW5nYW4gMS40NDIganVkdWwuDQoqIFRhaHVuIDIwMjAgZGFuIDIwMTkganVnYSBtZW51bmp1a2thbiBqdW1sYWggeWFuZyBjdWt1cCBiZXNhciwgbWFzaW5nLW1hc2luZyA5NjIgZGFuIDkyOSBqdWR1bC4NCiogU2V0ZWxhaCBpdHUsIGp1bWxhaCBrb250ZW4gbWVudXJ1biBzZWNhcmEgYmVydGFoYXAga2UgdGFodW4tdGFodW4gc2ViZWx1bW55YS4NCg0KVHJlbiBtZW51bmp1a2thbiBwZW5pbmdrYXRhbiBqdW1sYWgga29udGVuIHlhbmcgZGlyaWxpcyBkYWxhbSBiZWJlcmFwYSB0YWh1biB0ZXJha2hpciwga2h1c3VzbnlhIGRpIHRhaHVuIDIwMjAgZGFuIDIwMjEuIEhhbCBpbmkgYmlzYSBtZW5naW5kaWthc2lrYW4gcGVydHVtYnVoYW4gcHJvZHVrc2kga29udGVuIHlhbmcgY3VrdXAgcGVzYXQgZGkgcGxhdGZvcm0gdGVyc2VidXQuDQoNCiMjIyAzLiAqKkRpc3RyaWJ1c2kgYmVyZGFzYXJrYW4gY291bnRyeSAobmVnYXJhIHByb2R1a3NpKToqKg0KDQoqIEJhbnlhayBkYXRhIGNvdW50cnkgeWFuZyB0aWRhayB0ZXJpc2kgKE5BKSBzZWJhbnlhayA4Ljk5NiwgaW5pIG1lbnVuanVra2FuIGRhdGEgbmVnYXJhIHByb2R1a3NpIGJhbnlhayB5YW5nIGtvc29uZyBhdGF1IHRpZGFrIHRlcnNlZGlhLg0KKiBEYXJpIGRhdGEgeWFuZyB0ZXJpc2ksIFVuaXRlZCBTdGF0ZXMgbWVuamFkaSBuZWdhcmEgZGVuZ2FuIGp1bWxhaCBrb250ZW4gdGVyYmFueWFrIHlhaXR1IDMzNCBqdWR1bC4NCiogRGlpa3V0aSBvbGVoIEluZGlhICgyNDYpLCBVbml0ZWQgS2luZ2RvbSAoNjcpLCBkYW4gQ2FuYWRhICgzNSkuDQoNCk1lc2tpIGJhbnlhayBkYXRhIHlhbmcga29zb25nLCB0ZXJsaWhhdCBiYWh3YSBzZWJhZ2lhbiBiZXNhciBrb250ZW4gYmVyYXNhbCBkYXJpIEFtZXJpa2EgU2VyaWthdCwgSW5kaWEsIGRhbiBJbmdncmlzLiBJbmkgbWVuZ2luZGlrYXNpa2FuIGRvbWluYXNpIGtvbnRlbiBkYXJpIG5lZ2FyYS1uZWdhcmEgdGVyc2VidXQgZGkgcGxhdGZvcm0uIE5hbXVuLCBiYW55YWsgZGF0YSB5YW5nIHRpZGFrIGxlbmdrYXAgcGVybHUgZGlwZXJoYXRpa2FuIHVudHVrIGFuYWxpc2lzIGxlYmloIGFrdXJhdC4NCg0KDQojIE1lbWJlcnNpaGthbiBkYW4gTWVueWlhcGthbiBEYXRhDQoNCmBgYHtyLCBlY2hvPVRSVUUsd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFfQ0KbGlicmFyeShEVCkNCg0KZGF0YV9jbGVhbiA8LSBkYXRhICU+JQ0KICBkaXN0aW5jdCgpICU+JSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSGFwdXMgZHVwbGlrYXQNCiAgZHJvcF9uYShzaG93X2lkLCB0eXBlLCB0aXRsZSwgcmVsZWFzZV95ZWFyKSAlPiUgICMgSGFwdXMgYmFyaXMgZGVuZ2FuIE5BIGRpIGtvbG9tIHBlbnRpbmcNCiAgbXV0YXRlKA0KICAgIGRhdGVfYWRkZWQgPSBtZHkoZGF0ZV9hZGRlZCksICAgICAgICAgICAgICMgVWJhaCBkYXRlX2FkZGVkIGtlIGZvcm1hdCB0YW5nZ2FsDQogICAgdHlwZSA9IGFzLmZhY3Rvcih0eXBlKSwgICAgICAgICAgICAgICAgICAgICMgVWJhaCBrZSBmYWt0b3IgamlrYSBwZXJsdQ0KICAgIGNvdW50cnkgPSBpZl9lbHNlKGlzLm5hKGNvdW50cnkpLCAiVW5rbm93biIsIGNvdW50cnkpLCAgIyBJc2kgTkEgY291bnRyeSBkZW5nYW4gIlVua25vd24iDQogICAgZHVyYXRpb25fbnVtID0gYXMubnVtZXJpYyhzdHJfZXh0cmFjdChkdXJhdGlvbiwgIlxcZCsiKSksICAjIEVrc3RyYWsgYW5na2EgZGFyaSBkdXJhdGlvbiAobWlzYWwgIjkwIG1pbiIgamFkaSA5MCkNCiAgICByZWxlYXNlX3llYXIgPSBhcy5pbnRlZ2VyKHJlbGVhc2VfeWVhcikNCiAgKSAlPiUNCiAgZmlsdGVyKCFpcy5uYShkdXJhdGlvbl9udW0pKSAgICAgICAgICAgICAgICAgIyBIYXB1cyBiYXJpcyB5YW5nIGdhZ2FsIGVrc3RyYWsgZHVyYXRpb24gIA0KDQojIFRhbXBpbGthbiB0YWJlbCBpbnRlcmFrdGlmDQpkYXRhdGFibGUoZGF0YV9jbGVhbiwgDQogICAgICAgICAgb3B0aW9ucyA9IGxpc3QocGFnZUxlbmd0aCA9IDUsICAjIGp1bWxhaCBiYXJpcyBwZXIgaGFsYW1hbg0KICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9XaWR0aCA9IFRSVUUpLA0KICAgICAgICAgIHJvd25hbWVzID0gRkFMU0UpDQpgYGANCg0KIyBWaXN1YWxpc2FzaSBEYXRhDQoNCmBgYHtyLCBlY2hvPVRSVUUsd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KHBsb3RseSkgDQoNCiMgMS4gVmlzdWFsaXNhc2kganVtbGFoIGtvbnRlbiBiZXJkYXNhcmthbiAndHlwZScNCnR5cGVfY291bnQgPC0gZGF0YV9jbGVhbiAlPiUNCiAgY291bnQodHlwZSkNCg0KcGxvdF90eXBlIDwtIHBsb3RfbHkodHlwZV9jb3VudCwgbGFiZWxzID0gfnR5cGUsIHZhbHVlcyA9IH5uLCB0eXBlID0gJ3BpZScpICU+JQ0KICBsYXlvdXQodGl0bGUgPSAnRGlzdHJpYnVzaSBUaXBlIEtvbnRlbicsDQogICAgICAgICBsZWdlbmQgPSBsaXN0KHggPSAwLjEsIHkgPSAwLjkpKQ0KcGxvdF90eXBlDQoNCiMgMi4gVmlzdWFsaXNhc2kganVtbGFoIGtvbnRlbiBiZXJkYXNhcmthbiAncmVsZWFzZV95ZWFyJyAodG9wIDEwIHRhaHVuIHRlcmJlc2FyKQ0KdG9wX3llYXJzIDwtIGRhdGFfY2xlYW4gJT4lDQogIGNvdW50KHJlbGVhc2VfeWVhcikgJT4lDQogIGFycmFuZ2UoZGVzYyhuKSkgJT4lDQogIHNsaWNlX21heChuLCBuID0gMTApICU+JQ0KICBtdXRhdGUocmVsZWFzZV95ZWFyID0gYXMuZmFjdG9yKHJlbGVhc2VfeWVhcikpDQoNCnBsb3RfeWVhciA8LSBwbG90X2x5KHRvcF95ZWFycywgeCA9IH5yZWxlYXNlX3llYXIsIHkgPSB+biwgdHlwZSA9ICdiYXInLA0KICAgICAgICAgICAgICAgICAgICAgbWFya2VyID0gbGlzdChjb2xvciA9ICdyb3lhbGJsdWUnKSkgJT4lDQogIGxheW91dCh0aXRsZSA9ICJUb3AgMTAgVGFodW4gUmlsaXMgVGVyYmFueWFrIiwNCiAgICAgICAgIHhheGlzID0gbGlzdCh0aXRsZSA9ICJUYWh1biBSaWxpcyIpLA0KICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIkp1bWxhaCBLb250ZW4iKSkNCnBsb3RfeWVhcg0KDQojIDMuIFZpc3VhbGlzYXNpIG5lZ2FyYSBkZW5nYW4ganVtbGFoIGtvbnRlbiB0ZXJiYW55YWsgKHRvcCAxMCkNCnRvcF9jb3VudHJpZXMgPC0gZGF0YV9jbGVhbiAlPiUNCiAgY291bnQoY291bnRyeSkgJT4lDQogIGFycmFuZ2UoZGVzYyhuKSkgJT4lDQogIHNsaWNlX21heChuLCBuID0gMTApICU+JQ0KICBtdXRhdGUoY291bnRyeSA9IGZhY3Rvcihjb3VudHJ5LCBsZXZlbHMgPSByZXYodW5pcXVlKGNvdW50cnkpKSkpDQoNCnBsb3RfY291bnRyeSA8LSBwbG90X2x5KHRvcF9jb3VudHJpZXMsIHggPSB+biwgeSA9IH5jb3VudHJ5LCB0eXBlID0gJ2JhcicsIG9yaWVudGF0aW9uID0gJ2gnLA0KICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyID0gbGlzdChjb2xvciA9ICdkYXJrZ3JlZW4nKSkgJT4lDQogIGxheW91dCh0aXRsZSA9ICJUb3AgMTAgTmVnYXJhIERlbmdhbiBLb250ZW4gVGVyYmFueWFrIiwNCiAgICAgICAgIHhheGlzID0gbGlzdCh0aXRsZSA9ICJKdW1sYWggS29udGVuIiksDQogICAgICAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiTmVnYXJhIikpDQpwbG90X2NvdW50cnkNCmBgYA0KDQojIyBJbnRlcnByZXRhc2kNCg0KIyMjICoqMS4gRGlzdHJpYnVzaSBUaXBlIEtvbnRlbiAoUGllIENoYXJ0KSoqDQoNCiogKipJbnNpZ2h0Kio6IFNlYmFnaWFuIGJlc2FyIGtvbnRlbiB5YW5nIHRlcnNlZGlhIGFkYWxhaCBNb3ZpZSAoODAuOCUpLCBzZW1lbnRhcmEgVFYgU2hvdyBoYW55YSAxOS4yJS4NCiogKipNYWtuYSoqOiBJbmkgbWVudW5qdWtrYW4gYmFod2EgcGxhdGZvcm0gbGViaWggZm9rdXMgbWVueWVkaWFrYW4ga29udGVuIGRhbGFtIGZvcm1hdCBmaWxtIGRpYmFuZGluZyBzZXJpYWwgVFYuDQoqICoqTWFuZmFhdCB1bnR1ayBzdGFrZWhvbGRlcioqOiBKaWthIGluZ2luIG1lbXBlcmx1YXMgcGFzYXIgc2VyaWFsLCBtYWthIHBlcmx1IG1lbmluZ2thdGthbiBqdW1sYWggVFYgU2hvdyBhZ2FyIGxlYmloIHNlaW1iYW5nLg0KDQojIyMgKioyLiBUb3AgMTAgVGFodW4gUmlsaXMgVGVyYmFueWFrIChCYXIgQ2hhcnQpKioNCg0KKiAqKkluc2lnaHQqKjogVGVyZGFwYXQgdHJlbiBwZW5pbmdrYXRhbiBqdW1sYWgga29udGVuIHNldGlhcCB0YWh1biwgdGVydXRhbWEgZGFyaSAyMDE2IGhpbmdnYSBwdW5jYWtueWEgZGkgMjAyMS4NCiogKipNYWtuYSoqOiBCaXNhIGphZGkgZGlzZWJhYmthbiBvbGVoIHBlbmluZ2thdGFuIHByb2R1a3NpIGRpZ2l0YWwgYXRhdSBzdHJhdGVnaSBwbGF0Zm9ybSB1bnR1ayBtZW5hbWJhaCBrb250ZW4gYmFydSBzZWNhcmEgYWdyZXNpZi4NCiogKipNYW5mYWF0IHVudHVrIHN0YWtlaG9sZGVyKio6IFBlbnRpbmcgdW50dWsgbWVtcGVydGFoYW5rYW4gdHJlbiBwb3NpdGlmIGluaSBkZW5nYW4gdGVydXMgbWVyaWxpcyBrb250ZW4gYmFydSBzZWNhcmEga29uc2lzdGVuIHNldGlhcCB0YWh1bi4NCg0KIyMjICoqMy4gVG9wIDEwIE5lZ2FyYSBkZW5nYW4gS29udGVuIFRlcmJhbnlhayAoSG9yaXpvbnRhbCBCYXIgQ2hhcnQpKioNCg0KKiAqKkluc2lnaHQqKjogU2ViYWdpYW4gYmVzYXIgZGF0YSBuZWdhcmEgYmVydHVsaXNrYW4gVW5rbm93biAodGlkYWsgZGlrZXRhaHVpKSwgbmFtdW4gZGFyaSBkYXRhIHlhbmcgdGVyc2VkaWEsIFVuaXRlZCBTdGF0ZXMsIEluZGlhLCBkYW4gVW5pdGVkIEtpbmdkb20gbWVuZG9taW5hc2kuDQoqICoqTWFrbmEqKjogS2V0aWRha3RhaHVhbiBhc2FsIG5lZ2FyYSBiaXNhIGphZGkgZGlzZWJhYmthbiBvbGVoIGRhdGEgeWFuZyB0aWRhayBsZW5na2FwLiBTZW1lbnRhcmEgZG9taW5hc2kgbmVnYXJhIHRlcnRlbnR1IGJpc2EgbWVudW5qdWtrYW4gcHJlZmVyZW5zaSBwcm9kdWtzaS4NCiogKipNYW5mYWF0IHVudHVrIHN0YWtlaG9sZGVyKio6IFBlcmx1IHBlcmJhaWthbiBkYWxhbSBwZW5naXNpYW4gbWV0YWRhdGEgbmVnYXJhIGFzYWwuIFNlbGFpbiBpdHUsIGJpc2EgamFkaSBwZWx1YW5nIHVudHVrIG1lbmluZ2thdGthbiBrb250ZW4gZGFyaSBuZWdhcmEgbGFpbiBhZ2FyIGxlYmloIGJlcmFnYW0uDQoNCg==