Email             :
RPubs            : https://rpubs.com/albert23899
Jurusan          : Statistika
Address         : ARA Center, Matana University Tower
                         Jl. CBD Barat Kav, RT.1, Curug Sangereng, Kelapa Dua, Tangerang, Banten 15810.


Berikut merupakan pemodelan survival dengan menggunakan data dari BMT dataset yang memuat data survival 137 pasien yang telah menjalani transplantasi sumsum tulang belakang. Analisis Survival yang akan dilakukan bertujuan untuk mengetahui kemampuan bertahan manusia setelah menjalani transplantasi sumsum tulang belakang. Variabel-variabel yang ada didalam data tersebut adalah 1. T1 merupakan waktu (hari) pengamatan pasien 2. Delta 1 merupakan indikator kematian pasien 1-Meninggal dan 0- Hidup 3. TA ,erupakan waktu menuju acute graft vs host disease 4. delta A merupakan indikator terjadinya acute graft vs host disease

1 Memuat BMT dataset

library(SemiCompRisks)
## Loading required package: MASS
## Loading required package: survival
## Loading required package: Formula
library(MASS)
library(survival)
library(Formula)
library(DT)
data(BMT, package = "SemiCompRisks")
datatable(BMT,
          caption = htmltools::tags$caption(
            style = 'caption-side : bottom; text-align: center;',
            htmltools::em('Table1 1 : the BMT data.')),
          extensions='FixedColumns',
          options = list(scrollX=TRUE, fixedColumns=TRUE))

2 Analisis Survival dengan menggunakan Metode Landmark

2.1 Menentukan Batasan Waktu Survival

Data yang dianalisis dengan menggunakan metode ini adalah pasien yang dapat hidup selama 90 hari setelah transplantasi sumsum tulang belakang dilakukan. Waktu 90 hari menjadi landmark(tolok ukur) karena berdasarkan ilmu pengetahuan reaksi imun acute graft vs host disease baru muncul 90 hari setelah transplantasi sumsum tulang belakang dilakukan. ## Menyeleksi Populasi Menyeleksi data yang sesuai dengan ketentuan tolok ukur penelitian. Data pasien yang tidak mampu bertahan hidup sebelum 90 hari akan diabaikan

library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5     v purrr   0.3.4
## v tibble  3.1.6     v dplyr   1.0.7
## v tidyr   1.1.4     v stringr 1.4.0
## v readr   2.1.0     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
## x dplyr::select() masks MASS::select()
lm_dat<-
  BMT %>%
  filter(T1>=90)

2.2 Menghitung Peluang Survival Berdasarkan Lamanya Waktu Bertahan Hidup Pasien yang Dimulai dari Hari ke-90

lm_dat<-
  lm_dat %>%
  mutate(lm_T1=T1-90)
lm_fit<-survfit(Surv(lm_T1, delta1)~ deltaA, data=lm_dat)
library(survminer)
## Loading required package: ggpubr
## 
## Attaching package: 'survminer'
## The following object is masked _by_ '.GlobalEnv':
## 
##     BMT
## The following object is masked from 'package:survival':
## 
##     myeloma
library(ggplot2)
ggsurvplot(
  fit=lm_fit,
  data=lm_dat,
  xlab="Days from 90-day Landmark",
  risk.table=T,
  risk.table.y.text=T,
  pval=TRUE
)

Dari grafik diatas dapat disimpulkan bahwa fase kritis pasien yang menjalani transplantasi sumsum tulang belakang berada di 500 hari pertama setelah reaksi imun acute graft vs host disease muncul. Hal ini dibuktikan dengan turunnya peluang survival secara drastis hingga hari ke 500. Setelah hari ke 500, kurva peluang survival cenderung stabil yang menandakan bahwa kematian pasien setelah 500 hari muncul reaksi imun terjadi tidak signifikan

3 Cox Regression

Berikut merupakan analisis survival dengan menggunakan regresi Cox, analisa cox dengan menggunakan fungsi coxph pada r untuk menyeleksi data pasien yang tidak sesuai dengan tolok ukut

library(magrittr)
## 
## Attaching package: 'magrittr'
## The following object is masked from 'package:purrr':
## 
##     set_names
## The following object is masked from 'package:tidyr':
## 
##     extract
library(tidyverse)
library(gtsummary)
## 
## Attaching package: 'gtsummary'
## The following object is masked from 'package:MASS':
## 
##     select
library(survival)
coxph(
  Surv(T1,delta1)~deltaA,
  subset=T1>=90,
  data=BMT
)%>%
gtsummary::tbl_regression(exp=TRUE)
Characteristic HR1 95% CI1 p-value
deltaA 1.08 0.57, 2.07 0.8

1 HR = Hazard Ratio, CI = Confidence Interval

4 Time-Dependent Covariant

Selain analisis dengan tolok ukur waktu tertentu terdapat metode analisis survival dengan menggunakan time-dependent cov. Time-Dependent cov dapat dilakukan ketika : 1. Nilai kovariat berubah setiap waktu 2. Tidak terdapat tolok ukur waktu yang jelas 3. Penggunaan tolok ukur yang membawa terlalu banyak pengecualian ## Menyiapkan Data Time-Dependent Cov Analysis Analisis Time-Dependent Cov dengan menggunakan pemrograman R membutuhkan data set yang khusus. Karena tidak terdapat ID maka BMT data set akan ditambahkan kolom id

bmt<-rowid_to_column(BMT,"my_id")

Menggunakan fungsi t-merge dengan menggunakan fungsi event dan tdc untuk membuat data set khusus

td_dat<-
  tmerge(
    data1= bmt %>% select(my_id,T1,delta1),
    data2 = bmt %>% select(my_id, T1, delta1, TA, deltaA),
    id=my_id,
    death=event(T1,delta1),
    agvhd=tdc(TA)
  )

4.0.1 Data Asli

bmt %>%
  select(my_id, T1, delta1, TA, deltaA) %>%
  filter(my_id %in% seq(1,5))
##   my_id   T1 delta1   TA deltaA
## 1     1 2081      0   67      1
## 2     2 1602      0 1602      0
## 3     3 1496      0 1496      0
## 4     4 1462      0   70      1
## 5     5 1433      0 1433      0

4.0.2 Dataset Baru

td_dat %>%
  filter(my_id %in% seq(1,5))
##   my_id   T1 delta1 tstart tstop death agvhd
## 1     1 2081      0      0    67     0     0
## 2     1 2081      0     67  2081     0     1
## 3     2 1602      0      0  1602     0     0
## 4     3 1496      0      0  1496     0     0
## 5     4 1462      0      0    70     0     0
## 6     4 1462      0     70  1462     0     1
## 7     5 1433      0      0  1433     0     0

4.1 Analisis TIme-Dependent dan Cox Regression

coxph(
  Surv(time=tstart, time2 = tstop, event = death)~agvhd,
  data=td_dat
  ) %>%
  gtsummary::tbl_regression(exp=TRUE)
Characteristic HR1 95% CI1 p-value
agvhd 1.40 0.81, 2.43 0.2

1 HR = Hazard Ratio, CI = Confidence Interval

5 Kesimpulan

Acute graft vs host disease tidak berhubungan secara signifikan berhubungan dengan kematian dengan menggunakan analisis tolok ukur atau time-dependent Covariate

LS0tDQp0aXRsZTogIlR1Z2FzIDIiDQpzdWJ0aXRsZTogIlN1cnZpdmFsIE1vZGVsIg0KYXV0aG9yOiAiQWxiZXJ0IEFndW5nIFByYXlvZ28gKDIwMjA0OTIwMDE5KSINCmRhdGU6ICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVCICVkLCAlWScpYCINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6IA0KICAgIGh0bWxfZG9jdW1lbnQ6IG51bGwNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDoNCiAgICAgIGNvbGxhcHNlZDogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICB0aGVtZTogc2FuZHN0b25lDQogICAgY3NzOiBzdHlsZTEuY3NzDQogICAgaGlnaGxpZ2h0OiBtb25vY2hyb21lDQotLS0NCg0KDQo8aW1nIHN0eWxlPSJmbG9hdDogcmlnaHQ7IG1hcmdpbjogMHB4IDEwMHB4IDBweCAwcHg7IHdpZHRoOjI1JSIgc3JjPSJtZS5qcGciLz4gDQoNCmBgYHtyIGxvZ28sIGVjaG89RkFMU0UsZmlnLmFsaWduPSdjZW50ZXInLCBvdXQud2lkdGggPSAnMzAlJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCJsb2dvbWF0YW5hLnBuZyIpDQpgYGANCg0KRW1haWwgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jm5ic3A7OiAgYWxiZXJ0LnByYXlvZ285OUBnbWFpbC5jb20gPGJyPg0KUlB1YnMgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOzogaHR0cHM6Ly9ycHVicy5jb20vYWxiZXJ0MjM4OTkgPGJyPg0KSnVydXNhbiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7OiBbU3RhdGlzdGlrYV0oaHR0cHM6Ly9tYXRhbmF1bml2ZXJzaXR5LmFjLmlkLz9seT1hY2FkZW1pYyZjPXNiKSA8YnI+DQpBZGRyZXNzICAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgOiBBUkEgQ2VudGVyLCBNYXRhbmEgVW5pdmVyc2l0eSBUb3dlciA8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZuYnNwOyBKbC4gQ0JEIEJhcmF0IEthdiwgUlQuMSwgQ3VydWcgU2FuZ2VyZW5nLCBLZWxhcGEgRHVhLCBUYW5nZXJhbmcsIEJhbnRlbiAxNTgxMC4NCg0KKioqKg0KQmVyaWt1dCBtZXJ1cGFrYW4gcGVtb2RlbGFuIHN1cnZpdmFsIGRlbmdhbiBtZW5nZ3VuYWthbiBkYXRhIGRhcmkgQk1UIGRhdGFzZXQgeWFuZyBtZW11YXQgZGF0YSBzdXJ2aXZhbCAxMzcgcGFzaWVuIHlhbmcgdGVsYWggbWVuamFsYW5pIHRyYW5zcGxhbnRhc2kgc3Vtc3VtIHR1bGFuZyBiZWxha2FuZy4gQW5hbGlzaXMgU3Vydml2YWwgeWFuZyBha2FuIGRpbGFrdWthbiBiZXJ0dWp1YW4gdW50dWsgbWVuZ2V0YWh1aSBrZW1hbXB1YW4gYmVydGFoYW4gbWFudXNpYSBzZXRlbGFoIG1lbmphbGFuaSB0cmFuc3BsYW50YXNpIHN1bXN1bSB0dWxhbmcgYmVsYWthbmcuIFZhcmlhYmVsLXZhcmlhYmVsIHlhbmcgYWRhIGRpZGFsYW0gZGF0YSB0ZXJzZWJ1dCBhZGFsYWgNCjEuIFQxIG1lcnVwYWthbiB3YWt0dSAoaGFyaSkgcGVuZ2FtYXRhbiBwYXNpZW4NCjIuIERlbHRhIDEgbWVydXBha2FuIGluZGlrYXRvciBrZW1hdGlhbiBwYXNpZW4gMS1NZW5pbmdnYWwgZGFuIDAtIEhpZHVwDQozLiBUQSAsZXJ1cGFrYW4gd2FrdHUgbWVudWp1IGFjdXRlIGdyYWZ0IHZzIGhvc3QgZGlzZWFzZQ0KNC4gZGVsdGEgQSBtZXJ1cGFrYW4gaW5kaWthdG9yIHRlcmphZGlueWEgYWN1dGUgZ3JhZnQgdnMgaG9zdCBkaXNlYXNlDQoNCiMgTWVtdWF0IEJNVCBkYXRhc2V0DQpgYGB7cn0NCmxpYnJhcnkoU2VtaUNvbXBSaXNrcykNCmxpYnJhcnkoTUFTUykNCmxpYnJhcnkoc3Vydml2YWwpDQpsaWJyYXJ5KEZvcm11bGEpDQpsaWJyYXJ5KERUKQ0KZGF0YShCTVQsIHBhY2thZ2UgPSAiU2VtaUNvbXBSaXNrcyIpDQpkYXRhdGFibGUoQk1ULA0KICAgICAgICAgIGNhcHRpb24gPSBodG1sdG9vbHM6OnRhZ3MkY2FwdGlvbigNCiAgICAgICAgICAgIHN0eWxlID0gJ2NhcHRpb24tc2lkZSA6IGJvdHRvbTsgdGV4dC1hbGlnbjogY2VudGVyOycsDQogICAgICAgICAgICBodG1sdG9vbHM6OmVtKCdUYWJsZTEgMSA6IHRoZSBCTVQgZGF0YS4nKSksDQogICAgICAgICAgZXh0ZW5zaW9ucz0nRml4ZWRDb2x1bW5zJywNCiAgICAgICAgICBvcHRpb25zID0gbGlzdChzY3JvbGxYPVRSVUUsIGZpeGVkQ29sdW1ucz1UUlVFKSkNCmBgYA0KIyBBbmFsaXNpcyBTdXJ2aXZhbCBkZW5nYW4gbWVuZ2d1bmFrYW4gTWV0b2RlIExhbmRtYXJrDQojIyBNZW5lbnR1a2FuIEJhdGFzYW4gV2FrdHUgU3Vydml2YWwNCkRhdGEgeWFuZyBkaWFuYWxpc2lzIGRlbmdhbiBtZW5nZ3VuYWthbiBtZXRvZGUgaW5pIGFkYWxhaCBwYXNpZW4geWFuZyBkYXBhdCBoaWR1cCBzZWxhbWEgOTAgaGFyaSBzZXRlbGFoIHRyYW5zcGxhbnRhc2kgc3Vtc3VtIHR1bGFuZyBiZWxha2FuZyBkaWxha3VrYW4uIFdha3R1IDkwIGhhcmkgbWVuamFkaSBsYW5kbWFyayh0b2xvayB1a3VyKSBrYXJlbmEgYmVyZGFzYXJrYW4gaWxtdSBwZW5nZXRhaHVhbiByZWFrc2kgaW11biBhY3V0ZSBncmFmdCB2cyBob3N0IGRpc2Vhc2UgYmFydSBtdW5jdWwgOTAgaGFyaSBzZXRlbGFoIHRyYW5zcGxhbnRhc2kgc3Vtc3VtIHR1bGFuZyBiZWxha2FuZyBkaWxha3VrYW4uDQojIyBNZW55ZWxla3NpIFBvcHVsYXNpDQpNZW55ZWxla3NpIGRhdGEgeWFuZyBzZXN1YWkgZGVuZ2FuIGtldGVudHVhbiB0b2xvayB1a3VyIHBlbmVsaXRpYW4uIERhdGEgcGFzaWVuIHlhbmcgdGlkYWsgbWFtcHUgYmVydGFoYW4gaGlkdXAgc2ViZWx1bSA5MCBoYXJpIGFrYW4gZGlhYmFpa2FuDQpgYGB7cn0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbG1fZGF0PC0NCiAgQk1UICU+JQ0KICBmaWx0ZXIoVDE+PTkwKQ0KYGBgDQojIyBNZW5naGl0dW5nIFBlbHVhbmcgU3Vydml2YWwgQmVyZGFzYXJrYW4gTGFtYW55YSBXYWt0dSBCZXJ0YWhhbiBIaWR1cCBQYXNpZW4geWFuZyBEaW11bGFpIGRhcmkgSGFyaSBrZS05MA0KYGBge3J9DQpsbV9kYXQ8LQ0KICBsbV9kYXQgJT4lDQogIG11dGF0ZShsbV9UMT1UMS05MCkNCmxtX2ZpdDwtc3VydmZpdChTdXJ2KGxtX1QxLCBkZWx0YTEpfiBkZWx0YUEsIGRhdGE9bG1fZGF0KQ0KYGBgDQpgYGB7cn0NCmxpYnJhcnkoc3Vydm1pbmVyKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KZ2dzdXJ2cGxvdCgNCiAgZml0PWxtX2ZpdCwNCiAgZGF0YT1sbV9kYXQsDQogIHhsYWI9IkRheXMgZnJvbSA5MC1kYXkgTGFuZG1hcmsiLA0KICByaXNrLnRhYmxlPVQsDQogIHJpc2sudGFibGUueS50ZXh0PVQsDQogIHB2YWw9VFJVRQ0KKQ0KYGBgDQpEYXJpIGdyYWZpayBkaWF0YXMgZGFwYXQgZGlzaW1wdWxrYW4gYmFod2EgZmFzZSBrcml0aXMgcGFzaWVuIHlhbmcgbWVuamFsYW5pIHRyYW5zcGxhbnRhc2kgc3Vtc3VtIHR1bGFuZyBiZWxha2FuZyBiZXJhZGEgZGkgNTAwIGhhcmkgcGVydGFtYSBzZXRlbGFoIHJlYWtzaSBpbXVuIGFjdXRlIGdyYWZ0IHZzIGhvc3QgZGlzZWFzZSBtdW5jdWwuIEhhbCBpbmkgZGlidWt0aWthbiBkZW5nYW4gdHVydW5ueWEgcGVsdWFuZyBzdXJ2aXZhbCBzZWNhcmEgZHJhc3RpcyBoaW5nZ2EgaGFyaSBrZSA1MDAuIFNldGVsYWggaGFyaSBrZSA1MDAsIGt1cnZhIHBlbHVhbmcgc3Vydml2YWwgY2VuZGVydW5nIHN0YWJpbCB5YW5nIG1lbmFuZGFrYW4gYmFod2Ega2VtYXRpYW4gcGFzaWVuIHNldGVsYWggNTAwIGhhcmkgbXVuY3VsIHJlYWtzaSBpbXVuIHRlcmphZGkgdGlkYWsgc2lnbmlmaWthbg0KDQojIENveCBSZWdyZXNzaW9uDQpCZXJpa3V0IG1lcnVwYWthbiBhbmFsaXNpcyBzdXJ2aXZhbCBkZW5nYW4gbWVuZ2d1bmFrYW4gcmVncmVzaSBDb3gsIGFuYWxpc2EgY294IGRlbmdhbiBtZW5nZ3VuYWthbiBmdW5nc2kgY294cGggcGFkYSByIHVudHVrIG1lbnllbGVrc2kgZGF0YSBwYXNpZW4geWFuZyB0aWRhayBzZXN1YWkgZGVuZ2FuIHRvbG9rIHVrdXQNCmBgYHtyfQ0KbGlicmFyeShtYWdyaXR0cikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShndHN1bW1hcnkpDQpsaWJyYXJ5KHN1cnZpdmFsKQ0KY294cGgoDQogIFN1cnYoVDEsZGVsdGExKX5kZWx0YUEsDQogIHN1YnNldD1UMT49OTAsDQogIGRhdGE9Qk1UDQopJT4lDQpndHN1bW1hcnk6OnRibF9yZWdyZXNzaW9uKGV4cD1UUlVFKQ0KYGBgDQojIFRpbWUtRGVwZW5kZW50IENvdmFyaWFudA0KU2VsYWluIGFuYWxpc2lzIGRlbmdhbiB0b2xvayB1a3VyIHdha3R1IHRlcnRlbnR1IHRlcmRhcGF0IG1ldG9kZSBhbmFsaXNpcyBzdXJ2aXZhbCBkZW5nYW4gbWVuZ2d1bmFrYW4gdGltZS1kZXBlbmRlbnQgY292LiBUaW1lLURlcGVuZGVudCBjb3YgZGFwYXQgZGlsYWt1a2FuIGtldGlrYSA6DQoxLiBOaWxhaSBrb3ZhcmlhdCBiZXJ1YmFoIHNldGlhcCB3YWt0dQ0KMi4gVGlkYWsgdGVyZGFwYXQgdG9sb2sgdWt1ciB3YWt0dSB5YW5nIGplbGFzDQozLiBQZW5nZ3VuYWFuIHRvbG9rIHVrdXIgeWFuZyBtZW1iYXdhIHRlcmxhbHUgYmFueWFrIHBlbmdlY3VhbGlhbg0KIyMgTWVueWlhcGthbiBEYXRhIFRpbWUtRGVwZW5kZW50IENvdiBBbmFseXNpcw0KQW5hbGlzaXMgVGltZS1EZXBlbmRlbnQgQ292IGRlbmdhbiBtZW5nZ3VuYWthbiBwZW1yb2dyYW1hbiBSIG1lbWJ1dHVoa2FuIGRhdGEgc2V0IHlhbmcga2h1c3VzLiBLYXJlbmEgdGlkYWsgdGVyZGFwYXQgSUQgbWFrYSBCTVQgZGF0YSBzZXQgYWthbiBkaXRhbWJhaGthbiBrb2xvbSBpZA0KYGBge3J9DQpibXQ8LXJvd2lkX3RvX2NvbHVtbihCTVQsIm15X2lkIikNCmBgYA0KTWVuZ2d1bmFrYW4gZnVuZ3NpIHQtbWVyZ2UgZGVuZ2FuICBtZW5nZ3VuYWthbiBmdW5nc2kgZXZlbnQgZGFuIHRkYyB1bnR1ayBtZW1idWF0IGRhdGEgc2V0IGtodXN1cw0KYGBge3J9DQp0ZF9kYXQ8LQ0KICB0bWVyZ2UoDQogICAgZGF0YTE9IGJtdCAlPiUgc2VsZWN0KG15X2lkLFQxLGRlbHRhMSksDQogICAgZGF0YTIgPSBibXQgJT4lIHNlbGVjdChteV9pZCwgVDEsIGRlbHRhMSwgVEEsIGRlbHRhQSksDQogICAgaWQ9bXlfaWQsDQogICAgZGVhdGg9ZXZlbnQoVDEsZGVsdGExKSwNCiAgICBhZ3ZoZD10ZGMoVEEpDQogICkNCmBgYA0KIyMjIERhdGEgQXNsaQ0KYGBge3J9DQpibXQgJT4lDQogIHNlbGVjdChteV9pZCwgVDEsIGRlbHRhMSwgVEEsIGRlbHRhQSkgJT4lDQogIGZpbHRlcihteV9pZCAlaW4lIHNlcSgxLDUpKQ0KYGBgDQojIyMgRGF0YXNldCBCYXJ1DQpgYGB7cn0NCnRkX2RhdCAlPiUNCiAgZmlsdGVyKG15X2lkICVpbiUgc2VxKDEsNSkpDQpgYGANCiMjIEFuYWxpc2lzIFRJbWUtRGVwZW5kZW50IGRhbiBDb3ggUmVncmVzc2lvbg0KYGBge3J9DQpjb3hwaCgNCiAgU3Vydih0aW1lPXRzdGFydCwgdGltZTIgPSB0c3RvcCwgZXZlbnQgPSBkZWF0aCl+YWd2aGQsDQogIGRhdGE9dGRfZGF0DQogICkgJT4lDQogIGd0c3VtbWFyeTo6dGJsX3JlZ3Jlc3Npb24oZXhwPVRSVUUpDQpgYGANCiMgS2VzaW1wdWxhbg0KQWN1dGUgZ3JhZnQgdnMgaG9zdCBkaXNlYXNlIHRpZGFrIGJlcmh1YnVuZ2FuIHNlY2FyYSBzaWduaWZpa2FuIGJlcmh1YnVuZ2FuIGRlbmdhbiBrZW1hdGlhbiBkZW5nYW4gbWVuZ2d1bmFrYW4gYW5hbGlzaXMgdG9sb2sgdWt1ciBhdGF1IHRpbWUtZGVwZW5kZW50IENvdmFyaWF0ZQ0KDQogIA0KICANCiAg