「Hello、World!」(警官のスレッド)


16

これは警官のスレッドです。強盗のスレッドはこちらです。

あなたの課題は、特定の入力で正確な文字列Hello, World!と改行を出力するプログラムまたは関数を書くことです。大文字、スペース、句読点は正確でなければなりません。

入力は、標準入力、ファイル、またはコマンドライン/関数の引数を介して取得できます。出力は、戻り値、ファイルへの書き込み、または標準出力を介して提供されます。

プログラムはHello, World!、少なくとも1つの入力に対して印刷する必要があります。プログラムに間違った入力(つまり、印刷させない入力)が与えられると、Hello, World!クラッシュ、ランダムなナンセンスの印刷、チャックノリスの呼び出しなど、何でも好きなことができます。

ハッシュアルゴリズムまたは同様の方法で必要な入力を隠すことはできません。

提出は、TIOで実行およびクラック可能にすることが推奨されます。TIOで実行またはクラックできないサブミッションは許可されますが、ダウンロード/実行の手順を含めてください。

1週間後、このチャレンジは今後の警官の提出に対して閉鎖されます。勝者は、それを投稿してから1週間後に解読されない最短のコードです(「チャレンジ」ではなく「それ」がコードです)。勝者は2週間後に受け入れられます。

投稿してから1週間が経過した後、回答を安全とマークし、入力を表示してください(> ! spoiler quote)。強盗があなたの提出物をクラックした場合(週が終わる前に)、クラックされたものとしてマークし、停止中の入力を表示してください(> ! spoiler quote)。

クラックされていない提出物をお探しですか?

fetch("https://api.stackexchange.com/2.2/questions/137742/answers?order=desc&sort=activity&site=codegolf&filter=!.Fjs-H6J36vlFcdkRGfButLhYEngU&key=kAc8QIHB*IqJDUFcjEF1KA((&pagesize=100").then(x=>x.json()).then(data=>{var res = data.items.filter(i=>!i.body_markdown.toLowerCase().includes("cracked")).map(x=>{const matched = /^ ?##? ?(?:(?:(?:\[|<a href ?= ?".*?">)([^\]]+)(?:\]|<\/a>)(?:[\(\[][a-z0-9/:\.]+[\]\)])?)|([^, ]+)).*[^\d](\d+) ?\[?(?:(?:byte|block|codel)s?)(?:\](?:\(.+\))?)? ?(?:\(?(?!no[nt][ -]competing)\)?)?/gim.exec(x.body_markdown);if(!matched){return;}return {link: x.link, lang: matched[1] || matched[2], owner: x.owner}}).filter(Boolean).forEach(ans=>{var tr = document.createElement("tr");var add = (lang, link)=>{var td = document.createElement("td");var a = document.createElement("a");a.innerHTML = lang;a.href = link;td.appendChild(a);tr.appendChild(td);};add(ans.lang, ans.link);add(ans.owner.display_name, ans.owner.link);document.querySelector("tbody").appendChild(tr);});});
<html><body><h1>Uncracked Submissions</h1><table><thead><tr><th>Language</th><th>Author</th></tr></thead><tbody></tbody></table></body></html>


しかし、非常によく似たものではありません。
小麦ウィザード

13
サンドボックスで述べたように、これは停止する質問の複製であると感じます。なぜなら、代わりにここに投稿することができますが、コードforと無限ループをhello worldを出力するコードに置き換えたからです。私はハンマーを打つのでまだ投票しませんが、これはだまされていると確信しています。
FryAmTheEggman

5
明らかsha3にそのカテゴリに分類されますが、そうでない場合はどこで線を引きますか?これmod 1e3もハッシュ関数であり、これまでのところ、提出物の多くはハッシュ関数になると主張しているが、この課題は基本的にそのようなものを求めているからだ。
flawr

1
過去1日に見た回答に基づいて、これが複製ではないことを確信させるものは何もありませんでした。私は今のところ警官の挑戦を閉じます。コミュニティが同意しない場合は再開でき、コミュニティが同意する場合は強盗スレッドも閉じることができます。
FryAmTheEggman

1
@Dopappはこれについてはすでに議論されており、ここ(いくつかのコメントは削除されています)とチャットで。回答は、このチャレンジからコピーペーストすることも非常に簡単に移植することもできないため、重複していません。
MD XF

回答:


3

Python 3、191 186バイト(安全!)

前の回答と同じですが、noob evalステートメントがないため、誰かが実際に作成した問題を解決する必要があります。

import sys
from numpy import *
e=enumerate
c='Hello, World!'
print(''.join([c[int(sum([c*cos(n*i)for i,c in e(fromiter(sys.argv[1:],float))])+.01)]for n in[2*i+ord(n)for i,n in e(c)]]))

次のような正しいパラメータで実行します python3 hw.py 1 2 3


編集:以前のバージョンでは「Hello、World!」のコンマが欠落していました。また、不要な無数の数字があることに気付きました。


編集2:ちょうどお楽しみのために、同じコードのほぼ同一のPythバージョン(47バイト)があります:

KEJ"Hello, World!"jkm@J.Rs.e*b.t*dk1K0.e+*2kCbJ

入力はstdin、次のような引数のリストの形式で取得されます。[1,2,3]

Pthyon3バージョンをクラックすると、Pythを知らなくてもPythバージョンもクラックするため、別の回答を投稿しても意味がありません。


回答:

python3 hw.py 10.72800138 13.23008796 19.30176276 16.13233012 18.10716041 0.98306644 8.18257475 19.20292132 10.99316856 -2.15745591 6.01351144 5.45443094 10.41260889

コードの説明:

''.join()文字列の文字の配列からhello world文字列を作成します"Hello, World!"。それらのインデックスがあるとき、パズルは解決されます[0,1,2,3,4,5,6,7,8,9,10,11,12]。各インデックスは、入力とコマンドラインで指定された定数から計算されます。入力はハードコードされたシリーズです:[2*i+ord(c) for i,c in enumerate('Hello, World!')]。入力、定数、および出力(インデックス)に関連する機能は次のとおりsum([c*cos(x*i) for i,c in enumerate(CONSTANTS)])です。これは古典的なモデリングの問題であり、データをモデルに適合させようとしています。

Pythonで解決策に到達する:

from scipy import optimize
x = [2*i+ord(c) for i,c in eumerate('Hello, World!')]
y = [0,1,2,3,4,5,6,7,8,9,10,11,12].
# make your function: 13 terms means we can achieve 13 exact outputs
def f(x,a,b,c,d,e,f,g,h,i,j,k,l,m):
    return sum([c*cos(x*i) for i,c in enumerate([a,b,c,d,e,f,g,h,i,j,k,l,m])])
# curve fit
ans,_ = optimize.curve_fit(f,x,y)
# check answer
[round(f(a,*ans),0) for a in x] # should be 0-12


2
知らなかった場合に備えてliteral_eval()astモジュール内で式を安全に評価するために使用できるため、print(コードインジェクションの問題は機能しません。ここではおそらく関係ありませんが、言及したいと思っただけです。
エソランジングフルーツ

2
これで印刷できますHello, World!か?まだクラックされていませんが、コンマが欠落しているようです(結合ループで12回の反復のみ)
Uriel

ああ、あなたは正しい、コンマが欠落しています。今すぐ修正します。
レックスロニ

@ Challenger5ありがとう、私はそれを知りませんでした。
rexroni

12

TeX-38バイトのクラック(ish)

これは一見の価値があります。短いコードを書くことについてTeXを知っているサイトの人は誰も想像できないからです。

\read16to\x\message{Hello, World!}\bye

それを実行するには、インタラクティブモードを許可するTeXの何らかの形式を取得する必要があります。これをファイルに保存し、TeX(またはpdfTeX、XeTeXなど)を実行します。

編集:私は現在、この半割れを検討しています。目的のソリューションはstdinからの入力を使用しますが、プログラムの呼び出し方法からのTeXnicallyの入力は有効です。誰かが目的のメソッドを取得した場合、さらに不正なTeXの回答を追加します。

目的のソリューションは次のとおりです。

^ C Ia-最初のキーはcontrol-cで、エラーが発生します。次に、I(大文字のi)を押してコマンドを入力します。次に、a(またはタイプセットするその他のもの)を入力します。通常、stdoutに出力されたメッセージの後にはスペースと「)」が続きます。何かをタイプセットすると、メッセージの後にフォント情報が出力されます。これは、改行がスローされ、「)」が後で移動されることを意味します。

それは手に負えないかもしれませんが、それでもゲームのルールの範囲内でなければなりません。


PPCGへようこそ。グッド最初の答え
ЕвгенийНовиков

tex \ Hello, world!\bye(23バイト)を使用するだけでは十分ではありませんか?
ヴェルナー

ユーザー入力を許可する@Werner?
ゴールドマン

これは実際にクラックされることを意図していますか?:o
フェリックスパルメン

3
texnicallyあれまあ。
MD XF

7

> <>、538バイト、rexroniによるクラック

v
\">/v>v\v</>"
/!?lp%*2di%*2di
a
v   "        "       "
   "l"      "o"  /  "e"
v   "        "     " "
      "   /       "l"/
v    "!"           "
 //   " " "      \
v     \"d"o"   " "    "
      " " "   "o"r"  "!"
v"   "H"       " "    "
"l"   ""
""    "r" "         "
    \  " "l"       "d"  "
v   "     "      "  "  "H"
   "e"         /","     "
v " " "     "  " "
 "e" "W"  /"d""l"
v " " "     "  "      "
   "H"               "!"
v   "                 "
                        v
>>"Hello world?"       >o<
                        ^

オンライン試すか、魚遊び場を使用することもできます。

最初の3行は、STDINから文字列を読み取り、その文字コードmod 26を座標として使用して、文字 " >/v>v\v</>"を下の迷路に入れます。意図した解決策は、A〜Zの文字のみで構成される20文字の文字列です(もちろん、必要なものは何でも使用できます)。

解決:

意図した入力はOCEANICWHITETIPSHARK(それは魚です!)です。迷路を通るパスは次のようになります。

v
\">/v>v\v</>"
/!?lp%*2di%*2di
a                |  |
v   "        "   |  |"
| v"l"______"o"__/  "e"
v | "        "     " "
| |   "   /       "l"/
v |  "!"           "|
|//   " " "    v_\  |
v|    \"d"o"   " "  | "
||    " " "   "o"r" |"!"
v"   "H"       " "  | "
"l"___""_______ _/__/_____
""    "r" "    | |  "
|>__\  " "l"   | | "d"  "
v   "     "    | "  "  "H"
|  "e"v________/"," |   "
v " " "     "  " "  |
|"e"|"W"  /"d""l"|  |
v " " "     "  " |  | "
<  "H">__________ __\"!"__
v   "            |  | "
    >____________ __ ___v
>>"Hello world?" |  |  >o<
                 |  |   ^


割れた! 永遠に私を連れて行った。
レックスロニ

3
ねえ、私は答えが言葉かもしれないと疑ったが、私はそれを解読しようとはしなかった。さらに感動しました。
レックスロニ

6

オクターブ、59バイト、クラック

これはOctave 4.2.0で機能します。すべてのバージョンとの互換性を保証することはできません。

i=input('');printf('%c',i*~all(isequal(i,'Hello, World!')))

注:これは、後続のスペースや改行を出力しません。これは次のようになります。

enter image description here

基本的には、「入力が「Hello、World!」でない限り、入力文字列を印刷します。この場合、何も印刷しない(またはヌル文字)必要があります。


文字列または文字を%c意味するかどうかはわかりませんません...多分あなたは何かを隠していますか?また、*~...私は少し不審になり
エリックOutgolfer

よくわかりませんが、 割れた
ბიმო

@BruceForteは、私はわからないんだけど、出力の最後にヌル・バイトを出力することの有効な... リンク
MD XF

1
私は、意図した解決策がこの種のものであることを確信しています。
ジョナサンアラン

1
@BruceForte、いいえ。ありませんでした\n。私は質問テキストが「オプションの末尾の改行」と言ったと思った。
スティーヴィーグリフィン


5

ひび入っていますが、これが意図した解決策でない場合、不正行為のように感じます。
デニス

@Dennis意図した解決策は['Hello,' 1 'World!']です。なぜ浮気するのですか?:-(ためのドキュメント/ヘルプはD言う32以下のほとんどの入力文字はスペースに置き換えられます
ルイスMendo

私は、LF改行をCR + LF改行に変えて、自分でカンニングをするつもりでした。
デニス

@デニスああ、なるほど。まあ、それも完全に有効だと思う
ルイスメンドー

5

爆発、23バイト、クラック

@_?&4_-j>5&f^~c>&6\|4>7

もっと来て、これはほんの始まりです> :)

オンラインでお試しください!

エクスプローラーの説明

このプログラムには4人の探検家がいます。待機(>)が正常に機能していることは完全にはわかりません。

@_?

ユーザー入力を読み取り(?)、テープを書き込み、拡張(@)します(_)。

&4_-j>5

4目盛り(4)の場合、()19()を引くことにより、テープを&下向きに修正(_)し、5(5)ずつジャンプします。-j

&f^~c>

16ティック(f)の場合、波()でテープ(&)を上方向(^)に変更し、~影響なし、+ 13、影響なし、-13(c)を交互に繰り返します。

&6\|4>7

6ティック(6)の場合、テープ(&)を両方向()に変更し、毎回4()ずつ|減らし(\4、7ずつジャンプします()7ます。減少とは、最初に4、2回目に8などを減算することを意味します。


3
ひび入っていますが、進行状況の説明をお気軽に:)
ジョナサンアラン

@ジョナサンアランの説明が追加され、申し訳ありませんが私はとても時間がかかりました
スティーブン

5

JavaScriptの(ES6)、173 169 163 150 151 148 143バイト(ひび割れ

まったく異なるものを...そして完全に悪を持ちましょう。

const e=eval,p=''.split,c=''.slice,v=[].every,f=s=>(t=c.call(s),typeof s=='string'&&t.length<81&&v.call(p.call(t,`\n`),l=>l.length<3)&&e(t)(t))

使用法: f(something) // returns 'Hello, World!'

オンラインでお試しください!




いいね!それは本当の亀裂です。
ボイル

これは本当にクラックするのが大変でした。よくやった!
DanTheMan

他の場所で作成したパズルの1つから直接取得します:)(元のパズルをどこに投稿したかを人々に理解させます。)
ボイル

4

C#(.NET Core)130 152バイト、CRACKED

+22バイト、末尾の改行を忘れました...プログラムは以前と同じように動作し、改行はすべての出力に追加されます。

a=>a.Distinct().Select((x,y)=>a.Reverse().Skip(y).First()*x%255).Take(a.First()-33).Concat(new int[]{10}).Select(x=>(char)x).ToArray()

オンラインでお試しください!

バイト数も含まれています

using System.Linq;

始めに、私はあまりクレイジーではない何かに行きました。複数の回答を持つことができます。

「公式」クラック:

。!$ 0%> 5&8 '#?)S * TuE [MRX` + 9



4

tcc、89バイト、デニスにより解読

#!/usr/bin/tcc -run
#include <stdio.h>

int main()
{
    puts("\n");
}
#include "/dev/stdin"

これは、tccの動的解決のために特に悪です。多くの関数が事前宣言されており、それらを上書きしようとしても機能しません。


Could you create a working TIO link for people to play with? (this is no doubt incomplete - maybe it needs compiler flags or something, I have no idea) TBH I don't even know how this is meant to take input...?
Jonathan Allan

Tio's tcc is not going to work. It doesn't get that this must be used as tcc -run rather than a separate compile and link phase.
Joshua

Maybe it's runnable via a shell through there then, bash is available (I know very little regarding either tcc or bash though). Otherwise I think you should give some detailed instructions to get people going (unless my personal lack of knowledge is the issue here - as I said I don't even know how your code gets any input, all I see is a puts and I thought that outputs.)
Jonathan Allan

Almost have a crack but I'm on mobile and mprotect is being a butt.
MD XF



4

brainfuck, 7 bytes cracked

,+[.,+]

Try it online!

Good luck. (doesn't work with every BF interpreter


Does your input work with any BF interpreter, including ones with different tape lengths? Does your input work locally, and not just on TIO?
Stephen

@StepHen any length of type afaik
Christopher


1
Does your intended solution work on TIO?
totallyhuman

@totallyhuman thanks, edited the comment so it looks pro. I don't know how to put non-printable input on TIO. I passed input on stdin from a C program with a single printf statement.
rexroni

3

JavaScript (ES6), 102 bytes (Cracked)

The previous version has a massive cheese. Let's try this again...

f=s=>{let r='',i=0;while(i<13)r+=!s[i][0]||s[i]=='Hello, World!'[i]||s[i++];return r};Object.freeze(f)

Try it online!

Author solution:

new Proxy({v:Array(13).fill(0)},{get:(o,p)=>['a','','Hello, World!'[p]][o.v[p]++]})

Usage:

var p=new Proxy({v:Array(13).fill(0)},{get:(o,p)=>['a','','Hello, World!'[p]][o.v[p]++]}) console.log(f(p))



3

Cubically, 159 bytes (Cracked)

+53$!7@6:2/1+551$?7@6:5+52$!7@66:3/1+552$?7@6:5+3/1+4$!7@6:5/1+3$?7@6:5+1/1+54$!7@6:3/1+552$?7@6:5+1/1+552$?7@6:5+52$!7@6:1/1+551$?7@6:5+1/1+3$!7@6:1/1+1$(@6)7

This will be pretty easy to those who are comfortable with Cubically. Try it online!


1
Is anybody comfortable with Cubically? :P
totallyhuman

@totallyhuman The language is actually pretty simple once you get used to it, and it's fun to use!
TehPers

@totallyhuman It looks like there aren't any turning instructions, so this seems like mostly just math with multiples of 9. Very, very convoluted math.
Robert Fraser

Cracked? I think I got the intended input, but it doesn't quite work, but I'm pretty sure it fails due to an interpreter bug. See my explanation in crack post. If I am right, then you were right that it was actually darn easy : )
rexroni

3

6502 machine code (C64), 51 53 bytes (Cracked)

00 C0                     .WORD $C000     ; load address
20 FD AE                  JSR $AEFD
20 EB B7                  JSR $B7EB
8A                        TXA
0A                        ASL A
45 14                     EOR $14
8D 21 C0                  STA $C021
45 15                     EOR $15
85 15                     STA $15
49 E5                     EOR #$E5
85 14                     STA $14
8E 18 D0                  STX $D018
A0 00                     LDY #$00
B1 14                     LDA ($14),Y
20 D2 FF                  JSR $FFD2
C8                        INY
C0 0E                     CPY #$0E
D0 F6                     BNE *-8
60                        RTS
C8 45 4C 4C 4F 2C 20 D7   .BYTE "Hello, W"
4F 52 4C 44 21 0D         .BYTE "orld!", $D

Online demo

Usage: SYS49152,[x],[n], where x is a 16bit unsigned integer and n is an 8bit unsigned integer.

Input is 52768 and 23 (SYS49152,52768,23)

The second parameter is directly written to D018, a control register of the VIC-II graphics chip. Using a suitable reference, you can deduce what to write there for setting lowercase mode without changing other modes and the address of the screen memory: $17, or decimal 23. With that, you can follow the arithmetics in the code, so the first parameter ends up with the correct string address in $14/$15 (little-endian). A more in-depth explanation can be found in the crack.

Screenshot

Invoked with wrong values, a crash is very likely.

For cracking, you might want to run it in a local installation of vice, so here's a BASIC loader to paste into the emulator (RUN it to place the program at $C000):

0fOa=49152to49202:rEb:pOa,b:nE
1dA32,253,174,32,235,183,138,10,69,20,141,33,192,69,21,133,21,73,229,133,20,142
2dA24,208,160,0,177,20,32,210,255,200,192,255,208,246,96,200,69,76,76,79,44,32
3dA215,79,82,76,68,33,13

Update: Added two bytes for the load address to make this an executable C64 PRG file in response to the discussion on meta


Are you sure you need to call the comma checking function at the beginning? I'm under the impression that b7eb does that check, too.
A Gold Man

b7eb calls aefd, but only after calling ad8a (parse number as float (!)(wtf)(MS)) and b7f7 (convert that float to 16bit unsigned int) -- so I have to first call aefd myself for consuming the first comma.
Felix Palmen

Cracked! Sweet sweet vengeance!
A Gold Man

@AGoldMan finally edited my post. Again, well done! Maybe I can come up with another C64 code that's a bit harder to crack (without being unfair), not sure yet :)
Felix Palmen

2

Python 2, 63 bytes, cracked

Just to get the ball rolling...

#coding:rot13
cevag vachg()==h'Hello, World!'naq'Hello, World!'

Try it online!


1
Is it generally accepted for the OP to crack submissions?
MD XF


3
That's interesting... I hadn't realized any "normal" language supports coding in ROT13 o_o
ETHproductions

13
@Arnauld And you're claiming PHP is a normal language?
NoOneIsHere

1
@NoOneIsHere Er... no. My bad. :-P
Arnauld



2

Jelly, 11 bytes (cracked)

sLƽ$Xṙ5O½Ọ

Try it online!

Intended input:

〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ



@HyperNeutrino Heh that was sneaky, given it lived for over half an hour. ;)
Erik the Outgolfer

Heh that's cuz I only saw it 10 minutes before seeing it ;P
HyperNeutrino



2

Python3, 192 bytes Cracked I guess

from sys import *
from numpy import *
e=enumerate
c='Hello World!'
w=eval(argv[1])
x=[ord(n)+2*i for i,n in e(c)]
print(''.join([c[int(sum([c*cos(n*i)for i,c in e(w)])+.01)]for i,n in e(x)]))

The text it reads is the first program argument: python3 hw.py '[1,2,3]'

Don't be lame and try to put a print("Hello World!") statement as the argument... it prints an error afterwards anyways (at least on the command line), so I don't think that should count. (Edit: somebody did exactly that)


4
Cracked. Lame crack, but unrestricted eval must be punished =)
Sisyphus


2

Lua 5.1, 44 bytes (Cracked)

s=...loadstring(#s>4+#s:gsub("%l","")or s)()

Note that Lua 5.1 is a different language than Lua 5.2 or Lua 5.3. "Try it online" doesn't have Lua 5.1. You can check your Lua version by running print(_VERSION). (There should be a solution in any implementation that uses PUC-Rio's Lua 5.1 core.)

As a test harness, you can use something like this:

function test(...)s=...loadstring(#s>4+#s:gsub("%l","")or s)()end

test[[
This is my input!
It can have multiple lines!
]]

Test harness on repl.it


2

C (GCC on TIO), 84 bytes golfed (Cracked)

#include<stdio.h>
main(x){scanf("%d",&x);printf("%2$s","Hello, World!\n",(void*)x);}

Here's an ungolfed version that works too:

#include <stdio.h>
int main(void)
{
    int x;
    scanf("%d",&x);

    printf("%2$s","Hello, World!\n",(void*)x);
}

2

JavaScript (ES6), 92 bytes (Cracked)

This simple string copy function seems to be really resisting you to copy any strings resembling Hello, World!...

f=s=>{let r='',i=0;while(i<13)r+=s[i]=='Hello, World!'[i]||s[i++];return r};Object.freeze(f)

Try it online!





2

JavaScript (ES6) 107 Bytes [Thanks Евгений Новиков] (Cracked)

i=r=>{for(e="",n=0;r.length>n;o=r.charCodeAt(++n),e+=String.fromCharCode(((3^o^19)<<1^15^13)<<1));return e}

Call on the i function using a string.

The console.log... is for testing purposes.

Try It Online!


Welcome to PPCG! You can save 8 bytes: (1) remove var, (2) () from one arrow-function argument, (3) replace return to eval("") (4) delete ; at the end. 110 bytes solution: pastebin.com/qwdm7fT7 Good luck
Евгений Новиков

Finally got 50 rep, so: Cracked
Voile
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.