Neka vaš AI šalje tajne, a da ih ne vidi.
Kako PrivateNote MCP predaje datoteke imejlom, Slackom, Discordom i WhatsAppom — a da model ne čita sadržaj
Vaš asistent danas može da pošalje ugovor, lozinku ili CSV. Ne bi trebalo da čita te datoteke da to uradi. Predajte lokalne putanje PrivateNote MCP-u i u kanal koji već koristite stavite samo vezu koja se sama uništi.
Ključni zaključci
- Prosleđujte putanje datoteka, ne bajtove — lokalni MCP šifruje, modelu ne treba sadržaj.
- Odobravate pregled koji vezuje tačne bajtove, opcije i odredište. Kreiranje beleške nije dozvola da se pošalje.
- Imejl, Slack, Discord i WhatsApp treba da nose samo PrivateNote URL kada je sendAuthorized — nikad datoteku. Isključite one-shot ako agent može i da šalje poruke.
- URL koji se može dešifrovati je bearer sposobnost koju agent vidi posle potvrde. Ne beležite je. Posle isporuke proverite otvaranje ili opozovite neotvorenu belešku.
Koristan deo AI asistenta nije to što može da pročita ugovor, datoteku lozinki ili izvoz klijenata. Koristan deo je to što tu pošiljku može da dostavi pravoj osobi, na kanalu na kom ona već jeste, a da asistent ne postane kopija tajne.
To je svakodnevni posao: poslati PDF klijentu imejlom, ostaviti staging lozinku kolegi u Slacku, predati bot token moderatoru na Discordu ili staviti jednokratnu prijavu u WhatsApp nit. Ljudi to već rade lepljenjem. Agenti lepljenje ubrzavaju — i curenje povećavaju, jer tajna sada sedi i u kontekstu modela, u transkriptu chata i u svakom zapisu koji host čuva.
MCP server PrivateNote-a građen je za suprotnu podelu. Agent orkestrira. Lokalni proces rukuje tajnom. Vi odobravate tačnu datoteku i odredište. Imejl, Slack, Discord i WhatsApp nose samo vezu. Modelu se kaže da prosledi putanje datoteka, ne bajtove. Šifrovanje se dešava na vašem računaru nakon što potvrdite. Nazad dolazi URL čiji fragment drži ključ — isti model kao jednokratna tajna veza u veb-aplikaciji. Pravljenje beleške nije dozvola da se pošalje.
Posao je slanje, ne znanje
Većina saveta o „AI + tajnama” i dalje pretpostavlja da model mora da vidi kredencijal da bi pomogao. To je tačno ako želite da model datoteku objasni, ugovor prepiše ili ključ otkloni. Nije tačno ako želite da ga dostavi.
Dostava je logistički problem: koja datoteka, koja osoba, koji kanal, koliko dugo pristup sme da traje, treba li da izgori posle prvog otvaranja. Nijedna od tih odluka ne traži otvoreni tekst. Traže alat koji može da pročita lokalnu putanju, šifruje i vrati handle koji ostatak steka sme da vidi.
Za to je privatenote-mcp. Hostovi koji poštuju MCP uputstva dobijaju, redom: ako je korisnik imenovao lokalnu datoteku, prosledi apsolutnu putanju; ne otvaraj je, ne radi cat i ne sažimaj; pozovi create_private_note (pregled); sačekaj vaše odobrenje; zatim pozovi confirm_private_note. Tek tada drugi alat sme da pošalje URL — i samo na odredište koje ste odobrili.
Pravilo
Ako asistent može da završi zadatak putanjom, ne sme da ga završi sadržajem. Lepljenje u prompt je poslednje sredstvo — nakon što je tajna već u chatu.
Zašto kanali koje već koristite čuvaju pogrešnu kopiju
Imejl, Slack, Discord i WhatsApp dobri su u razgovoru. Loši su sefovi. Šifrovanje u prenosu, čak i od kraja do kraja, ne odlučuje koliko dugo pretraživa kopija ostaje na uređajima, u izvozima radnog prostora, u rezervnim kopijama u oblaku ili u pregledima obaveštenja. To je ista razlika kao zašto je imejl najgore mesto za tajne i zašto se tajne nikad ne smeju lepiti u chat.
- Imejl čuva priloge u oba sandučeta, na serverima pošte, u legal holdovima i u „pretraži svu poštu”. Prosleđivanje množi kopije koje kasnije ne možete da opozovete.
- Slack indeksira radni prostor. Administratori, izvozi usklađenosti i AI funkcije koje sažimaju kanale mogu lozinku ponovo da nađu mesecima kasnije.
- Discord na živom serveru izgleda prolazno. Nije. Pinovi, pretraga i DM-ovi drže bot tokene i admin tajne pored memova.
- WhatsApp je često jedini kanal koji će izvođač ili klijent stvarno otvoriti. To je i porodično sanduče: snimci ekrana putuju, povezani računari se sinhronizuju, a rezervne kopije nadžive posao.
Poenta nije napustiti te alate. Poenta je prestati da se u njih stavlja sadržaj. Oni ostaju koverta. Beleška je pismo. Primaoci i dalje ne trebaju PrivateNote nalog: otvaraju vezu u pregledaču, kao i svaki drugi URL koji im već šaljete.
Trostruka podela
| Uloga | Šta sme da vidi | Šta ne sme da vidi |
|---|---|---|
| AI agent (Cursor, Claude, Codex) | Ko, koja putanja, koji kanal, istek, burn-after-read. Posle vaše potvrde: URL koji se može dešifrovati | Bajtovi datoteke, lozinke, telo beleške. URL ne sme da pošalje dok niste odobrili to odredište |
| PrivateNote MCP (lokalni Node proces) | Datoteke na disku, samo radi šifrovanja | Ništa što zatim vraća kao otvoreni tekst |
| Imejl / Slack / Discord / WhatsApp | PrivateNote URL (i čitljiv predmet) | Prilog, kredencijal, lozinku za otkrivanje |
MCP ne šalje imejl ni Slack poruku umesto vas. Pravljenje beleške nije ovlašćenje za slanje. Nakon što odobrite pregled koji imenuje tačan kanal i primaoca, rezultat može da uključi sendAuthorized: true — tada alat za poštu ili chat sme da pošalje samo URL na to odredište. Ako odredište nije odobreno, sendAuthorized je false i agent treba da vam da URL za lepljenje, a ne da pokrene drugi alat.
URL je bearer sposobnost: ko ga ima, može da otvori belešku. Trenutni MCP host vraća secureUrl u rezultatu alata, pa agent može da vidi vezu iako ne može da vidi bajtove datoteke. Ne beležite je, ne committujte je i ne kopirajte u nepovezane alate. Tretirajte je kao tajnu.
Ostatak vraćenog sadržaja je mali: noteId, expiresAt, burnAfterReading i, kad je relevantno, passwordProtected i attachedFileNames. Imena datoteka su metapodaci, ne sadržaj — ipak ne stavljajte tajnu u ime datoteke.
Šta MCP zapravo radi na vašem računaru
Kad agent pozove create_private_note, lokalni Node.js proces — ne model — kanonizuje putanju, proverava je prema allowlisti radnog prostora, izračuna heš datoteke i pokaže vam pregled. Još ne vraća URL koji se može dešifrovati. Posle vašeg odobrenja confirm_private_note ponovo otvara istu datoteku, proverava uređaj, inode, veličinu i SHA-256 i šifruje te bajtove. Ako se datoteka promenila, potvrda ne uspeva; agent mora da počne ispočetka. AES-256-GCM šifrat šalje se POST-om PrivateNote-u. Ključ za dešifrovanje ide u fragment URL-a (#…). Pregledači ne šalju fragmente serverima. API čuva šifrovani blob. Bez fragmenta taj blob je šum.
Radije koristite parametre putanje da host nikad ne mora da stavi tajnu u argumente poziva koje je sastavio model:
contentFilePath— UTF-8 datoteka koja postaje telo beleške (lozinka, kod za oporavak, kratko uputstvo).filePath/filePaths— lokalni prilozi (PDF, CSV, slike). Tražisign_in. Zajedno najviše 20 datoteka.passwordFilePath— prvi red lokalne datoteke postaje lozinka za otkrivanje (Argon2id omot). Tu lozinku pošaljite van kanala, nikad u istoj poruci kao vezu.contentipassword— poslednje sredstvo, samo ako je korisnik tajnu već zalepio u chat i datoteka ne postoji.
Podrazumevana politika odgovara predaji, ne arhivi: burnAfterReading je true, expiresIn je podrazumevano 24 sata. Kraće je bolje kad primalac čeka s druge strane Slacka. Više otvaranja (burnAfterReading: false) traži Premium nalog. Prilog, provera primaoca, obaveštenja o otvaranju te spisak i opoziv traže prijavljenu sesiju; kapije i upozorenja traže i plaćeni plan.
Putanje su ograničene. Podrazumevano smeju da se čitaju samo datoteke unutar radnog prostora (radni direktorijum MCP procesa). Postavite PRIVATENOTE_MCP_ALLOWED_ROOTS ako morate da dodate fascikle. SSH ključevi, direktorijumi kredencijala u oblaku i MCP datoteka sesije uvek su blokirani, čak i ako dozvolite $HOME ili /.
Odobravate tačnu predaju — ne ime putanje
Agent koji može da napravi URL koji se dešifruje i da pošalje imejl ili Slack je confused deputy: mogao bi da šifruje pogrešnu datoteku ili da pošalje pravu vezu pogrešnoj osobi, u jednom potezu. Podrazumevano u PrivateNote-u je da vi zajedno ovlastite tri stvari: tačne bajtove datoteke, tačne opcije beleške (istek, burn-after-read) i tačno odredište.
Pregled mora da pokaže odredište kad se traži slanje, na primer „Send via: Email / Recipient: alice@example.com”. To odobrenje nikad ne sme da ovlasti drugu adresu ili drugi Slack kanal. confirm_private_note prima samo confirmationId. Agent pri potvrdi ne može da prepiše putanju, primaoca, kanal, istek ni politiku uništenja.
Beleška bez odredišta vraća sendAuthorized: false. To je namerno. Veza u chatu i dalje je osetljiva — ali nije dozvola da se pošalje poštom.
Ne uključujte one-shot ako agent može da šalje
PRIVATENOTE_MCP_ALLOW_ONE_SHOT preskače ljudski pregled. Agent to ne može da uključi kao argument alata, a kasnija promena okruženja nema efekta dok ponovo ne pokrenete MCP server. Ostavite ga isključenog. Uključiti ga dok isti host može da šalje imejl, Slack, Discord ili datoteke dozvoljava modelu da u jednom koraku napravi URL koji se dešifruje i otpremi ga — uključujući pogrešnu datoteku ili pogrešnog primaoca. Allowlista putanja i dalje važi; nije zamena za vaše odobrenje.
Povežite jednom
Potreban je Node.js 18+. Posle čuvanja ponovo pokrenite MCP klijent da učita trenutne šeme alata i uputstva. Pune napomene o instalaciji su na stranici MCP integracije.
{
"mcpServers": {
"privatenote": {
"command": "npx",
"args": ["-y", "privatenote-mcp"]
}
}
}Codex CLI: codex mcp add privatenote -- npx -y privatenote-mcp. To piše ~/.codex/config.toml. Napomene posebno za Codex su u Korišćenje PrivateNote-a sa OpenAI Codexom.
Self-hosted: postavite PRIVATENOTE_API_BASE_URL i PRIVATENOTE_WEB_ORIGIN u MCP env bloku da šifrat ne napusti vašu infrastrukturu. Po želji PRIVATENOTE_MCP_ALLOWED_ROOTS. Ne dodajte PRIVATENOTE_MCP_ALLOW_ONE_SHOT osim ako imate usko ograničen automatizacioni host bez alata za slanje.
Svakodnevno: imejl
Imejl je i dalje način na koji kompanije šalju ugovore, NDA-ove, račune sa bankovnim podacima i izvoze klijenata. Način kvara je priložiti datoteku. Sanduče tada godinama drži kopiju koja se može dešifrovati, i na strani primaoca, u BCC tragovima i u e-discovery-ju.
MCP obrazac: agent već zna Alicinu adresu i dva lokalna PDF-a. Ne sme da otvori te PDF-ove. Prijavljuje se ako treba, zove create_private_note sa filePaths, sendChannel i sendRecipient da pregled imenuje Alicu, čeka vaše odobrenje, zatim confirm_private_note. Tek tada alat za poštu sme u telo da stavi samo secureUrl. Ako koristite proveru primaoca, čitalac mora da dokaže da poseduje adresu pre nego što se beleška otključa — ta kapija ne šalje poštu; to i dalje radi vaš alat za poštu.
Pošalji ove dve datoteke Alici imejlom. Zaštiti ih lozinkom u /absolute/path/client-password.txt. Ne izlaži datoteke ni lozinku modelu: /absolute/path/contract.pdf /absolute/path/nda.pdf
- Agent zove
sign_inako nema sesije dodatka, zatimcreate_private_notesafilePaths,passwordFilePath,sendChannel: "email"isendRecipient. Vi odobravate pregled. Zatimconfirm_private_note. - Predmet sme da kaže „paket ugovora” — ne sme da citira klauzule iz PDF-a.
- Lozinku za otkrivanje pošaljite u drugoj poruci, pozivu ili deljenju iz menadžera lozinki — nikad u istoj pošti kao vezu. Pogledajte kako bezbedno podeliti lozinku.
- Za imenovanog primaoca na plaćenom planu:
requireRecipientVerification: trueirecipientEmail: "alice@example.com".
To je isti model dostave kao bezbedno slanje osetljivih dokumenata, osim što asistent sme to da izvede a da ne postane čitalac paketa.
Svakodnevno: Slack
Slack je mesto dežurstva. Lozinke staging baze, deploy tokeni i „CSV iz finansija” padaju u nit jer su svi već tamo. Pretraga radnog prostora od tog pada zatim pravi trajnu internu viki tajni.
Tražite predaju po putanji i kratki fitilj. Petnaest minuta je dovoljno ako je kolega onlajn. Spalite posle čitanja da kasniji pogodak pretrage bude mrtva veza, ne živi kredencijal. URL tretirajte kao tajnu: ne objavljujte ga u javnom kanalu; koristite DM ili namenski privatni kanal.
Pošalji Marku lozinku baze iz /absolute/path/secrets/db-password.txt u Slack. Jednokratno čitanje, ističe za 15 minuta. Ne čitaj datoteku u chat.
create_private_notesacontentFilePath,expiresIn: "15m",burnAfterReading: truei Slack odredištem vezanim u pregledu. Odobrite, zatimconfirm_private_note.- Ako je Slack povezan kao drugi MCP alat, agent sme da objavi samo
secureUrlna odobreno odredište nakon što jesendAuthorizedtrue. Inače vam daje URL za lepljenje. - Nakon što Mark otvori, rotirajte lozinku ako je to bila deljena staging tajna — beleška je smanjila preostale kopije; nije učinila deljeni kredencijal jedinstvenim.
Svakodnevno: Discord
Discord je podrazumevani ops kanal mnogih produktnih zajednica i timova bliskih igrama. Bot tokeni, Cloudflare ključevi i „evo tabele prijavljenih korisnika” lepe se u mod DM-ove jer su moderatori tamo.
Discord poruka i dalje je sačuvana poruka. Članovi servera sa pravom ulogom, rezervne kopije uređaja i Discordova sopstvena pretraga zadržaće je. MCP obrazac je isti kao za Slack: šifrujte datoteku ili token lokalno, stavite vezu u DM, postavite kratak istek. Ako je token već ranije zalepljen na istom serveru, rotirajte ga — umotati procurilu tajnu ne poništava curenje.
Pošalji vođi zajednice DM-om bot token u /absolute/path/secrets/discord-bot.txt i izvoz moderacije na /absolute/path/reports/export.csv. Jednokratno čitanje, 1 sat, ne otvaraj te datoteke.
- Prilozi traže
sign_in. Beleška samo sa tokenom može da koristicontentFilePathbez sesije. - Vežite Discord odredište u pregledu, odobrite ga, zatim
confirm_private_note. Tek tada Discord alat sme da pošalje URL. - Radije korisnički DM nego lepljenje u mod kanal. „Privatni kanal” i dalje je transkript.
- Ako izvoz sadrži lične podatke, dodajte datoteku lozinke i recite vođi lozinku u glasovnom pozivu.
Svakodnevno: WhatsApp
WhatsApp je kanal koji koristite kad druga osoba neće da uđe u Slack i neće da proveri poštu do ponedeljka. Izvođač, asistent family office-a, klijent na telefonu. Šifrovanje od kraja do kraja je stvarno. Trajnost je takođe stvarna: chat je zapis, često na više uređaja, često u rezervnoj kopiji.
Ne treba da instaliraju PrivateNote. Treba da dodirnu vezu. Posao asistenta je da pripremi tu vezu iz lokalne datoteke koju već imate — PDF računa, Wi-Fi lozinka, jednokratni kod portala — a da je prvo ne pročita u Cursor ili Claude niti. I dalje odobravate pregled (tačna datoteka i WhatsApp odredište) pre nego što confirm_private_note napravi URL.
Pošalji onboarding paket na /absolute/path/client/onboarding.pdf Ani na WhatsApp. Spali posle čitanja, ističe sutra. Ne čitaj PDF.
WhatsApp prikazuje pregled URL-ova. Taj pregled je PrivateNote odredišna stranica, ne dešifrovana datoteka. Ipak: ne stavljajte lozinku za otkrivanje u isti chat. Ako broj može biti pogrešan, napravite belešku, pošaljite vezu i opozovite ako je nikad nije otvorila. Advokati i drugi profesionalni pošiljaoci kojima treba brendirana stranica otkrivanja umesto zelenog mehura treba da pročitaju bezbednu dostavu klijentima za advokate.
Prijavite se kad je sadržaj datoteka
Beleške samo sa tekstom iz contentFilePath mogu da nastanu bez naloga, unutar istih javnih ograničenja kao sajt. Prilog je drugačiji. MCP mora prvo da pozove sign_in. To otvara stranicu odobrenja u pregledaču (odobrenje je već u URL-u — nema koda za unos). Nakon što kliknete Approve, agent ponovo zove sign_in sa pollDeviceCode. Sesija je u ~/.config/privatenote/mcp-session.json i šalje se kao Authorization: Bearer. Ne zamenjuje cookie sesiju sajta.
- Agent pokreće sign_in() — otvara se pregledač
- Kliknete Approve na PrivateNote stranici
- Agent pita sa pollDeviceCode, zatim whoami()
- Agent zove create_private_note sa putanjama datoteka (pregled — još nema URL-a)
- Odobravate tačne datoteke, istek i odredište
- Agent zove confirm_private_note, zatim vi (ili drugi alat) šaljete samo secureUrl na ljudskom kanalu
whoami pokazuje prijavljeni nalog. sign_out briše datoteku sesije dodatka. Tu datoteku tretirajte kao kredencijal ovog računara.
Instalirajte privatenote-mcp u Cursor, Claude Desktop ili Codex. Agent drži tok; lokalni proces drži tajnu.
Otvori vodič za podešavanje MCP-aNakon što je veza poslata
Dobra predaja ne završava kad poruka napusti Slack. Plaćene, prijavljene sesije mogu dostavu da tretiraju kao događaje, ne kao sadržaj: napravljeno, otvoreno, isteklo, opozvano. list_sent_notes vraća id-eve, status i openedAt — nikad otvoreni tekst. revoke_sent_note poništava neotvorenu belešku. notifyOnOpen šalje imejl na vaš PrivateNote nalog kad se beleška prvi put otvori; agent saznaje za otvaranje pitajući list_sent_notes. Nema push webhook-a u Cursor.
sign_in()
create_private_note({
filePaths: [
"/absolute/path/signed-contract.pdf",
"/absolute/path/customer-export.csv"
],
expiresIn: "24h",
burnAfterReading: true,
requireRecipientVerification: true,
recipientEmail: "john@example.com",
notifyOnOpen: true,
label: "contract-for-john",
sendChannel: "email",
sendRecipient: "john@example.com"
})
# wait for user approval of that exact destination
confirm_private_note({ confirmationId: "<from preview>" })
# email or Slack only secureUrl to John
# later: list_sent_notes() and look for openedAt on that noteIdProvera primaoca je kapija otključavanja na PrivateNote-u, ne zamena za slanje poruke. Upozorenja o otvaranju traže verifikovanu imejl adresu pošiljaoca na nalogu. Potvrde samo statusa objašnjene su u znati kad je tajna veza otvorena. Agenti sa širokim pristupom alatima i dalje trebaju model dozvola iz obezbeđivanje AI agenata kao zaposlenih.
Iskrena napomena o privatnosti
Jaka tvrdnja — „AI nikad nije video bajtove datoteke” — drži se kad host poštuje uputstva putanja-prvo i vi nikad niste zalepili sadržaj u prompt. Ne znači da agent ne može da vidi secureUrl posle potvrde. Običan MCP poziv alata i dalje može hostu da izloži argumente. Zato alati radije koriste putanje: argument je /Users/you/secrets/db-password.txt, ne lozinka.
Ako ukucate create a PrivateNote for sk_live_abc123, pružalac modela u oblaku može da obradi taj niz pre nego što MCP krene. PrivateNote i dalje čuva samo šifrat, a Slack i dalje dobija samo vezu. Poboljšali ste curenje nizvodno. Niste zadržali tajnu van modela. Za najveću privatnost držite tajne u datotekama (ili koristite proširenje za VS Code / Cursor da uređivač šifruje bez agenta) i recite asistentu putanju.
- Ne tražite od modela da „prvo proveri PDF” ili da ga sažme. To primorava čitanje drugim alatom.
- Ne stavljajte lozinku za otkrivanje u isti Slack, WhatsApp ili imejl kao URL.
- Tretirajte
secureUrlkao tajnu. Agent može da je vidi u rezultatu alata. Ne committujte je, ne beležite je i ne lepite je u javni Discord kanal. - Ponovo učitajte MCP klijent posle nadogradnje
privatenote-mcpda uputstva i šeme ostanu aktuelne. Ostavite one-shot isključen.
Česta pitanja
Da li PrivateNote MCP sam šalje Slack, Discord, WhatsApp ili imejl?
Ne. Šifruje lokalno i vraća URL plus metapodatke. Dostava koristi ono što već koristite — drugi MCP server (Gmail, Slack, …) ili vi lepite vezu. Pravljenje beleške nije dozvola da se pošalje. sendAuthorized je true samo ako ste u pregledu odobrili tačno taj kanal i primaoca.
Zašto moram da potvrdim pre nego što veza nastane?
Potvrda vezuje tačne bajtove datoteke, opcije beleške i odredište. Bez nje agent koji ima i alate za poštu ili chat mogao bi u jednom potezu da šifruje pogrešnu datoteku ili da pošalje pravu vezu pogrešnoj osobi. One-shot preskače taj pregled. Ostavite ga isključenog, posebno ako isti host može da šalje poruke ili datoteke.
Može li agent da vidi URL koji se dešifruje?
Da, u trenutnom MCP hostu. secureUrl se vraća u rezultatu alata da ga alat za dostavu može da pošalje. Agent i dalje ne sme da vidi bajtove datoteke. Posed URL-a može da otključa belešku — tretirajte ga kao bearer sposobnost, ne kao „model ne može da dođe do tajne”.
Mora li primalac nešto da instalira?
Ne. Otvara celu vezu u običnom pregledaču. Za otkrivanje beleške nije potreban PrivateNote nalog. Lozinka ili provera imejla i dalje mogu biti potrebne ako ste uključili te kapije.
Mogu li da priložim datoteke bez prijave?
Ne. Prilog, spisak i opoziv, provera primaoca i obaveštenja o otvaranju traže sign_in. Beleška samo sa tekstom iz contentFilePath može da nastane bez sesije, unutar javnih ograničenja.
Šta ako asistent ipak pročita datoteku?
Onda je granica privatnosti za taj potez već probijena. MCP uputstva govore hostovima da to ne rade. Ako ih vaš klijent ignoriše, nastavite da koristite proširenje uređivača ili veb-aplikaciju i ne usmeravajte agenta na datoteku. URL koji je proširenje napravilo i dalje možete da pošaljete.
Da li burn-after-read zaustavlja snimke ekrana?
Ne. Kad zakoniti primalac dešifruje belešku, može da kopira, fotografiše ili ponovo otpremi. Burn-after-read i istek smanjuju preostale kopije na usluzi i u istoriji chata. Ne mogu daljinski da obrišu ono što je neko već zabeležio. Za dokumente pristup datotekama samo za pregled na Business-u smanjuje usputno preuzimanje; to nije zabrana fotografisanja.
Neka agent pošalje vezu. Držite datoteku podalje od modela.
Instalirajte privatenote-mcp, usmerite ga na lokalne putanje i nastavite da koristite imejl, Slack, Discord i WhatsApp kao koverte — ne kao sefove. Ostavite one-shot isključen ako isti host može da šalje poruke ili datoteke.