diff --git a/Code/Gestor.py b/Code/Gestor.py index f79d8b8..95393c5 100644 --- a/Code/Gestor.py +++ b/Code/Gestor.py @@ -540,7 +540,7 @@ def beepExtendido(self, siNuestro=False): if self.configuracion.siSuenaJugada: if self.partida.numJugadas(): jg = self.partida.jugada(-1) - self.runSound.playLista(jg.listaSonidos()) + self.runSound.playLista(jg.listaSonidos(), siEsperar=True) elif self.configuracion.siSuenaBeep: self.runSound.playBeep() diff --git a/Code/GestorEntMaq.py b/Code/GestorEntMaq.py index abbc1ac..c700d30 100644 --- a/Code/GestorEntMaq.py +++ b/Code/GestorEntMaq.py @@ -845,7 +845,6 @@ def masJugada(self, jg, siNuestra): if not self.siPrimeraJugadaHecha: self.siPrimeraJugadaHecha = True - # Preguntamos al mono si hay movimiento if self.siTerminada(): jg.siJaqueMate = jg.siJaque jg.siAhogado = not jg.siJaque diff --git a/Code/Init.py b/Code/Init.py index 2ead1ae..81f0f11 100644 --- a/Code/Init.py +++ b/Code/Init.py @@ -1,5 +1,5 @@ DEBUG = False -VERSION = "10.10.1" +VERSION = "10.10.2" import os import sys @@ -16,7 +16,6 @@ from Code.QT import Gui def init(): - # Needed for feedback if not DEBUG: try: ferr = open("bug.log", "at") diff --git a/Code/QT/Gui.py b/Code/QT/Gui.py index 2b225d4..223b42c 100644 --- a/Code/QT/Gui.py +++ b/Code/QT/Gui.py @@ -63,9 +63,8 @@ def lanzaGUI(procesador): nico = QTVarios.rondoPuntos() for k, nombre, porc, author in li: - rotulo = nombre - if porc != "100": - rotulo += " (%s%%)" % porc + if int(porc) < 80: + nombre += " (%s%%)" % porc menu.opcion(k, nombre, nico.otro()) resp = menu.lanza() if resp: diff --git a/Code/QT/InfoBase.py b/Code/QT/InfoBase.py index 01cd7c6..e7bf18c 100644 --- a/Code/QT/InfoBase.py +++ b/Code/QT/InfoBase.py @@ -23,7 +23,7 @@ def __init__(self): def listaMotores(self, bloque): li = [ - ["Acqua 20180918", "Giovanni Di Maria", "http://www.elektrosoft.it/scacchi/acqua/acqua.asp"], + ["Acqua 20160918", "Giovanni Di Maria", "http://www.elektrosoft.it/scacchi/acqua/acqua.asp"], ["Tarrasch ToyEngine Beta V0.905", "Bill Forster", "http://www.triplehappy.com/"], ["Rocinante 2.0", "Antonio Torrecillas", "http://sites.google.com/site/barajandotrebejos/"], ["Roce 0.0390", "Roman Hartmann", "http://www.rocechess.ch/rocee.html"], @@ -32,7 +32,7 @@ def listaMotores(self, bloque): ["Clarabit 1.00", "Salvador Pallares Bejarano", "http://sapabe.googlepages.com"], ["Lime v 66", "Richard Allbert", "http://www.geocities.com/taciturn_lemon"], ["Chispa 4.0.3", "Federico Corigliano", "http://chispachess.blogspot.com/"], - ["Gaia 3.5", "Jean-Francois Romang, David Rabel", "http://gaiachess.free.fr"], + ["Gaďa 3.5", "Jean-Francois Romang, David Rabel", "http://gaiachess.free.fr"], ["Simplex 0.9.8", "Antonio Torrecillas", "http://sites.google.com/site/barajandotrebejos/"], ["Greko 12.9", "Vladimir Medvedev", "http://sourceforge.net/projects/greko"], ["Pawny 0.3.1", "Mincho Georgiev", "http://pawny.netii.net/"], @@ -44,7 +44,7 @@ def listaMotores(self, bloque): ["Alaric 707", "Peter Fendrich", "http://alaric.fendrich.se/index.html"], ["Cyrano 06B17", "Harald Johnsen", "http://sites.estvideo.net/tipunch/cyrano/"], ["Daydreamer 1.75 JA", "Aaron Becker", "http://github.com/AaronBecker/daydreamer/downloads"], - ["Godel 3.4.9", "Juan Manuel Vazquez", "https://sites.google.com/site/godelchessengine"], + ["Gödel 3.4.9", "Juan Manuel Vazquez", "https://sites.google.com/site/godelchessengine"], ["Rhetoric 1.4.3", "Alberto Sanjuan", "http://www.chessrhetoric.com/"], ["Cheng 4 0.39", "Martin Sedlák", "http://www.vlasak.biz/cheng"], ["Glaurung 2.2 JA", "Tord RomsTad", "http://www.glaurungchess.com/"], @@ -63,6 +63,7 @@ def listaMotores(self, bloque): ["Gull 3", "Vadim Demichev", "https://sourceforge.net/projects/gullchess/"], ] li.sort(key=lambda x: x[0]) + # Gaia y godel con dos puntos # for n, a, u in li: # k = n.split(" ")[0].lower() # p rint ' ( "%s", "%s", "%s", "%s" ),'%(k,a,n,u) diff --git a/Code/QT/PantallaDatabase.py b/Code/QT/PantallaDatabase.py new file mode 100644 index 0000000..c82177b --- /dev/null +++ b/Code/QT/PantallaDatabase.py @@ -0,0 +1,110 @@ +from PyQt4 import QtGui + +from Code import BookGuide +from Code import DBgames +from Code.QT import Colocacion +from Code.QT import Controles +from Code.QT import Iconos +from Code.QT import QTVarios +from Code.QT import WBG_Games +from Code.QT import WBG_InfoMove +from Code.QT import WBG_Summary + +class WBDatabase(QTVarios.WDialogo): + def __init__(self, wParent, procesador): + + icono = Iconos.DatabaseC() + extparam = "database" + titulo = _("Database of complete games") + QTVarios.WDialogo.__init__(self, wParent, titulo, icono, extparam) + + self.procesador = procesador + self.configuracion = procesador.configuracion + + self.dbGames = DBgames.DBgames(self.configuracion.ficheroDBgames) + + dicVideo = self.recuperarDicVideo() + + self.bookGuide = BookGuide.BookGuide(self) + self.wsummary = WBG_Summary.WSummary(procesador, self, self.dbGames, siMoves=False) + + self.wgames = WBG_Games.WGames(procesador, self, self.dbGames, self.wsummary, siMoves=False) + + self.registrarGrid(self.wsummary.grid) + self.registrarGrid(self.wgames.grid) + + self.ultFocus = None + + self.tab = Controles.Tab() + self.tab.nuevaTab(self.wgames, _("Games")) + self.tab.nuevaTab(self.wsummary, _("Summary")) + self.tab.dispatchChange(self.tabChanged) + self.tab.ponTipoLetra(puntos=procesador.configuracion.puntosTB) + + self.infoMove = WBG_InfoMove.WInfomove(self, siMoves=False) + + self.splitter = splitter = QtGui.QSplitter() + splitter.addWidget(self.tab) + splitter.addWidget(self.infoMove) + + layout = Colocacion.H().control(splitter).margen(5) + + self.setLayout(layout) + + self.recuperarVideo(anchoDefecto=1200, altoDefecto=600) + if not dicVideo: + dicVideo = { + 'SPLITTER': [800, 380], + 'TREE_1': 25, + 'TREE_2': 25, + 'TREE_3': 50, + 'TREE_4': 661, + } + sz = dicVideo.get("SPLITTER", None) + if sz: + self.splitter.setSizes(sz) + + self.inicializa() + + def cambiaDBgames(self, fich): + self.dbGames.close() + self.dbGames = DBgames.DBgames(self.configuracion.ficheroDBgames) + self.setdbGames() + self.wsummary.actualizaPV("") + + def setdbGames(self): + self.tab.ponValor(0, self.dbGames.rotulo()) + self.wsummary.setdbGames(self.dbGames) + self.wgames.setdbGames(self.dbGames) + + def tabChanged(self, ntab): + QtGui.QApplication.processEvents() + tablero = self.infoMove.tablero + tablero.desactivaTodas() + if ntab == 0: + self.wgames.actualiza() + else: + self.wsummary.gridActualiza() + + def inicializa(self): + self.wsummary.setInfoMove(self.infoMove) + self.wgames.setInfoMove(self.infoMove) + self.setdbGames() + self.wsummary.actualizaPV("") + self.wgames.actualiza(True) + + def terminar(self): + self.salvar() + self.accept() + + def salvar(self): + dicExten = { + "SPLITTER": self.splitter.sizes(), + } + + self.guardarVideo(dicExten) + + self.dbGames.close() + + def closeEvent(self, event): + self.salvar() diff --git a/Code/QT/PantallaManualSave.py b/Code/QT/PantallaManualSave.py new file mode 100644 index 0000000..3602b07 --- /dev/null +++ b/Code/QT/PantallaManualSave.py @@ -0,0 +1,492 @@ +import os +import encodings +import codecs +from PyQt4 import QtGui, QtCore + +from Code import ControlPosicion +from Code import XVoyager +from Code import Partida +from Code.QT import Colocacion +from Code.QT import Controles +from Code.QT import Iconos +from Code.QT import QTVarios +from Code.QT import Tablero +from Code.QT import Columnas +from Code.QT import Grid +from Code.QT import Delegados +from Code.QT import QTUtil2 + +class WManualSave(QTVarios.WDialogo): + def __init__(self, procesador): + + icono = Iconos.ManualSave() + extparam = "manualsave" + titulo = _("Save positions to FNS/PGN") + QTVarios.WDialogo.__init__(self, procesador.pantalla, titulo, icono, extparam) + + self.procesador = procesador + self.configuracion = procesador.configuracion + + self.posicion = ControlPosicion.ControlPosicion() + self.posicion.posInicial() + + self.gestor_motor = None + self.pgn = None + self.fns = None + + self.li_labels = [ + ["Site", ""], + ["Event", ""], + ["Date", ""], + ["White", ""], + ["Black", ""], + ["WhiteElo", ""], + ["BlackElo", ""], + ["Result", ""], + ] + self.li_labels.extend([["", ""] for x in range(10)]) + + self.li_analysis = [] + self.analyzing = False + + self.partida = None + + # Toolbar + liAcciones = ( + (_("Close"), Iconos.MainMenu(), self.terminar), None, + (_("External engines"), Iconos.Motores(), self.ext_engines), None, + ) + tb = Controles.TBrutina(self, liAcciones) + + # Board + botones + solucion + boton salvado + ## + bt_change_position = Controles.PB(self, " " + _("Change position"), self.change_position, plano=False) + bt_change_position.ponIcono(Iconos.Datos(), 24) + ## + conf_tablero = self.configuracion.confTablero("MANUALSAVE", 32) + self.tablero = Tablero.Tablero(self, conf_tablero) + self.tablero.crea() + self.tablero.ponerPiezasAbajo(True) + ## + lybt, bt = QTVarios.lyBotonesMovimiento(self, "", siLibre=False, tamIcon=24, siTiempo=False) + ## + self.em_solucion = Controles.EM(self, siHTML=False).altoMinimo(40).capturaCambios(self.reset_partida) + ## + self.bt_solucion = Controles.PB(self, " " + _("Save solution"), self.savesolucion, plano=False).ponIcono(Iconos.Grabar(), 24) + self.bt_editar = Controles.PB(self, " " + _("Edit"), self.editar_solucion, plano=False).ponIcono(Iconos.PlayGame()) + ly = Colocacion.V().control(self.em_solucion).control(self.bt_editar) + gb = Controles.GB(self, _("Solution"), ly) + ### + lybtp = Colocacion.H().control(bt_change_position).espacio(20).control(self.bt_solucion) + lyT = Colocacion.V().otro(lybtp).control(self.tablero).otro(lybt).control(gb) + gb_left = Controles.GB(self, "", lyT) + + # Ficheros PGN + FNS + lb_pgn = Controles.LB(self, _("PGN") + ": ") + self.bt_pgn = Controles.PB(self, "", self.pgn_select, plano=False).anchoMinimo(300) + bt_no_pgn = Controles.PB(self, "", self.pgn_unselect).ponIcono(Iconos.Delete()).anchoFijo(16) + lb_fns = Controles.LB(self, _("FNS") + ": ") + self.bt_fns = Controles.PB(self, "", self.fns_select, plano=False).anchoMinimo(300) + bt_no_fns = Controles.PB(self, "", self.fns_unselect).ponIcono(Iconos.Delete()).anchoFijo(16) + ## Codec + lb_codec = Controles.LB(self, _("Write with the codec") + ": ") + liCodecs = [k for k in set(v for k, v in encodings.aliases.aliases.iteritems())] + liCodecs.sort() + liCodecs = [(k, k) for k in liCodecs] + liCodecs.insert(0, ("%s: %s" % (_("By default"), _("UTF-8")), "default")) + self.codec = "default" + self.cb_codecs = Controles.CB(self, liCodecs, self.codec) + ### + ly0 = Colocacion.G().control(lb_pgn, 0, 0).control(self.bt_pgn, 0, 1).control(bt_no_pgn, 0, 2) + ly0.control(lb_fns, 1, 0).control(self.bt_fns, 1, 1).control(bt_no_fns, 1, 2) + ly1 = Colocacion.H().control(lb_codec).control(self.cb_codecs).relleno(1) + ly = Colocacion.V().otro(ly0).otro(ly1) + gb_files = Controles.GB(self, _("File to save"), ly) + + # Labels + correlativo + oColumnas = Columnas.ListaColumnas() + oColumnas.nueva("LABEL", _("Label"), 80, edicion=Delegados.LineaTextoUTF8(), siCentrado=True) + oColumnas.nueva("VALUE", _("Value"), 280, edicion=Delegados.LineaTextoUTF8()) + self.grid_labels = Grid.Grid(self, oColumnas, siEditable=True, xid=1) + n = self.grid_labels.anchoColumnas() + self.grid_labels.setFixedWidth(n + 20) + self.registrarGrid(self.grid_labels) + + ## + lb_number = Controles.LB(self, _("Correlative number")+": ") + self.sb_number = Controles.SB(self, 0, 0, 99999999).tamMaximo(50) + lb_number_help = Controles.LB(self, _("Replace symbol # in Value column (#=3, ###=003)")) + lb_number_help.setWordWrap(True) + + ly_number = Colocacion.H().control(lb_number).control(self.sb_number).control(lb_number_help, 4) + + ly = Colocacion.V().control(self.grid_labels).otro(ly_number) + gb_labels = Controles.GB(self, _("PGN labels"), ly) + + # Analysis + grid + start/stop + multiPV + self.bt_start = Controles.PB(self, "", self.start).ponIcono(Iconos.Pelicula_Seguir(), 32) + self.bt_stop = Controles.PB(self, "", self.stop).ponIcono(Iconos.Pelicula_Pausa(), 32) + self.bt_stop.hide() + + lb_engine = Controles.LB(self, _("Engine") + ":") + liMotores = self.configuracion.comboMotoresCompleto() + self.cb_engine = Controles.CB(self, liMotores, self.configuracion.tutor.clave).capturaCambiado(self.reset_motor) + + lb_multipv = Controles.LB(self, _("Multi PV")+": ") + self.sb_multipv = Controles.SB(self, 1, 1, 500).tamMaximo(50) + ## + oColumnas = Columnas.ListaColumnas() + oColumnas.nueva("PDT", _("Evaluation"), 100, siCentrado=True) + oColumnas.nueva("PGN", _("Solution"), 360) + self.grid_analysis = Grid.Grid(self, oColumnas, siSelecFilas=True) + self.registrarGrid(self.grid_analysis) + ## + lb_analysis_help = Controles.LB(self, _("Double click to send analysis line to solution")) + ### + ly_lin1 = Colocacion.H().control(self.bt_start).control(self.bt_stop).control(lb_engine).control(self.cb_engine) + ly_lin1.relleno(1).control(lb_multipv).control(self.sb_multipv) + ly = Colocacion.V().otro(ly_lin1).control(self.grid_analysis).control(lb_analysis_help) + gb_analysis = Controles.GB(self, _("Analysis"), ly) + + # ZONA + splitter_right = QtGui.QSplitter(self) + splitter_right.setOrientation(QtCore.Qt.Vertical) + splitter_right.addWidget(gb_files) + splitter_right.addWidget(gb_labels) + splitter_right.addWidget(gb_analysis) + + self.registrarSplitter(splitter_right, "RIGHT") + ## + splitter = QtGui.QSplitter(self) + splitter.addWidget(gb_left) + splitter.addWidget(splitter_right) + + self.registrarSplitter(splitter, "ALL") + + layout = Colocacion.V().control(tb).control(splitter).margen(5) + + self.setLayout(layout) + + self.inicializa() + + def inicializa(self): + self.recuperarVideo(anchoDefecto=758, altoDefecto=596) + + dic_vars = self.configuracion.leeVariables("manual_save") + if dic_vars: + fen = dic_vars.get("FEN", self.posicion.fen()) + self.posicion.leeFen(fen) + + self.em_solucion.ponTexto(dic_vars.get("SOLUTION", "")) + + self.pgn = dic_vars.get("PGN", "") + self.bt_pgn.ponTexto(self.pgn) + + self.fns = dic_vars.get("FNS", "") + self.bt_fns.ponTexto(self.fns) + + self.cb_codecs.ponValor(dic_vars.get("CODEC","")) + + self.li_labels = dic_vars.get("LI_LABELS", []) + + self.sb_number.ponValor(dic_vars.get("NUMBER",0)) + + self.cb_engine.ponValor(dic_vars.get("ENGINE", "stockfish")) + + self.sb_multipv.ponValor(dic_vars.get("MULTIPV", 1)) + + self.tablero.ponPosicion(self.posicion) + self.reset_motor() + self.test_save_solucion() + + def test_save_solucion(self): + self.bt_solucion.setDisabled((not self.pgn) and (not self.fns)) + + def finaliza(self): + self.analyzing = False + self.gestor_motor.terminar() + self.guardarVideo() + + dic_vars = { + "FEN": self.posicion.fen(), + "SOLUTION": self.em_solucion.texto(), + "PGN": self.pgn, + "FNS": self.fns, + "CODEC": self.cb_codecs.valor(), + "LI_LABELS": self.li_labels, + "NUMBER": self.sb_number.valor(), + "ENGINE": self.cb_engine.valor(), + "MULTIPV": self.sb_multipv.valor() + } + + self.configuracion.escVariables("manual_save", dic_vars) + + def procesarTB(self): + getattr(self, self.sender().clave)() + + def gridNumDatos(self, grid): + return len(self.li_labels if grid.id == 1 else self.li_analysis) + + def gridPonValor(self, grid, fila, oColumna, valor): + n = 0 if oColumna.clave == "LABEL" else 1 + self.li_labels[fila][n] = valor + + def gridDato(self, grid, fila, oColumna): + if grid.id == 1: + n = 0 if oColumna.clave == "LABEL" else 1 + return self.li_labels[fila][n] + else: + if oColumna.clave == "PDT": + return self.li_analysis[fila].ms_pdt + else: + return self.li_analysis[fila].ms_pgn + + def gridDobleClick(self, grid, fila, oColumna): + if grid == self.grid_analysis: + self.em_solucion.ponTexto(self.li_analysis[fila].ms_pgn) + self.reset_partida() + self.grid_analysis.goto(fila, 0) + + def start(self): + self.sb_multipv.setDisabled(True) + self.cb_engine.setDisabled(True) + self.analyzing = True + self.sb_multipv.setDisabled(True) + self.show_stop() + multipv = self.sb_multipv.valor() + self.gestor_motor.actMultiPV(multipv) + partida = Partida.Partida(self.posicion) + self.gestor_motor.ac_inicio(partida) + QtCore.QTimer.singleShot(1000, self.lee_analisis) + + def lee_analisis(self): + if self.analyzing: + mrm = self.gestor_motor.ac_estado() + li = [] + for rm in mrm.liMultiPV: + partida = Partida.Partida(self.posicion) + partida.leerPV(rm.pv) + partida.ms_pgn = partida.pgnBaseRAW() + partida.ms_pdt = rm.abrTextoPDT() + li.append(partida) + self.li_analysis = li + self.grid_analysis.refresh() + + QtCore.QTimer.singleShot(2000, self.lee_analisis) + + def stop(self): + self.sb_multipv.setDisabled(False) + self.cb_engine.setDisabled(False) + self.analyzing = False + self.show_start() + if self.gestor_motor: + self.gestor_motor.ac_final(0) + + def pgn_select(self): + dirSalvados = self.configuracion.dirSalvados + path = QTUtil2.salvaFichero(self, _("File to save"), dirSalvados, _("File") + " PGN (*.pgn)", False) + if path: + carpeta, fichero = os.path.split(path) + if carpeta != self.configuracion.dirSalvados: + self.configuracion.dirSalvados = carpeta + self.configuracion.graba() + self.pgn = path + self.bt_pgn.ponTexto(path) + self.test_save_solucion() + + def pgn_unselect(self): + self.pgn = None + self.bt_pgn.ponTexto("") + self.test_save_solucion() + + def fns_select(self): + dir_inicial = self.configuracion.dirPersonalTraining if self.fns is None else os.path.dirname(self.fns) + path = QTUtil2.salvaFichero(self, _("File to save"), dir_inicial, _("File") + " FNS (*.fns)", False) + if path: + self.fns = path + self.bt_fns.ponTexto(path) + self.test_save_solucion() + + def fns_unselect(self): + self.fns = None + self.bt_fns.ponTexto("") + self.test_save_solucion() + + def editar_solucion(self): + self.reset_motor() + pc = self.crea_partida() + pc = self.procesador.gestorPartida(self, pc, False) + if pc: + self.posicion = pc.iniPosicion + self.em_solucion.ponTexto(pc.pgnBaseRAW()) + + def savesolucion(self): + def open_file(fich): + codec = self.cb_codecs.valor() + if codec == "default": + codec = "UTF-8" + try: + f = codecs.open(fich, "ab", encoding=codec) + except: + QTUtil2.mensError(self, _("Error opening file %s") % fich) + f = None + return f + + def write_file(fich, f, txt, quien): + time = 0.5 if (self.pgn and self.fns) else 1.0 + try: + f.write(txt) + QTUtil2.mensajeTemporal(self,"%s: %s" %(quien, _("Saved")), time) + except: + QTUtil2.mensError(self, _("Error writing to file %s") % fich) + f.close() + + pc = self.crea_partida() + + if self.pgn: + f = open_file(self.pgn) + if not f: + return + txt = pc.pgn() +"\n\n" + write_file(self.pgn, f, txt, _("PGN")) + + if self.fns: + f = open_file(self.fns) + if not f: + return + fen = self.posicion.fen() + li = ['%s: %s'%(k,v) for k,v in pc.liTags if k != "FEN"] + labels = ",".join(li) + solucion = self.em_solucion.texto() + linea = "%s|%s|%s\n" % (fen, labels, solucion) + write_file(self.fns, f, linea, _("FNS")) + + def change_position(self): + prev = self.analyzing + self.stop() + fen = XVoyager.xVoyagerFEN(self, self.configuracion, self.posicion.fen()) + if fen is not None: + self.em_solucion.ponTexto("") + self.posicion.leeFen(fen) + + self.tablero.ponPosicion(self.posicion) + + self.sb_number.ponValor(self.sb_number.valor()+1) + if prev: + self.start() + + def reset_motor(self): + self.analyzing = False + if self.gestor_motor: + self.gestor_motor.terminar() + self.stop() + + clave = self.cb_engine.valor() + conf_motor = self.configuracion.buscaRivalExt(clave) + + multipv = self.sb_multipv.valor() + self.gestor_motor = self.procesador.creaGestorMotor(conf_motor, 0, 0, siMultiPV=multipv>1) + + def ext_engines(self): + if self.analyzing: + return + self.procesador.motoresExternos() + valor = self.cb_engine.valor() + liMotores = self.configuracion.comboMotoresCompleto() + motor = self.configuracion.tutor.clave + for clave, rotulo in liMotores: + if clave == valor: + motor = valor + break + self.cb_engine.rehacer(liMotores, motor) + self.reset_motor() + self.show_start() + + def show_start(self): + self.bt_stop.hide() + self.bt_start.show() + + def show_stop(self): + self.bt_start.hide() + self.bt_stop.show() + + def terminar(self): + self.finaliza() + self.accept() + + def closeEvent(self, event): + self.finaliza() + + def crea_partida(self): + li_tags = [] + number = self.sb_number.valor() + for key, value in self.li_labels: + if key and value: + if "#" in value: + n = value.count("#") + if n > 1: + t = "#"*n + if t in value: + value = value.replace(t, "%0" + "%d"%n + "d") + value = value % number + else: + value = value.replace("#", str(number), 1) + else: + value = value.replace("#", str(number)) + li_tags.append((key, value)) + li_tags.append(("FEN", self.posicion.fen())) + li = ['[%s "%s"]\n'%(k,v) for k,v in li_tags] + txt = "".join(li) + pc = Partida.PartidaCompleta(self.posicion) + txt += "\n%s" % self.em_solucion.texto() + pc.readPGN(self.configuracion, txt) + return pc + + def reset_partida(self): + if self.partida: + self.partida = None + self.tablero.ponPosicion(self.posicion) + + def test_partida(self): + if not self.partida: + self.partida = self.crea_partida() + self.tablero.ponPosicion(self.posicion) + self.partida.mover_jugada = -1 + + def MoverInicio(self): + self.test_partida() + self.partida.mover_jugada = -1 + self.tablero.ponPosicion(self.posicion) + + def MoverAtras(self): + self.test_partida() + if self.partida.mover_jugada >= 0: + self.partida.mover_jugada -= 1 + if self.partida.mover_jugada == -1: + self.tablero.ponPosicion(self.posicion) + else: + jg = self.partida.jugada(self.partida.mover_jugada) + self.tablero.ponPosicion(jg.posicion) + self.tablero.ponFlechaSC(jg.desde, jg.hasta) + + def MoverAdelante(self): + self.test_partida() + if self.partida.mover_jugada < (self.partida.numJugadas()-1): + self.partida.mover_jugada += 1 + jg = self.partida.jugada(self.partida.mover_jugada) + self.tablero.ponPosicion(jg.posicion) + self.tablero.ponFlechaSC(jg.desde, jg.hasta) + return True + return False + + def MoverFinal(self): + self.test_partida() + if self.partida.numJugadas(): + self.partida.mover_jugada = self.partida.numJugadas()-1 + jg = self.partida.jugada(self.partida.mover_jugada) + self.tablero.ponPosicion(jg.posicion) + self.tablero.ponFlechaSC(jg.desde, jg.hasta) + +def manual_save(procesador): + w = WManualSave(procesador) + w.exec_() diff --git a/Code/QT/PantallaPGN.py b/Code/QT/PantallaPGN.py index f35671e..dad5a60 100644 --- a/Code/QT/PantallaPGN.py +++ b/Code/QT/PantallaPGN.py @@ -751,7 +751,7 @@ def aceptar(self): if campo == "PLIES": valor = valor.strip() if valor.isdigit(): - valor = "%d" % int(valor) + valor = "%d" % int(valor) # fonkap patch %3d -> %d if par0: npar += 1 if par1: @@ -791,11 +791,11 @@ def where(self): else: valor = valor.upper() if valor.isupper(): - where += "UPPER(%s) %s '%s'" % (campo, condicion, valor) - elif valor.isdigit(): - where += "CAST(%s as decimal) %s %s" % (campo, condicion, valor) + where += "UPPER(%s) %s '%s'" % (campo, condicion, valor) # fonkap patch + elif valor.isdigit(): # fonkap patch + where += "CAST(%s as decimal) %s %s" % (campo, condicion, valor) # fonkap patch else: - where += "%s %s '%s'" % (campo, condicion, valor) + where += "%s %s '%s'" % (campo, condicion, valor) # fonkap patch if par1: where += ")" return where diff --git a/Code/RunKibitzer.py b/Code/RunKibitzer.py index 2096e67..1840bb7 100644 --- a/Code/RunKibitzer.py +++ b/Code/RunKibitzer.py @@ -15,6 +15,7 @@ from Code.QT import Iconos from Code.QT import Piezas from Code.QT import QTUtil +from Code.QT import QTUtil2 from Code.QT import QTVarios from Code.QT import Tablero from Code import Util @@ -62,7 +63,7 @@ def __init__(self, cpu): oColumnas.nueva("BESTMOVE", _("Alternatives"), 80, siCentrado=True) oColumnas.nueva("EVALUATION", _("Evaluation"), 85, siCentrado=True) oColumnas.nueva("MAINLINE", _("Main line"), 300) - self.grid = Grid.Grid(self, oColumnas, dicVideo=dicVideo) + self.grid = Grid.Grid(self, oColumnas, dicVideo=dicVideo, siSelecFilas=True) self.lbDepth = Controles.LB(self) @@ -70,7 +71,7 @@ def __init__(self, cpu): (_("Quit"), Iconos.Kibitzer_Terminar(), self.terminar), (_("Continue"), Iconos.Kibitzer_Continuar(), self.play), (_("Pause"), Iconos.Kibitzer_Pausa(), self.pause), - (_("The best solution found by the engine is saved to the clipboard"), Iconos.MoverGrabar(), self.portapapelesUltJug), + (_("The line selected is saved to the clipboard"), Iconos.MoverGrabar(), self.portapapelesJugSelected), (_("Analyze only color"), Iconos.P_16c(), self.color), (_("Board"), Iconos.Tablero(), self.confTablero), ("%s: %s" % (_("Enable"), _("window on top")), Iconos.Top(), self.windowTop), @@ -180,6 +181,7 @@ def lanzaMotor(self): self.lock = False configMotor = self.cpu.configMotor + self.nom_engine = configMotor.nombre exe = configMotor.ejecutable() args = configMotor.argumentos() absexe = os.path.abspath(exe) @@ -238,21 +240,21 @@ def finalizar(self): self.motor.close() self.motor = None - def portapapelesUltJug(self): - if self.liData: # and self.siAnalizar(): - rm = self.liData[0] + def portapapelesJugSelected(self): + if self.liData: + n = self.grid.recno() + if n < 0 or n >= len(self.liData): + n = 0 + rm = self.liData[n] p = Partida.Partida(fen=self.fen) p.leerPV(rm.pv) + jg0 = p.jugada(0) + jg0.comentario = rm.abrTextoPDT() + " " + self.nom_engine pgn = p.pgnBaseRAW() resp = '["FEN", "%s"]\n\n%s' % (self.fen, pgn) QTUtil.ponPortapapeles(resp) + QTUtil2.mensajeTemporal(self, _("The line selected is saved to the clipboard"), 0.7) - # li = pgn.split(" ") - # n = 2 if "..." in pgn else 1 - # resp = " ".join(li[0:n]) - # # resp += " {%s D%s} " % (rm.abrTexto(), rm.depth) - # if len(li) > n: - # resp += " ".join(li[n:]) def guardarVideo(self): dic = {} diff --git a/Code/Sonido.py b/Code/Sonido.py index df5d090..9b45fda 100644 --- a/Code/Sonido.py +++ b/Code/Sonido.py @@ -7,7 +7,7 @@ from Code.QT import QTUtil from Code import Util from Code import VarGen -from Code import XRun +from Code import XRunSound class RunSound: def __init__(self): @@ -194,85 +194,52 @@ def recorta(self, centDesde, centHasta): self.centesimas = centHasta - centDesde -class Orden: - def __init__(self): - self.clave = "" - self.dv = {} - - def ponVar(self, nombre, valor): - self.dv[nombre] = valor - - def bloqueEnvio(self): - self.dv["__CLAVE__"] = self.clave - return self.dv class Replay: - DATABASE = "D" - PLAY_ESPERA = "P" - PLAY_SINESPERA = "N" - STOP = "S" - TERMINAR = "T" - def __init__(self): + self.io = XRunSound.IO() + self.io.start() - fdb = VarGen.configuracion.ficheroTemporal("db") - - self.ipc = Util.IPC(fdb, True) - - orden = Orden() - orden.clave = self.DATABASE + orden = XRunSound.Orden() + orden.clave = XRunSound.DATABASE orden.ponVar("FICHERO", VarGen.configuracion.ficheroSounds) orden.ponVar("TABLA", "general") - self.escribe(orden) + self.push(orden) self.siSonando = False - self.popen = XRun.run_lucas("-sound", fdb) - - def escribe(self, orden): - self.ipc.push(orden.bloqueEnvio()) + def push(self, orden): + self.io.push(orden.bloqueEnvio()) def terminar(self): try: - orden = Orden() - orden.clave = self.TERMINAR - self.escribe(orden) - self.ipc.close() - self.close() + orden = XRunSound.Orden() + orden.clave = XRunSound.TERMINAR + self.push(orden) + self.io.close() except: pass - def close(self): - if self.popen: - try: - self.popen.terminate() - self.popen = None - except: - pass - - # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= def playClave(self, clave, siEspera): - orden = Orden() - orden.clave = self.PLAY_ESPERA if siEspera else self.PLAY_SINESPERA + orden = XRunSound.Orden() + orden.clave = XRunSound.PLAY_ESPERA if siEspera else XRunSound.PLAY_SINESPERA orden.ponVar("CLAVE", clave) self.siSonando = True - self.escribe(orden) + self.push(orden) - # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= def playLista(self, lista, siEspera): - orden = Orden() - orden.clave = self.PLAY_ESPERA if siEspera else self.PLAY_SINESPERA + orden = XRunSound.Orden() + orden.clave = XRunSound.PLAY_ESPERA if siEspera else XRunSound.PLAY_SINESPERA orden.ponVar("LISTACLAVES", lista) self.siSonando = True - self.escribe(orden) + self.push(orden) - # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= def stop(self): if self.siSonando: - orden = Orden() - orden.clave = self.STOP + orden = XRunSound.Orden() + orden.clave = XRunSound.STOP self.siSonando = False - self.escribe(orden) + self.push(orden) diff --git a/Code/TrListas.py b/Code/TrListas.py index 2533bbf..40eea43 100644 --- a/Code/TrListas.py +++ b/Code/TrListas.py @@ -2033,7 +2033,7 @@ def dicNAGs(): return dicNAG def dicTraining(): - return { + d = { "Checkmates by Eduardo Sadier": _("Checkmates by Eduardo Sadier"), "145307 positions of mate in two": _("50000 positions of mate in two").replace("50000", "145307"), @@ -2045,13 +2045,6 @@ def dicTraining(): "The kick of the knight": _("The kick of the knight"), "Checkmates in GM games": _("Checkmates in GM games"), - "Mate in 1": _("Mate in 1"), - "Mate in 2": _("Mate in 2"), - "Mate in 3": _("Mate in 3"), - "Mate in 4": _("Mate in 4"), - "Mate in 5": _("Mate in 5"), - "Mate in 6": _("Mate in 6"), - "Mate in 7": _("Mate in 7"), "Endgames by Rui Grafino": _("Endgames by Rui Grafino"), "Famous Studies": _("Famous Studies"), @@ -2135,9 +2128,12 @@ def dicTraining(): "Attacking Defender": _("Attacking Defender"), "All tactics": _("All tactics"), - } + for n in range(1,10): + d["Mate in %d" % n] = _X(_("Mate in %1"), str(n)) + return d + def STS(): return [_("Undermining"), _("Open Files and Diagonals"), diff --git a/Code/RunSound.py b/Code/XRunSound.py similarity index 69% rename from Code/RunSound.py rename to Code/XRunSound.py index 13cf6a2..6e834db 100644 --- a/Code/RunSound.py +++ b/Code/XRunSound.py @@ -5,6 +5,8 @@ import pyaudio +from PyQt4 import QtCore + from Code import Util DATABASE = "D" @@ -13,12 +15,21 @@ STOP = "S" TERMINAR = "T" + class Orden: def __init__(self): self.clave = "" self.dv = {} -class Replay: + def ponVar(self, nombre, valor): + self.dv[nombre] = valor + + def bloqueEnvio(self): + self.dv["__CLAVE__"] = self.clave + return self.dv + + +class RunReplay: def __init__(self): self.CHUNK = 1024 @@ -98,14 +109,16 @@ def play(self, io, liClaves): nPos = 0 orden = None + t0 = time.time() for n in range(nTam): hasta = nPos + self.CHUNK stream.write(frames[nPos:hasta]) nPos = hasta - orden = io.recibe() - if orden: - if orden.clave in (STOP, PLAY_SINESPERA, TERMINAR): + t1 = time.time() + if (t1-t0) > 0.2: + if io.orden_acabar(): break + t0 = t1 if orden is None: stream.stop_stream() @@ -114,13 +127,29 @@ def play(self, io, liClaves): return orden -class IO: - def __init__(self, xcpu, fdb): - self.ipc = Util.IPC(fdb, False) - self.xcpu = xcpu - def recibe(self): - dv = self.ipc.pop() +class IO(QtCore.QThread): + def __init__(self): + QtCore.QThread.__init__(self) + self.ipc = [] + self.mutex = QtCore.QMutex() + self.continuar = True + + def push(self, orden): + self.mutex.lock() + self.ipc.append(orden) + self.mutex.unlock() + + def orden_acabar(self): + for orden in self.ipc: + if orden["__CLAVE__"] in (STOP, PLAY_SINESPERA, TERMINAR): + return True + return False + + def pop(self): + self.mutex.lock() + dv = self.ipc.pop(0) if self.ipc else None + self.mutex.unlock() if not dv: return None @@ -129,26 +158,22 @@ def recibe(self): orden.dv = dv return orden + def close(self): + if self.continuar: + self.continuar = False + self.wait() + def run(self): + xreplay = RunReplay() orden = None - while True: + while self.continuar: if orden: if orden.clave == TERMINAR: - self.ipc.close() break - orden = self.xcpu.procesa(self, orden) + orden = xreplay.procesa(self, orden) if orden: continue - orden = self.recibe() + orden = self.pop() if orden is None: - time.sleep(0.1) - -def run(fdb): - ferr = open("./bug.sound", "at") - sys.stderr = ferr - - r = Replay() - io = IO(r, fdb) - io.run() - - ferr.close() + self.msleep(500) + self.continuar = False diff --git a/Engines/Linux/cheng/cheng.png b/Engines/Linux/cheng/cheng.png new file mode 100644 index 0000000..68d3b19 Binary files /dev/null and b/Engines/Linux/cheng/cheng.png differ diff --git a/Engines/Linux/cheng/cheng2015.cb b/Engines/Linux/cheng/cheng2015.cb new file mode 100644 index 0000000..8318362 Binary files /dev/null and b/Engines/Linux/cheng/cheng2015.cb differ diff --git a/Engines/Linux/cheng/cheng4_linux_x64 b/Engines/Linux/cheng/cheng4_linux_x64 new file mode 100644 index 0000000..e162ed9 Binary files /dev/null and b/Engines/Linux/cheng/cheng4_linux_x64 differ diff --git a/Engines/Linux/cheng/chenglogo.jpg b/Engines/Linux/cheng/chenglogo.jpg new file mode 100644 index 0000000..c0f254c Binary files /dev/null and b/Engines/Linux/cheng/chenglogo.jpg differ diff --git a/Engines/Linux/cheng/chengu.png b/Engines/Linux/cheng/chengu.png new file mode 100644 index 0000000..3ccc788 Binary files /dev/null and b/Engines/Linux/cheng/chengu.png differ diff --git a/Engines/Linux/cheng/logo.bmp b/Engines/Linux/cheng/logo.bmp new file mode 100644 index 0000000..9dc10f6 Binary files /dev/null and b/Engines/Linux/cheng/logo.bmp differ diff --git a/Engines/Linux/cheng/readme.txt b/Engines/Linux/cheng/readme.txt new file mode 100644 index 0000000..e8b150d --- /dev/null +++ b/Engines/Linux/cheng/readme.txt @@ -0,0 +1,80 @@ +cheng4 0.38 +------------ +by Martin Sedlak +opening book line by Graham Banks +independent testing by Lars Hallerstrom, Silvian Rucsandescu and Fonzy Bluemers +lazy SMP idea (improved shared hashtable) by Dan Homan (motivated by lazy Julien Marcel) +lockless hashing idea by Harry Nelson/Bob Hyatt +hosting by Emil Vlasak +eval tuning idea by Peter Osterlung (many thanks), also known as "Texel tuning method" +logos by Radovan Kramar, Graham Banks, Jim Ablett and Silvian Rucsandescu +greetings to all CC friends (list would be too long) + +supports FRC, UCI/xboard mode (but no ini!) +strength (0.38): my guess is +30 elo lower bound + +note for Linux/BSD/OSX users: may need to run chmod u+x on the binary first + +fixes in 0.35a: +- ponder fix (actually fixed command event race problems) +- more verbose now (so adjudication will now work for very fast games) + +new in 0.36: +- fix book probing +- add knight outpost eval +- add knbk endgame eval +- minor eval weight tuning +- safer futility margins +- better history heuristic +- multipv support (may need some testing) +- experimental strength limit +- PV no longer extracted from hash table (you get real PV now) +- fix upperbound reporting in UCI mode +- report selective depth now (doesn't include qs nodes) +- limit minimum qs depth to avoid search explosions in artificial positions +- autodetect hardware popcount +=> estimated elo gain: +28.5 + +fixes in 0.36a: +- FRC fix (castling when opponent slider on back rank) (thanks to Ray Banks) +- analyzing checkmate returns null move (Arena analysis fix) +- CECP st command fix (seconds instead of centiseconds) + +0.36c: +- many fixes +- minor improvements (+5 elo) +- going open source (despite unpolished and some things unfinished) +- Android compile +- XP 64-bit fix +- bench should be 3413675 +- this is the last version, I'm done with cheng + +0.38: +- safe mobility +- extensive eval tuning (using Peter's method) (rouhly 80% of improvement is due to this) +- retune delta margin +- play single reply asap +- don't start new iteration if it's unlikely that there's enough time + to search first move +- fix kbnk after tuning +- rewrite root move sorting (zero impact on elo) +- bench should read 5616320 nodes +- various minor fixes and changes +- don't spam the GUI in first second(s) of thinking + +4.39: +- better versioning now: Cheng 4.39 +- good history moves reduced anyway at higher depths +- added table-based mobility +- good/bad bishop knowledge +- final retuning using Texel tuning method +- minor bugfixes (including CECP sd command) +- root moves refactored +- pin-aware mobility (probably just my imagination that it works) +- better passer scoring +- get rid of nullmove verification search and nullthreat code (now using hybrid nmp-nmr) +- lower razor margins a bit +- bench-tune IID depths +- bench is now searching to d15 instead of d13, should be 10025265 + +have fun diff --git a/Engines/Linux/cheng/src/cheng4/allinone.cpp b/Engines/Linux/cheng/src/cheng4/allinone.cpp new file mode 100644 index 0000000..6e9fe7b --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/allinone.cpp @@ -0,0 +1,58 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +// everything glued together into one cpp file aka unity build + +#ifdef _MSC_VER + #undef _CRT_SECURE_NO_WARNINGS + #undef _HAS_EXCEPTIONS + #undef _SECURE_SCL + #define _CRT_SECURE_NO_WARNINGS + #define _HAS_EXCEPTIONS 0 + #define _SECURE_SCL 0 +#endif + +#include "board.cpp" +#include "book.cpp" +#include "bookzobrist.cpp" +#include "engine.cpp" +#include "eval.cpp" +#include "filterpgn.cpp" +#include "history.cpp" +#include "kpk.cpp" +#include "magic.cpp" +#include "main.cpp" +#include "move.cpp" +#include "movegen.cpp" +#include "protocol.cpp" +#include "psq.cpp" +#include "search.cpp" +#include "see.cpp" +#include "tables.cpp" +#include "thread.cpp" +#include "trans.cpp" +#include "tune.cpp" +#include "utils.cpp" +#include "version.cpp" +#include "zobrist.cpp" +#include "epd.cpp" diff --git a/Engines/Linux/cheng/src/cheng4/board.cpp b/Engines/Linux/cheng/src/cheng4/board.cpp new file mode 100644 index 0000000..72f78c6 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/board.cpp @@ -0,0 +1,2134 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "board.h" +#include "movegen.h" +#include "utils.h" +#include + +namespace cheng4 +{ + +// Board + +// increment move counter by 1 +void Board::incMove() +{ + ++curMove; +} + +template< Color c > Draw Board::isDrawByMaterial( MaterialKey mk ) const +{ + // if other side has only a knight => draw + if ( mk == matKNK[ c ] ) + return drawMaterial; + if ( mk & matKnightMask[ c ] ) + return drawNotDraw; // more than one knight => not draw + + // examine bishops... + Bitboard bishops = pieces( c, ptBishop ); + assert( bishops ); + return (Draw)( !( bishops & lightSquares ) || !( bishops & darkSquares ) ? drawMaterial : drawNotDraw ); +} + +// is trivial draw? (material or fifty rule) +Draw Board::isDraw() const +{ + if ( bfifty >= 100 ) + { + // we must not be checkmated already, while this can be considered a performance penalty, + // it doesn't happen often so should be ok + MoveGen mg( *this ); + if ( mg.next() != mcNone ) + return drawFifty; // trivial draw by fifty move rule + } + + // examine material key first + MaterialKey mk = materialKey(); + + if ( mk & matNoDrawMask ) + return drawNotDraw; // pawns/rooks/queens => not draw + + if ( !mk ) + return drawMaterial; // king versus king => most trivial draw + + if ( !(mk & matMask[ ctWhite ]) ) + // white is bare king + return isDrawByMaterial< ctBlack >( mk ); + else if ( !(mk & matMask[ ctBlack ] ) ) + // black is bare king + return isDrawByMaterial< ctWhite >( mk ); + return drawNotDraw; +} + +void Board::clear() +{ + memset( this, 0, sizeof(*this) ); + frc = arenaMode = 0; + curMove = 1; + bb[ BBI( ctWhite, ptPawn ) ] = 0; + bb[ BBI( ctBlack, ptPawn ) ] = 0; + bb[ BBI( ctWhite, ptKnight ) ] = 0; + bb[ BBI( ctBlack, ptKnight ) ] = 0; + bb[ BBI( ctWhite, ptBishop ) ] = 0; + bb[ BBI( ctBlack, ptBishop ) ] = 0; + bb[ BBI( ctWhite, ptRook ) ] = 0; + bb[ BBI( ctBlack, ptRook ) ] = 0; + bb[ BBI( ctWhite, ptQueen ) ] = 0; + bb[ BBI( ctBlack, ptQueen ) ] = 0; + bb[ bbiWOcc ] = 0; + bb[ bbiBOcc ] = 0; + + bkingPos[ ctWhite ] = E1; + bkingPos[ ctBlack ] = E8; + + bcastRights[ ctBlack ] = bcastRights[ ctWhite ] = 0; + bfifty = 0; + bturn = ctWhite; + bep = 0; + + update(); +} + +void Board::reset() +{ + memset( this, 0, sizeof(*this) ); + frc = arenaMode = 0; + curMove = 1; + bb[ BBI( ctWhite, ptPawn ) ] = U64C( 0x00ff000000000000 ); + bb[ BBI( ctBlack, ptPawn ) ] = U64C( 0x000000000000ff00 ); + bb[ BBI( ctWhite, ptKnight ) ] = U64C( 0x4200000000000000 ); + bb[ BBI( ctBlack, ptKnight ) ] = U64C( 0x0000000000000042 ); + bb[ BBI( ctWhite, ptBishop ) ] = U64C( 0x2400000000000000 ); + bb[ BBI( ctBlack, ptBishop ) ] = U64C( 0x0000000000000024 ); + bb[ BBI( ctWhite, ptRook ) ] = U64C( 0x8100000000000000 ); + bb[ BBI( ctBlack, ptRook ) ] = U64C( 0x0000000000000081 ); + bb[ BBI( ctWhite, ptQueen ) ] = U64C( 0x0800000000000000 ); + bb[ BBI( ctBlack, ptQueen ) ] = U64C( 0x0000000000000008 ); + bb[ bbiWOcc ] = U64C( 0xffff000000000000 ); + bb[ bbiBOcc ] = U64C( 0x000000000000ffff ); + + bkingPos[ ctWhite ] = E1; + bkingPos[ ctBlack ] = E8; + + bcastRights[ ctBlack ] = bcastRights[ ctWhite ] = CastPack::init( HFILE, AFILE ); + bfifty = 0; + bturn = ctWhite; + bep = 0; + + update(); +} + +// recompute hash (debug) +Signature Board::recomputeHash() const +{ + Signature h = bturn == ctWhite ? 0 : Zobrist::turn; + + // pieces + for (Color c = ctWhite; c <= ctBlack; c++ ) + for (Piece p = ptPawn; p <= ptQueen; p++ ) + { + Bitboard tmp = pieces( c, p ); + while ( tmp ) + h ^= Zobrist::piece[ c ][ p ][ BitOp::popBit(tmp) ]; + } + + // king + for ( Color c = ctWhite; c <= ctBlack; c++ ) + { + Square kp = king(c); + h ^= Zobrist::piece[ c ][ ptKing ][ kp ]; + } + + // validate ep square + assert ( !bep || (Tables::pawnAttm[ flip(bturn) ][ bep ] & pieces( bturn, ptPawn) ) ); + + // en passant + if ( bep ) + h ^= Zobrist::epFile[ SquarePack::file( epSquare() ) ]; + + // castling rights + for ( Color c = ctWhite; c <= ctBlack; c++ ) + h ^= Zobrist::cast[ c ][ castRights(c) ]; + return h; +} + +// recompute pawn hash (debug) +Signature Board::recomputePawnHash() const +{ + Signature ph = 0; + + for (Color c = ctWhite; c <= ctBlack; c++ ) + { + Bitboard tmp = pieces( c, ptPawn ); + while ( tmp ) + { + Square sq = BitOp::popBit(tmp); + + Signature sig = Zobrist::piece[ c ][ ptPawn ][ sq ]; + ph ^= sig; + } + } + + return ph; +} + +// recompute hashes, material and update board squares from bitboards +void Board::update() +{ + Signature h = bturn == ctWhite ? 0 : Zobrist::turn; + Signature ph = 0; // pawn hash + + memset( bpieces, 0, sizeof(bpieces) ); + + bdmat[ phOpening ] = bdmat[ phEndgame ] = 0; + + bb[ bbiWOcc ] = bb[ bbiBOcc ] = 0; + bb[ bbiMat ] = 0; + + bcheck = 0; + + // pieces + for (Color c = ctWhite; c <= ctBlack; c++ ) + { + bnpmat[ c ] = 0; + for (Piece p = ptPawn; p <= ptQueen; p++ ) + { + Bitboard tmp = pieces( c, p ); + while ( tmp ) + { + Square sq = BitOp::popBit(tmp); + bpieces[ sq ] = PiecePack::init( c, p ); + + bb[ bbiWOcc + c ] |= BitOp::oneShl( sq ); + + bnpmat[ c ] += Tables::npValue[ p ]; + + // update hash + Signature sig = Zobrist::piece[ c ][ p ][ sq ]; + h ^= sig; + if ( p == ptPawn ) + ph ^= sig; + + // update dmat + bdmat[ phOpening ] += PSq::tables[ phOpening ][ c ][ p ][ sq ]; + bdmat[ phEndgame ] += PSq::tables[ phEndgame ][ c ][ p ][ sq ]; + + // update material key + bb[ bbiMat ] += BitOp::oneShl( MATSHIFT( c, p ) ); + } + } + } + + // king + for ( Color c = ctWhite; c <= ctBlack; c++ ) + { + Square kp = king(c); + bpieces[ kp ] = PiecePack::init( c, ptKing ); + h ^= Zobrist::piece[ c ][ ptKing ][ kp ]; + bb[ bbiWOcc + c ] |= BitOp::oneShl( kp ); + + // update dmat + bdmat[ phOpening ] += PSq::tables[ phOpening ][ c ][ ptKing ][ kp ]; + bdmat[ phEndgame ] += PSq::tables[ phEndgame ][ c ][ ptKing ][ kp ]; + } + + // valiate ep square + if ( bep && !(Tables::pawnAttm[ flip(bturn) ][ bep ] & pieces( bturn, ptPawn) ) ) + bep = 0; + + // en passant + if ( bep ) + h ^= Zobrist::epFile[ SquarePack::file( epSquare() ) ]; + + // castling rights + for ( Color c = ctWhite; c <= ctBlack; c++ ) + h ^= Zobrist::cast[ c ][ castRights(c) ]; + + bcheck = doesAttack<1>( flip( turn() ), king( turn() ) ); + if ( bcheck ) + calcEvasMask(); + + bhash = h; + bpawnHash = ph; + + // finally set frc flag + frc = 0; + CastRights cr[2] = { castRights( ctWhite ), castRights( ctBlack ) }; + for ( Color c=ctWhite; c<=ctBlack; c++ ) + { + File kf = SquarePack::file( king(c) ); + CastRights r = cr[c]; + if ( CastPack::allowedShort( r ) ) + { + File rf = CastPack::shortFile( r ); + if ( rf != HFILE || kf != EFILE ) + frc = 1; + } + if ( CastPack::allowedLong( r ) ) + { + File rf = CastPack::longFile( r ); + if ( rf != AFILE || kf != EFILE ) + frc = 1; + } + } +} + +void Board::updateDeltaMaterial() +{ + bdmat[ phOpening ] = bdmat[ phEndgame ] = 0; + for (Color c = ctWhite; c <= ctBlack; c++ ) + { + for (Piece p = ptPawn; p <= ptQueen; p++ ) + { + Bitboard tmp = pieces( c, p ); + while ( tmp ) + { + Square sq = BitOp::popBit(tmp); + + // update dmat + bdmat[ phOpening ] += PSq::tables[ phOpening ][ c ][ p ][ sq ]; + bdmat[ phEndgame ] += PSq::tables[ phEndgame ][ c ][ p ][ sq ]; + } + } + } + + // king + for ( Color c = ctWhite; c <= ctBlack; c++ ) + { + Square kp = king(c); + // update dmat + bdmat[ phOpening ] += PSq::tables[ phOpening ][ c ][ ptKing ][ kp ]; + bdmat[ phEndgame ] += PSq::tables[ phEndgame ][ c ][ ptKing ][ kp ]; + } +} + +// undo psq values from scores (opening, endgames) +void Board::undoPsq( FineScore *scores ) const +{ + DMat pdmat[ phMax ]; + pdmat[ phOpening ] = pdmat[ phEndgame ] = 0; + for (Color c = ctWhite; c <= ctBlack; c++ ) + { + for (Piece p = ptPawn; p <= ptQueen; p++ ) + { + Bitboard tmp = pieces( c, p ); + while ( tmp ) + { + BitOp::popBit(tmp); + + // update dmat + pdmat[ phOpening ] += (DMat)Tables::sign[c] * PSq::materialTables[ phOpening ][ p ]; + pdmat[ phEndgame ] += (DMat)Tables::sign[c] * PSq::materialTables[ phEndgame ][ p ]; + } + } + } + + // king + for ( Color c = ctWhite; c <= ctBlack; c++ ) + { + // update dmat + pdmat[ phOpening ] += (DMat)Tables::sign[c] * PSq::materialTables[ phOpening ][ ptKing ]; + pdmat[ phEndgame ] += (DMat)Tables::sign[c] * PSq::materialTables[ phEndgame ][ ptKing ]; + } + // FIXME: actually this will undo everything and just keep pure material + // but that's actually what we want for special endgames + for ( Phase p = phOpening; p <= phEndgame; p++ ) + scores[ p ] = ScorePack::initFine( Score(pdmat[ p ] ) ); + //scores[ p ] -= scores[ p ] - ScorePack::initFine( Score(pdmat[ p ] ) ); +} + +// parse from fen +const char *Board::fromFEN( const char *fen ) +{ + // TODO: better validation + assert( fen ); + + clear(); + + File x = 0; + Rank y = 0; + while ( *fen ) + { + if ( *fen <= 32 ) + { + fen++; + continue; // skip blanks + } + + Rank ry = y^RANK8; + + switch ( *fen ) + { + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + x += *fen - '0'; + break; + case 'p': + bb[ BBI( ctBlack, ptPawn ) ] |= BitOp::oneShl( SquarePack::init( x, ry ) ); + x++; + break; + case 'n': + bb[ BBI( ctBlack, ptKnight ) ] |= BitOp::oneShl( SquarePack::init( x, ry ) ); + x++; + break; + case 'b': + bb[ BBI( ctBlack, ptBishop ) ] |= BitOp::oneShl( SquarePack::init( x, ry ) ); + x++; + break; + case 'r': + bb[ BBI( ctBlack, ptRook ) ] |= BitOp::oneShl( SquarePack::init( x, ry ) ); + x++; + break; + case 'q': + bb[ BBI( ctBlack, ptQueen ) ] |= BitOp::oneShl( SquarePack::init( x, ry ) ); + x++; + break; + case 'k': + bkingPos[ ctBlack ] = SquarePack::init( x, ry ); + x++; + break; + case 'P': + bb[ BBI( ctWhite, ptPawn ) ] |= BitOp::oneShl( SquarePack::init( x, ry ) ); + x++; + break; + case 'N': + bb[ BBI( ctWhite, ptKnight ) ] |= BitOp::oneShl( SquarePack::init( x, ry ) ); + x++; + break; + case 'B': + bb[ BBI( ctWhite, ptBishop ) ] |= BitOp::oneShl( SquarePack::init( x, ry ) ); + x++; + break; + case 'R': + bb[ BBI( ctWhite, ptRook ) ] |= BitOp::oneShl( SquarePack::init( x, ry ) ); + x++; + break; + case 'Q': + bb[ BBI( ctWhite, ptQueen ) ] |= BitOp::oneShl( SquarePack::init( x, ry ) ); + x++; + break; + case 'K': + bkingPos[ ctWhite ] = SquarePack::init( x, ry ); + x++; + break; + case '/': + x = 0; + y++; + break; + default: + return 0; + } + fen++; + if ( y >= 8 || (y == 7 && x >= 8) ) + break; + } + // consume extra chars + while ( *fen && (*fen == '/' || *fen <= 32) ) + fen++; + + // parse stm + bturn = (Color)( (*fen | 32) == 'b' ? ctBlack : ctWhite ); + if ( *fen ) + fen++; + + // skip blanks + while ( *fen && *fen <= 32 ) + fen++; + + bool standardCastling = 0; + while ( *fen && (*fen|32) >= 'a' && (*fen|32) <= 'q' ) + { + char ch = *fen; + switch( ch ) + { + case 'K': + standardCastling = 1; + ch = 'H'; + break; + case 'Q': + standardCastling = 1; + ch = 'A'; + break; + case 'k': + standardCastling = 1; + ch = 'h'; + break; + case 'q': + standardCastling = 1; + ch = 'a'; + break; + } + // always scan for outermost rooks if standardCastling is set - because of x-fen and Arena + if ( !(ch & 32) ) + { + // white + File rf = (File)ch - 'A'; + File orf = rf; + File kf = SquarePack::file( king( ctWhite ) ); + + Square rsq = SquarePack::init( rf, RANK1 ); + Bitboard rooks = pieces( ctWhite, ptRook ); + if ( standardCastling || !(rooks & BitOp::oneShl(rsq) ) ) + { + ch = 0; + if ( rf >= EFILE ) + { + // scan for kingside rook + for ( File f = HFILE; f > kf; f-- ) + { + Square sq = SquarePack::setFile( rsq, f ); + if ( rooks & BitOp::oneShl( sq ) ) + { + rf = f; + ch = 'A'+f; + break; + } + } + } + else + { + // scan for queenside rook + for ( File f = AFILE; f < kf; f++ ) + { + Square sq = SquarePack::setFile( rsq, f ); + if ( rooks & BitOp::oneShl( sq ) ) + { + rf = f; + ch = 'A'+f; + break; + } + } + } + if ( rf != orf ) + arenaMode = 1; + } + + if ( ch ) + { + bcastRights[ ctWhite ] = CastPack::loseRights( rf>kf, bcastRights[ ctWhite ] ); + bcastRights[ ctWhite ] |= CastPack::initFile( rf>kf, rf ); + } + } else + { + // black + File rf = (File)ch - 'a'; + File orf = rf; + File kf = SquarePack::file( king( ctBlack ) ); + + Square rsq = SquarePack::init( rf, RANK8 ); + Bitboard rooks = pieces( ctBlack, ptRook ); + if ( standardCastling || !(rooks & BitOp::oneShl(rsq) ) ) + { + ch = 0; + if ( rf >= EFILE ) + { + // scan for kingside rook + for ( File f = HFILE; f > kf; f-- ) + { + Square sq = SquarePack::setFile( rsq, f ); + if ( rooks & BitOp::oneShl( sq ) ) + { + rf = f; + ch = 'a'+f; + break; + } + } + } + else + { + // scan for queenside rook + for ( File f = AFILE; f < kf; f++ ) + { + Square sq = SquarePack::setFile( rsq, f ); + if ( rooks & BitOp::oneShl( sq ) ) + { + rf = f; + ch = 'a'+f; + break; + } + } + } + if ( rf != orf ) + arenaMode = 1; + } + if ( ch ) + { + bcastRights[ ctBlack ] = CastPack::loseRights( rf>kf, bcastRights[ ctBlack ] ); + bcastRights[ ctBlack ] |= CastPack::initFile( rf>kf, rf ); + } + } + // last Arena mode check: only if king is not E1/E8 + if ( standardCastling ) + { + if ( castRights( ctWhite ) && SquarePack::file( king(ctWhite) ) != EFILE ) + arenaMode = 1; + if ( castRights( ctBlack ) && SquarePack::file( king(ctBlack) ) != EFILE ) + arenaMode = 1; + } + fen++; + } + if ( *fen == '-' ) + { + bcastRights[ ctWhite ] = bcastRights[ ctBlack ] = 0; + fen++; + } + + // skip blanks + while ( *fen && *fen <= 32 ) + fen++; + + if ( *fen == '-' ) + // no ep + fen++; + else + if ( (*fen|32) >= 'a' && (*fen|32) <= 'h' ) + { + bep |= (*fen|32) - 'a'; + fen++; + if ( *fen >= '1' || *fen <= '8' ) + { + bep |= (('8' - *fen)^RANK8) << 3; + fen++; + } + } + + // skip blanks + while ( *fen && *fen <= 32 ) + fen++; + + // parse fifty move rule counter! + if ( *fen >= '0' && *fen <= '9' ) + bfifty = (FiftyCount)strtol( fen, (char **)&fen, 10 ); + + // skip blanks + while ( *fen && *fen <= 32 ) + fen++; + + // consume move number + if ( *fen >= '0' && *fen <= '9' ) + { + long mn = strtol( fen, (char **)&fen, 10 ); // kept here - might be useful later + curMove = mn > 0 ? (uint)mn : (uint)1; + } + + update(); + if ( doesAttack<1>( turn(), king( flip(turn()) ) ) ) + return 0; + return fen; +} + +// store unsigned integer num=>buffer +// doesn't include null terminator +template static void snum( char *&dst, T num) +{ + if (!num) + { + *dst++ = '0'; + return; + } + char buf[256]; + char *rev = buf; + while ( num > 0 ) + { + *rev++ = (char)('0' + num % (T)10); + num /= 10; + } + while (rev > buf) + { + *dst++ = rev[-1]; + rev--; + } +} + +std::string Board::toFEN() const +{ + char buf[256]; + *toFEN(buf) = 0; + return buf; +} + +char *Board::toFEN( char *dst ) const +{ + uint count = 0; // space count + for ( Square sq = 0; sq < 64; sq++ ) + { + File f = SquarePack::file(sq); + Rank r = SquarePack::rank(sq); + if ( f == AFILE && r != RANK8 ) + { + if ( count ) + { + *dst++ = (char)('0' + count); + count = 0; + } + *dst++ = '/'; + } + Piece pt = PiecePack::type( piece(sq) ); + Color c = PiecePack::color( piece(sq) ); + if ( pt != ptNone ) + { + if ( count ) + { + *dst++ = (char)('0' + count); + count = 0; + } + char ch = " PNBRQK"[pt]; + if ( c == ctBlack ) + ch |= 32; + *dst++ = ch; + } + else + { + // delta-compress spaces + count++; + } + } + // flush last count + if ( count ) + *dst++ = (char)('0' + count); + + *dst++ = ' '; + *dst++ = turn() == ctWhite ? 'w' : 'b'; + *dst++ = ' '; + + // now add castling rights + CastRights cr[2] = { castRights( ctWhite ), castRights( ctBlack ) }; + char xorm[2] = {0, 32}; + bool emptyCast = 1; + for ( Color c = ctWhite; c <= ctBlack; c++ ) + { + if ( !CastPack::allowed( cr[c] ) ) + continue; + // do_cr + emptyCast = 0; + if ( CastPack::allowedShort( cr[c] ) ) + { + if ( !frc ) + *dst++ = 'K' | xorm[c]; + else + *dst++ = ('A' + CastPack::shortFile( cr[c] )) | xorm[c]; + } + if ( CastPack::allowedLong( cr[c] ) ) + { + if ( !frc ) + *dst++ = 'Q' | xorm[c]; + else + *dst++ = ('A' + CastPack::longFile( cr[c] )) | xorm[c]; + } + } + if ( emptyCast ) + *dst++ = '-'; + *dst++ = ' '; + + // now ep square + Square sq = epSquare(); + if ( !sq ) + *dst++ = '-'; + else + { + // add ep square + *dst++ = (char)('a' + SquarePack::file(sq)); + *dst++ = '8' - (SquarePack::rank(sq) ^ RANK8); + } + *dst++ = ' '; + + // finally add fifty counter and move number + snum( dst, fifty() ); + *dst++ = ' '; + snum( dst, move() ); + + return dst; +} + +// do nullmove +void Board::doNullMove( UndoInfo &ui ) +{ + assert( !inCheck() ); + + initUndo( ui ); + bfifty++; + + // update ep square + if ( bep ) + { + bhash ^= Zobrist::epFile[ SquarePack::file( bep ) ]; + bep = 0; + } + + // finally change stm + bhash ^= Zobrist::turn; + bturn = flip( bturn ); + assert( isValid() ); +} + +// undo nullmove +void Board::undoNullMove( const UndoInfo &ui ) +{ + undoMove( ui ); +} + +// castling move is special +void Board::doCastlingMove( Move move, UndoInfo &ui, bool ischeck ) +{ + assert( MovePack::isCastling( move ) && !inCheck() ); + assert( bhash == recomputeHash() ); + + initUndo( ui ); + bfifty++; + + Color color = turn(); + Square kfrom = MovePack::from( move ); + Square kto = MovePack::to( move ); + + assert( kfrom == king( color) ); + + CastRights cr = castRights( color ); + + b8 isShort = kto & 4; + Square rto = isShort ? kto-1 : kto+1; + Square rfrom = CastPack::rookSquare( kto, cr ); + + // update delta material + bdmat[ phOpening ] -= PSq::tables[ phOpening ][ color ][ ptKing ][ kfrom ]; + bdmat[ phEndgame ] -= PSq::tables[ phEndgame ][ color ][ ptKing ][ kfrom ]; + bdmat[ phOpening ] -= PSq::tables[ phOpening ][ color ][ ptRook ][ rfrom ]; + bdmat[ phEndgame ] -= PSq::tables[ phEndgame ][ color ][ ptRook ][ rfrom ]; + bdmat[ phOpening ] += PSq::tables[ phOpening ][ color ][ ptKing ][ kto ]; + bdmat[ phEndgame ] += PSq::tables[ phEndgame ][ color ][ ptKing ][ kto ]; + bdmat[ phOpening ] += PSq::tables[ phOpening ][ color ][ ptRook ][ rto ]; + bdmat[ phEndgame ] += PSq::tables[ phEndgame ][ color ][ ptRook ][ rto ]; + + // note: xor is important here + Bitboard kft = BitOp::oneShl( kfrom ) ^ BitOp::oneShl( kto ); + Bitboard rft = BitOp::oneShl( rfrom ) ^ BitOp::oneShl( rto ); +// assert( !(kft & rft) ); // can happen in frc + + // save occ and rook bitboards + u8 bbi; + bbi = bbiWOcc + color; + ui.saveBB( bbi, bb[ bbi ] ); + bb[bbi] ^= kft ^ rft; + + bbi = BBI( color, ptRook ); + ui.saveBB( bbi, bb[ bbi ] ); + bb[bbi] ^= rft; + + // update zobrist hashes + bhash ^= Zobrist::piece[ color ][ ptKing ][ kfrom ]; + bhash ^= Zobrist::piece[ color ][ ptKing ][ kto ]; + bhash ^= Zobrist::piece[ color ][ ptRook ][ rfrom ]; + bhash ^= Zobrist::piece[ color ][ ptRook ][ rto ]; + + // save pieces + ui.savePiece( kfrom, piece( kfrom ) ); + ui.savePiece( kto, piece( kto ) ); + ui.savePiece( rfrom, piece( rfrom ) ); + ui.savePiece( rto, piece( rto ) ); + + // move pieces + Piece kfp = bpieces[ kfrom ]; + Piece rfp = bpieces[ rfrom ]; + bpieces[ kfrom ] = ptNone; + bpieces[ rfrom ] = ptNone; + bpieces[ kto ] = kfp; + bpieces[ rto ] = rfp; + + // save king state + saveKingState( ui ); + // castling is irreversible + // FIXME: while it's true, according to FIDE rules castling doesn't reset 50 rule counter! + // => but I'm keeping it for now, don't wan't to lose because of GUIs that reset 50 rule on castling! + // => NO! I want cheng to be 100% compliant +//// saveIrreversible( ui ); + // castling + saveCastling<0>( ui ); + + // update king position + bkingPos[ color ] = kto; + + // lose castling rights + bhash ^= Zobrist::cast[ color ][ cr ]; + bcastRights[ color ] = 0; + + // don't forget to update ep square + if ( bep ) + { + bhash ^= Zobrist::epFile[ SquarePack::file( bep ) ]; + bep = 0; + } + + bcheck = ischeck; + + // finally flip turn + bhash ^= Zobrist::turn; + bturn = flip( turn() ); + + if ( bcheck ) + { + ui.saveBB( bbiEvMask, bb[ bbiEvMask ] ); + calcEvasMask(); + } + + assert( bcheck == doesAttack<1>( flip(bturn), king( bturn ) ) ); + assert( bhash == recomputeHash() ); + assert( bpawnHash == recomputePawnHash() ); + assert( isValid() ); +} + +void Board::doMove( Move move, UndoInfo &ui, bool isCheck ) +{ + // note: usually there is 2x more special moves than there is quiet moves + if ( MovePack::isCastling( move ) ) + return doCastlingMove( move, ui, isCheck ); + + Square from = MovePack::from( move ); + Square to = MovePack::to( move ); + + Piece pt = PiecePack::type( piece( from ) ); // piece type + + assert( pt >= ptPawn ); + + Move isCap = MovePack::isCapture( move ); + Color stm = turn(); + + switch( pt ) + { + case ptPawn: + if ( isCap ) + if ( stm == ctWhite ) + doMoveTemplate< ctWhite, 1, ptPawn >( move, from, to, ui, isCheck ); + else + doMoveTemplate< ctBlack, 1, ptPawn >( move, from, to, ui, isCheck ); + else + if ( stm == ctWhite ) + doMoveTemplate< ctWhite, 0, ptPawn >( move, from, to, ui, isCheck ); + else + doMoveTemplate< ctBlack, 0, ptPawn >( move, from, to, ui, isCheck ); + break; + case ptKnight: + if ( isCap ) + if ( stm == ctWhite ) + doMoveTemplate< ctWhite, 1, ptKnight >( move, from, to, ui, isCheck ); + else + doMoveTemplate< ctBlack, 1, ptKnight >( move, from, to, ui, isCheck ); + else + if ( stm == ctWhite ) + doMoveTemplate< ctWhite, 0, ptKnight >( move, from, to, ui, isCheck ); + else + doMoveTemplate< ctBlack, 0, ptKnight >( move, from, to, ui, isCheck ); + break; + case ptBishop: + if ( isCap ) + if ( stm == ctWhite ) + doMoveTemplate< ctWhite, 1, ptBishop >( move, from, to, ui, isCheck ); + else + doMoveTemplate< ctBlack, 1, ptBishop >( move, from, to, ui, isCheck ); + else + if ( stm == ctWhite ) + doMoveTemplate< ctWhite, 0, ptBishop >( move, from, to, ui, isCheck ); + else + doMoveTemplate< ctBlack, 0, ptBishop >( move, from, to, ui, isCheck ); + break; + case ptRook: + if ( isCap ) + if ( stm == ctWhite ) + doMoveTemplate< ctWhite, 1, ptRook >( move, from, to, ui, isCheck ); + else + doMoveTemplate< ctBlack, 1, ptRook >( move, from, to, ui, isCheck ); + else + if ( stm == ctWhite ) + doMoveTemplate< ctWhite, 0, ptRook >( move, from, to, ui, isCheck ); + else + doMoveTemplate< ctBlack, 0, ptRook >( move, from, to, ui, isCheck ); + break; + case ptQueen: + if ( isCap ) + if ( stm == ctWhite ) + doMoveTemplate< ctWhite, 1, ptQueen >( move, from, to, ui, isCheck ); + else + doMoveTemplate< ctBlack, 1, ptQueen >( move, from, to, ui, isCheck ); + else + if ( stm == ctWhite ) + doMoveTemplate< ctWhite, 0, ptQueen >( move, from, to, ui, isCheck ); + else + doMoveTemplate< ctBlack, 0, ptQueen >( move, from, to, ui, isCheck ); + break; + case ptKing: + if ( isCap ) + if ( stm == ctWhite ) + doMoveTemplate< ctWhite, 1, ptKing >( move, from, to, ui, isCheck ); + else + doMoveTemplate< ctBlack, 1, ptKing >( move, from, to, ui, isCheck ); + else + if ( stm == ctWhite ) + doMoveTemplate< ctWhite, 0, ptKing >( move, from, to, ui, isCheck ); + else + doMoveTemplate< ctBlack, 0, ptKing >( move, from, to, ui, isCheck ); + break; + } +} + +// undo move +void Board::undoMove( const UndoInfo &ui ) +{ + // first restore hash, ep square and delta material + bhash = ui.bhash; + bdmat[ phOpening ] = ui.dmat[ phOpening ]; + bdmat[ phEndgame ] = ui.dmat[ phEndgame ]; + bep = ui.ep; + + // restore bitboards + for (u8 i=0; i( ui ); + break; + case 1: + undoTemplate< 1 >( ui ); + break; + case 2: + undoTemplate< 2 >( ui ); + break; + case 3: + undoTemplate< 3 >( ui ); + break; + case 4: + undoTemplate< 4 >( ui ); + break; + case 5: + undoTemplate< 5 >( ui ); + break; + case 6: + undoTemplate< 6 >( ui ); + break; + case 7: + undoTemplate< 7 >( ui ); + break; + case 8: + undoTemplate< 8 >( ui ); + break; + case 9: + undoTemplate< 9 >( ui ); + break; + case 10: + undoTemplate< 10 >( ui ); + break; + case 11: + undoTemplate< 11 >( ui ); + break; + case 12: + undoTemplate< 12 >( ui ); + break; + case 13: + undoTemplate< 13 >( ui ); + break; + case 14: + undoTemplate< 14 >( ui ); + break; + case 15: + undoTemplate< 15 >( ui ); + break; + } +} + +// returns 1 if move does check opponent king (from stm point of view) +bool Board::isCheck( Move m, Bitboard discovered ) const +{ + // TODO: rewrite to save instructions... + Square from = MovePack::from(m); + bool dc = (discovered & BitOp::oneShl( from )) != 0; + Piece pt = PiecePack::type( piece( from ) ); + + Square to = MovePack::to(m); + Bitboard tom = BitOp::oneShl( to ); + Square okp = king( flip( turn() ) ); + Bitboard occ; + + switch( pt ) + { + case ptPawn: + if ( Tables::pawnAttm[ flip(turn()) ][ okp ] & tom ) + return 1; // direct pawn check + // if diagonal doesn't match => discovered check + if ( dc && !(tom & Tables::ray[ okp ][ from ]) ) + return 1; + // direct checks via promotion + switch( MovePack::promo( m ) ) + { + case ptKnight: + return ( Tables::knightAttm[ okp ] & tom ) != 0; + case ptBishop: + return ( Magic::bishopAttm( okp, occupied() ^ BitOp::oneShl(from) ) & tom ) != 0; + case ptRook: + return ( Magic::rookAttm( okp, occupied() ^ BitOp::oneShl(from) ) & tom ) != 0; + case ptQueen: + return ( Magic::queenAttm( okp, occupied() ^ BitOp::oneShl(from) ) & tom ) != 0; + } + if ( !MovePack::isEpCapture( m ) ) + return 0; + // en-passant check + // FIXME: better than that + occ = occupied(); + occ ^= BitOp::oneShl( from ) | BitOp::oneShl( SquarePack::epTarget( epSquare(), from ) ) + | BitOp::oneShl( epSquare() ); + if ( Magic::bishopAttm( okp, occ ) & diagSliders( turn() ) ) + return 1; + return (Magic::rookAttm( okp, occ ) & orthoSliders( turn() )) != 0; + case ptKnight: + return dc || (tom & Tables::knightAttm[ okp ]); + case ptBishop: + return dc || ( (tom & Tables::diagAttm[okp] ) && (tom & Magic::bishopAttm( okp, occupied() )) ); + case ptRook: + return dc || ( (tom & Tables::orthoAttm[okp] ) && (tom & Magic::rookAttm( okp, occupied() )) ); + case ptQueen: + return (tom & Tables::queenAttm[okp]) && (tom & Magic::queenAttm( okp, occupied() )); + case ptKing: + // if diagonal doesn't match => discovered check + // note: we don't have to check castling here first (FIXME: think about it some more) + if ( dc && !(tom & Tables::ray[ okp ][ from ]) ) + return 1; + if ( !MovePack::isCastling( m ) ) + return 0; + // now check whether castling does check opponent king + // FIXME: think about simplifying all this? + { + occ = occupied(); + File fto = SquarePack::file(to); + File rf; + Square rto = to; + if ( fto >= EFILE ) + { + // short (ks) + assert( CastPack::allowedShort( castRights( turn() ) ) ); + rf = CastPack::shortFile( castRights( turn() ) ); + rto--; + } + else + { + // long (qs) + assert( CastPack::allowedLong( castRights( turn() ) ) ); + rf = CastPack::longFile( castRights( turn() ) ); + rto++; + } + Square rfrom = SquarePack::setFile( to, rf ); + // we now have all the bits we need to update occupancy + occ ^= BitOp::oneShl( rfrom ) ^ BitOp::oneShl( rto ); + occ ^= BitOp::oneShl( from ) ^ BitOp::oneShl( to ); + // only a just castled rook can give a direct check + return (Magic::rookAttm( rto, occ ) & BitOp::oneShl( okp )) != 0; + } + } + // keep compiler happy + return 0; +} + + +// move to SAN +std::string Board::toSAN( Move m ) const +{ + char buf[256]; + *toSAN(buf, m) = 0; + return buf; +} + +char *Board::toSAN( char *dst, Move m ) const +{ + assert( (inCheck() ? isLegal<1, 0>( m, pins() ) : isLegal<0, 0>( m, pins() )) ); + + m &= mmNoScore; + + if ( m == mcNull ) + return scpy( dst, "..." ); + + bool ischeck = isCheck(m, discovered() ); + if ( MovePack::isCastling( m ) ) + dst = scpy( dst, SquarePack::file( MovePack::to( m ) ) >= EFILE ? "O-O" : "O-O-O" ); + else + { + Piece ptype = PiecePack::type( piece( MovePack::from( m ) ) ); + char c = " NBRQK"[ptype]; + if ( c != ' ') + *dst++ = c; + + Square f, t; + f = MovePack::from( m ); + t = MovePack::to( m ); + File ff = SquarePack::file( f ); + Rank fr = SquarePack::rank( f ); + + u8 diffFile = 0, diffRank = 0; + + MoveGen mg( *this ); + Move lm; + while ( (lm = mg.next() ) != mcNone ) + { + if ( m == lm ) + continue; // skip self + Square lf, lt; + lf = MovePack::from( lm ); + lt = MovePack::to( lm ); + if ( lt != t ) + continue; // not same target => skip + Piece pt = PiecePack::type( piece( MovePack::from(lm) ) ); + if ( pt != ptype ) + continue; // not same piece type => skip + if ( MovePack::isPromo(m) && MovePack::isPromo(lm) && MovePack::promo(m) != MovePack::promo(lm) ) + continue; // no need for ambiguity check for promotions to different piece + File lff = SquarePack::file( lf ); + Rank lfr = SquarePack::rank( lf ); + + if ( ff != lff ) + diffFile++; + if ( fr != lfr ) + diffRank++; + } + + if ( ptype == ptPawn && MovePack::isCapture(m) ) + diffFile = 1; // force diffile for pawn captures + + if ( diffFile ) + { + *dst++ = 'a' + ff; + if ( diffRank == 1 ) // prefer file disambiguation + diffRank = 0; + } + if ( diffRank ) + *dst++ = '8' - (fr ^ RANK8); + if ( MovePack::isCapture(m) ) + *dst++ = 'x'; + + *dst++ = 'a' + SquarePack::file(t); + *dst++ = '8' - (SquarePack::rank(t) ^ RANK8); + } + Piece promo = MovePack::promo( m ); + if ( promo ) + { + *dst++ = '='; + *dst++ = " NBRQ "[ promo ]; + } + if ( ischeck ) + { + // check for checkmate!! + // FIXME: performance?! + Board tb(*this); + UndoInfo ui; + tb.doMove( m, ui, 1 ); + MoveGen mg( tb ); + if ( mg.next() == mcNone ) + // checkmate + *dst++ = '#'; + else + *dst++ = '+'; + } + return dst; +} + +std::string Board::toUCI( Move m ) const +{ + char buf[16]; + *toUCI(buf, m) = 0; + return buf; +} + +char *Board::toUCI( char *dst, Move m ) const +{ + if ( frc && !arenaMode && MovePack::isCastling( m ) ) + { + // handle FRC castling here (king captures rook) + // fortunately this is compatible with both Arena and Shredder + CastRights cr = castRights( turn() ); + m = MovePack::init( MovePack::from(m), CastPack::rookSquare( MovePack::to(m), cr ) ); + return MovePack::toUCI( dst, m, frc ); + } + return MovePack::toUCI( dst, m, frc ); +} + +// move from UCI +Move Board::fromUCI( const std::string &str ) const +{ + const char *ptr = str.c_str(); + return fromUCI(ptr); +} + +Move Board::fromUCI( const char *&c ) const +{ + if ( !*c ) + return mcNone; + const char *old = c; // we don't want to advance in case of failure + if ( *c && (*c|32) == 'o' ) + { + // parse castling move (frc usually) + c++; + if ( *c == '-' ) + c++; + if ( !*c || (*c|32) != 'o' ) + { + c = old; + return mcNone; // invalid + } + c++; + if ( *c == '-' ) + c++; + bool qs = *c && (*c|32) == 'o'; // queenside castling flag + Color col = turn(); + CastRights cr = castRights(col); + Square kp = king(col); + Square to; + if ( !qs ) + { + // short + if ( !CastPack::allowedShort(cr) ) + { + c = old; + return mcNone; + } + to = SquarePack::setFile( kp, GFILE ); + } + else + { + // long + if ( !CastPack::allowedLong(cr) ) + { + c = old; + return mcNone; + } + to = SquarePack::setFile( kp, CFILE ); + } + return MovePack::initCastling( kp, to ); + } + Move res = MovePack::fromUCI( c ); + if ( res == mcNone ) + { + c = old; + return res; + } + Square from = MovePack::from( res ); + Square to = MovePack::to( res ); + Piece pf = piece(from); + if ( PiecePack::type( pf ) == ptKing ) + { + // could be (frc) castling! + Piece pt = piece(to); + if ( abs(SquarePack::file(from) - SquarePack::file(to)) > 1 || + (PiecePack::type( pt ) == ptRook && PiecePack::color( pf ) == PiecePack::color( pt )) ) + { + // try castling (king takes own rook) + assert( PiecePack::color( pf ) == turn() && from == king( turn() ) ); + CastRights cr = castRights( turn() ); + if ( to > from ) + { + // short + if ( !CastPack::allowedShort(cr) ) + { + c = old; + return mcNone; + } + to = SquarePack::setFile( from, GFILE ); + } + else + { + // long + if ( !CastPack::allowedLong(cr) ) + { + c = old; + return mcNone; + } + to = SquarePack::setFile( from, CFILE ); + } + return MovePack::initCastling( from, to ); + } + } + if ( res == mcNone ) + { + c = old; + return res; + } + Piece pt = piece(to); + if ( PiecePack::type(pt) != ptNone ) + res |= mfCapture; + else if ( PiecePack::type(pf) == ptPawn ) + { + Square ep = epSquare(); + if ( ep && to == ep ) + res = MovePack::initEpCapture(from, to); + } + if ( res == mcNone ) + c = old; + return res; +} + +static bool parseSANSquare( const char *&ptr, int &file, int &rank ) +{ + if ( !*ptr ) + return 0; + + rank = -1; + file = (*ptr | 32)-'a'; + if ( file >= 0 && file < 8 ) + { + if ( !*++ptr ) + return 1; + } + else + file = -1; + + int rnk = *ptr - '1'; + if ( rnk >= 0 && rnk < 8 ) + { + rank = rnk ^ RANK1; + ++ptr; + } + return 1; +} + +// move from SAN +Move Board::fromSAN( const char *&ptr ) const +{ + Move res = mcNone; + const char *old = ptr; // save old pointer => we don't want to move ptr in case of failure! + + // piece to move + Piece pt = ptPawn; // default to pawn + Piece promo = ptNone; // default to none + switch ( *ptr ) + { + case 'P': // I think some engines use this + pt = ptPawn; + ptr++; + break; + case 'N': + pt = ptKnight; + ptr++; + break; + case 'B': + pt = ptBishop; + ptr++; + break; + case 'R': + pt = ptRook; + ptr++; + break; + case 'Q': + pt = ptQueen; + ptr++; + break; + case 'K': + pt = ptKing; + ptr++; + break; + case 'O': + case 'o': + // castling! + { + ptr++; + if ( !*ptr ) + return mcNone; + if ( *ptr == '-' ) + ptr++; + if ( !*ptr ) + return mcNone; + if ( (*ptr|32) != 'o' ) + return mcNone; + ptr++; + // ok we have at least kingside castling now + File toFile = GFILE; + + // but could be queenside castling + if ( *ptr && (*ptr|32) == 'o' ) + { + toFile = CFILE; + ptr++; + } + else if ( ptr[1] && *ptr == '-' && (ptr[1]|32) == 'o' ) + { + // long castling + toFile = CFILE; + ptr += 2; + } + + Square from = king(turn()); + Square to = SquarePack::setFile(from, toFile); + res = MovePack::initCastling(from, to); + // finally check if legal (we're strict here!) + bool legal = inCheck() ? isLegal<1, 0>(res, pins()) : isLegal<0, 0>(res, pins()); + if ( !legal ) + ptr = old; + return legal ? res : mcNone; + } + default:; + } + // now the tricky part ... handle from and to... (squares and files) + // pawn captures could be as simple as cxd or cd + + // parse from square (actually could be to square) + int ff = -1, fr = -1; + parseSANSquare( ptr, ff, fr ); + + // skip -, x, : + if ( *ptr == '-' || *ptr == 'x' || *ptr == ':' ) + ++ptr; + + // parse to square + int tf = -1, tr = -1; + parseSANSquare( ptr, tf, tr ); + + if ( ff >= 0 && fr >= 0 && (tf >= 0 || tr >= 0) ) + { + // have full from square => fix piece type + Square sq = SquarePack::init((File)ff, (Rank)fr); + Piece p = piece(sq); + pt = PiecePack::type(p); + if ( pt == ptNone || PiecePack::color(p) != turn() ) + return mcNone; // illegal from square + } + + // only have from square => it's actually to square + if ( tf < 0 && tr < 0 ) + { + tf = ff; tr = fr; + ff = fr = -1; + } + + if ( tf < 0 || tr < 0 ) + { + // illegal => we always need full destination square + ptr = old; + return mcNone; + } + + // if we're moving a pawn, optionally parse promotion (OR: parse always?!) + if ( pt == ptPawn && *ptr ) + { + const char *optr = ptr; + if ( *ptr == '=' ) + ++ptr; + if ( *ptr ) + { + switch( *ptr | 32 ) + { + case 'n': + promo = ptKnight; + break; + case 'b': + promo = ptBishop; + break; + case 'r': + promo = ptRook; + break; + case 'q': + promo = ptQueen; + break; + } + } + ptr = promo == ptNone ? optr : ptr+1; + } + + // this STUPID useless statement here is just to silence vs2012 static analyzer which doesn't probably understand + // const char *& + if ( !ptr ) + return mcNone; + + // consume optional check sign + if ( *ptr == '+' ) + ptr++; + + // consume optional doublecheck (not part of SAN) or checkmate sign + if ( *ptr == '+' || *ptr == '#' ) + ptr++; + + // generate legal moves + MoveGen mg(*this); + Move moves[ maxMoves + 4 ]; + Move rmoves[ maxMoves + 4 ]; + MoveCount count = 0; + MoveCount candCount = 0; + Move m; + while ( (m = mg.next()) != mcNone ) + { + moves[count] = rmoves[count] = m; + count++; + if ( !MovePack::isCastling(m) ) + continue; + + // generate castling alternatives (king captures rook and rook captures king) + Square from = MovePack::from(m); + Square to = MovePack::to(m); + + CastRights cr = castRights(turn()); + // determine rookSquare + Square rsq = CastPack::rookSquare(to, cr); + + // generate optional target file for king captures rook + moves[count] = MovePack::setTo( m, rsq ); + rmoves[count++] = m; + + // generate optional target file for king captures rook + moves[count] = MovePack::init( rsq, from ) | mfCastling; + rmoves[count++] = m; + } + + // finally try to resolve the move! + for ( MoveCount i=0; i promo mismatch + + File mff = SquarePack::file(from); + Rank mfr = SquarePack::rank(from); + File mtf = SquarePack::file(to); + Rank mtr = SquarePack::rank(to); + + if ( ff >= 0 && mff != ff ) + continue; + if ( fr >= 0 && mfr != fr ) + continue; + if ( tf >= 0 && mtf != tf ) + continue; + if ( tr >= 0 && mtr != tr ) + continue; + // ok we have a candidate move here + res = rmoves[i]; + if ( ++candCount > 1 ) + { + ptr = old; + return mcNone; // reject => ambiguous! + } + } + + if ( res == mcNone ) + ptr = old; + + return res; +} + +Move Board::fromSAN( const std::string &str ) const +{ + const char *ptr = str.c_str(); + return fromSAN( ptr ); +} + +bool Board::compare( const Board &tmp ) const +{ + if ( tmp.bhash != bhash ) + return 0; + if ( tmp.bpawnHash != bpawnHash ) + return 0; + if ( memcmp( tmp.bb, bb, inCheck() ? sizeof(bb) : sizeof(Bitboard) * bbiEvMask ) != 0 ) + return 0; + if ( memcmp( tmp.bpieces, bpieces, sizeof(bpieces) ) != 0 ) + return 0; + if ( memcmp( tmp.bnpmat, bnpmat, sizeof(bnpmat) ) != 0 ) + return 0; + if ( memcmp( tmp.bdmat, bdmat, sizeof(bdmat) ) != 0 ) + return 0; + if ( memcmp( tmp.bkingPos, bkingPos, sizeof(bkingPos) ) != 0 ) + return 0; + if ( tmp.bturn != bturn ) + return 0; + if ( tmp.bep != bep ) + return 0; +/* if ( tmp.bfifty != bfifty ) + return 0;*/ + if ( memcmp( tmp.bcastRights, bcastRights, sizeof(bcastRights) ) != 0 ) + return 0; + if ( tmp.bcheck != bcheck ) + return 0; + return 1; +} + +// validate board (debug) +bool Board::isValid() const +{ + Board tmp(*this); + + Piece opieces[64]; + memcpy( opieces, bpieces, sizeof(opieces) ); + + // make sure bit representations match squares + for ( Square sq=0; sq<64; sq++) + { + Piece p = piece(sq); + Piece pt = PiecePack::type( p ); + Color c = PiecePack::color( p ); + if ( pt == ptNone ) + { + // make sure occ is clear + if ( occupied() & BitOp::oneShl(sq) ) + return 0; + continue; + } + if ( pt == ptKing ) + { + // make sure king position matches + if ( king(c) != sq ) + return 0; + continue; + } + if ( !(pieces( c, pt ) & BitOp::oneShl(sq) ) ) + return 0; + } + + tmp.update(); + + if ( memcmp( tmp.bpieces, opieces, sizeof(opieces) ) != 0 ) + return 0; + + if ( tmp.bhash != bhash ) + return 0; + if ( tmp.bpawnHash != bpawnHash ) + return 0; + if ( memcmp( tmp.bb, bb, inCheck() ? sizeof(bb) : sizeof(Bitboard) * bbiEvMask ) != 0 ) + return 0; + if ( memcmp( tmp.bpieces, bpieces, sizeof(bpieces) ) != 0 ) + return 0; + if ( memcmp( tmp.bnpmat, bnpmat, sizeof(bnpmat) ) != 0 ) + return 0; + if ( memcmp( tmp.bdmat, bdmat, sizeof(bdmat) ) != 0 ) + return 0; + if ( memcmp( tmp.bkingPos, bkingPos, sizeof(bkingPos) ) != 0 ) + return 0; + if ( tmp.bturn != bturn ) + return 0; + if ( tmp.bep != bep ) + return 0; + if ( tmp.bfifty != bfifty ) + return 0; + if ( memcmp( tmp.bcastRights, bcastRights, sizeof(bcastRights) ) != 0 ) + return 0; + if ( tmp.bcheck != bcheck ) + return 0; + return 1; +} + +// debug dump +void Board::dump() const +{ + for ( Square sq=0; sq<64; sq++) + { + File f = SquarePack::file( sq ); + if ( !f ) + { + for ( File tf = 0; tf < 8; tf++ ) + { + bool color = (BitOp::oneShl( sq + tf ) & lightSquares ) != 0; + std::cout << (color ? "#####" : " "); + } + std::cout << std::endl; + } + bool color = (BitOp::oneShl( sq ) & lightSquares ) != 0; + const char *symbols = " PNBRQK pnbrqk"; + std::cout << (color ? "# " : " ") << symbols[ piece(sq) ] << (color ? " #" : " "); + if ( f == 7 ) + { + std::cout << std::endl; + for ( File tf = 0; tf < 8; tf++ ) + { + color = (BitOp::oneShl( sq + tf - 7 ) & lightSquares ) != 0; + std::cout << (color ? "#####" : " "); + } + std::cout << std::endl; + } + } + std::cout << "fen: " << toFEN() << std::endl; +} + +template< bool evasion > bool Board::pseudoIsLegal( Move m, Bitboard pins ) const +{ + assert( !MovePack::isCastling(m) ); + + Square kp = king( turn() ); + Square from = MovePack::from( m ); + Square to = MovePack::to( m ); + + if ( MovePack::isEpCapture( m ) ) + { + // FIXME: could do much better than that ... + + // en-passant requires special handling + // make sure we don't leave our king in check + Bitboard occ = occupied(); + occ ^= BitOp::oneShl( from ) | BitOp::oneShl( to ) | + BitOp::oneShl( SquarePack::epTarget( epSquare(), from ) ); + + // check for sliders only + if ( Magic::bishopAttm( kp, occ ) & diagSliders( flip( turn() ) ) ) + return 0; + + return !( Magic::rookAttm( kp, occ ) & orthoSliders( flip( turn() ) ) ); + } + + if ( from == kp ) + { + if ( evasion ) + { + assert( from != to ); + Bitboard occ = occupied(); + occ ^= BitOp::oneShl( from ) | BitOp::oneShl( to ); + + // check for sliders only + if ( Magic::bishopAttm( to, occ ) & diagSliders( flip( turn() ) ) ) + return 0; + + if ( Magic::rookAttm( to, occ ) & orthoSliders( flip( turn() ) ) ) + return 0; + // non-castling king move -> make sure target square isn't attacked + return !doesAttack<0>( flip(turn()), to ); + } + // non-castling king move -> make sure target square isn't attacked + else return !doesAttack<1>( flip(turn()), to ); + } + + if ( evasion ) + { + assert( from != to ); + Bitboard occ = occupied(); + Bitboard tomask = BitOp::oneShl( to ); + occ ^= BitOp::oneShl( from ); + if ( !MovePack::isCapture( m ) ) + occ ^= tomask; + + // check for sliders only + if ( Magic::bishopAttm( kp, occ ) & diagSliders( flip( turn() ) ) & ~tomask ) + return 0; + + if ( Magic::rookAttm( kp, occ ) & orthoSliders( flip( turn() ) ) & ~tomask ) + return 0; + } + + if ( !(BitOp::oneShl( from ) & pins) ) + return 1; // not pinned => legal + + // pinned => make sure we're moving along the ray + assert( Tables::direction[ kp ][ from ] != dirNone ); + return Tables::direction[ kp ][ from ] == Tables::direction[ kp ][ to ]; +} + +template< bool evasion, bool killer > bool Board::iisLegal( Move m, Bitboard pins ) const +{ + assert( !killer || !MovePack::isSpecial(m) ); + // FIXME: refactor? + if ( !killer && MovePack::isCastling( m ) ) + { + // FIXME: better or ok? + if ( inCheck() || (m & (mfCapture | mfEpCapture | mmPromo) ) ) + return 0; // ignore junk flags too + CastRights cr = castRights( turn() ); + Move cm = mcNone; + File tf = SquarePack::file( MovePack::to(m) ); + if ( tf >= EFILE ) + { + if ( !CastPack::allowedShort( cr ) ) + return 0; + // short + Move *nm = (turn() == ctWhite) ? + MoveGen::genCastling< ctWhite >( CastPack::shortFile(cr), *this, &cm ) + : + MoveGen::genCastling< ctBlack >( CastPack::shortFile(cr), *this, &cm ); + if ( nm == &cm ) + return 0; + } + else + { + // long + if ( !CastPack::allowedLong( castRights( turn() ) ) ) + return 0; + Move *nm = ( turn() == ctWhite ) ? + MoveGen::genCastling< ctWhite >( CastPack::longFile(cr), *this, &cm ) + : + MoveGen::genCastling< ctBlack >( CastPack::longFile(cr), *this, &cm ); + if ( nm == &cm ) + return 0; + } + return cm == m; + } + Piece pp = MovePack::promo( m ); + if ( pp == ptPawn || pp >= ptKing ) + return 0; // junk value in promotion + Square from = MovePack::from(m); + Square to = MovePack::to(m); + + if ( from == to ) + return 0; // illegal + + Bitboard fm = BitOp::oneShl( from ); + if ( !(fm & occupied(turn()) ) ) + return 0; // illegal from + Bitboard tm = BitOp::oneShl( to ); + // for killers exclude captures as well + if ( tm & (killer ? occupied() : occupied(turn()) ) ) + return 0; // exclude (self)-captures + Piece ptype = PiecePack::type( piece( from ) ); + assert( ptype >= ptPawn && ptype <= ptKing ); + + if ( ptype == ptPawn ) + { + // assume position (from) is valid + if ( MovePack::isEpCapture(m) ) + { + if (m & (mfCapture | mfCastling | mmPromo) ) + return 0; // illegal flags + // the following check is useless BUT I want this to be bullet proof + Square ep = epSquare(); + if ( !ep || to != ep ) + return 0; // illegal -> no ep or bad to square + Bitboard epbb = BitOp::oneShl( ep ); + if ( (occupied() & epbb) || !(BitOp::shiftBackward( turn(), epbb ) & pieces(flip(turn()), ptPawn) ) ) + return 0; // illegal: ep square occupied OR doesn't have opponent pawn where expected + + return (Tables::pawnAttm[ turn() ][ from ] & epbb) && + pseudoIsLegal< evasion >( m, pins ); + } + // ok en-passant validation was piece of cake + if ( evasion && !(tm & evasions()) ) + return 0; // non-doublecheck evasion needs proper target square + if ( MovePack::isCapture(m) ) + { + // pawn capture + if ( m & (mfEpCapture | mfCastling) ) + return 0; // illegal junk flags + if ( king( flip(turn()) ) == to ) + return 0; // illegal king capture + if ( !( tm & occupied(flip(turn())) & Tables::pawnAttm[ turn() ][ from ] ) ) + return 0; // not a capture/bad dir + // finally check promotion + if ( !pp ) + return (tm & pawnPromoSquares) ? 0 : pseudoIsLegal< evasion >( m, pins ); + return (turn() == ctWhite ? + SquarePack::relRank< ctWhite >( from ) == RANK7 : + SquarePack::relRank< ctBlack >( from ) == RANK7) + ? pseudoIsLegal< evasion >( m, pins ) : 0; + } + else + { + // normal pawn move + if ( m & mfCastling ) + return 0; // illegal junk flags + + if ( SquarePack::isRank1Or8( from ) ) + return 0; + + Rank irank = (turn() == ctWhite) ? + SquarePack::relRank< ctWhite >( from ) : SquarePack::relRank< ctBlack >( from ); + + // advance by one + from = ( turn() == ctWhite ) ? + SquarePack::advanceRank< ctWhite, 1 >( from ) + : + SquarePack::advanceRank< ctBlack, 1 >( from ); + + if ( BitOp::oneShl( from ) & occupied() ) + return 0; // forward square blocked + if ( to == from ) + { + // is advance by one + Rank tr = turn() == ctWhite ? + SquarePack::relRank< ctWhite >( to ) : + SquarePack::relRank< ctBlack >( to ); + + return ( pp ? tr == RANK8 : tr != RANK8 ) + ? pseudoIsLegal< evasion >( m, pins ) : 0; + } + if ( pp ) + return 0; // two push must not be promotion + + if ( SquarePack::isRank1Or8( from ) ) + return 0; + + if ( irank != RANK2 ) + return 0; // push by two not possible + + // further advance by one + from = ( turn() == ctWhite ) ? + SquarePack::advanceRank< ctWhite, 1 >( from ) + : + SquarePack::advanceRank< ctBlack, 1 >( from ); + return ( from == to && !(BitOp::oneShl( from ) & occupied()) ) + ? pseudoIsLegal< evasion >( m, pins ) : 0; + } + } + else + { + if ( m & (mfEpCapture | mfCastling | mmPromo) ) + return 0; // junk flags + if ( evasion && ptype != ptKing && !(tm & evasions()) ) + return 0; // non-doublecheck evasion needs proper target square + + if ( !killer ) + { + if ( MovePack::isCapture(m) ) + { + if ( king( flip(turn()) ) == to ) + return 0; // illegal king capture + if ( !( tm & occupied(flip(turn())) ) ) + return 0; // not a capture + } + else + // not a capture + if ( tm & occupied(flip(turn())) ) + return 0; // not a capture but capturing + } + // check direction/target validity + if ( !(Tables::moveValid[from][to] & (1U << ptype)) ) + return 0; + // and finally check between mask validity for sliders + if ( PiecePack::isSlider( ptype ) && (Tables::between[from][to] & ~(fm | tm) & occupied()) ) + return 0; + } + return pseudoIsLegal< evasion >( m, pins ); +} + +template< bool evasion, bool killer > bool Board::isLegal( Move m, Bitboard pins ) const +{ + return iisLegal< evasion, killer >( m, pins ); +} + +// set side to move (used in xboard edit mode) +void Board::setTurn( Color c ) +{ + bturn = c; +} + +// clear pieces (used in xboard edit mode) +void Board::clearPieces() +{ + clear(); + memset( bpieces, 0, sizeof(bpieces) ); +} + +// set piece of color at square (used in xboard edit mode) +bool Board::setPiece( Color c, Piece p, Square sq ) +{ + if ( c > ctBlack || p > ptKing || sq > 63 ) + return 0; + bpieces[ sq ] = PiecePack::init( c, p ); + return 1; +} + +// update bitboards from board state (used in xboard edit mode) +void Board::updateBitboards() +{ + memset( bb, 0, sizeof(bb) ); + bkingPos[ ctWhite ] = bkingPos[ ctBlack ] = 0; + for ( Square sq = 0; sq < 64; sq++ ) + { + Piece p = piece( sq ); + Piece pt = PiecePack::type( p ); + if ( pt == ptNone ) + continue; + Bitboard msk = BitOp::oneShl(sq); + Color pc = PiecePack::color( p ); + if ( pt == ptKing ) + { + bb[ bbiWOcc + pc ] |= msk; + bkingPos[ pc ] = sq; + continue; + } + bb[ BBI( pc, pt ) ] |= msk; + bb[ bbiWOcc + pc ] |= msk; + } + update(); +} + +// swap white<=>black +void Board::swap() +{ + for ( Square s=0; s<32; s++) + { + Square fs = SquarePack::flipV(s); + std::swap( bpieces[s], bpieces[fs] ); + } + for ( Square s=0; s<64; s++) + { + Piece p = bpieces[s]; + if ( PiecePack::type(p) == ptNone ) + continue; + bpieces[s] ^= (Piece)1 << psColor; + } + std::swap( bcastRights[ ctWhite ], bcastRights[ ctBlack ] ); + if ( bep ) + bep = SquarePack::flipV(bep); + bturn = flip(bturn); + updateBitboards(); +} + +void Board::calcEvasMask() +{ + assert( inCheck() ); + // evasions -- prepare some variables + Bitboard tmp = checkers(); + assert( tmp ); + if ( (tmp & ((Bitboard)0-tmp)) == tmp ) // BitOp::popCount( tmp ) < 2 + { + assert( BitOp::popCount( tmp ) < 2 ); + // generate target mask + Square kp = king( turn() ); + // necessary to use orig checkers because of knight checks + bb[ bbiEvMask ] = tmp; + Square sq = BitOp::popBit( tmp ); + // & ~kp to avoid self-captures of king + bb[ bbiEvMask ] |= Tables::between[ kp ][ sq ] & BitOp::noneShl(kp); + } else bb[ bbiEvMask ] = 0; +} + +// instantiate +template bool Board::pseudoIsLegal<0>( Move, Bitboard ) const; +template bool Board::pseudoIsLegal<1>( Move, Bitboard ) const; +template bool Board::isLegal<0, 0>( Move, Bitboard ) const; +template bool Board::isLegal<0, 1>( Move, Bitboard ) const; +template bool Board::isLegal<1, 0>( Move, Bitboard ) const; +template bool Board::isLegal<1, 1>( Move, Bitboard ) const; + +// assign castling rights automatically +void Board::autoCastlingRights() +{ + // TODO: implement + +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/board.h b/Engines/Linux/cheng/src/cheng4/board.h new file mode 100644 index 0000000..ffb4380 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/board.h @@ -0,0 +1,964 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "move.h" +#include "magic.h" +#include "zobrist.h" +#include "psq.h" +#include +#include +#include + +// TODO: move large methods to cpp + +namespace cheng4 +{ + +class MoveGen; + +typedef uint UndoMask; + +enum UndoFlags +{ + ufIrreversible = 1, // restore pawnhash and fifty rule counter + ufNPMat = 2, // restore non-pawn materials + ufKingState = 4, // restore king state (=kingpos and check flag) + ufCastling = 8 // restore castling state +}; + +class Board; + +struct UndoInfo +{ + UndoMask flags; // undo flags + // ep square will be restored + Signature bhash; // board hash (always) + Signature phash; // pawn hash (optional) + Bitboard bb[7]; // bitboards to restore + DMat dmat[2]; // original delta-material (always) + NPMat npmat[2]; // original non-pawn material + u8 bbi[7]; // indices to restore + u8 bbCount; // number of bbs to restore + Piece pieces[4]; // board pieces to restore + Square squares[4]; // board squares to restore + Square ep; // original ep square (always) + u8 pieceCount; // number of board pieces to restore + FiftyCount fifty; // original fifty move counter type (if needed) + CastRights castRights[2]; // original castling rights (if needed) + u8 kingPos; // original king position (always) + bool check; // original in check flag (always) + + inline void clear() + { + flags = 0; + bbCount = pieceCount = 0; + } + + inline void saveBB( u8 index, Bitboard bboard ) + { + assert( index < bbiMax ); + assert( bbCount < 7 ); + bb[ bbCount ] = bboard; + bbi[ bbCount++ ] = index; + } + + inline void savePiece( Square square, Piece piece ) + { + assert( PiecePack::type( piece ) <= ptKing ); + assert( pieceCount < 4 ); + pieces[ pieceCount ] = piece; + squares[ pieceCount++ ] = square; + } +}; + +class Board +{ +protected: + friend class MoveGen; + + Signature bhash; // current hash signature + Signature bpawnHash; // current pawn hash signature + Bitboard bb[ bbiMax ]; // bitboard for pieces (indexed using BBI) + Piece bpieces[ 64 ]; // pieces: color in MSBit + DMat bdmat[2]; // delta-material [gamephase] - in centipawns + NPMat bnpmat[2]; // non-pawn material (white, black) + Square bkingPos[2]; // kings not stored using bitboards + Color bturn; // ctWhite(0) or ctBlack(1) + Square bep; // enpassant square (new: where opp captures; was a flaw in cheng3) + FiftyCount bfifty; // fifty move counter + CastRights bcastRights[2]; // castling rights for white/black, indexed by colorType + bool bcheck; // in check flag + + // extra stuff (not used during search) + bool frc; // is fischer random? + bool arenaMode; // FRC Arena mode + uint curMove; // current move number + + // castling move is special + void doCastlingMove( Move move, UndoInfo &ui, bool ischeck ); + + inline void initUndo( UndoInfo &ui ) const + { + ui.clear(); // clear undo mask + ui.bhash = bhash; // hash signature always preserved + // delta material always preserved + ui.dmat[ phOpening ] = bdmat[ phOpening ]; + ui.dmat[ phEndgame ] = bdmat[ phEndgame ]; + ui.ep = bep; // ep square always preserved + } + + inline void saveKingState( UndoInfo &ui ) const + { + assert( !(ui.flags & ufKingState) ); + ui.flags |= ufKingState; + ui.check = bcheck; + ui.kingPos = king( turn() ); + } + + template< bool checkFlag > inline void saveCastling( UndoInfo &ui ) const + { + if ( checkFlag && ( ui.flags & ufCastling ) ) + return; // already saved + assert( !(ui.flags & ufCastling) ); + ui.flags |= ufCastling; + ui.castRights[ ctWhite ] = castRights( ctWhite ); + ui.castRights[ ctBlack ] = castRights( ctBlack ); + } + + template< bool checkFlag > inline void saveNPMat( UndoInfo &ui ) const + { + if ( checkFlag && ( ui.flags & ufNPMat ) ) + return; // already saved + assert( !(ui.flags & ufNPMat) ); + ui.flags |= ufNPMat; + ui.npmat[ ctWhite ] = bnpmat[ ctWhite ]; + ui.npmat[ ctBlack ] = bnpmat[ ctBlack ]; + } + + // also clear fifty rule counter + inline void saveIrreversible( UndoInfo &ui ) + { + assert( !(ui.flags & ufIrreversible) ); + ui.phash = bpawnHash; + ui.fifty = bfifty; + ui.flags |= ufIrreversible; + bfifty = 0; + } + + template< Color c > Draw isDrawByMaterial( MaterialKey mk ) const; + + void calcEvasMask(); + +public: + + inline uint move() const + { + return curMove; + } + + // increment move counter by 1 + void incMove(); + + // assign castling rights automatically + void autoCastlingRights(); + + inline void setFischerRandom( bool frc_ ) + { + frc = frc_; + } + + inline bool fischerRandom() const + { + return frc; + } + + // movegen helper only! + inline Bitboard evasions() const + { + return bb[ bbiEvMask ]; + } + + // simply returns hash signature + inline Signature sig() const + { + return bhash; + } + + // simply returns pawn hash signature + inline Signature pawnSig() const + { + return bpawnHash; + } + + // note: doMove methods expect a legal move! + + template< u8 flags > void undoTemplate( const UndoInfo &ui ) + { + if ( flags & ufIrreversible ) + { + bpawnHash = ui.phash; + bfifty = ui.fifty; + } + bfifty--; + if ( flags & ufNPMat ) + { + bnpmat[ ctWhite ] = ui.npmat[ ctWhite ]; + bnpmat[ ctBlack ] = ui.npmat[ ctBlack ]; + } + if ( flags & ufKingState ) + { + bkingPos[ turn() ] = ui.kingPos; + bcheck = ui.check; + } + if ( flags & ufCastling ) + { + bcastRights[ ctWhite ] = ui.castRights[ ctWhite ]; + bcastRights[ ctBlack ] = ui.castRights[ ctBlack ]; + } + } + + template< Color color, bool capture, Piece ptype > + void doMoveTemplate( Move move, Square from, Square to, UndoInfo &ui, bool isCheck ) + { + assert( !MovePack::isCastling( move ) ); + assert( color == bturn ); + assert( from != to ); + + initUndo( ui ); + bfifty++; + + if ( inCheck() ) + ui.saveBB( bbiEvMask, bb[ bbiEvMask ] ); + + // update hash + // move piece + Bitboard tomask; + Bitboard frommask; + Bitboard ftmask; + + u8 bbi; + + bbi = bbiWOcc + color; + ui.saveBB( bbi, bb[ bbi ] ); + bb[ bbi ] ^= ( ftmask = (frommask = BitOp::oneShl( from )) | (tomask = BitOp::oneShl(to)) ); + + Piece toPiece; + + // prepare to update pieces on board + ui.savePiece( from, toPiece = piece(from) ); + ui.savePiece( to, piece(to) ); + + assert( PiecePack::type( toPiece ) ); + + // hash update + bhash ^= Zobrist::piece[ color ][ ptype ][ from ]; + + if ( capture || ptype == ptPawn ) + // irreversible move + saveIrreversible( ui ); + + if ( capture ) + // save material key + ui.saveBB( bbiMat, bb[ bbiMat ] ); + + if ( ptype == ptPawn ) + { + bpawnHash ^= Zobrist::piece[ color ][ ptPawn ][ from ]; + Piece promo = MovePack::promo( move ); + if ( promo ) + { + if ( !capture ) + // save material key + ui.saveBB( bbiMat, bb[ bbiMat ] ); + + assert( promo <= ptQueen ); + toPiece &= pmColor; + toPiece |= promo; + bhash ^= Zobrist::piece[ color ][ promo ][ to ]; + + bbi = BBI( color, ptPawn ); + ui.saveBB( bbi, bb[ bbi ] ); + bb[ bbi ] ^= frommask; + + bbi = BBI( color, promo ); + ui.saveBB( bbi, bb[ bbi ] ); + bb[ bbi ] ^= tomask; + + // update material key + bb[ bbiMat ] -= BitOp::oneShl( MATSHIFT( color, ptPawn) ); + bb[ bbiMat ] += BitOp::oneShl( MATSHIFT( color, promo) ); + + // update non-pawn material + saveNPMat<0>( ui ); + bnpmat[ color ] += Tables::npValue[ promo ]; + } + else + { + bbi = BBI( color, ptype ); + ui.saveBB( bbi, bb[ bbi ] ); + bb[ bbi ] ^= ftmask; + + Signature tosig = Zobrist::piece[ color ][ ptPawn ][ to ]; + bhash ^= tosig; + bpawnHash ^= tosig; + } + } else + { + if ( ptype != ptKing ) + { + bbi = BBI( color, ptype ); + ui.saveBB( bbi, bb[ bbi ] ); + bb[ bbi ] ^= ftmask; + } + + bhash ^= Zobrist::piece[ color ][ ptype ][ to ]; + } + + CastRights cr; + + if ( ptype == ptKing || ptype ==ptRook ) + cr = castRights( color ); + + if ( ptype == ptKing ) + { + saveKingState( ui ); + saveCastling<0>( ui ); + if ( cr ) + { + // losing all castling rights + bhash ^= Zobrist::cast[ color ][ cr ]; + bcastRights[ color ] = 0; + } + } else if ( ptype == ptRook && cr ) + { + // lose castling rights + if ( SquarePack::relRank< color >( from ) == RANK1 ) + { + File rf = SquarePack::file( from ); + File kf = SquarePack::file( king(color) ); + if ( (rf > kf && rf == CastPack::shortFile(cr)) + || (rf < kf && rf == CastPack::longFile(cr)) ) + { + saveCastling<0>(ui); + bhash ^= Zobrist::cast[ color ][ cr ]; + bcastRights[ color ] = CastPack::loseFile( SquarePack::file( from ), cr ); + bhash ^= Zobrist::cast[ color ][ castRights( color ) ]; + } + } + } + + if ( capture ) + { + // a capture needs even more careful handling + Square cto = (ptype == ptPawn && MovePack::isEpCapture(move) ) ? + SquarePack::epTarget( epSquare(), from ) : to; + + Piece cap = piece( cto ); + + Piece captype = PiecePack::type( cap ); + assert( captype >= ptPawn && captype < ptKing ); + + // update material key + bb[ bbiMat ] -= BitOp::oneShl( MATSHIFT( flip(color), captype ) ); + + // update delta material + bdmat[ phOpening ] -= PSq::tables[ phOpening ][ flip(color) ][ captype ][ cto ]; + bdmat[ phEndgame ] -= PSq::tables[ phEndgame ][ flip(color) ][ captype ][ cto ]; + + if ( captype == ptRook ) + { + // lose appropriate castling rights (note: opponent loses) + Color opc = flip(color); + CastRights tcr = castRights( opc ); + if ( tcr && SquarePack::relRank< (color^1) >( to ) == RANK1 ) + { + File f = SquarePack::file( to ); + if ( CastPack::longFile( tcr ) == f ) + { + saveCastling<1>(ui); + bhash ^= Zobrist::cast[ opc ][ tcr ]; + bcastRights[opc] = CastPack::loseLong( tcr ); + bhash ^= Zobrist::cast[ opc ][ castRights( opc ) ]; + } + else if ( CastPack::shortFile( tcr ) == f ) + { + saveCastling<1>(ui); + bhash ^= Zobrist::cast[ opc ][ tcr ]; + bcastRights[opc] = CastPack::loseShort( tcr ); + bhash ^= Zobrist::cast[ opc ][ castRights( opc ) ]; + } + } + } + Signature tosig = Zobrist::piece[ flip(color) ][ captype ][ cto ]; + bhash ^= tosig; + if ( captype == ptPawn ) + bpawnHash ^= tosig; + + Bitboard capmask = (ptype == ptPawn ? BitOp::oneShl( cto ) : tomask); + + bbi = bbiBOcc - color; + ui.saveBB( bbi, bb[bbi] ); + bb[ bbi ] ^= capmask; + + bbi = BBI( flip(color), captype ); + ui.saveBB( bbi, bb[bbi] ); + bb[ bbi ] ^= capmask; + + // update total non-pawn material on board + saveNPMat< ptype == ptPawn>( ui ); + bnpmat[ flip(color) ] -= Tables::npValue[ captype ]; + + if ( ptype == ptPawn && cto != to ) + { + assert( MovePack::isEpCapture( move ) ); + // ep capture + ui.savePiece( cto, cap ); + bpieces[ cto ] = ptNone; + } + } + + // finish updating board pieces + bpieces[to] = toPiece; + bpieces[from] = ptNone; + + // update delta material + + toPiece &= pmType; + + bdmat[ phOpening ] -= PSq::tables[ phOpening ][ color ][ ptype ][ from ]; + bdmat[ phEndgame ] -= PSq::tables[ phEndgame ][ color ][ ptype ][ from ]; + + bdmat[ phOpening ] += PSq::tables[ phOpening ][ color ][ toPiece ][ to ]; + bdmat[ phEndgame ] += PSq::tables[ phEndgame ][ color ][ toPiece ][ to ]; + + if ( ptype == ptKing ) + bkingPos[ color ] = to; + + // update check state + if ( bcheck != isCheck ) + { + if ( ptype != ptKing ) + saveKingState( ui ); + bcheck = isCheck; + } + + // update ep square + if ( bep ) + { + bhash ^= Zobrist::epFile[ SquarePack::file( bep ) ]; + bep = 0; + } + if ( ptype == ptPawn ) + { + Rank rf = SquarePack::rank( from ); + Rank rt = SquarePack::rank( to ); + if ( !((rf - rt) & 1) ) + { + // pawn push by two => update ep square + bep = SquarePack::advanceRank< color, -1 >( to ); + // only set ep square if pawn can be ep-captured + // note: this slows my pawn-push movegen a tiny bit BUT it avoid dup hashes in useless cases, + // especially useful for books + if ( Tables::pawnAttm[color][bep] & pieces( flip(color), ptPawn ) ) + bhash ^= Zobrist::epFile[ SquarePack::file( bep ) ]; + else bep = 0; + } + } + + // finally change stm + bhash ^= Zobrist::turn; + bturn = flip( bturn ); + + if ( isCheck ) + calcEvasMask(); + + assert( !( (pieces( ctWhite, ptPawn)|pieces( ctBlack, ptPawn)) & pawnPromoSquares ) ); + assert( bcheck == doesAttack<1>( flip(bturn), king( bturn ) ) ); + assert( bhash == recomputeHash() ); + assert( bpawnHash == recomputePawnHash() ); + assert( isValid() ); + } + + // do move + void doMove( Move move, UndoInfo &ui, bool isCheck ); + + // undo move + void undoMove( const UndoInfo &ui ); + + // do null move + void doNullMove( UndoInfo &ui ); + + // undo null move + void undoNullMove( const UndoInfo &ui ); + + // reset to initial position + void reset(); + + // clear bits + void clear(); + + // returns 1 if stm is in check + inline bool inCheck() const + { + return bcheck; + } + + inline MaterialKey materialKey() const + { + return (MaterialKey)bb[ bbiMat ]; + } + + // returns delta material for given game phase (fine) + inline Score deltaMat( Phase ph ) const + { + assert( ph <= phEndgame ); + return bdmat[ ph ]; + } + + // return total non-pawn material + inline NPMat nonPawnMat() const + { + return bnpmat[ ctWhite ] + bnpmat[ ctBlack ]; + } + + // non-pawn material for side + inline NPMat nonPawnMat( Color c ) const + { + assert( c <= ctBlack ); + return bnpmat[ c ]; + } + + // return en-passant square + inline Square epSquare() const + { + return bep; + } + + // return fifty move rule counter + inline uint fifty() const + { + return bfifty; + } + + // return side to move + inline Color turn() const + { + return bturn; + } + + // castling rights + inline CastRights castRights( Color color ) const + { + assert( color <= ctBlack ); + return bcastRights[ color ]; + } + + // returns true if stm can castle + inline bool canCastle() const + { + return castRights( turn() ) != 0; + } + + // return occupied mask (all) + inline Bitboard occupied() const + { + return bb[ bbiWOcc ] | bb[ bbiBOcc ]; + } + + // return occupied mask for color + inline Bitboard occupied( Color c ) const + { + assert( c <= ctBlack ); + return bb[ bbiWOcc + c ]; + } + + inline Bitboard pieces( Color color ) const + { + assert( color <= ctBlack ); + return bb[ bbiWOcc + color ]; + } + + inline Bitboard pieces( Color color, Piece pt ) const + { + assert( pt < ptKing && color <= ctBlack ); + return bb[ BBI( color, pt ) ]; + } + + inline Piece piece( Square sq ) const + { + assert( sq < 64 ); + return bpieces[ sq ]; + } + + // clear pieces (used in xboard edit mode) + void clearPieces(); + + // set side to move (used in xboard edit mode) + void setTurn( Color c ); + + // update bitboards from board state (used in xboard edit mode) + // impl. note: calls update() when done + void updateBitboards(); + + // swap white<=>black + void swap(); + + // set piece of color at square (used in xboard edit mode) + bool setPiece( Color c, Piece p, Square sq ); + + inline Square king( Color color ) const + { + assert( color <= ctBlack ); + return bkingPos[ color ]; + } + + inline bool isVacated( Square sq ) const + { + return PiecePack::type( piece( sq ) ) == ptNone; + } + + inline Bitboard diagSliders( Color color ) const + { + return pieces( color, ptBishop ) | pieces( color, ptQueen ); + } + + inline Bitboard orthoSliders( Color color ) const + { + return pieces( color, ptRook ) | pieces( color, ptQueen ); + } + + inline Bitboard diagSliders() const + { + return pieces( ctWhite, ptBishop ) | pieces( ctBlack, ptBishop ) | + pieces( ctWhite, ptQueen ) | pieces( ctBlack, ptQueen ); + } + + inline Bitboard orthoSliders() const + { + return pieces( ctWhite, ptRook ) | pieces( ctBlack, ptRook ) | + pieces( ctWhite, ptQueen ) | pieces( ctBlack, ptQueen ); + } + + // see helper: get mask for all attacks (both sides) to sq (use occ mask) + inline Bitboard allAttacksTo( Square sq, Bitboard occ ) const + { + Bitboard mask; + + // knights + mask = Tables::knightAttm[ sq ] & (pieces( ctWhite, ptKnight ) | pieces( ctBlack, ptKnight )); + + // pawns + mask |= (Tables::pawnAttm[ ctBlack ][ sq ] & pieces( ctWhite, ptPawn )) | + (Tables::pawnAttm[ ctWhite ][ sq ] & pieces( ctBlack, ptPawn )); + + // sliders + Bitboard queens = pieces( ctWhite, ptQueen ) | pieces( ctBlack, ptQueen ); + Bitboard orthoSliders = pieces( ctWhite, ptRook ) | pieces( ctBlack, ptRook ) | queens; + Bitboard diagSliders = pieces( ctWhite, ptBishop ) | pieces( ctBlack, ptBishop ) | queens; + + mask |= diagSliders & Magic::bishopAttm( sq, occ ); + mask |= orthoSliders & Magic::rookAttm( sq, occ ); + + // and finally kings + mask |= Tables::kingAttm[ sq ] & (BitOp::oneShl(king( ctWhite )) | BitOp::oneShl(king( ctBlack )) ); + + return mask & occ; + } + + // returns 1 if square is attacked by color + template< bool checksliders > bool doesAttack( Color color, Square sq ) const + { + Color opc = flip(color); + + // check pawns + if ( Tables::pawnAttm[ opc ][ sq ] & pieces( color, ptPawn ) ) + return 1; + + // check knights + if ( Tables::knightAttm[sq] & pieces( color, ptKnight) ) + return 1; + + // check opp king + if ( Tables::neighbor[ sq ][ king(color) ] ) + return 1; + + if ( checksliders ) + { + // check sliders + Bitboard occ = occupied(); + Bitboard sliders; + sliders = diagSliders( color ); + if ( (Tables::diagAttm[sq] & sliders) && + (Magic::bishopAttm( sq, occ ) & sliders) ) + return 1; + sliders = orthoSliders( color ); + return + (Tables::orthoAttm[sq] & sliders) && + (Magic::rookAttm( sq, occ ) & sliders); + } else return 0; + } + + // returns 1 if square is attacked by color + template< bool checksliders > bool doesAttack( Color color, Square sq, Bitboard occ ) const + { + Color opc = flip(color); + + // check pawns + if ( Tables::pawnAttm[ opc ][ sq ] & pieces( color, ptPawn ) ) + return 1; + + // check knights + if ( Tables::knightAttm[sq] & pieces( color, ptKnight) ) + return 1; + + // check opp king + if ( Tables::neighbor[ sq ][ king(color) ] ) + return 1; + + if ( checksliders ) + { + // check sliders + Bitboard sliders; + sliders = diagSliders( color ); + if ( (Tables::diagAttm[sq] & sliders) && + (Magic::bishopAttm( sq, occ ) & sliders) ) + return 1; + sliders = orthoSliders( color ); + return + (Tables::orthoAttm[sq] & sliders) && + (Magic::rookAttm( sq, occ ) & sliders); + } else return 0; + } + + // returns pin mask for pincolor and attackColor + template< Color pinColor, Color attackColor, bool noqueens > Bitboard pinTemplate( Square sq ) const + { + // FIXME: perhaps this could be completely rewritten to make it faster + // (consider all rays separately) + + Bitboard occ = occupied(); + + Bitboard queens = pieces( attackColor, ptQueen ); + Bitboard candidates = pieces( pinColor ); + if ( noqueens ) + candidates &= ~queens; + Bitboard diagSliders = pieces( attackColor, ptBishop ) | queens; + Bitboard orthoSliders = pieces( attackColor, ptRook ) | queens; + Bitboard res = 0; + + if ( diagSliders & Tables::diagAttm[ sq ] ) + { + Bitboard tmp = Magic::bishopAttm( sq, occ ) & candidates; + if ( tmp ) + { + Bitboard tmp2 = Magic::bishopAttm( sq, occ & ~tmp ) & diagSliders; + while( tmp2 ) + res |= Tables::between[ sq ][ BitOp::popBit( tmp2 ) ] & tmp; + } + } + + if ( orthoSliders & Tables::orthoAttm[ sq ] ) + { + Bitboard tmp = Magic::rookAttm( sq, occ ) & candidates; + if ( tmp ) + { + Bitboard tmp2 = Magic::rookAttm( sq, occ & ~tmp ) & orthoSliders; + while( tmp2 ) + res |= Tables::between[ sq ][ BitOp::popBit( tmp2 ) ] & tmp; + } + } + + return res; + } + + // get checkers from stm's point of view + inline Bitboard checkers() const + { + Bitboard res; + + Color color = turn(); + Square kp = king( color ); + Color opcolor = flip( color ); + + // pawns + res = Tables::pawnAttm[ color ][ kp ] & pieces( opcolor, ptPawn ); + + // knights + res |= Tables::knightAttm[ kp ] & pieces( opcolor, ptKnight ); + + // sliders + Bitboard occ = occupied(); + + Bitboard opqueens = pieces( opcolor, ptQueen ); + Bitboard opdiag = pieces( opcolor, ptBishop ) | opqueens; + Bitboard oportho = pieces( opcolor, ptRook ) | opqueens; + + res |= Magic::bishopAttm( kp, occ ) & opdiag; + res |= Magic::rookAttm( kp, occ ) & oportho; + + // note: king can't check directly so we're done now + + return res; + } + + // returns discovered checkers from stm point of view (=stm's dcs) + inline Bitboard discovered() const + { + Color color = turn(); + Square okp = king( flip( color ) ); // opponent's kingpos + + return color == ctWhite ? + pinTemplate< ctWhite, ctWhite, 1 >( okp ) + : pinTemplate< ctBlack, ctBlack, 1 >( okp ); + } + + // returns pins from stm point of view (=stm's pins) + inline Bitboard pins() const + { + Color color = turn(); + Square kp = king( color ); // my kingpos + + return color == ctWhite ? + pinTemplate< ctWhite, ctBlack, 0 >( kp ) + : pinTemplate< ctBlack, ctWhite, 0 >( kp ); + } + + // returns 1 if move does check opponent king (from stm point of view) + bool isCheck( Move m, Bitboard discovered ) const; + + // FIXME: merge later. iisLegal for debugging purposes ATM + + // returns 1 if stm's move is legal + // used for hashmove/killer validation + template< bool evasion, bool killer > bool iisLegal( Move m, Bitboard pins ) const; + template< bool evasion, bool killer > bool isLegal( Move m, Bitboard pins ) const; + + // returns 1 if stm's pseudolegal move is actually legal + // assume castling moves are always legal => DON'T pass any castling moves! + template< bool evasion > bool pseudoIsLegal( Move m, Bitboard pins ) const; + + // recompute hashes, material and update board squares from bitboards + void update(); + + // necessary for tuning, fast-update material + void updateDeltaMaterial(); + + // undo psq values from scores (opening, endgames) + void undoPsq( FineScore *scores ) const; + + // parse from fen + // returns 0 on error + const char *fromFEN( const char *fen ); + + // returns fen for current position + std::string toFEN() const; + // fast version, doesn't add null terminator + char *toFEN(char *dst) const; + + // move to SAN + std::string toSAN( Move m ) const; + // fast version, doesn't add null terminator + char *toSAN( char *dst, Move m ) const; + // move to UCI + std::string toUCI( Move m ) const; + // fast version, doesn't add null terminator + char *toUCI( char *dst, Move m ) const; + // move from UCI + Move fromUCI( const char *&c ) const; + Move fromUCI( const std::string &str ) const; + // move from SAN (includes legality check) + Move fromSAN( const char *&ptr ) const; + Move fromSAN( const std::string &str ) const; + + // recompute hash (debug) + Signature recomputeHash() const; + // recompute pawn hash (debug) + Signature recomputePawnHash() const; + // validate board (debug) + bool isValid() const; + + // is trivial draw? (material or fifty rule) + Draw isDraw() const; + + // debug dump + void dump() const; + + // can do nullmove? + inline bool canDoNull() const + { + // Fonzy's trick + if ((materialKey() & matNPMask[turn()]) == matKN[turn()]) + return 0; + return nonPawnMat( turn() ) != 0; + } + + // can prune move? + // note: before move is made + inline bool canPrune( Move m ) const + { + // don't prune passer pushes + Square to = MovePack::to( m ); + Piece p = piece(to); + if ( PiecePack::type( p ) != ptPawn ) + return 1; + // don't prune passer pushes + return (Tables::passerMask[ turn() ][ to ] & pieces( flip(turn()), ptPawn )) != 0; + } + + // can reduce move? + // note: move already made + inline bool canReduce( Move m ) const + { + Square to = MovePack::to( m ); + Piece p = piece(to); + if ( PiecePack::type( p ) != ptPawn ) + return 1; + // don't reduce passer pushes + return (Tables::passerMask[ flip(turn()) ][ to ] & pieces( turn(), ptPawn )) != 0; + } + + // static exchange evaluator + // fast => used in movegen (where only bad/good capture = sign matters) + template< bool fast > int see( Move m ) const; + + // returns 1 if move is irreversible + inline bool isIrreversible( Move m ) const + { + return MovePack::isSpecial(m) || + PiecePack::type( piece( MovePack::from(m) ) ) == ptPawn; + } + + bool compare( const Board &tmp ) const; + + // move gain ( used in qs delta(futility) ) + Score moveGain( Move m ) const + { + assert( !MovePack::isCastling(m) && MovePack::isCapture(m) ); + Score res = Tables::gainPromo[ MovePack::promo(m) ]; + return res + Tables::gainCap[ PiecePack::type( piece( MovePack::to(m) ) ) ]; + } +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/book.cpp b/Engines/Linux/cheng/src/cheng4/book.cpp new file mode 100644 index 0000000..0931932 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/book.cpp @@ -0,0 +1,342 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "book.h" +#include "bookzobrist.h" +#include "prng.h" +#include "thread.h" +#include "movegen.h" +#include +#include + +namespace cheng4 +{ + +// don't play moves with percentage score below this +static const u32 probeThresholdPercent = 8; + +// Polyglot utils: + +static inline u8 PGPiece( Piece p ) +{ + // Polyglot has: + // bp, wp, bn, wn, bb, wb, br, wr, bq, wq, kb, wk + u8 res = (PiecePack::type(p)-1) << 1; + res |= PiecePack::color(p) == ctWhite ? 1 : 0; + return res; +} + +static inline u8 PGSquare( Square sq ) +{ + return (u8)sq ^ 0x38; +} + +static u64 PGHashPiece( Piece p, Square sq ) +{ + u64 res = BookZobrist[ RandomPiece + PGPiece(p)*64 + PGSquare(sq) ]; + return res; +} + +static Move PGMove( u16 m, const Board &b ) +{ + Square from = SquarePack::flipV( (Square)((m >> 6) & 63) ); + Square to = SquarePack::flipV( (Square)(m & 63) ); + + // special case: convert king captures rook => castling (always king captures rook in polyglot!) + Piece pf = b.piece( from ); + Piece pt = b.piece( to ); + if ( PiecePack::type( pf ) == ptKing ) + { + if ( PiecePack::type( pt ) == ptRook && + PiecePack::color( pf ) == PiecePack::color( pt ) ) + { + File kf = SquarePack::file( to ) >= SquarePack::file( from ) + ? (File)GFILE : (File)CFILE; + to = SquarePack::setFile( to, kf ); + return MovePack::initCastling( from, to ); + } + } + + u8 promo = (m >> 12) & 7; + if ( promo ) + promo += 1; + Piece pp = (Piece)promo; + return MovePack::initPromo( from, to, pp ); +} + +static u64 PGHash( const Board &b ) +{ + u64 res = 0; + for ( Square sq=0; sq<64; sq++ ) + { + Piece p = b.piece(sq); + if ( PiecePack::type(p) == ptNone ) + continue; + res ^= PGHashPiece( p, sq ); + } + + // castling rights + // polyglot flags: + // bit 0: white KS + // bit 1: white QS + // bit 2: black KS + // bit 3: black QS + + u8 flags = 0; + for ( Color c = ctWhite; c <= ctBlack; c++ ) + { + CastRights cr = b.castRights( c ); + if ( CastPack::allowedShort( cr ) ) + flags |= 1 << (c*2); + if ( CastPack::allowedLong( cr ) ) + flags |= 2 << (c*2); + } + + // castling + for ( u8 i=0; i<4; i++) + { + if ( !(flags & (1<seekg( (std::streampos)(16u) ); + stream->read( (char *)&numEntries, sizeof(numEntries) ); + stream->read( (char *)&numPositions, sizeof(numPositions) ); + stream->seekg( (std::streampos)(32u) ); + stream->read( (char *)bits.bits, 65536u ); + if ( stream->fail() ) + { + close(); + return 0; + } + return 1; +} + +bool Book::close() +{ + if ( !stream ) + return 0; + numEntries = 0; + stream->close(); + delete stream; + stream = 0; + return 1; +} + +bool Book::readEntry( size_t idx, BookEntry &e ) +{ + if ( !stream ) + return 0; + stream->seekg( (std::streampos)(32u+65536u+12u*idx) ); + stream->read( (char *)&e, 12 ); + if ( stream->fail() ) + return 0; + return 1; +} + +u32 Book::findEntry( u64 sig, BookEntry &ent ) +{ + i32 l = 0; + i32 h = (i32)numEntries-1; + while ( l &moves, bool avoid, std::vector *counts ) +{ + u64 hash = PGHash(b); + if ( counts ) + counts->clear(); + moves.clear(); + if ( !bits.probe( hash ) ) + return 0; // fast-reject + + BookEntry ent; + u32 ei = findEntry( hash, ent ); + + if ( ei >= numEntries ) + return 0; + + Move lm, lmoves[maxMoves]; + MoveGen mg(b); + uint lcount = 0; + while ( (lm = mg.next()) != mcNone ) + lmoves[lcount++] = lm; + + u32 sum = 0; + + std::vector< BookEntry > ents; + while ( ei < numEntries ) + { + sum += ent.count; + ents.push_back( ent ); + if ( ++ei >= numEntries ) + break; + if ( !readEntry( ei, ent ) ) + break; + if ( ent.sig != hash ) + break; + } + + if ( !avoid && !sum ) + return 0; + + u32 realSum = 0; + for (size_t i=0; ipush_back(bent.count); + break; + } + } + } + } + return realSum; +} + +// reset probe counter +void Book::reset() +{ + counter = 0; +} + +// increment probe counter +void Book::incCounter() +{ + if ( counter < maxCounter ) + ++counter; +} + +// book disabled (due to counter?) +bool Book::disabled() const +{ + return counter >= maxCounter; +} + +// probe book (returs mcNone if no move is found) +Move Book::probe( const Board &b ) +{ + if ( disabled() ) + return mcNone; + + std::vector< Move > moves; + std::vector< u32 > counts; + u32 sum = enumEntries( b, moves, 0, &counts ); + assert( moves.size() == counts.size() ); + + // choose one move at random, picking better moves with higher probability + if ( sum && !moves.empty() ) + { + u32 threshold = (u32)(rng->next64() & 0xffffffffu) % sum; + u32 msum = 0; + // iterate in reverse order, assume moves are sorted by count in descending order by converter! + for (size_t i=moves.size(); i>0; i--) + { + msum += counts[i-1]; + if ( msum > threshold ) + return moves[i-1]; + } + } + return mcNone; +} + +// get number of entries (=moves) +u32 Book::getNumEntries() const +{ + return numEntries; +} + +// get number of positions +u32 Book::getNumPositions() const +{ + return numPositions; +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/book.h b/Engines/Linux/cheng/src/cheng4/book.h new file mode 100644 index 0000000..461524c --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/book.h @@ -0,0 +1,111 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "chtypes.h" +#include "board.h" +#include +#include + +namespace cheng4 +{ + +struct BookBits +{ + u8 bits[65536]; + inline u8 probe( u64 sig ) + { + u32 idx = (u32)(sig & 0x7ffffu); + return bits[ idx>>3 ] & (1u << (idx&7) ); + } +}; + +struct BookEntry +{ + Signature sig; + BookMove move; + BookCount count; // 0 = avoid +}; + +struct PRNG; + +class Book +{ + Book( const Book & ) + { + assert( 0 && "Book cannot be copied!" ); + } + Book &operator =( const Book & ) + { + assert( 0 && "Book cannot be copied!" ); + return *this; + } +protected: + BookProbe counter; + BookBits bits; + std::ifstream *stream; + u32 numEntries; + u32 numPositions; + + PRNG *rng; + + bool readEntry( size_t idx, BookEntry &e ); + + // find leftmost entry + u32 findEntry( u64 sig, BookEntry &e ); + +public: + + Book(); + ~Book(); + + // open book file + bool open( const char *fnm ); + // close book file + bool close(); + + // reset probe counter + void reset(); + + // increment probe counter + void incCounter(); + + // book disabled (due to counter?) + bool disabled() const; + + // probe book (returs mcNone if no move is found) + Move probe( const Board &b ); + + // enum moves for current entry (ignores disabled flag) + // if avoid is true, it enumerates moves with zero weight + // returns count_sum + u32 enumEntries( const Board &b, std::vector &moves, bool avoid = 0, std::vector *counts = 0 ); + + // get number of entries (=moves) + u32 getNumEntries() const; + // get number of positions + u32 getNumPositions() const; +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/bookzobrist.cpp b/Engines/Linux/cheng/src/cheng4/bookzobrist.cpp new file mode 100644 index 0000000..bb44475 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/bookzobrist.cpp @@ -0,0 +1,232 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +// note that this file contains hashes from polyglot so the license may not hold here, I'm not a lawyer + +#include "bookzobrist.h" + +#define BU64C(x) ((u64)(x##ull)) + +namespace cheng4 +{ + +const u64 BookZobrist[] = { + BU64C(0x9D39247E33776D41), BU64C(0x2AF7398005AAA5C7), BU64C(0x44DB015024623547), BU64C(0x9C15F73E62A76AE2), + BU64C(0x75834465489C0C89), BU64C(0x3290AC3A203001BF), BU64C(0x0FBBAD1F61042279), BU64C(0xE83A908FF2FB60CA), + BU64C(0x0D7E765D58755C10), BU64C(0x1A083822CEAFE02D), BU64C(0x9605D5F0E25EC3B0), BU64C(0xD021FF5CD13A2ED5), + BU64C(0x40BDF15D4A672E32), BU64C(0x011355146FD56395), BU64C(0x5DB4832046F3D9E5), BU64C(0x239F8B2D7FF719CC), + BU64C(0x05D1A1AE85B49AA1), BU64C(0x679F848F6E8FC971), BU64C(0x7449BBFF801FED0B), BU64C(0x7D11CDB1C3B7ADF0), + BU64C(0x82C7709E781EB7CC), BU64C(0xF3218F1C9510786C), BU64C(0x331478F3AF51BBE6), BU64C(0x4BB38DE5E7219443), + BU64C(0xAA649C6EBCFD50FC), BU64C(0x8DBD98A352AFD40B), BU64C(0x87D2074B81D79217), BU64C(0x19F3C751D3E92AE1), + BU64C(0xB4AB30F062B19ABF), BU64C(0x7B0500AC42047AC4), BU64C(0xC9452CA81A09D85D), BU64C(0x24AA6C514DA27500), + BU64C(0x4C9F34427501B447), BU64C(0x14A68FD73C910841), BU64C(0xA71B9B83461CBD93), BU64C(0x03488B95B0F1850F), + BU64C(0x637B2B34FF93C040), BU64C(0x09D1BC9A3DD90A94), BU64C(0x3575668334A1DD3B), BU64C(0x735E2B97A4C45A23), + BU64C(0x18727070F1BD400B), BU64C(0x1FCBACD259BF02E7), BU64C(0xD310A7C2CE9B6555), BU64C(0xBF983FE0FE5D8244), + BU64C(0x9F74D14F7454A824), BU64C(0x51EBDC4AB9BA3035), BU64C(0x5C82C505DB9AB0FA), BU64C(0xFCF7FE8A3430B241), + BU64C(0x3253A729B9BA3DDE), BU64C(0x8C74C368081B3075), BU64C(0xB9BC6C87167C33E7), BU64C(0x7EF48F2B83024E20), + BU64C(0x11D505D4C351BD7F), BU64C(0x6568FCA92C76A243), BU64C(0x4DE0B0F40F32A7B8), BU64C(0x96D693460CC37E5D), + BU64C(0x42E240CB63689F2F), BU64C(0x6D2BDCDAE2919661), BU64C(0x42880B0236E4D951), BU64C(0x5F0F4A5898171BB6), + BU64C(0x39F890F579F92F88), BU64C(0x93C5B5F47356388B), BU64C(0x63DC359D8D231B78), BU64C(0xEC16CA8AEA98AD76), + BU64C(0x5355F900C2A82DC7), BU64C(0x07FB9F855A997142), BU64C(0x5093417AA8A7ED5E), BU64C(0x7BCBC38DA25A7F3C), + BU64C(0x19FC8A768CF4B6D4), BU64C(0x637A7780DECFC0D9), BU64C(0x8249A47AEE0E41F7), BU64C(0x79AD695501E7D1E8), + BU64C(0x14ACBAF4777D5776), BU64C(0xF145B6BECCDEA195), BU64C(0xDABF2AC8201752FC), BU64C(0x24C3C94DF9C8D3F6), + BU64C(0xBB6E2924F03912EA), BU64C(0x0CE26C0B95C980D9), BU64C(0xA49CD132BFBF7CC4), BU64C(0xE99D662AF4243939), + BU64C(0x27E6AD7891165C3F), BU64C(0x8535F040B9744FF1), BU64C(0x54B3F4FA5F40D873), BU64C(0x72B12C32127FED2B), + BU64C(0xEE954D3C7B411F47), BU64C(0x9A85AC909A24EAA1), BU64C(0x70AC4CD9F04F21F5), BU64C(0xF9B89D3E99A075C2), + BU64C(0x87B3E2B2B5C907B1), BU64C(0xA366E5B8C54F48B8), BU64C(0xAE4A9346CC3F7CF2), BU64C(0x1920C04D47267BBD), + BU64C(0x87BF02C6B49E2AE9), BU64C(0x092237AC237F3859), BU64C(0xFF07F64EF8ED14D0), BU64C(0x8DE8DCA9F03CC54E), + BU64C(0x9C1633264DB49C89), BU64C(0xB3F22C3D0B0B38ED), BU64C(0x390E5FB44D01144B), BU64C(0x5BFEA5B4712768E9), + BU64C(0x1E1032911FA78984), BU64C(0x9A74ACB964E78CB3), BU64C(0x4F80F7A035DAFB04), BU64C(0x6304D09A0B3738C4), + BU64C(0x2171E64683023A08), BU64C(0x5B9B63EB9CEFF80C), BU64C(0x506AACF489889342), BU64C(0x1881AFC9A3A701D6), + BU64C(0x6503080440750644), BU64C(0xDFD395339CDBF4A7), BU64C(0xEF927DBCF00C20F2), BU64C(0x7B32F7D1E03680EC), + BU64C(0xB9FD7620E7316243), BU64C(0x05A7E8A57DB91B77), BU64C(0xB5889C6E15630A75), BU64C(0x4A750A09CE9573F7), + BU64C(0xCF464CEC899A2F8A), BU64C(0xF538639CE705B824), BU64C(0x3C79A0FF5580EF7F), BU64C(0xEDE6C87F8477609D), + BU64C(0x799E81F05BC93F31), BU64C(0x86536B8CF3428A8C), BU64C(0x97D7374C60087B73), BU64C(0xA246637CFF328532), + BU64C(0x043FCAE60CC0EBA0), BU64C(0x920E449535DD359E), BU64C(0x70EB093B15B290CC), BU64C(0x73A1921916591CBD), + BU64C(0x56436C9FE1A1AA8D), BU64C(0xEFAC4B70633B8F81), BU64C(0xBB215798D45DF7AF), BU64C(0x45F20042F24F1768), + BU64C(0x930F80F4E8EB7462), BU64C(0xFF6712FFCFD75EA1), BU64C(0xAE623FD67468AA70), BU64C(0xDD2C5BC84BC8D8FC), + BU64C(0x7EED120D54CF2DD9), BU64C(0x22FE545401165F1C), BU64C(0xC91800E98FB99929), BU64C(0x808BD68E6AC10365), + BU64C(0xDEC468145B7605F6), BU64C(0x1BEDE3A3AEF53302), BU64C(0x43539603D6C55602), BU64C(0xAA969B5C691CCB7A), + BU64C(0xA87832D392EFEE56), BU64C(0x65942C7B3C7E11AE), BU64C(0xDED2D633CAD004F6), BU64C(0x21F08570F420E565), + BU64C(0xB415938D7DA94E3C), BU64C(0x91B859E59ECB6350), BU64C(0x10CFF333E0ED804A), BU64C(0x28AED140BE0BB7DD), + BU64C(0xC5CC1D89724FA456), BU64C(0x5648F680F11A2741), BU64C(0x2D255069F0B7DAB3), BU64C(0x9BC5A38EF729ABD4), + BU64C(0xEF2F054308F6A2BC), BU64C(0xAF2042F5CC5C2858), BU64C(0x480412BAB7F5BE2A), BU64C(0xAEF3AF4A563DFE43), + BU64C(0x19AFE59AE451497F), BU64C(0x52593803DFF1E840), BU64C(0xF4F076E65F2CE6F0), BU64C(0x11379625747D5AF3), + BU64C(0xBCE5D2248682C115), BU64C(0x9DA4243DE836994F), BU64C(0x066F70B33FE09017), BU64C(0x4DC4DE189B671A1C), + BU64C(0x51039AB7712457C3), BU64C(0xC07A3F80C31FB4B4), BU64C(0xB46EE9C5E64A6E7C), BU64C(0xB3819A42ABE61C87), + BU64C(0x21A007933A522A20), BU64C(0x2DF16F761598AA4F), BU64C(0x763C4A1371B368FD), BU64C(0xF793C46702E086A0), + BU64C(0xD7288E012AEB8D31), BU64C(0xDE336A2A4BC1C44B), BU64C(0x0BF692B38D079F23), BU64C(0x2C604A7A177326B3), + BU64C(0x4850E73E03EB6064), BU64C(0xCFC447F1E53C8E1B), BU64C(0xB05CA3F564268D99), BU64C(0x9AE182C8BC9474E8), + BU64C(0xA4FC4BD4FC5558CA), BU64C(0xE755178D58FC4E76), BU64C(0x69B97DB1A4C03DFE), BU64C(0xF9B5B7C4ACC67C96), + BU64C(0xFC6A82D64B8655FB), BU64C(0x9C684CB6C4D24417), BU64C(0x8EC97D2917456ED0), BU64C(0x6703DF9D2924E97E), + BU64C(0xC547F57E42A7444E), BU64C(0x78E37644E7CAD29E), BU64C(0xFE9A44E9362F05FA), BU64C(0x08BD35CC38336615), + BU64C(0x9315E5EB3A129ACE), BU64C(0x94061B871E04DF75), BU64C(0xDF1D9F9D784BA010), BU64C(0x3BBA57B68871B59D), + BU64C(0xD2B7ADEEDED1F73F), BU64C(0xF7A255D83BC373F8), BU64C(0xD7F4F2448C0CEB81), BU64C(0xD95BE88CD210FFA7), + BU64C(0x336F52F8FF4728E7), BU64C(0xA74049DAC312AC71), BU64C(0xA2F61BB6E437FDB5), BU64C(0x4F2A5CB07F6A35B3), + BU64C(0x87D380BDA5BF7859), BU64C(0x16B9F7E06C453A21), BU64C(0x7BA2484C8A0FD54E), BU64C(0xF3A678CAD9A2E38C), + BU64C(0x39B0BF7DDE437BA2), BU64C(0xFCAF55C1BF8A4424), BU64C(0x18FCF680573FA594), BU64C(0x4C0563B89F495AC3), + BU64C(0x40E087931A00930D), BU64C(0x8CFFA9412EB642C1), BU64C(0x68CA39053261169F), BU64C(0x7A1EE967D27579E2), + BU64C(0x9D1D60E5076F5B6F), BU64C(0x3810E399B6F65BA2), BU64C(0x32095B6D4AB5F9B1), BU64C(0x35CAB62109DD038A), + BU64C(0xA90B24499FCFAFB1), BU64C(0x77A225A07CC2C6BD), BU64C(0x513E5E634C70E331), BU64C(0x4361C0CA3F692F12), + BU64C(0xD941ACA44B20A45B), BU64C(0x528F7C8602C5807B), BU64C(0x52AB92BEB9613989), BU64C(0x9D1DFA2EFC557F73), + BU64C(0x722FF175F572C348), BU64C(0x1D1260A51107FE97), BU64C(0x7A249A57EC0C9BA2), BU64C(0x04208FE9E8F7F2D6), + BU64C(0x5A110C6058B920A0), BU64C(0x0CD9A497658A5698), BU64C(0x56FD23C8F9715A4C), BU64C(0x284C847B9D887AAE), + BU64C(0x04FEABFBBDB619CB), BU64C(0x742E1E651C60BA83), BU64C(0x9A9632E65904AD3C), BU64C(0x881B82A13B51B9E2), + BU64C(0x506E6744CD974924), BU64C(0xB0183DB56FFC6A79), BU64C(0x0ED9B915C66ED37E), BU64C(0x5E11E86D5873D484), + BU64C(0xF678647E3519AC6E), BU64C(0x1B85D488D0F20CC5), BU64C(0xDAB9FE6525D89021), BU64C(0x0D151D86ADB73615), + BU64C(0xA865A54EDCC0F019), BU64C(0x93C42566AEF98FFB), BU64C(0x99E7AFEABE000731), BU64C(0x48CBFF086DDF285A), + BU64C(0x7F9B6AF1EBF78BAF), BU64C(0x58627E1A149BBA21), BU64C(0x2CD16E2ABD791E33), BU64C(0xD363EFF5F0977996), + BU64C(0x0CE2A38C344A6EED), BU64C(0x1A804AADB9CFA741), BU64C(0x907F30421D78C5DE), BU64C(0x501F65EDB3034D07), + BU64C(0x37624AE5A48FA6E9), BU64C(0x957BAF61700CFF4E), BU64C(0x3A6C27934E31188A), BU64C(0xD49503536ABCA345), + BU64C(0x088E049589C432E0), BU64C(0xF943AEE7FEBF21B8), BU64C(0x6C3B8E3E336139D3), BU64C(0x364F6FFA464EE52E), + BU64C(0xD60F6DCEDC314222), BU64C(0x56963B0DCA418FC0), BU64C(0x16F50EDF91E513AF), BU64C(0xEF1955914B609F93), + BU64C(0x565601C0364E3228), BU64C(0xECB53939887E8175), BU64C(0xBAC7A9A18531294B), BU64C(0xB344C470397BBA52), + BU64C(0x65D34954DAF3CEBD), BU64C(0xB4B81B3FA97511E2), BU64C(0xB422061193D6F6A7), BU64C(0x071582401C38434D), + BU64C(0x7A13F18BBEDC4FF5), BU64C(0xBC4097B116C524D2), BU64C(0x59B97885E2F2EA28), BU64C(0x99170A5DC3115544), + BU64C(0x6F423357E7C6A9F9), BU64C(0x325928EE6E6F8794), BU64C(0xD0E4366228B03343), BU64C(0x565C31F7DE89EA27), + BU64C(0x30F5611484119414), BU64C(0xD873DB391292ED4F), BU64C(0x7BD94E1D8E17DEBC), BU64C(0xC7D9F16864A76E94), + BU64C(0x947AE053EE56E63C), BU64C(0xC8C93882F9475F5F), BU64C(0x3A9BF55BA91F81CA), BU64C(0xD9A11FBB3D9808E4), + BU64C(0x0FD22063EDC29FCA), BU64C(0xB3F256D8ACA0B0B9), BU64C(0xB03031A8B4516E84), BU64C(0x35DD37D5871448AF), + BU64C(0xE9F6082B05542E4E), BU64C(0xEBFAFA33D7254B59), BU64C(0x9255ABB50D532280), BU64C(0xB9AB4CE57F2D34F3), + BU64C(0x693501D628297551), BU64C(0xC62C58F97DD949BF), BU64C(0xCD454F8F19C5126A), BU64C(0xBBE83F4ECC2BDECB), + BU64C(0xDC842B7E2819E230), BU64C(0xBA89142E007503B8), BU64C(0xA3BC941D0A5061CB), BU64C(0xE9F6760E32CD8021), + BU64C(0x09C7E552BC76492F), BU64C(0x852F54934DA55CC9), BU64C(0x8107FCCF064FCF56), BU64C(0x098954D51FFF6580), + BU64C(0x23B70EDB1955C4BF), BU64C(0xC330DE426430F69D), BU64C(0x4715ED43E8A45C0A), BU64C(0xA8D7E4DAB780A08D), + BU64C(0x0572B974F03CE0BB), BU64C(0xB57D2E985E1419C7), BU64C(0xE8D9ECBE2CF3D73F), BU64C(0x2FE4B17170E59750), + BU64C(0x11317BA87905E790), BU64C(0x7FBF21EC8A1F45EC), BU64C(0x1725CABFCB045B00), BU64C(0x964E915CD5E2B207), + BU64C(0x3E2B8BCBF016D66D), BU64C(0xBE7444E39328A0AC), BU64C(0xF85B2B4FBCDE44B7), BU64C(0x49353FEA39BA63B1), + BU64C(0x1DD01AAFCD53486A), BU64C(0x1FCA8A92FD719F85), BU64C(0xFC7C95D827357AFA), BU64C(0x18A6A990C8B35EBD), + BU64C(0xCCCB7005C6B9C28D), BU64C(0x3BDBB92C43B17F26), BU64C(0xAA70B5B4F89695A2), BU64C(0xE94C39A54A98307F), + BU64C(0xB7A0B174CFF6F36E), BU64C(0xD4DBA84729AF48AD), BU64C(0x2E18BC1AD9704A68), BU64C(0x2DE0966DAF2F8B1C), + BU64C(0xB9C11D5B1E43A07E), BU64C(0x64972D68DEE33360), BU64C(0x94628D38D0C20584), BU64C(0xDBC0D2B6AB90A559), + BU64C(0xD2733C4335C6A72F), BU64C(0x7E75D99D94A70F4D), BU64C(0x6CED1983376FA72B), BU64C(0x97FCAACBF030BC24), + BU64C(0x7B77497B32503B12), BU64C(0x8547EDDFB81CCB94), BU64C(0x79999CDFF70902CB), BU64C(0xCFFE1939438E9B24), + BU64C(0x829626E3892D95D7), BU64C(0x92FAE24291F2B3F1), BU64C(0x63E22C147B9C3403), BU64C(0xC678B6D860284A1C), + BU64C(0x5873888850659AE7), BU64C(0x0981DCD296A8736D), BU64C(0x9F65789A6509A440), BU64C(0x9FF38FED72E9052F), + BU64C(0xE479EE5B9930578C), BU64C(0xE7F28ECD2D49EECD), BU64C(0x56C074A581EA17FE), BU64C(0x5544F7D774B14AEF), + BU64C(0x7B3F0195FC6F290F), BU64C(0x12153635B2C0CF57), BU64C(0x7F5126DBBA5E0CA7), BU64C(0x7A76956C3EAFB413), + BU64C(0x3D5774A11D31AB39), BU64C(0x8A1B083821F40CB4), BU64C(0x7B4A38E32537DF62), BU64C(0x950113646D1D6E03), + BU64C(0x4DA8979A0041E8A9), BU64C(0x3BC36E078F7515D7), BU64C(0x5D0A12F27AD310D1), BU64C(0x7F9D1A2E1EBE1327), + BU64C(0xDA3A361B1C5157B1), BU64C(0xDCDD7D20903D0C25), BU64C(0x36833336D068F707), BU64C(0xCE68341F79893389), + BU64C(0xAB9090168DD05F34), BU64C(0x43954B3252DC25E5), BU64C(0xB438C2B67F98E5E9), BU64C(0x10DCD78E3851A492), + BU64C(0xDBC27AB5447822BF), BU64C(0x9B3CDB65F82CA382), BU64C(0xB67B7896167B4C84), BU64C(0xBFCED1B0048EAC50), + BU64C(0xA9119B60369FFEBD), BU64C(0x1FFF7AC80904BF45), BU64C(0xAC12FB171817EEE7), BU64C(0xAF08DA9177DDA93D), + BU64C(0x1B0CAB936E65C744), BU64C(0xB559EB1D04E5E932), BU64C(0xC37B45B3F8D6F2BA), BU64C(0xC3A9DC228CAAC9E9), + BU64C(0xF3B8B6675A6507FF), BU64C(0x9FC477DE4ED681DA), BU64C(0x67378D8ECCEF96CB), BU64C(0x6DD856D94D259236), + BU64C(0xA319CE15B0B4DB31), BU64C(0x073973751F12DD5E), BU64C(0x8A8E849EB32781A5), BU64C(0xE1925C71285279F5), + BU64C(0x74C04BF1790C0EFE), BU64C(0x4DDA48153C94938A), BU64C(0x9D266D6A1CC0542C), BU64C(0x7440FB816508C4FE), + BU64C(0x13328503DF48229F), BU64C(0xD6BF7BAEE43CAC40), BU64C(0x4838D65F6EF6748F), BU64C(0x1E152328F3318DEA), + BU64C(0x8F8419A348F296BF), BU64C(0x72C8834A5957B511), BU64C(0xD7A023A73260B45C), BU64C(0x94EBC8ABCFB56DAE), + BU64C(0x9FC10D0F989993E0), BU64C(0xDE68A2355B93CAE6), BU64C(0xA44CFE79AE538BBE), BU64C(0x9D1D84FCCE371425), + BU64C(0x51D2B1AB2DDFB636), BU64C(0x2FD7E4B9E72CD38C), BU64C(0x65CA5B96B7552210), BU64C(0xDD69A0D8AB3B546D), + BU64C(0x604D51B25FBF70E2), BU64C(0x73AA8A564FB7AC9E), BU64C(0x1A8C1E992B941148), BU64C(0xAAC40A2703D9BEA0), + BU64C(0x764DBEAE7FA4F3A6), BU64C(0x1E99B96E70A9BE8B), BU64C(0x2C5E9DEB57EF4743), BU64C(0x3A938FEE32D29981), + BU64C(0x26E6DB8FFDF5ADFE), BU64C(0x469356C504EC9F9D), BU64C(0xC8763C5B08D1908C), BU64C(0x3F6C6AF859D80055), + BU64C(0x7F7CC39420A3A545), BU64C(0x9BFB227EBDF4C5CE), BU64C(0x89039D79D6FC5C5C), BU64C(0x8FE88B57305E2AB6), + BU64C(0xA09E8C8C35AB96DE), BU64C(0xFA7E393983325753), BU64C(0xD6B6D0ECC617C699), BU64C(0xDFEA21EA9E7557E3), + BU64C(0xB67C1FA481680AF8), BU64C(0xCA1E3785A9E724E5), BU64C(0x1CFC8BED0D681639), BU64C(0xD18D8549D140CAEA), + BU64C(0x4ED0FE7E9DC91335), BU64C(0xE4DBF0634473F5D2), BU64C(0x1761F93A44D5AEFE), BU64C(0x53898E4C3910DA55), + BU64C(0x734DE8181F6EC39A), BU64C(0x2680B122BAA28D97), BU64C(0x298AF231C85BAFAB), BU64C(0x7983EED3740847D5), + BU64C(0x66C1A2A1A60CD889), BU64C(0x9E17E49642A3E4C1), BU64C(0xEDB454E7BADC0805), BU64C(0x50B704CAB602C329), + BU64C(0x4CC317FB9CDDD023), BU64C(0x66B4835D9EAFEA22), BU64C(0x219B97E26FFC81BD), BU64C(0x261E4E4C0A333A9D), + BU64C(0x1FE2CCA76517DB90), BU64C(0xD7504DFA8816EDBB), BU64C(0xB9571FA04DC089C8), BU64C(0x1DDC0325259B27DE), + BU64C(0xCF3F4688801EB9AA), BU64C(0xF4F5D05C10CAB243), BU64C(0x38B6525C21A42B0E), BU64C(0x36F60E2BA4FA6800), + BU64C(0xEB3593803173E0CE), BU64C(0x9C4CD6257C5A3603), BU64C(0xAF0C317D32ADAA8A), BU64C(0x258E5A80C7204C4B), + BU64C(0x8B889D624D44885D), BU64C(0xF4D14597E660F855), BU64C(0xD4347F66EC8941C3), BU64C(0xE699ED85B0DFB40D), + BU64C(0x2472F6207C2D0484), BU64C(0xC2A1E7B5B459AEB5), BU64C(0xAB4F6451CC1D45EC), BU64C(0x63767572AE3D6174), + BU64C(0xA59E0BD101731A28), BU64C(0x116D0016CB948F09), BU64C(0x2CF9C8CA052F6E9F), BU64C(0x0B090A7560A968E3), + BU64C(0xABEEDDB2DDE06FF1), BU64C(0x58EFC10B06A2068D), BU64C(0xC6E57A78FBD986E0), BU64C(0x2EAB8CA63CE802D7), + BU64C(0x14A195640116F336), BU64C(0x7C0828DD624EC390), BU64C(0xD74BBE77E6116AC7), BU64C(0x804456AF10F5FB53), + BU64C(0xEBE9EA2ADF4321C7), BU64C(0x03219A39EE587A30), BU64C(0x49787FEF17AF9924), BU64C(0xA1E9300CD8520548), + BU64C(0x5B45E522E4B1B4EF), BU64C(0xB49C3B3995091A36), BU64C(0xD4490AD526F14431), BU64C(0x12A8F216AF9418C2), + BU64C(0x001F837CC7350524), BU64C(0x1877B51E57A764D5), BU64C(0xA2853B80F17F58EE), BU64C(0x993E1DE72D36D310), + BU64C(0xB3598080CE64A656), BU64C(0x252F59CF0D9F04BB), BU64C(0xD23C8E176D113600), BU64C(0x1BDA0492E7E4586E), + BU64C(0x21E0BD5026C619BF), BU64C(0x3B097ADAF088F94E), BU64C(0x8D14DEDB30BE846E), BU64C(0xF95CFFA23AF5F6F4), + BU64C(0x3871700761B3F743), BU64C(0xCA672B91E9E4FA16), BU64C(0x64C8E531BFF53B55), BU64C(0x241260ED4AD1E87D), + BU64C(0x106C09B972D2E822), BU64C(0x7FBA195410E5CA30), BU64C(0x7884D9BC6CB569D8), BU64C(0x0647DFEDCD894A29), + BU64C(0x63573FF03E224774), BU64C(0x4FC8E9560F91B123), BU64C(0x1DB956E450275779), BU64C(0xB8D91274B9E9D4FB), + BU64C(0xA2EBEE47E2FBFCE1), BU64C(0xD9F1F30CCD97FB09), BU64C(0xEFED53D75FD64E6B), BU64C(0x2E6D02C36017F67F), + BU64C(0xA9AA4D20DB084E9B), BU64C(0xB64BE8D8B25396C1), BU64C(0x70CB6AF7C2D5BCF0), BU64C(0x98F076A4F7A2322E), + BU64C(0xBF84470805E69B5F), BU64C(0x94C3251F06F90CF3), BU64C(0x3E003E616A6591E9), BU64C(0xB925A6CD0421AFF3), + BU64C(0x61BDD1307C66E300), BU64C(0xBF8D5108E27E0D48), BU64C(0x240AB57A8B888B20), BU64C(0xFC87614BAF287E07), + BU64C(0xEF02CDD06FFDB432), BU64C(0xA1082C0466DF6C0A), BU64C(0x8215E577001332C8), BU64C(0xD39BB9C3A48DB6CF), + BU64C(0x2738259634305C14), BU64C(0x61CF4F94C97DF93D), BU64C(0x1B6BACA2AE4E125B), BU64C(0x758F450C88572E0B), + BU64C(0x959F587D507A8359), BU64C(0xB063E962E045F54D), BU64C(0x60E8ED72C0DFF5D1), BU64C(0x7B64978555326F9F), + BU64C(0xFD080D236DA814BA), BU64C(0x8C90FD9B083F4558), BU64C(0x106F72FE81E2C590), BU64C(0x7976033A39F7D952), + BU64C(0xA4EC0132764CA04B), BU64C(0x733EA705FAE4FA77), BU64C(0xB4D8F77BC3E56167), BU64C(0x9E21F4F903B33FD9), + BU64C(0x9D765E419FB69F6D), BU64C(0xD30C088BA61EA5EF), BU64C(0x5D94337FBFAF7F5B), BU64C(0x1A4E4822EB4D7A59), + BU64C(0x6FFE73E81B637FB3), BU64C(0xDDF957BC36D8B9CA), BU64C(0x64D0E29EEA8838B3), BU64C(0x08DD9BDFD96B9F63), + BU64C(0x087E79E5A57D1D13), BU64C(0xE328E230E3E2B3FB), BU64C(0x1C2559E30F0946BE), BU64C(0x720BF5F26F4D2EAA), + BU64C(0xB0774D261CC609DB), BU64C(0x443F64EC5A371195), BU64C(0x4112CF68649A260E), BU64C(0xD813F2FAB7F5C5CA), + BU64C(0x660D3257380841EE), BU64C(0x59AC2C7873F910A3), BU64C(0xE846963877671A17), BU64C(0x93B633ABFA3469F8), + BU64C(0xC0C0F5A60EF4CDCF), BU64C(0xCAF21ECD4377B28C), BU64C(0x57277707199B8175), BU64C(0x506C11B9D90E8B1D), + BU64C(0xD83CC2687A19255F), BU64C(0x4A29C6465A314CD1), BU64C(0xED2DF21216235097), BU64C(0xB5635C95FF7296E2), + BU64C(0x22AF003AB672E811), BU64C(0x52E762596BF68235), BU64C(0x9AEBA33AC6ECC6B0), BU64C(0x944F6DE09134DFB6), + BU64C(0x6C47BEC883A7DE39), BU64C(0x6AD047C430A12104), BU64C(0xA5B1CFDBA0AB4067), BU64C(0x7C45D833AFF07862), + BU64C(0x5092EF950A16DA0B), BU64C(0x9338E69C052B8E7B), BU64C(0x455A4B4CFE30E3F5), BU64C(0x6B02E63195AD0CF8), + BU64C(0x6B17B224BAD6BF27), BU64C(0xD1E0CCD25BB9C169), BU64C(0xDE0C89A556B9AE70), BU64C(0x50065E535A213CF6), + BU64C(0x9C1169FA2777B874), BU64C(0x78EDEFD694AF1EED), BU64C(0x6DC93D9526A50E68), BU64C(0xEE97F453F06791ED), + BU64C(0x32AB0EDB696703D3), BU64C(0x3A6853C7E70757A7), BU64C(0x31865CED6120F37D), BU64C(0x67FEF95D92607890), + BU64C(0x1F2B1D1F15F6DC9C), BU64C(0xB69E38A8965C6B65), BU64C(0xAA9119FF184CCCF4), BU64C(0xF43C732873F24C13), + BU64C(0xFB4A3D794A9A80D2), BU64C(0x3550C2321FD6109C), BU64C(0x371F77E76BB8417E), BU64C(0x6BFA9AAE5EC05779), + BU64C(0xCD04F3FF001A4778), BU64C(0xE3273522064480CA), BU64C(0x9F91508BFFCFC14A), BU64C(0x049A7F41061A9E60), + BU64C(0xFCB6BE43A9F2FE9B), BU64C(0x08DE8A1C7797DA9B), BU64C(0x8F9887E6078735A1), BU64C(0xB5B4071DBFC73A66), + BU64C(0x230E343DFBA08D33), BU64C(0x43ED7F5A0FAE657D), BU64C(0x3A88A0FBBCB05C63), BU64C(0x21874B8B4D2DBC4F), + BU64C(0x1BDEA12E35F6A8C9), BU64C(0x53C065C6C8E63528), BU64C(0xE34A1D250E7A8D6B), BU64C(0xD6B04D3B7651DD7E), + BU64C(0x5E90277E7CB39E2D), BU64C(0x2C046F22062DC67D), BU64C(0xB10BB459132D0A26), BU64C(0x3FA9DDFB67E2F199), + BU64C(0x0E09B88E1914F7AF), BU64C(0x10E8B35AF3EEAB37), BU64C(0x9EEDECA8E272B933), BU64C(0xD4C718BC4AE8AE5F), + BU64C(0x81536D601170FC20), BU64C(0x91B534F885818A06), BU64C(0xEC8177F83F900978), BU64C(0x190E714FADA5156E), + BU64C(0xB592BF39B0364963), BU64C(0x89C350C893AE7DC1), BU64C(0xAC042E70F8B383F2), BU64C(0xB49B52E587A1EE60), + BU64C(0xFB152FE3FF26DA89), BU64C(0x3E666E6F69AE2C15), BU64C(0x3B544EBE544C19F9), BU64C(0xE805A1E290CF2456), + BU64C(0x24B33C9D7ED25117), BU64C(0xE74733427B72F0C1), BU64C(0x0A804D18B7097475), BU64C(0x57E3306D881EDB4F), + BU64C(0x4AE7D6A36EB5DBCB), BU64C(0x2D8D5432157064C8), BU64C(0xD1E649DE1E7F268B), BU64C(0x8A328A1CEDFE552C), + BU64C(0x07A3AEC79624C7DA), BU64C(0x84547DDC3E203C94), BU64C(0x990A98FD5071D263), BU64C(0x1A4FF12616EEFC89), + BU64C(0xF6F7FD1431714200), BU64C(0x30C05B1BA332F41C), BU64C(0x8D2636B81555A786), BU64C(0x46C9FEB55D120902), + BU64C(0xCCEC0A73B49C9921), BU64C(0x4E9D2827355FC492), BU64C(0x19EBB029435DCB0F), BU64C(0x4659D2B743848A2C), + BU64C(0x963EF2C96B33BE31), BU64C(0x74F85198B05A2E7D), BU64C(0x5A0F544DD2B1FB18), BU64C(0x03727073C2E134B1), + BU64C(0xC7F6AA2DE59AEA61), BU64C(0x352787BAA0D7C22F), BU64C(0x9853EAB63B5E0B35), BU64C(0xABBDCDD7ED5C0860), + BU64C(0xCF05DAF5AC8D77B0), BU64C(0x49CAD48CEBF4A71E), BU64C(0x7A4C10EC2158C4A6), BU64C(0xD9E92AA246BF719E), + BU64C(0x13AE978D09FE5557), BU64C(0x730499AF921549FF), BU64C(0x4E4B705B92903BA4), BU64C(0xFF577222C14F0A3A), + BU64C(0x55B6344CF97AAFAE), BU64C(0xB862225B055B6960), BU64C(0xCAC09AFBDDD2CDB4), BU64C(0xDAF8E9829FE96B5F), + BU64C(0xB5FDFC5D3132C498), BU64C(0x310CB380DB6F7503), BU64C(0xE87FBB46217A360E), BU64C(0x2102AE466EBB1148), + BU64C(0xF8549E1A3AA5E00D), BU64C(0x07A69AFDCC42261A), BU64C(0xC4C118BFE78FEAAE), BU64C(0xF9F4892ED96BD438), + BU64C(0x1AF3DBE25D8F45DA), BU64C(0xF5B4B0B0D2DEEEB4), BU64C(0x962ACEEFA82E1C84), BU64C(0x046E3ECAAF453CE9), + BU64C(0xF05D129681949A4C), BU64C(0x964781CE734B3C84), BU64C(0x9C2ED44081CE5FBD), BU64C(0x522E23F3925E319E), + BU64C(0x177E00F9FC32F791), BU64C(0x2BC60A63A6F3B3F2), BU64C(0x222BBFAE61725606), BU64C(0x486289DDCC3D6780), + BU64C(0x7DC7785B8EFDFC80), BU64C(0x8AF38731C02BA980), BU64C(0x1FAB64EA29A2DDF7), BU64C(0xE4D9429322CD065A), + BU64C(0x9DA058C67844F20C), BU64C(0x24C0E332B70019B0), BU64C(0x233003B5A6CFE6AD), BU64C(0xD586BD01C5C217F6), + BU64C(0x5E5637885F29BC2B), BU64C(0x7EBA726D8C94094B), BU64C(0x0A56A5F0BFE39272), BU64C(0xD79476A84EE20D06), + BU64C(0x9E4C1269BAA4BF37), BU64C(0x17EFEE45B0DEE640), BU64C(0x1D95B0A5FCF90BC6), BU64C(0x93CBE0B699C2585D), + BU64C(0x65FA4F227A2B6D79), BU64C(0xD5F9E858292504D5), BU64C(0xC2B5A03F71471A6F), BU64C(0x59300222B4561E00), + BU64C(0xCE2F8642CA0712DC), BU64C(0x7CA9723FBB2E8988), BU64C(0x2785338347F2BA08), BU64C(0xC61BB3A141E50E8C), + BU64C(0x150F361DAB9DEC26), BU64C(0x9F6A419D382595F4), BU64C(0x64A53DC924FE7AC9), BU64C(0x142DE49FFF7A7C3D), + BU64C(0x0C335248857FA9E7), BU64C(0x0A9C32D5EAE45305), BU64C(0xE6C42178C4BBB92E), BU64C(0x71F1CE2490D20B07), + BU64C(0xF1BCC3D275AFE51A), BU64C(0xE728E8C83C334074), BU64C(0x96FBF83A12884624), BU64C(0x81A1549FD6573DA5), + BU64C(0x5FA7867CAF35E149), BU64C(0x56986E2EF3ED091B), BU64C(0x917F1DD5F8886C61), BU64C(0xD20D8C88C8FFE65F), + BU64C(0x31D71DCE64B2C310), BU64C(0xF165B587DF898190), BU64C(0xA57E6339DD2CF3A0), BU64C(0x1EF6E6DBB1961EC9), + BU64C(0x70CC73D90BC26E24), BU64C(0xE21A6B35DF0C3AD7), BU64C(0x003A93D8B2806962), BU64C(0x1C99DED33CB890A1), + BU64C(0xCF3145DE0ADD4289), BU64C(0xD0E4427A5514FB72), BU64C(0x77C621CC9FB3A483), BU64C(0x67A34DAC4356550B), + BU64C(0xF8D626AAAF278509) +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/bookzobrist.h b/Engines/Linux/cheng/src/cheng4/bookzobrist.h new file mode 100644 index 0000000..60bdb90 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/bookzobrist.h @@ -0,0 +1,43 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +// note that this file contains constants from polyglot so the license may not hold here, I'm not a lawyer + +#pragma once + +#include "types.h" + +namespace cheng4 +{ + +enum RandomConstants +{ + RandomPiece = 0, // 12 * 64 + RandomCastle = 768, // 4 + RandomEnPassant = 772, // 8 + RandomTurn = 780 // 1 +}; + +extern const u64 BookZobrist[]; + +} diff --git a/Engines/Linux/cheng/src/cheng4/cheng4.vcxproj b/Engines/Linux/cheng/src/cheng4/cheng4.vcxproj new file mode 100644 index 0000000..e8c89c0 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/cheng4.vcxproj @@ -0,0 +1,814 @@ + + + + + Debug Intel + Win32 + + + Debug Intel + x64 + + + Debug + Win32 + + + Debug + x64 + + + Intel_SSA + Win32 + + + Intel_SSA + x64 + + + Release Analysis + Win32 + + + Release Analysis + x64 + + + Release Intel + Win32 + + + Release Intel + x64 + + + Release_Clang + Win32 + + + Release_Clang + x64 + + + Release + Win32 + + + Release + x64 + + + Tunable Intel + Win32 + + + Tunable Intel + x64 + + + + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466} + cheng4 + Win32Proj + + + + Application + v110 + MultiByte + true + + + Application + v110 + MultiByte + true + + + Application + LLVM-vs2012 + MultiByte + false + + + Application + Intel C++ Compiler XE 15.0 + MultiByte + true + + + Application + Intel C++ Compiler XE 15.0 + MultiByte + true + + + Application + v110 + MultiByte + + + Application + Intel C++ Compiler XE 15.0 + MultiByte + + + Application + Intel C++ Compiler XE 15.0 + MultiByte + + + Application + v110 + MultiByte + true + + + Application + v110 + MultiByte + true + + + Application + v110 + MultiByte + true + + + Application + Intel C++ Compiler XE 15.0 + MultiByte + true + + + Application + Intel C++ Compiler XE 15.0 + MultiByte + true + + + Application + v110 + MultiByte + + + Application + Intel C++ Compiler XE 15.0 + MultiByte + + + Application + Intel C++ Compiler XE 15.0 + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.60610.1 + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + AllRules.ruleset + true + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + + + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + + + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + + + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + + + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + + Disabled + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_SECURE_SCL=0;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + false + + Level4 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_SECURE_SCL=0;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + false + + + Level4 + EditAndContinue + Verbose + Precise + + + true + Console + MachineX86 + + + + + Disabled + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_SECURE_SCL=0;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + false + + + Level4 + EditAndContinue + + + true + Console + MachineX86 + + + + + Full + AnySuitable + true + Speed + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_HAS_EXCEPTIONS=0;_SECURE_SCL=0;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + false + false + + AssemblyAndSourceCode + Level4 + None + Strict + false + + + true + Console + true + true + MachineX86 + true + /SUBSYSTEM:CONSOLE,"5.01" %(AdditionalOptions) + + + + + Full + AnySuitable + true + Speed + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_HAS_EXCEPTIONS=0;_SECURE_SCL=0;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + false + false + + + AssemblyAndSourceCode + Level4 + + + true + + + false + Console + true + true + MachineX86 + true + + + + + Full + AnySuitable + true + Speed + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_HAS_EXCEPTIONS=0;_SECURE_SCL=0;%(PreprocessorDefinitions) + + + MultiThreaded + false + false + + + NoListing + Level4 + + + -fno-rtti %(AdditionalOptions) + + + false + Console + true + true + MachineX86 + true + + + + + Full + AnySuitable + true + Speed + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_HAS_EXCEPTIONS=0;_SECURE_SCL=0;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + false + false + + + AssemblyAndSourceCode + Level4 + + + Strict + false + /Qopt-report-embed- %(AdditionalOptions) + + + false + NotSet + true + true + MachineX86 + true + /SUBSYSTEM:CONSOLE,"5.01" %(AdditionalOptions) + + + + + Full + AnySuitable + true + Speed + true + USE_TUNING;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_HAS_EXCEPTIONS=0;_SECURE_SCL=0;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + false + false + + + AssemblyAndSourceCode + Level4 + + + + + false + NotSet + true + true + MachineX86 + true + /SUBSYSTEM:CONSOLE,"5.01" %(AdditionalOptions) + + + + + X64 + + + Disabled + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_SECURE_SCL=0;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + false + + Level4 + ProgramDatabase + + + true + Console + MachineX64 + + + + + X64 + + + Disabled + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_SECURE_SCL=0;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + false + + + Level4 + ProgramDatabase + Verbose + Precise + + + true + Console + MachineX64 + + + + + X64 + + + Disabled + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_SECURE_SCL=0;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + false + + + Level4 + ProgramDatabase + + + true + Console + MachineX64 + + + + + X64 + + + Full + AnySuitable + true + Speed + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_HAS_EXCEPTIONS=0;_SECURE_SCL=0;%(PreprocessorDefinitions) + true + + MultiThreaded + false + true + false + + AssemblyAndSourceCode + Level4 + ProgramDatabase + Strict + false + + + true + Console + true + true + MachineX64 + true + /SUBSYSTEM:CONSOLE,"5.02" %(AdditionalOptions) + + + + + X64 + + + Full + AnySuitable + true + Speed + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_HAS_EXCEPTIONS=0;_SECURE_SCL=0;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + true + false + + + AssemblyAndSourceCode + Level4 + ProgramDatabase + + + true + Console + true + true + MachineX64 + true + + + + + X64 + + + Full + AnySuitable + true + Speed + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_HAS_EXCEPTIONS=0;_SECURE_SCL=0;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + true + false + + + AssemblyAndSourceCode + Level4 + ProgramDatabase + + + true + Console + true + true + MachineX64 + true + + + + + X64 + + + Full + AnySuitable + true + Speed + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_HAS_EXCEPTIONS=0;_SECURE_SCL=0;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + false + false + + + AssemblyAndSourceCode + Level4 + ProgramDatabase + Strict + false + /Qopt-report-embed- %(AdditionalOptions) + + + false + NotSet + true + true + MachineX64 + true + /SUBSYSTEM:CONSOLE,"5.02" %(AdditionalOptions) + + + + + X64 + + + Full + AnySuitable + true + Speed + true + USE_TUNING;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_HAS_EXCEPTIONS=0;_SECURE_SCL=0;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + true + false + + + AssemblyAndSourceCode + Level4 + ProgramDatabase + + + true + NotSet + true + true + MachineX64 + true + /SUBSYSTEM:CONSOLE,"5.01" %(AdditionalOptions) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Engines/Linux/cheng/src/cheng4/cheng4_vs2012.sln b/Engines/Linux/cheng/src/cheng4/cheng4_vs2012.sln new file mode 100644 index 0000000..9033d30 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/cheng4_vs2012.sln @@ -0,0 +1,68 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cheng4", "cheng4.vcxproj", "{3B00A2BC-6260-4D1B-9CB8-AB119FA04466}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug Intel|Win32 = Debug Intel|Win32 + Debug Intel|x64 = Debug Intel|x64 + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Intel_SSA|Win32 = Intel_SSA|Win32 + Intel_SSA|x64 = Intel_SSA|x64 + Release Analysis|Win32 = Release Analysis|Win32 + Release Analysis|x64 = Release Analysis|x64 + Release Intel|Win32 = Release Intel|Win32 + Release Intel|x64 = Release Intel|x64 + Release profile|Win32 = Release profile|Win32 + Release profile|x64 = Release profile|x64 + Release_Clang|Win32 = Release_Clang|Win32 + Release_Clang|x64 = Release_Clang|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + Tunable Intel|Win32 = Tunable Intel|Win32 + Tunable Intel|x64 = Tunable Intel|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Debug Intel|Win32.ActiveCfg = Debug Intel|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Debug Intel|Win32.Build.0 = Debug Intel|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Debug Intel|x64.ActiveCfg = Debug Intel|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Debug Intel|x64.Build.0 = Debug Intel|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Debug|Win32.ActiveCfg = Debug|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Debug|Win32.Build.0 = Debug|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Debug|x64.ActiveCfg = Debug|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Debug|x64.Build.0 = Debug|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Intel_SSA|Win32.ActiveCfg = Intel_SSA|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Intel_SSA|Win32.Build.0 = Intel_SSA|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Intel_SSA|x64.ActiveCfg = Intel_SSA|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Intel_SSA|x64.Build.0 = Intel_SSA|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release Analysis|Win32.ActiveCfg = Release Analysis|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release Analysis|Win32.Build.0 = Release Analysis|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release Analysis|x64.ActiveCfg = Release Analysis|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release Analysis|x64.Build.0 = Release Analysis|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release Intel|Win32.ActiveCfg = Release Intel|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release Intel|Win32.Build.0 = Release Intel|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release Intel|x64.ActiveCfg = Release Intel|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release Intel|x64.Build.0 = Release Intel|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release profile|Win32.ActiveCfg = Release|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release profile|Win32.Build.0 = Release|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release profile|x64.ActiveCfg = Release|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release profile|x64.Build.0 = Release|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release_Clang|Win32.ActiveCfg = Release_Clang|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release_Clang|Win32.Build.0 = Release_Clang|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release_Clang|x64.ActiveCfg = Release_Clang|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release_Clang|x64.Build.0 = Release_Clang|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release|Win32.ActiveCfg = Release|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release|Win32.Build.0 = Release|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release|x64.ActiveCfg = Release|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Release|x64.Build.0 = Release|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Tunable Intel|Win32.ActiveCfg = Tunable Intel|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Tunable Intel|Win32.Build.0 = Tunable Intel|Win32 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Tunable Intel|x64.ActiveCfg = Tunable Intel|x64 + {3B00A2BC-6260-4D1B-9CB8-AB119FA04466}.Tunable Intel|x64.Build.0 = Tunable Intel|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Engines/Linux/cheng/src/cheng4/chtypes.h b/Engines/Linux/cheng/src/cheng4/chtypes.h new file mode 100644 index 0000000..52663ed --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/chtypes.h @@ -0,0 +1,632 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +// TODO: split into more headers? (especially material stuff) + +#include "types.h" + +namespace cheng4 +{ + +#ifdef _MSC_VER +# pragma warning( disable:4127 ) // disable conditional expression is constant warning +#endif + +#ifndef U64C +# define U64C(x) ((u64)(x##ull)) +#endif + +// enums are only used as constants + +// trivial draw types +enum DrawType +{ + drawNotDraw, // not a draw + drawMaterial, + drawFifty, + drawRepetition +}; + +// directions +enum Direction +{ + dirNone, + dirUp, + dirDown, + dirLeft, + dirRight, + dirUpLeft, + dirUpRight, + dirDownLeft, + dirDownRight, + dirMax // max enum value +}; + +enum ColorType +{ + ctWhite, + ctBlack, + ctMax +}; + +enum PieceType +{ + ptNone, + ptPawn, + ptKnight, + ptBishop, + ptRook, + ptQueen, + ptKing, + ptMax // max enum value +}; + +enum PieceMask +{ + pmType = 7, + pmColor = 8 +}; + +enum PieceShift +{ + psType = 0, + psColor = 3 +}; + +// game phases +enum PhaseType +{ + phOpening, + phEndgame, + phMax +}; + +enum BoundType +{ + btNone, // none (unused) + btUpper, // upper bound (alpha) + btLower, // lower bound (beta) + btExact // exact +}; + +enum ScoreConstants +{ + scInvalidMask = ~32767, // invalid score mask + scInvalid = -32768, // invalid score + scInfinity = 32767-256, // infinity (note: must have a reserve here when storing rel. mates in 16-bits + // (hashtable) + scMate = scInfinity - 1000,// everything above and including this is a mate + scDraw = 0 // draw score +}; + +// various limits +enum Limits +{ + maxDepth = 120, + maxPly = 240, + maxStack = maxPly+4, + maxPV = maxStack, + // triangular PV table limit + maxTriPV = (maxStack*(maxStack+1)/2)+4, + repHashMax = 256, // repetition limit + + maxStrength = 2500, // maximum elo strength for elo limit + minStrength = 800 // minimum elo strength for elo limit +}; + +// fractional ply constants +enum FracConsts +{ + fracShift = 8, // frac depth shift + fracOnePly = 1 << fracShift // frac one ply +}; + +// bitboard index +#define BBI( c, t ) (((t)<<1)|c) + +enum BBIConstants +{ + bbiWOcc = 0, // special bbi: all (=occupied), includes kings! + bbiBOcc = 1, + bbiMat = BBI( ctWhite, ptKing ), // material key index + bbiEvMask = bbiMat+1, // for evasions only: evasion target mask + bbiMax = bbiEvMask+1 +}; + +enum MaterialConstants +{ + mpcMask = 63 // material piece count mask +}; + +enum SquareConstants +{ + sqInvalid = 255 // invalid square +}; + +// file +typedef u8 File; +// rank +typedef u8 Rank; +// square +typedef u8 Square; +// piece +typedef u8 Piece; +// distance +typedef u8 Distance; +// bitboard +typedef u64 Bitboard; +// hash signature +typedef u64 Signature; +// material key +typedef u64 MaterialKey; +// material piece count +typedef u8 PieceCount; +// move +typedef u32 Move; +// color +typedef u8 Color; +// phase +typedef u8 Phase; +// move count +typedef u32 MoveCount; +// fifty move rule count +typedef u8 FiftyCount; +// castling rights +// low nybble: short (rookfile+1) +// high nybble: long (rookfile+1) +typedef u8 CastRights; +// hash depth +typedef i8 HashDepth; +// hash move +typedef u16 HashMove; +// hash bound +typedef u8 HashBound; +// value stored in hashtable (centipawns) +typedef i16 HashScore; +// score used throughout search (centipawns) +typedef i32 Score; +// fine score (millipawns) +typedef i32 FineScore; +// fractional depth (fp 8:8) +typedef i32 FracDepth; +// depth +typedef i8 Depth; +// ply id (0 up) +typedef uint Ply; +// draw +typedef u8 Draw; +// nodecount +typedef u64 NodeCount; +// time +typedef u32 Time; +// age +typedef u8 Age; +// delta material +typedef i16 DMat; +// non-pawn material +typedef u16 NPMat; +// abort flag +typedef u8 AbortFlag; +// book move +typedef u16 BookMove; +// book count type +typedef u16 BookCount; +// book probe counter +typedef u32 BookProbe; + +struct PiecePack +{ + // assume color already cleared + static inline bool isSlider( Piece p ) + { + assert( p >= ptPawn && p <= ptKing ); + return p >= ptBishop && p <= ptQueen; + } + static inline Piece type( Piece p ) + { + assert( (p & pmType) <= ptKing ); + return p & pmType; + } + static inline Color color( Piece p ) + { + return (Color)(p >> psColor); + } + static inline Piece init( Color c, Piece p ) + { + assert( c <= ctBlack && p <= ptKing ); + return p | ((Piece)c << psColor); + } +}; + +struct SquarePack +{ + static inline bool isRank1Or8( Square sq ) + { + sq &= 0x38; + return sq == 0 || sq == 0x38; + } + + template< Color c, int step > static inline Square advanceRank( Square sq ) + { + if ( c == ctWhite ) + sq -= (u8)(step*8); + else + sq += (u8)(step*8); + assert( sq < 64 ); + return sq; + } + + static inline bool neighborFile( Square sq0, Square sq1 ) + { + File f0 = file(sq0); + File f1 = file(sq1); + return f0+1 == f1 || f1+1 == f0; + } + + // build opp pawn square from ep square and from square + static inline Square epTarget( Square ep, Square from ) + { + return (from & 0x38) | (ep & 7); + } + + static inline File file( Square sq ) + { + return sq & 7; + } + static inline Rank rank( Square sq ) + { + return (Rank)(sq >> 3); + } + template< Color c > static inline Rank relRank( Square sq ) + { + assert( c <= ctBlack && sq < 64 ); + return (sq >> 3) ^ (c == ctBlack ? 7 : 0); + } + static inline Rank relRank( Color c, Square sq ) + { + return c == ctWhite ? relRank(sq) : relRank(sq); + } + static inline Square init( File f, Rank r ) + { + assert( f < 8 && r < 8 ); + return ((Square)r << 3) | f; + } + template< Color c > static inline Square initRel( File f, Rank r ) + { + assert( f < 8 && r < 8 ); + return (((Square)r << 3) | f) ^ (c == ctBlack ? 0x38 : 0); + } + static inline bool isValid( Square s ) + { + return !(s & ~63); + } + static inline Square setRank( Square s, Rank r ) + { + assert( r < 8 ); + return (s & 7) | (r << 3); + } + static inline Square setFile( Square s, File f ) + { + assert( f < 8 ); + return (s & ~7) | f; + } + // flip horizontally + static inline Square flipH( Square s ) + { + return s ^ 7; + } + // flip vertically + static inline Square flipV( Square s ) + { + return s ^ 0x38; + } + // flip about main diagonal + static inline Square flipD( Square s ) + { + return (s >> 3) | ((s & 7) << 3); + } +}; + +struct CastPack +{ + static inline bool allowed( CastRights cr ) + { + return cr != 0; + } + static inline bool allowedShort( CastRights cr ) + { + return (cr & 0xf) != 0; + } + static inline bool allowedLong( CastRights cr ) + { + return (cr >> 4) != 0; + } + static inline File shortFile( CastRights cr ) + { + return (File)((cr & 0xf)-1); + } + static inline File longFile( CastRights cr ) + { + return (File)((cr >> 4)-1); + } + static inline CastRights init( File shortf, File longf ) + { + return ((1+longf)<<4) | (1+shortf); + } + static inline CastRights initShort( File shortf ) + { + return 1+shortf; + } + static inline CastRights initLong( File longf ) + { + return (1+longf)<<4; + } + static inline CastRights loseShort( CastRights cr ) + { + return cr & ~15; + } + static inline CastRights loseLong( CastRights cr ) + { + return cr & 15; + } + static inline CastRights loseRights( bool kingside, CastRights cr ) + { + return kingside ? loseShort( cr ) : loseLong( cr ); + } + static inline CastRights loseFile( File rf, CastRights cr ) + { + return (cr & 15) == rf+1 ? loseShort(cr) : loseLong(cr); + } + static inline CastRights initFile( bool kingside, File f ) + { + return kingside ? initShort( f ) : initLong( f ); + } + // build rook square from king target square + static inline Square rookSquare( Square kto, CastRights cr ) + { + return (Square)((kto & 0x38) | ( (kto & 4) ? shortFile(cr) : longFile(cr) )); + } +}; + +// flip color +static inline Color flip( Color c ) +{ + assert( c <= ctBlack ); + return c ^ 1; +} + +// is slider pice? +static inline bool isSlider( Piece pt ) +{ + return pt >= ptBishop && pt <= ptQueen; +} + +struct ScorePack +{ + // init fine (mp) score from score (cp) + static inline FineScore initFine( Score score ) + { + return (FineScore)score * 10; + } + // init normal (cp) score from fine score (mp) + static inline Score init( FineScore fscore ) + { + return (Score)(fscore / 10); + } + // pack hash score + static inline HashScore packHash( Score score, Ply ply ) + { + // convert to relative if mate score + if ( isMate( score ) ) + score += score < 0 ? -(Score)ply : (Score)ply; + assert( score >= -32768 && score <= 32767 ); + return (HashScore)score; + } + // unpack hash score + static inline Score unpackHash( HashScore score, Ply ply ) + { + // convert to absolute if mate score + if ( isMate( score ) ) + return (Score)score + (score < 0 ? (HashScore)ply : -(HashScore)ply); + return (Score)score; + } + // interpolate fine score + static inline Score interpolate( NPMat npmat, FineScore opscore, FineScore endscore ) + { + const int egnp = 20; + const int opnp = 62; + + FineScore d = (((FineScore)npmat - egnp) * 256) / (opnp-egnp); + d = (d < 0) ? 0 : (d > 256) ? 256 : d; + return init( endscore + d * (opscore - endscore) / 256 ); + } + // is mate score? + static inline bool isMate( Score score ) + { + return abs( score ) >= scMate; + } + // is valid score? + static inline bool isValid( Score score ) + { + return !(abs(score) & scInvalidMask); + } + // checkmated in ply plies + static inline Score checkMated( Ply ply ) + { + return -scInfinity + ply; + } + // mate in ply plies + static inline Score mateIn( Ply ply ) + { + return scInfinity - ply - 1; + } +}; + +// material key +// organized as follows: (6-bit entries) +// bq, wq, br, wr, bb, wb, bn, wn, bp, wp +// total: 10*6 = 60 bits, 4 MSBits unused +#define MATSHIFT( c, t ) (( (((t)-1)<<1) | (c) ) * 6) + +struct MaterialPack +{ + static inline PieceCount count( MaterialKey mk, Color color, Piece type ) + { + return (mk >> MATSHIFT( color, type )) & mpcMask; + } +}; + +// predefined material constants +static const MaterialKey matMask[ctMax] = { + (U64C(63) << MATSHIFT( ctWhite, ptPawn)) | + (U64C(63) << MATSHIFT( ctWhite, ptKnight)) | + (U64C(63) << MATSHIFT( ctWhite, ptBishop)) | + (U64C(63) << MATSHIFT( ctWhite, ptRook)) | + (U64C(63) << MATSHIFT( ctWhite, ptQueen)), + + (U64C(63) << MATSHIFT( ctBlack, ptPawn)) | + (U64C(63) << MATSHIFT( ctBlack, ptKnight)) | + (U64C(63) << MATSHIFT( ctBlack, ptBishop)) | + (U64C(63) << MATSHIFT( ctBlack, ptRook)) | + (U64C(63) << MATSHIFT( ctBlack, ptQueen)) +}; + +static const MaterialKey matNPMask[ctMax] = { + (U64C(63) << MATSHIFT( ctWhite, ptKnight)) | + (U64C(63) << MATSHIFT( ctWhite, ptBishop)) | + (U64C(63) << MATSHIFT( ctWhite, ptRook)) | + (U64C(63) << MATSHIFT( ctWhite, ptQueen)), + + (U64C(63) << MATSHIFT( ctBlack, ptKnight)) | + (U64C(63) << MATSHIFT( ctBlack, ptBishop)) | + (U64C(63) << MATSHIFT( ctBlack, ptRook)) | + (U64C(63) << MATSHIFT( ctBlack, ptQueen)) +}; + +static const MaterialKey matKnightMask[ctMax] = { + (U64C(63) << MATSHIFT( ctWhite, ptKnight )), + (U64C(63) << MATSHIFT( ctBlack, ptKnight )) +}; + +static const MaterialKey matBishopMask[ctMax] = { + (U64C(63) << MATSHIFT( ctWhite, ptBishop )), + (U64C(63) << MATSHIFT( ctBlack, ptBishop )) +}; + +static const MaterialKey matRookOrBetter[ctMax] = { + (U64C(63) << MATSHIFT( ctWhite, ptRook )) | + (U64C(63) << MATSHIFT( ctWhite, ptQueen )), + (U64C(63) << MATSHIFT( ctBlack, ptRook )) | + (U64C(63) << MATSHIFT( ctBlack, ptQueen )) +}; + +// no-draw-mask +static const MaterialKey matNoDrawMask = +{ + (U64C(63) << MATSHIFT( ctWhite, ptPawn)) | + (U64C(63) << MATSHIFT( ctWhite, ptRook)) | + (U64C(63) << MATSHIFT( ctWhite, ptQueen)) | + (U64C(63) << MATSHIFT( ctBlack, ptPawn)) | + (U64C(63) << MATSHIFT( ctBlack, ptRook)) | + (U64C(63) << MATSHIFT( ctBlack, ptQueen)) +}; + +// potential mating material mask [color] +static const MaterialKey matPotMating[ctMax] = { + (U64C(63) << MATSHIFT( ctWhite, ptPawn)) | + (U64C(63) << MATSHIFT( ctWhite, ptRook)) | + (U64C(63) << MATSHIFT( ctWhite, ptQueen)), + (U64C(63) << MATSHIFT( ctBlack, ptPawn)) | + (U64C(63) << MATSHIFT( ctBlack, ptRook)) | + (U64C(63) << MATSHIFT( ctBlack, ptQueen)) +}; + +// major pieces mask +static const MaterialKey matMajors[ctMax] = { + (U64C(63) << MATSHIFT( ctWhite, ptRook)) | + (U64C(63) << MATSHIFT( ctWhite, ptQueen)), + (U64C(63) << MATSHIFT( ctBlack, ptRook)) | + (U64C(63) << MATSHIFT( ctBlack, ptQueen)) +}; + +// special constants +static const MaterialKey matKk = 0; // bare kings +static const MaterialKey matKNk = U64C(1) << MATSHIFT( ctWhite, ptKnight ); +static const MaterialKey matKkn = U64C(1) << MATSHIFT( ctBlack, ptKnight ); +static const MaterialKey matKNK[ctMax] = { matKNk, matKkn }; +static const MaterialKey matKPk = U64C(1) << MATSHIFT( ctWhite, ptPawn ); +static const MaterialKey matKkp = U64C(1) << MATSHIFT( ctBlack, ptPawn ); +static const MaterialKey matKRN[ctMax] = +{ + (U64C(1) << MATSHIFT( ctWhite, ptRook )) | (U64C(1) << MATSHIFT( ctWhite, ptKnight )), + (U64C(1) << MATSHIFT( ctBlack, ptRook )) | (U64C(1) << MATSHIFT( ctBlack, ptKnight )) +}; +static const MaterialKey matKRB[ctMax] = +{ + (U64C(1) << MATSHIFT( ctWhite, ptRook )) | (U64C(1) << MATSHIFT( ctWhite, ptBishop )), + (U64C(1) << MATSHIFT( ctBlack, ptRook )) | (U64C(1) << MATSHIFT( ctBlack, ptBishop )) +}; +static const MaterialKey matKR[ctMax] = +{ + U64C(1) << MATSHIFT( ctWhite, ptRook ), U64C(1) << MATSHIFT( ctBlack, ptRook ) +}; +static const MaterialKey matKB[ctMax] = +{ + U64C(1) << MATSHIFT( ctWhite, ptBishop ), U64C(1) << MATSHIFT( ctBlack, ptBishop ) +}; +static const MaterialKey matKN[ctMax] = +{ + U64C(1) << MATSHIFT( ctWhite, ptKnight ), U64C(1) << MATSHIFT( ctBlack, ptKnight ) +}; +static const MaterialKey matKBB[ctMax] = +{ + U64C(2) << MATSHIFT( ctWhite, ptBishop ), U64C(2) << MATSHIFT( ctBlack, ptBishop ) +}; +static const MaterialKey matKNN[ctMax] = +{ + U64C(2) << MATSHIFT( ctWhite, ptKnight ), U64C(2) << MATSHIFT( ctBlack, ptKnight ) +}; +static const MaterialKey matKBN[ctMax] = +{ + (U64C(1) << MATSHIFT( ctWhite, ptBishop )) | (U64C(1) << MATSHIFT( ctWhite, ptKnight )), + (U64C(1) << MATSHIFT( ctBlack, ptBishop )) | (U64C(1) << MATSHIFT( ctBlack, ptKnight )) +}; +static const MaterialKey matBishopEGMask = + (U64C(63) << MATSHIFT( ctWhite, ptKnight)) | + (U64C(63) << MATSHIFT( ctWhite, ptRook)) | + (U64C(63) << MATSHIFT( ctWhite, ptQueen)) | + (U64C(63) << MATSHIFT( ctBlack, ptKnight)) | + (U64C(63) << MATSHIFT( ctBlack, ptRook)) | + (U64C(63) << MATSHIFT( ctBlack, ptQueen)); +static const MaterialKey matKRPkr = + (U64C(1) << MATSHIFT( ctWhite, ptPawn )) | + (U64C(1) << MATSHIFT( ctWhite, ptRook )) | + (U64C(1) << MATSHIFT( ctBlack, ptRook )); +static const MaterialKey matKRkrp = + (U64C(1) << MATSHIFT( ctBlack, ptPawn )) | + (U64C(1) << MATSHIFT( ctBlack, ptRook )) | + (U64C(1) << MATSHIFT( ctWhite, ptRook )); + +} diff --git a/Engines/Linux/cheng/src/cheng4/engine.cpp b/Engines/Linux/cheng/src/cheng4/engine.cpp new file mode 100644 index 0000000..3c82573 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/engine.cpp @@ -0,0 +1,493 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "engine.h" +#include "kpk.h" +#include "thread.h" +#include "movegen.h" +#include "tune.h" +#include +#include + +namespace cheng4 +{ + +// EngineThread + +EngineThread::EngineThread() : doneSearch(0), searching(0), shouldQuit(0) +{ + searchMode.reset(); + search.board.reset(); +} + +void EngineThread::destroy() +{ + if ( searching ) + { + search.abort(1); + doneSearch.wait(); + } + shouldQuit = 1; + commandEvent.signal(); +} + +void EngineThread::setMode( const SearchMode &sm ) +{ + searchMode = sm; +} + +void EngineThread::work() +{ + for (;;) + { + commandEvent.wait(); + if ( shouldQuit ) + break; + doneSearch.reset(); + searching = 1; + search.iterate( search.board, searchMode ); + doneSearch.signal(); + searching = 0; + } +} + +// Engine + +void Engine::init( int npar, const char **par ) +{ + Timer::init(); + Tables::init(); + BitOp::init(); + Magic::init(); + Zobrist::init(); + PSq::init(); + KPK::init(); + Eval::init(); + Search::init(); +#ifdef USE_TUNING + // pass parameters: + for (int i=0; iresize( transMegs * 1048576 ); + tt->clear(); + + mainThread = new EngineThread; + mainThread->search.setHashTable( tt ); + + book.open("cheng2015.cb"); +} + +Engine::~Engine() +{ + abortSearch(); + delete tt; + mainThread->kill(); +} + +// run engine (no allocation done until this is called) +void Engine::run() +{ + mainThread->run(); +} + +// start search +void Engine::startSearch( const SearchMode &mode, bool noabort ) +{ + if ( !noabort ) + abortSearch(); + // NEW: don't use book lookup when pondering! + if ( ownBook && mode.maxTime && !mode.ponder ) + { + // probe book here! + Move mv = book.probe( curBoard ); + if ( mv != mcNone ) + { + // new: don't use book moves that lead into repetitions to avoid cheap book draws! + UndoInfo ui; + curBoard.doMove( mv, ui, curBoard.isCheck(mv, curBoard.discovered()) ); + Signature sig = curBoard.sig(); + curBoard.undoMove( ui ); + // only if not book-rep! + if ( !mainThread->search.rep.isRep(sig) ) + { + SearchInfo &info = mainThread->search.info; + info.reset(); + info.flags |= sifBestMove; + info.bestMove = mv; + mainThread->search.sendInfo(); + return; + } + } + } + pondering = uciMode ? 0 : mode.ponder; + mainThread->setMode( mode ); + mainThread->search.startSearch.reset(); + mainThread->commandEvent.signal(); + if ( !pondering ) + mainThread->search.startSearch.wait(); +} + +void Engine::setPonder( bool ponder_ ) +{ + ponder = ponder_; +} + +// get ponder mode +bool Engine::getPonder() const +{ + return ponder; +} + +// stop search +void Engine::stopSearch() +{ + ponderMove = mcNone; + if ( mainThread->searching ) + { + mainThread->search.abort(); + mainThread->doneSearch.wait(); + } + if ( pondering ) + { + pondering = 0; + undoMove(1); + } +} + +void Engine::abortSearch() +{ + ponderMove = mcNone; + if ( mainThread->searching ) + { + mainThread->search.abort(1); + mainThread->doneSearch.wait(); + } + if ( pondering ) + { + pondering = 0; + undoMove(1); + } +} + +void Engine::setBoard( const Board &b ) +{ + abortSearch(); + startBoard = curBoard = mainThread->search.board = b; + mainThread->search.rep.clear(); + mainThread->search.rep.push( b.sig(), 1 ); + stm = b.turn(); + moves.clear(); +} + +// reset board to startpos +void Engine::resetBoard() +{ + Board b; + b.reset(); + setBoard(b); +} + +// tries to undo move +bool Engine::undoMove( bool noabort ) +{ + if ( !noabort ) + abortSearch(); + if ( moves.empty() ) + return 0; + moves.pop_back(); + std::vector< GameMove > omoves( moves ); + setBoard( startBoard ); + for (size_t i=0; isearch.board; + if ( b.turn() == c ) + return 1; + // play nullmove! + if ( doMove( mcNull ) ) + { + stm = mainThread->search.board.turn(); + return 1; + } + return 0; +} + +// returns current stm +Color Engine::turn() const +{ + return stm; +} + +bool Engine::doMoveInternal( Move m, bool nostop, bool *phit ) +{ + // must handle pondering here + if ( !nostop && pondering ) + { + // in the case of pondermiss, ... + if ( m == ponderMove ) + { + // ponderhit! => switch to normal search + pondering = 0; + ponderMove = mcNone; + ponderHit(); + if ( phit ) + *phit = 1; + return 1; + } + abortSearch(); + nostop = 1; + } + + if ( m == mcNone ) + return 0; + if ( !nostop ) + abortSearch(); + Board &b = mainThread->search.board; + if ( m == mcNull ) + { + if ( b.inCheck() ) + return 0; + GameMove gm; + gm.sig = curBoard.sig(); + gm.move = m; + + UndoInfo ui; + b.doNullMove( ui ); + curBoard.doNullMove( ui ); + moves.push_back( gm ); + if ( curBoard.turn() == ctWhite ) + curBoard.incMove(); + mainThread->search.rep.clear(); + return 1; + } + + m &= mmNoScore; + + MoveGen mg( b ); + Move gm; + while ( (gm = mg.next() ) != mcNone ) + { + if ( gm == m ) + break; + } + if ( gm == mcNone ) + return 0; + + GameMove mv; + mv.sig = curBoard.sig(); + mv.move = m; + + bool irrev = b.isIrreversible(m); + + UndoInfo ui; + bool ischk = b.isCheck( m, b.discovered() ); + b.doMove( m, ui, ischk ); + curBoard.doMove( m, ui, ischk ); + moves.push_back( mv ); + if ( curBoard.turn() == ctWhite ) + curBoard.incMove(); + if ( irrev ) + mainThread->search.rep.clear(); + mainThread->search.rep.push( b.sig(), !b.fifty() ); + return 1; +} + +bool Engine::doMove( Move m, bool nostop, bool *phit ) +{ + return doMoveInternal( m, nostop, phit ); +} + +// set search callback +void Engine::setCallback( SearchCallback cbk, void *param ) +{ + abortSearch(); + mainThread->search.setCallback( cbk, param ); +} + +// clear hashtable +void Engine::clearHash() +{ + abortSearch(); + mainThread->search.clearHash(); + mainThread->search.clearSlots(); +} + +// set hashtable size in megs +bool Engine::setHash( uint megs ) +{ + abortSearch(); + bool res = mainThread->search.tt->resize( (size_t)megs * (size_t)1048576 ); + clearHash(); + return res; +} + +// ponderhit! +void Engine::ponderHit() +{ + mainThread->search.ponderHit = 1; +} + +const Board &Engine::board() const +{ + return curBoard; +} + +const Board &Engine::ponderBoard() const +{ + return pondBoard; +} + +const Board &Engine::actualBoard() const +{ + return pondering ? pondBoard : curBoard; +} + +// start pondering (if possible) +bool Engine::startPondering( SearchMode mode, bool noabort ) +{ + Move pm = ponderMove; + if ( !ponder || pm == mcNone ) + return 0; + pondBoard = curBoard; + // play ponder move + if ( !doMove( pm, noabort ) ) + return 0; + mode.ponder = 1; + startSearch( mode, noabort ); + ponderMove = pm; + pondering = 1; + return 1; +} + +// set move to ponder on +void Engine::setPonderMove( Move pm ) +{ + assert( !pondering ); + ponderMove = pm; +} + +// is threefold repetition? +bool Engine::isThreefold() const +{ + Signature sig = board().sig(); + size_t repc = 0; + for ( i32 i = (i32)moves.size()-2; i >= 0; i-=2 ) + { + if ( moves[i].sig == sig ) + if ( ++repc >= 2 ) + return 1; + } + return 0; +} + +// set number of threads, default is 1 +void Engine::setThreads( uint nt ) +{ + abortSearch(); + if ( nt < 1 ) + nt = 1; + mainThread->search.setThreads( nt-1 ); +} + +// limit number of threads, default is 64 +void Engine::limitThreads( uint maxt ) +{ + abortSearch(); + if ( maxt < 1 ) + maxt = 1; + mainThread->search.setMaxThreads( maxt-1 ); +} + +// set multipv mode, default is 1 +void Engine::setMultiPV( uint mpv ) +{ + if ( mpv < 1 ) + mpv = 1; + else if ( mpv > 256 ) + mpv = 256; + mainThread->search.setMultiPV( mpv ); +} + +void Engine::setUCIMode( bool uci ) +{ + uciMode = uci; +} + +// set own book mode +void Engine::setOwnBook( bool obk ) +{ + ownBook = obk; +} + +// set nullmove flag +void Engine::setNullMove( bool nmv ) +{ + mainThread->search.enableNullMove( nmv ); +} + +// set elo limit master flag +void Engine::setLimit( bool limit ) +{ + mainThread->search.setEloLimit( limit ); +} + +// set elo (if limit is enabled) +void Engine::setElo( u32 elo ) +{ + mainThread->search.setMaxElo( elo ); +} + +// get opening book +const Book &Engine::getBook() const +{ + return book; +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/engine.h b/Engines/Linux/cheng/src/cheng4/engine.h new file mode 100644 index 0000000..f47884a --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/engine.h @@ -0,0 +1,204 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "search.h" +#include "book.h" +#include "thread.h" +#include + +namespace cheng4 +{ + +class Protocol; + +class EngineThread : public Thread +{ +public: + Event doneSearch; // set when done with search + Event commandEvent; // set when command is pending + SearchMode searchMode; // current search mode + volatile bool searching; // searching flag + volatile bool shouldQuit; // should quit? + + // main search + Search search; + + EngineThread(); + void destroy(); + + // set search mode + void setMode( const SearchMode &sm ); + + void work(); +}; + +class Engine +{ + Engine( const Engine & ) + { + assert( 0 && "Engine cannot be copied!" ); + } + Engine &operator =( const Engine & ) + { + assert( 0 && "Engine cannot be copied!" ); + return *this; + } +protected: + struct GameMove + { + Signature sig; // signature before move was made + Move move; + Move pad; + }; + + friend class Protocol; + bool volatile ponder; + bool volatile pondering; + Move volatile ponderMove; + Color stm; // current stm + bool volatile uciMode; // uci mode? + Board curBoard; // current board + Board startBoard; // startpos board + Board pondBoard; // ponder board (FIXME: this is ugly and I should probably redesign it) + std::vector< GameMove > moves; // game moves + bool doMoveInternal( Move m, bool nostop = 0, bool *phit = 0 ); + Book book; // book! + bool ownBook; // use own book? (default: true) + TransTable *tt; // transposition table + +public: + // static init + static void init( int npar = 0, const char **par = 0 ); + static void done(); + + EngineThread *mainThread; + + Engine( size_t transMegs = 4 ); + ~Engine(); + + const Board &board() const; + const Board &ponderBoard() const; + // actual board: before pondering in ponder on mode + const Board &actualBoard() const; + + // run engine (no allocation done until this is called) + void run(); + + // start search + void startSearch( const SearchMode &mode, bool noabort = 0 ); + + // stop search (=move now) + // does output bestmove + void stopSearch(); + + // abort search + // does NOT output bestmove + void abortSearch(); + + // set board + void setBoard( const Board &b ); + + // reset board to startpos + void resetBoard(); + + // tries to undo move + bool undoMove( bool noabort = 0 ); + + // set turn (=stm) + // returns 0 if ok + bool setTurn( Color c ); + + // returns current stm + Color turn() const; + + // doMove + // returns 0 if illegal + bool doMove( Move m, bool noabort = 0, bool *phit = 0 ); + + // set search callback + void setCallback( SearchCallback cbk, void *param = 0 ); + + // ponderhit! + void ponderHit(); + + // set ponder mode + void setPonder( bool ponder ); + // get ponder mode + bool getPonder() const; + // set hashtable size in megs + bool setHash( uint megs ); + // clear hashtable + void clearHash(); + + // get pondering flag + inline bool isPondering() + { + return pondering; + } + + // start pondering (if possible) + bool startPondering( SearchMode mode, bool nostop = 0 ); + + // set move to ponder on + void setPonderMove( Move pm ); + + // set ponder move + inline Move getPonderMove() const + { + return ponderMove; + } + + // is threefold repetition? + bool isThreefold() const; + + // set number of threads, default is 1 + void setThreads( uint nt ); + + // limit number of threads, default is 64 + void limitThreads( uint maxt ); + + // set multipv mode, default is 1 + void setMultiPV( uint mpv ); + + // set uci mode (no extra pondering) + void setUCIMode( bool uci ); + + // set own book mode + void setOwnBook( bool obk ); + + // set nullmove flag + void setNullMove( bool nmv ); + + // set elo limit master flag + void setLimit( bool limit ); + + // set elo (if limit is enabled) + void setElo( u32 elo ); + + // get opening book + const Book &getBook() const; +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/epd.cpp b/Engines/Linux/cheng/src/cheng4/epd.cpp new file mode 100644 index 0000000..3d3886a --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/epd.cpp @@ -0,0 +1,137 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "epd.h" +#include "utils.h" +#include "board.h" +#include + +using namespace std; + +namespace cheng4 +{ + +// EPD + +// compares token, if it fits, consumes token and returns ptr to next +static bool isToken( const char *&ptr, const char *str ) +{ + const char *c = ptr; + while ( *c && *str && *c == *str ) + { + c++; + str++; + } + if ( *str ) + return 0; // not matched + if ( *c && *c > 32 ) + return 0; // not a token => no match + ptr = c; + return 1; +} + +// parse EPD from buffer +// note that this is not a real EPD parser, just a simplified one! +bool EPDFile::parse( const char *ptr ) +{ + cheng4::Board b; + while (ptr && *ptr) + { + skipSpaces( ptr ); + const char *res = b.fromFEN( ptr ); + if ( !res ) + { + skipUntilEOL(ptr); + continue; + } + EPDPosition pos; + pos.fen = b.toFEN(); + ptr = res; + for (;;) + { + skipSpaces( ptr ); + if ( isToken( ptr, "bm" ) ) + { + // parse best moves + for (;;) + { + skipSpaces(ptr); + Move m = b.fromSAN(ptr); + if ( m == mcNone ) + break; + pos.best.push_back(m); + } + continue; + } + if ( isToken( ptr, "am" ) ) + { + // parse avoid moves + for (;;) + { + skipSpaces(ptr); + Move m = b.fromSAN(ptr); + if ( m == mcNone ) + break; + pos.avoid.push_back(m); + } + continue; + } + if ( *ptr == 13 || *ptr == 10 || *ptr == ';') + { + skipUntilEOL( ptr ); + break; + } + } + positions.push_back( pos ); + } + return 1; +} + +// load EPD file +bool EPDFile::load( const char *fnm ) +{ + skipSpaces(fnm); + positions.clear(); + streampos fsz; + ifstream ifs( fnm, ios::binary ); + if ( !ifs ) + return 0; + ifs.seekg( 0, ios::end ); + fsz = ifs.tellg(); + ifs.seekg( 0, ios::beg ); + char *buf = new (std::nothrow) char[ (size_t)(fsz+streampos(1)) ]; + if ( !buf ) + return 0; + ifs.read( buf, fsz ); + if ( !ifs ) + { + delete[] buf; + return 0; + } + buf[ (size_t)fsz ] = 0; + bool res = parse( buf ); + delete[] buf; + return res; +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/epd.h b/Engines/Linux/cheng/src/cheng4/epd.h new file mode 100644 index 0000000..648b63b --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/epd.h @@ -0,0 +1,52 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "move.h" +#include +#include + +namespace cheng4 +{ + +struct EPDPosition +{ + std::string fen; + std::vector< cheng4::Move > avoid; + std::vector< cheng4::Move > best; +}; + +class EPDFile +{ +public: + std::vector< EPDPosition > positions; + + // load EPD file + bool load( const char *fnm ); + + // parse from zero-terminated buffer + bool parse( const char *ptr ); +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/eval.cpp b/Engines/Linux/cheng/src/cheng4/eval.cpp new file mode 100644 index 0000000..8c8fa1d --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/eval.cpp @@ -0,0 +1,1046 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "eval.h" +#include "utils.h" +#include "chtypes.h" +#include "kpk.h" +#include "tune.h" +#include +#include +#include + +namespace cheng4 +{ + +// eval helper +static const Piece ptAll = ptNone; + +// stm bonus in cp (=tempo) +static TUNE_CONST Score stmBonus = 5; + +// weights/parameters: +static TUNE_CONST FineScore certainWin = 128000; +static TUNE_CONST FineScore kpkWin = 64000; + +TUNE_STATIC TUNE_CONST int safetyScale[] = { + 0, 19, 44, 26, 72, 51 +}; + +static TUNE_CONST FineScore shelterFront1 = 224; +static TUNE_CONST FineScore shelterFront2 = 185; + +static TUNE_CONST FineScore bishopPairOpening = 351; +static TUNE_CONST FineScore bishopPairEndgame = 527; + +static TUNE_CONST FineScore trappedBishopOpening = 157; +static TUNE_CONST FineScore trappedBishopEndgame = 1552; + +static TUNE_CONST FineScore unstoppablePasser = 2067; + +static TUNE_CONST FineScore isolatedPawnOpening = 152; +static TUNE_CONST FineScore isolatedPawnEndgame = 121; + +static TUNE_CONST FineScore doubledPawnOpening = 66; +static TUNE_CONST FineScore doubledPawnEndgame = 102; + +// note: only tune index 0 +TUNE_STATIC TUNE_CONST Score passerScaleImbalance[2] = { + 225, 256 +}; + +// note: only tune index 0 +TUNE_STATIC TUNE_CONST Score passerScaleBlocked[2] = { + 144, 256 +}; + +// note: 7th rank is unimportant +TUNE_STATIC TUNE_CONST FineScore candPasserOpening[8] = { + 0, -18, -28, 59, 169, 108, 0, 0 +}; + +TUNE_STATIC TUNE_CONST FineScore candPasserEndgame[8] = { + 0, -16, -2, 138, 378, 815, 0, 0 +}; + +TUNE_STATIC TUNE_CONST FineScore passerOpening[8] = { + 0, 137, -54, 42, 247, 468, 740, 0 +}; + +TUNE_STATIC TUNE_CONST FineScore passerEndgame[8] = { + 0, 158, 178, 438, 782, 1280, 1849, 0 +}; + +TUNE_STATIC TUNE_CONST i16 knightMobility[phMax][9] = { + { -479, -401, -289, -215, -131, -76, -45, -26, 29 }, + { -495, -497, -263, -158, -59, 31, 56, 62, 46 } +}; +static TUNE_CONST FineScore knightHangingOpening = 402; +static TUNE_CONST FineScore knightHangingEndgame = 303; + +TUNE_STATIC TUNE_CONST i16 bishopMobility[phMax][14] = { + { -228, -184, -82, -28, 37, 66, 82, 95, 99, 160, 162, 260, 332, 366 }, + { -309, -257, -174, -67, 48, 135, 168, 212, 221, 267, 271, 351, 348, 456 } +}; +static TUNE_CONST FineScore bishopHangingOpening = 443; +static TUNE_CONST FineScore bishopHangingEndgame = 352; + +TUNE_STATIC TUNE_CONST i16 rookMobility[phMax][15] = { + { 38, 67, 112, 100, 83, 129, 168, 182, 217, 270, 253, 261, 286, 298, 318 }, + { -163, 48, 158, 229, 271, 329, 380, 411, 495, 522, 572, 583, 609, 581, 711 } +}; +static TUNE_CONST FineScore rookHangingOpening = 503; +static TUNE_CONST FineScore rookHangingEndgame = 306; + +static TUNE_CONST FineScore rookOnOpenOpening = 153; +static TUNE_CONST FineScore rookOnOpenEndgame = 49; + +TUNE_STATIC TUNE_CONST i16 queenMobility[phMax][28] = { + { 179, 237, 299, 313, 322, 344, 360, 381, 395, 428, 456, 479, 503, 529, 551, 577, + 591, 627, 648, 672, 694, 721, 747, 770, 793, 815, 840, 866 }, + { 335, 428, 485, 530, 583, 629, 678, 721, 782, 819, 858, 903, 967, 999, 1045, 1079, + 1099, 1139, 1168, 1238, 1257, 1328, 1285, 1392, 1356, 1524, 1554, 1620 } +}; +static TUNE_CONST FineScore queenHangingOpening = 396; +static TUNE_CONST FineScore queenHangingEndgame = 4; + +static TUNE_CONST int kingPasserSupportBase = 1; +static TUNE_CONST FineScore kingPasserSupportScale = 38; + +// pawn race (=endgame) => bonus to side with more pawns +static TUNE_CONST FineScore pawnRaceAdvantageEndgame = 1010; + +// good/bad bishops +TUNE_STATIC TUNE_CONST i16 goodBishopOpening[17] = { + 374, -10, 84, -112, -110, -79, -67, -39, 9, 80, 81, 205, 212, 319, 412, 456, 749 +}; + +TUNE_STATIC TUNE_CONST i16 goodBishopEndgame[17] = { + -504, -357, -263, -304, -211, -151, -102, -33, 159, 66, 130, 131, 234, 272, 317, 205, 120 +}; + +// knight outpost bonus scale based on file +TUNE_STATIC TUNE_CONST FineScore outpostBonusFile[8] = { + 3, 20, 90, 171, 249, 84, 99, 125 +}; + +// knight outpost bonus scale based on rank +TUNE_STATIC TUNE_CONST FineScore outpostBonusRank[8] = { + 0, 0, -105, 30, 78, 103, 21, 8 +}; + +// eval helper +template< Color c > static inline int sign() +{ + return c == ctWhite ? 1 : -1; +} + +static inline int sign( Color c ) +{ + assert( c <= (Color)ctBlack ); + return Tables::sign[c]; +} + +// EG recognizers + +template< Color c > static void kpk( const Board &b, FineScore *fscore ) +{ + // FIXME: use getMSB on platforms (ARM) where it's faster? + assert( b.pieces( c, ptPawn ) ); + Square psq = (Square)BitOp::getLSB( b.pieces( c, ptPawn ) ); + u8 draw = KPK::isDraw( c, b.turn(), b.king( c ), b.king( flip(c) ), psq ); + if ( draw ) + fscore[ phEndgame ] = 0; + else + fscore[ phEndgame ] += sign()*kpkWin; +} + +static const FineScore kbnTable[64] = +{ + +999, +500, +250, +100, -100, -250, -500, -999, + +500, +400, +250, +100, -100, -250, -400, -500, + +250, +250, +150, + 80, - 80, -150, -250, -250, + +100, +100, + 80, + 50, - 50, - 80, -100, -100, + -100, -100, - 80, - 50, + 50, + 80, +100, +100, + -250, -250, -150, - 80, + 80, +150, +250, +250, + -500, -400, -250, -100, +100, +250, +400, +500, + -999, -500, -250, -100, +100, +250, +500, +999 +}; + +static void undoStmBonus( const Board &b, FineScore *fscore ) +{ + for ( Phase p = phOpening; p <= phEndgame; p++ ) + fscore[ p ] -= ScorePack::initFine( (Score)Tables::sign[b.turn()] * stmBonus ); +} + +template< Color c > static void kbnk( const Board &b, FineScore *fscore ) +{ + b.undoPsq( fscore ); + undoStmBonus( b, fscore ); + Bitboard bishop = b.pieces(c, ptBishop); + assert( bishop ); + Square ksq = b.king(flip(c)); + if ( bishop & darkSquares ) + ksq = SquarePack::flipH(ksq); + FineScore bonus = kbnTable[ksq]*3; + fscore[phEndgame] += sign() * bonus; +} + +template< Color c > static void krpkr( const Board &b, FineScore *fscore ) +{ + // FIXME: use getMSB on platforms (ARM) where it's faster? + // only draw is opponent king is in front of pawn + assert( b.pieces( c, ptPawn ) ); + Bitboard opkm = BitOp::oneShl( b.king( flip(c) ) ); + Square psq = (Square)BitOp::getLSB( b.pieces( c, ptPawn ) ); + Bitboard fm = Tables::frontMask[c][psq]; + fm |= (fm << 1) & L1MASK; + fm |= (fm >> 1) & R1MASK; + if ( fm & opkm ) + { + fscore[ phEndgame ] /= 16; + } +} + +static const size_t numRecognizers = 6; + +static Eval::Recognizer recognizers[ numRecognizers ] = +{ + { matKPk, kpk }, + { matKkp, kpk }, + { matKBN[ctWhite], kbnk }, + { matKBN[ctBlack], kbnk }, + { matKRPkr, krpkr }, + { matKRkrp, krpkr } +}; + +// EG scale recognizers + +template< Color c > static void krminor( const Board &b, FineScore *fscore ) +{ + MaterialKey mk = b.materialKey() & matNPMask[ flip(c) ]; + if ( sign()*fscore[ phEndgame ] > 0 && mk == matKR[ flip(c) ] ) + { + fscore[ phOpening ] /= 8; + fscore[ phEndgame ] /= 8; + } +} + +template< Color c > static void kbn( const Board &b, FineScore *fscore ) +{ + MaterialKey mk = b.materialKey() & matNPMask[ flip(c) ]; + if ( sign()*fscore[ phEndgame ] > 0 && + (mk == matKN[ flip(c) ] || mk == matKB[ flip(c) ])) + { + fscore[ phOpening ] /= 8; + fscore[ phEndgame ] /= 8; + } +} + +template< Color c > static void kbb( const Board &b, FineScore *fscore ) +{ + MaterialKey mk = b.materialKey() & matNPMask[ flip(c) ]; + // note: kbb vs kn is usually a win! + if ( sign()*fscore[ phEndgame ] > 0 && mk == matKB[ flip(c) ] ) + { + fscore[ phOpening ] /= 8; + fscore[ phEndgame ] /= 8; + } +} + +template< Color c > static void kr( const Board &b, FineScore *fscore ) +{ + MaterialKey mk = b.materialKey() & matNPMask[ flip(c) ]; + if ( sign()*fscore[ phEndgame ] > 0 && + (mk == matKN[ flip(c) ] || mk == matKB[ flip(c) ])) + { + fscore[ phOpening ] /= 4; + fscore[ phEndgame ] /= 4; + } +} + +static const size_t numScaleRecognizers = 5; + +static Eval::Recognizer scaleRecognizers[2][ numScaleRecognizers ] = +{ + { + { matKRN[ctWhite], krminor }, + { matKRB[ctWhite], krminor }, + { matKBB[ctWhite], kbb }, + { matKBN[ctWhite], kbn }, + { matKR[ctWhite], kr } + }, + { + { matKRN[ctBlack], krminor }, + { matKRB[ctBlack], krminor }, + { matKBB[ctBlack], kbb }, + { matKBN[ctBlack], kbn }, + { matKR[ctBlack], kr } + } +}; + +// static initializer (sort recognizers) +void Eval::init() +{ + std::sort( recognizers, recognizers + numRecognizers ); + std::sort( scaleRecognizers[ctWhite], scaleRecognizers[ctWhite] + numScaleRecognizers ); + std::sort( scaleRecognizers[ctBlack], scaleRecognizers[ctBlack] + numScaleRecognizers ); + + // Exported tunable params: + // keeping it here prevent the C++ optimizer to optimize these away + TUNE_EXPORT(FineScore, certainWin, certainWin); + TUNE_EXPORT(FineScore, kpkWin, kpkWin); + + TUNE_EXPORT(int, safetyScale1, safetyScale[1]); + TUNE_EXPORT(int, safetyScale2, safetyScale[2]); + TUNE_EXPORT(int, safetyScale3, safetyScale[3]); + TUNE_EXPORT(int, safetyScale4, safetyScale[4]); + TUNE_EXPORT(int, safetyScale5, safetyScale[5]); + + TUNE_EXPORT(FineScore, shelterFront1, shelterFront1); + TUNE_EXPORT(FineScore, shelterFront2, shelterFront2); + + TUNE_EXPORT(FineScore, bishopPairOpening, bishopPairOpening); + TUNE_EXPORT(FineScore, bishopPairEndgame, bishopPairEndgame); + + TUNE_EXPORT(FineScore, trappedBishopOpening, trappedBishopOpening); + TUNE_EXPORT(FineScore, trappedBishopEndgame, trappedBishopEndgame); + + TUNE_EXPORT(FineScore, unstoppablePasser, unstoppablePasser); + + TUNE_EXPORT(FineScore, doubledPawnOpening, doubledPawnOpening); + TUNE_EXPORT(FineScore, doubledPawnEndgame, doubledPawnEndgame); + + TUNE_EXPORT(FineScore, isolatedPawnOpening, isolatedPawnOpening); + TUNE_EXPORT(FineScore, isolatedPawnEndgame, isolatedPawnEndgame); + + TUNE_EXPORT(FineScore, knightHangingOpening, knightHangingOpening ); + TUNE_EXPORT(FineScore, knightHangingEndgame, knightHangingEndgame ); + + TUNE_EXPORT(FineScore, bishopHangingOpening, bishopHangingOpening ); + TUNE_EXPORT(FineScore, bishopHangingEndgame, bishopHangingEndgame ); + + TUNE_EXPORT(FineScore, rookHangingOpening, rookHangingOpening ); + TUNE_EXPORT(FineScore, rookHangingEndgame, rookHangingEndgame ); + TUNE_EXPORT(FineScore, rookOnOpenOpening, rookOnOpenOpening ); + TUNE_EXPORT(FineScore, rookOnOpenEndgame, rookOnOpenEndgame ); + + TUNE_EXPORT(FineScore, queenHangingOpening, queenHangingOpening ); + TUNE_EXPORT(FineScore, queenHangingEndgame, queenHangingEndgame ); + + TUNE_EXPORT(int, kingPasserSupportBase, kingPasserSupportBase); + TUNE_EXPORT(FineScore, kingPasserSupportScale, kingPasserSupportScale); + + TUNE_EXPORT(i16, pawnOpening, PSq::materialTables[phOpening][ptPawn]); + TUNE_EXPORT(i16, knightOpening, PSq::materialTables[phOpening][ptKnight]); + TUNE_EXPORT(i16, bishopOpening, PSq::materialTables[phOpening][ptBishop]); + TUNE_EXPORT(i16, rookOpening, PSq::materialTables[phOpening][ptRook]); + TUNE_EXPORT(i16, queenOpening, PSq::materialTables[phOpening][ptQueen]); + + TUNE_EXPORT(i16, pawnEndgame, PSq::materialTables[phEndgame][ptPawn]); + TUNE_EXPORT(i16, knightEndgame, PSq::materialTables[phEndgame][ptKnight]); + TUNE_EXPORT(i16, bishopEndgame, PSq::materialTables[phEndgame][ptBishop]); + TUNE_EXPORT(i16, rookEndgame, PSq::materialTables[phEndgame][ptRook]); + TUNE_EXPORT(i16, queenEndgame, PSq::materialTables[phEndgame][ptQueen]); + + TUNE_EXPORT(FineScore, outpostBonusFile0, outpostBonusFile[0]); + TUNE_EXPORT(FineScore, outpostBonusFile1, outpostBonusFile[1]); + TUNE_EXPORT(FineScore, outpostBonusFile2, outpostBonusFile[2]); + TUNE_EXPORT(FineScore, outpostBonusFile3, outpostBonusFile[3]); + TUNE_EXPORT(FineScore, outpostBonusFile4, outpostBonusFile[4]); + TUNE_EXPORT(FineScore, outpostBonusFile5, outpostBonusFile[5]); + TUNE_EXPORT(FineScore, outpostBonusFile6, outpostBonusFile[6]); + TUNE_EXPORT(FineScore, outpostBonusFile7, outpostBonusFile[7]); + + TUNE_EXPORT(FineScore, outpostBonusRank0, outpostBonusRank[0]); + TUNE_EXPORT(FineScore, outpostBonusRank1, outpostBonusRank[1]); + TUNE_EXPORT(FineScore, outpostBonusRank2, outpostBonusRank[2]); + TUNE_EXPORT(FineScore, outpostBonusRank3, outpostBonusRank[3]); + TUNE_EXPORT(FineScore, outpostBonusRank4, outpostBonusRank[4]); + TUNE_EXPORT(FineScore, outpostBonusRank5, outpostBonusRank[5]); + TUNE_EXPORT(FineScore, outpostBonusRank6, outpostBonusRank[6]); + TUNE_EXPORT(FineScore, outpostBonusRank7, outpostBonusRank[7]); + + TUNE_EXPORT(FineScore, pawnRaceAdvantageEndgame, pawnRaceAdvantageEndgame); +} + +// Eval + +Eval::Eval() : occ(0), pe(0) +{ + fscore[phOpening] = fscore[phEndgame] = 0; + safetyMask[ctWhite] = safetyMask[ctBlack] = 0; + attackers[ctWhite] = attackers[ctBlack] = 0; + memset( attm, 0, sizeof(attm) ); +} + +bool Eval::resizeEval( size_t sizeBytes ) +{ + return ecache.resize( sizeBytes ); +} + +bool Eval::resizePawn( size_t sizeBytes ) +{ + return phash.resize( sizeBytes ); +} + +bool Eval::resizeMaterial( size_t sizeBytes ) +{ + return mhash.resize( sizeBytes ); +} + +// clear eval/pawn caches +void Eval::clear() +{ + ecache.clear(); + phash.clear(); + mhash.clear(); +} + +template< Color c > static inline bool isBareKing( const Board &b ) +{ + return !(b.materialKey() & matMask[c] ); +} + +template< Color c > static inline bool hasMatingMaterial( const Board &b ) +{ + MaterialKey mk = b.materialKey(); + if ( mk & matPotMating[c] ) + return 1; + // check whether it's two knights + uint knights = (uint)(mk >> MATSHIFT( c, ptKnight )) & 63; + uint bishops = (uint)(mk >> MATSHIFT( c, ptBishop )) & 63; + if ( knights > 2 || (knights && bishops) ) + return 1; + if ( bishops <= 1 ) + return 0; + Bitboard bishopMask = b.pieces( c, ptBishop ); + return (bishopMask & lightSquares) && (bishopMask & darkSquares); +} + +template< Color c > bool Eval::isCertainWin( const Board &b ) const +{ + Color opc = flip(c); + if ( !isBareKing< c^1 >(b) ) + return 0; + // special eval + if ( !(b.materialKey() & matRookOrBetter[c]) ) + return 0; + // make sure the king can't capture non-pawn piece + Bitboard kmov = attm[ opc ][ ptKing ]; + Bitboard allAttm = attm[ c ][ ptAll ]; + if ( !(kmov & ~allAttm) ) + { + // potential stalemate + if ( b.turn() == opc ) + { + assert( !b.inCheck() ); + return 0; // stalemate => we don't call eval when in check + } + // if we're on move and leading, assume we can do better to avoid the stalemate + } + + if ( b.turn() == c ) + return 1; // we have a tempo so it's ok + + Bitboard majors = b.pieces( c, ptRook ) | b.pieces( c, ptQueen ); + if ( !(allAttm & majors) ) + { + // undefended majors + // can the opponent capture? + if ( kmov & majors ) + return 0; + } + return 1; +} + +template< Color c > void Eval::evalBlindBishop( const Board &b ) +{ + if ( !isBareKing(b) ) + return; + MaterialKey mk = b.materialKey(); + // blind bishop check (FIXME: better -- seems too complicated) + if ( !b.pieces(c, ptBishop) || (mk & matBishopEGMask) ) + return; // ok - no bishop eg + Bitboard pawns = b.pieces( c, ptPawn ); + if ( !pawns ) + return; + if ( !(pawns & ~Tables::fileMask[ HFILE ]) ) + { + // pawn(s) on H file only + Bitboard blindMask = c == ctWhite ? darkSquares : lightSquares; + if ( !(blindMask & b.pieces( c, ptBishop ) ) ) + { + // blind bishop => last thing to do: only important if king catch the pawn? + fscore[ phEndgame ] /= 16; + } + } + else if ( !(pawns & ~Tables::fileMask[ AFILE ]) ) + { + // pawn(s) on A file only + Bitboard blindMask = c == ctBlack ? darkSquares : lightSquares; + if ( !(blindMask & b.pieces( c, ptBishop ) ) ) + { + // blind bishop => last thing to do: only important if king catch the pawn? + fscore[ phEndgame ] /= 16; + } + } +} + +Score Eval::eval( const Board &b, Score alpha, Score beta ) +{ + Score res = BitOp::hasHwPopCount() ? ieval< pcmHardware >( b, alpha, beta ) : ieval< pcmNormal >( b, alpha, beta ); + // stm bonus + res += stmBonus; + return res; +} + +template< PopCountMode pcm > Score Eval::ieval( const Board &b, Score /*alpha*/, Score /*beta*/ ) +{ + // probe eval cache first + EvalCacheEntry *ec = ecache.index( b.sig() ); + if ( ec->sig == b.sig() ) + return ec->score; // hit => nothing to do + // probe pawn hash + pe = phash.index( b.pawnSig() ); + + // initialize fine scores for game phases + fscore[ phOpening ] = ScorePack::initFine( b.deltaMat( phOpening ) ); + fscore[ phEndgame ] = ScorePack::initFine( b.deltaMat( phEndgame ) ); + + occ = b.occupied(); + + // init attack masks + memset( attm, 0, sizeof(attm) ); + + // init pin masks + pinMask[ctWhite] = b.pinTemplate< ctWhite, ctBlack, 0 >( b.king(ctWhite) ); + pinMask[ctBlack] = b.pinTemplate< ctBlack, ctWhite, 0 >( b.king(ctBlack) ); + + // init safety data + for ( Color c = ctWhite; c <= ctBlack; c++ ) + { + attackers[c] = 0; + safetyMask[c] = Tables::kingAttm[ b.king(c) ]; + } + + if ( pe->sig == b.pawnSig() ) + { + // pawn hash hit + evalPawns< pcm, ctWhite, 0 >(b); + evalPawns< pcm, ctBlack, 0 >(b); + } + else + { + pe->sig = b.pawnSig(); + pe->scores[ phOpening ] = pe->scores[ phEndgame ] = 0; + evalPawns< pcm, ctWhite, 1 >(b); + evalPawns< pcm, ctBlack, 1 >(b); + } + // apply pawn hash scores + fscore[ phOpening ] += pe->scores[ phOpening ]; + fscore[ phEndgame ] += pe->scores[ phEndgame ]; + + // passers require special handling + evalPassers< ctWhite >(b); + evalPassers< ctBlack >(b); + + evalKnights< pcm, ctWhite >(b); + evalKnights< pcm, ctBlack >(b); + evalBishops< pcm, ctWhite >(b); + evalBishops< pcm, ctBlack >(b); + evalRooks< pcm, ctWhite >(b); + evalRooks< pcm, ctBlack >(b); + evalQueens< pcm, ctWhite >(b); + evalQueens< pcm, ctBlack >(b); + evalKing< pcm, ctWhite >(b); + evalKing< pcm, ctBlack >(b); + + fscore[ phEndgame ] > 0 ? evalSpecial< ctWhite >( b ) : evalSpecial< ctBlack >( b ); + + // endgame recognizers + evalRecog( b ); + + // compute final score + Score res = ScorePack::interpolate( b.nonPawnMat(), fscore[ phOpening ], fscore[ phEndgame ] ); + // adjust according to stm + res *= sign(b.turn()); + + // store to eval cache + ec->sig = b.sig(); + ec->score = res; + return res; +} + +// returns fast evaluation (psq only) +Score Eval::fastEval( const Board &b ) +{ + // initialize fine scores for game phases + FineScore score[2] = { + ScorePack::initFine( b.deltaMat( phOpening ) ), + ScorePack::initFine( b.deltaMat( phEndgame ) ) + }; + + // compute final score + Score res = ScorePack::interpolate( b.nonPawnMat(), score[ phOpening ], score[ phEndgame ] ); + // adjust according to stm + return res * sign(b.turn()); +} + +template< PopCountMode pcm, Color c, bool slow > void Eval::evalPawns( const Board &b ) +{ + Bitboard tmp = b.pieces( c, ptPawn ); + // (fast) attack mask + attm[c][ptAll] = attm[c][ptPawn] = + c == ctWhite ? + (((tmp >> 9) & R1MASK) | ((tmp >> 7) & L1MASK)) : + (((tmp << 9) & L1MASK) | ((tmp << 7) & R1MASK)) + ; + attackers[flip(c)] += BitOp::popCount< pcm >( safetyMask[ flip(c) ] & attm[c][ptPawn] ); + + // slow eval pawns + if ( slow ) + { + Bitboard pawns = tmp; + pe->passers[ c ] = 0; + while ( tmp ) + { + Square sq = BitOp::popBit( tmp ); +// bool chained = (Tables::chainMask[ sq ] & pawns) != 0; + bool passer = !(b.pieces( flip(c), ptPawn ) & Tables::passerMask[ c ][ sq ]); + bool doubled = (Tables::frontMask[ c ][ sq ] & pawns) != 0; + bool isolated = !(Tables::isoMask[ SquarePack::file(sq) ] & pawns); + + if ( isolated ) + { + // isolated pawn + pe->scores[ phOpening ] -= sign() * isolatedPawnOpening; + pe->scores[ phEndgame ] -= sign() * isolatedPawnEndgame; + } + if ( doubled ) + { + // doubled pawn + pe->scores[ phOpening ] -= sign() * doubledPawnOpening; + pe->scores[ phEndgame ] -= sign() * doubledPawnEndgame; + } + if ( !passer && !isolated && !doubled && !(Tables::frontMask[ c ][ sq ] & b.pieces( flip(c), ptPawn )) ) + { + if ( BitOp::popCount< pcm >( Tables::passerMask[ c ][ sq ] & b.pieces( flip(c), ptPawn ) ) < 2 ) + { + // candidate passer + Rank rr = SquarePack::relRank( sq ) ^ RANK1; // important: use rank1 = 7, ... rank8 = 0 + pe->scores[ phOpening ] += sign() * candPasserOpening[rr]; + pe->scores[ phEndgame ] += sign() * candPasserEndgame[rr]; + } + } + if ( passer && !doubled ) + { + pe->passers[c] |= BitOp::oneShl( sq ); + } + } + } +} + +template< Color c > void Eval::evalPassers( const Board &b ) +{ + Bitboard p = pe->passers[ c ]; + i32 dm = (i32)b.nonPawnMat(c) - b.nonPawnMat(flip(c)); + while ( p ) + { + Square sq = BitOp::popBit( p ); + Bitboard fwd = BitOp::shiftForward(BitOp::oneShl(sq)); + // eval passer + // scale bonus down based on material difference + Score scl = passerScaleImbalance[ dm >= 0 ]; + scl *= passerScaleBlocked[ !(occ & fwd) ]; + + Rank rr = SquarePack::relRank( sq ) ^ RANK1; // important: use rank1 = 7, ... rank8 = 0 + fscore[ phOpening ] += sign() * passerOpening[rr] * scl / 65536; + fscore[ phEndgame ] += sign() * passerEndgame[rr] * scl / 65536; + } +} + +template< PopCountMode pcm, Color c > void Eval::evalKnights( const Board &b ) +{ + Bitboard tmp = b.pieces( c, ptKnight ); + Bitboard pawns = b.pieces( c, ptPawn ); + Bitboard opPawns = b.pieces( flip(c), ptPawn ); + while ( tmp ) + { + Square sq = BitOp::popBit( tmp ); + Bitboard mob = Tables::knightAttm[ sq ]; + + if ( pinMask[c] & BitOp::oneShl(sq) ) + mob = 0; + + attm[c][ptAll] |= attm[c][ptKnight] |= mob; + + // safety helper + if ( safetyMask[ flip(c) ] & mob ) + attackers[flip(c)]++; + + mob &= ~b.occupied( c ); // exclude friendly pieces + mob &= ~attm[flip(c)][ptPawn]; // exclude attacked squares + int popc = BitOp::popCount< pcm >( mob ); + assert( popc >= 0 && popc < 9 ); + + fscore[phOpening] += sign() * knightMobility[ phOpening ][ popc ]; + fscore[phEndgame] += sign() * knightMobility[ phEndgame ][ popc ]; + + // knight outpost bonus + if ( (Tables::pawnAttm[flip(c)][sq] & pawns) && + !(Tables::outpostMask[c][sq] & opPawns) ) + { + File f = SquarePack::file(sq); + Rank r = SquarePack::relRank(sq) ^ RANK1; + FineScore bonus = outpostBonusFile[f] + outpostBonusRank[r]; + fscore[phOpening] += sign() * bonus; + fscore[phEndgame] += sign() * bonus; + } + + if ( BitOp::oneShl( sq ) & attm[flip(c)][ptPawn] ) + { + fscore[phOpening] -= sign() * knightHangingOpening; + fscore[phEndgame] -= sign() * knightHangingEndgame; + } + } +} + +template< PopCountMode pcm, Color c > void Eval::evalBishops( const Board &b ) +{ + Bitboard tmp = b.pieces( c, ptBishop ); + + bool pair = 0; + if ( (tmp & lightSquares) && (tmp & darkSquares) ) + { + // bishop pair bonus + fscore[ phOpening ] += sign() * bishopPairOpening; + fscore[ phEndgame ] += sign() * bishopPairEndgame; + pair = 1; + } + + Bitboard tocc = occ & ~(tmp|b.pieces(c, ptQueen)); + + Bitboard oppawns = b.pieces( c, ptPawn ); + + while ( tmp ) + { + Square sq = BitOp::popBit( tmp ); + + if ( !pair ) + { + // eval good vs bad bishop + Bitboard badMask; + badMask = (BitOp::oneShl(sq) & lightSquares) ? lightSquares : darkSquares; + Bitboard goodMask = ~badMask; + + int delta = (int)BitOp::popCount( oppawns & goodMask ) - (int)BitOp::popCount( oppawns & badMask ); + i32 didx = delta + 8; + didx = std::max( std::min(didx, 16), 0 ); + fscore[ phOpening ] += sign() * goodBishopOpening[didx]; + fscore[ phEndgame ] += sign() * goodBishopEndgame[didx]; + } + + Bitboard mob = Magic::bishopAttm( sq, tocc ); + + // determine valid movement mask if pinned + if ( pinMask[c] & BitOp::oneShl(sq) ) + mob &= Tables::ray[ b.king(c) ][ sq ]; + + attm[c][ptAll] |= attm[c][ptBishop] |= mob; + + // safety helper + if ( safetyMask[ flip(c) ] & mob ) + attackers[flip(c)]++; + + mob &= ~b.occupied( c ); // exclude friendly pieces + mob &= ~attm[flip(c)][ptPawn]; // exclude attacked squares + int popc = (int)BitOp::popCount< pcm >( mob ); + assert( popc >= 0 && popc < 14 ); + + fscore[phOpening] += sign() * bishopMobility[ phOpening ][ popc ]; + fscore[phEndgame] += sign() * bishopMobility[ phEndgame ][ popc ]; + + if ( SquarePack::relRank( sq ) == RANK7 ) + { + File f = SquarePack::file(sq); + if ( f == AFILE || f == HFILE ) + { + Square blocksq = SquarePack::advanceRank< c, -1 >(sq); + if ( f == AFILE ) + blocksq++; + else + blocksq--; + if ( BitOp::oneShl( blocksq ) & b.pieces( flip(c), ptPawn ) ) + { + // trapped by pawn + // confirm with see + if ( b.see<1>( MovePack::initCapture( sq, blocksq ) ) < 0 ) + { + fscore[phOpening] -= sign()*trappedBishopOpening; + fscore[phEndgame] -= sign()*trappedBishopEndgame; + } + } + } + } + if ( BitOp::oneShl( sq ) & attm[flip(c)][ptPawn] ) + { + fscore[phOpening] -= sign() * bishopHangingOpening; + fscore[phEndgame] -= sign() * bishopHangingEndgame; + } + } +} + +template< PopCountMode pcm, Color c > void Eval::evalRooks( const Board &b ) +{ + Bitboard tmp = b.pieces( c, ptRook ); + Bitboard myrooks = tmp; + Bitboard pawns = b.pieces( ctWhite, ptPawn ) | b.pieces( ctBlack, ptPawn ); + Bitboard tocc = occ & ~(myrooks|b.pieces(c, ptQueen)); + while ( tmp ) + { + Square sq = BitOp::popBit( tmp ); + Bitboard mob = Magic::rookAttm( sq, tocc ); + + // determine valid movement mask if pinned + if ( pinMask[c] & BitOp::oneShl(sq) ) + mob &= Tables::ray[ b.king(c) ][ sq ]; + + attm[c][ptAll] |= attm[c][ptRook] |= mob; + + // safety helper + if ( safetyMask[ flip(c) ] & mob ) + attackers[flip(c)]++; + + mob &= ~b.occupied( c ); // exclude friendly pieces + // exclude attacked squares + mob &= ~(attm[flip(c)][ptPawn] | attm[flip(c)][ptKnight] | attm[flip(c)][ptBishop]); + int popc = (int)BitOp::popCount< pcm >( mob ); + assert( popc >= 0 && popc < 15 ); + + fscore[phOpening] += sign() * rookMobility[ phOpening ][ popc ]; + fscore[phEndgame] += sign() * rookMobility[ phEndgame ][ popc ]; + + // now rook on open file + File f = SquarePack::file( sq ); + if ( !(Tables::fileMask[ f ] & pawns) && !(Tables::frontMask[c][sq] & myrooks) ) + { + // if two rooks are here, give bonus to only one + fscore[phOpening] += sign() * rookOnOpenOpening; + fscore[phEndgame] += sign() * rookOnOpenEndgame; + } + if ( BitOp::oneShl( sq ) & attm[flip(c)][ptPawn] ) + { + fscore[phOpening] -= sign() * rookHangingOpening; + fscore[phEndgame] -= sign() * rookHangingEndgame; + } + } +} + +template< PopCountMode pcm, Color c > void Eval::evalQueens( const Board &b ) +{ + Bitboard tmp = b.pieces( c, ptQueen ); + Bitboard tocc = occ & ~tmp; + Bitboard rooks = b.pieces(c, ptRook); + Bitboard bishops = b.pieces(c, ptBishop); + while ( tmp ) + { + Square sq = BitOp::popBit( tmp ); + Bitboard incl = Tables::orthoAttm[sq] & rooks; + incl |= Tables::diagAttm[sq] & bishops; + Bitboard mob = Magic::queenAttm( sq, tocc & ~incl ); + + // determine valid movement mask if pinned + if ( pinMask[c] & BitOp::oneShl(sq) ) + mob &= Tables::ray[ b.king(c) ][ sq ]; + + attm[c][ptAll] |= attm[c][ptQueen] |= mob; + + // safety helper + if ( safetyMask[ flip(c) ] & mob ) + attackers[flip(c)]++; + + mob &= ~b.occupied( c ); // exclude friendly pieces + // exclude attacked squares + mob &= ~(attm[flip(c)][ptPawn] | attm[flip(c)][ptKnight] | attm[flip(c)][ptBishop] | attm[flip(c)][ptRook]); + int popc = (int)BitOp::popCount< pcm >( mob ); + assert( popc >= 0 && popc < 28 ); + + fscore[phOpening] += sign() * queenMobility[ phOpening ][ popc ]; + fscore[phEndgame] += sign() * queenMobility[ phEndgame ][ popc ]; + + if ( BitOp::oneShl( sq ) & attm[flip(c)][ptPawn] ) + { + fscore[phOpening] -= sign() * queenHangingOpening; + fscore[phEndgame] -= sign() * queenHangingEndgame; + } + } +} + +template< PopCountMode pcm, Color c > void Eval::evalKing( const Board &b ) +{ + Square kp = b.king(c); + + // FIXME: better? + attm[c][ptKing] = Tables::kingAttm[kp]; + attm[c][ptAll] |= attm[c][ptKing]; + + // pawn shelter eval + Bitboard t = BitOp::oneShl(kp); + t |= ((t << 1) & L1MASK) | ((t >> 1) & R1MASK); + Bitboard tmp = t; + t |= (c == ctWhite ? (t >> 8) : (t << 8)); + Bitboard pawns = b.pieces( c, ptPawn ); + uint front1 = BitOp::popCount< pcm >( t & pawns ); + fscore[ phOpening ] += sign() * (FineScore)(front1 * shelterFront1); + tmp = (c == ctWhite) ? tmp >> 16 : tmp << 16; + uint front2 = BitOp::popCount< pcm >( tmp & pawns ); + fscore[ phOpening ] += sign() * (FineScore)(front2 * shelterFront2); + + FineScore safety = 0; + for ( Piece p = ptPawn; p <= ptQueen; p++ ) + { + Bitboard threats = attm[ flip(c) ][ p ] & safetyMask[c]; + safety += BitOp::popCount< pcm >( threats ) * safetyScale[ p ]; + } + + if ( b.pieces( flip(c), ptQueen ) ) + safety *= 2; + + safety *= attackers[ c ]; + fscore[phOpening] -= sign() * safety; + + // endgame: bonus/penalty for being close/away from passers + Bitboard pass = pe->passers[c]; +// uint npass = 0; + u8 bdist = 255; + while ( pass ) + { +// npass++; + Square psq = BitOp::popBit(pass); + u8 dist = Tables::distance[kp][psq]; + if ( dist < bdist ) + bdist = dist; + } + if ( bdist != 255 ) + { + int dist = kingPasserSupportBase-(int)bdist; + fscore[phEndgame] += sign() * dist * kingPasserSupportScale; +/* // add more bonus to passers facing a knight who is a weak defender + if ( npass > 1 && (b.materialKey() & matNPMask[ flip(c)]) == matKN[ flip(c)] ) + { + fscore[phEndgame] += sign() * 1000; + }*/ + } +} + +// eval special endgame cases +template< Color c > void Eval::evalSpecial( const Board &b ) +{ + // check whether the side which has advantage has enough mating material + // or whether the other side is bare king and we have a certain win + if ( !hasMatingMaterial< c >( b ) ) + fscore[ phOpening ] = fscore[ phEndgame ] = 0; + else if ( isCertainWin< c >( b ) ) + fscore[ phEndgame ] += sign() * certainWin; + else evalBlindBishop< c >( b ); +} + +void Eval::execRecog( const Board &b, MaterialKey mk, const Recognizer *recogs, size_t numRecogs ) +{ + i32 l = 0; + i32 h = (i32)numRecogs; + while ( l <= h ) + { + i32 m = (l+h) >> 1; + const Recognizer &r = recogs[m]; + if ( mk == r.key ) + { + // found! + r.func( b, fscore ); + return; + } + if ( mk < r.key ) + h = m-1; + else + l = m+1; + } +} + +// eval eg recognizers +void Eval::evalRecog( const Board &b ) +{ + MaterialKey mk = b.materialKey(); + + if ( !b.nonPawnMat() ) + { + // eval difference (Ed's good old idea) + int dpawn = MaterialPack::count( mk, ctWhite, ptPawn) - MaterialPack::count( mk, ctBlack, ptPawn); + dpawn = std::max( -1, std::min( dpawn, 1 ) ); + fscore[ phEndgame ] += pawnRaceAdvantageEndgame * dpawn; + // eval unstoppable passers + for ( Color c = ctWhite; c <= ctBlack; c++ ) + { + Square okp = b.king( flip(c) ); + Bitboard p = pe->passers[c]; + while ( p ) + { + Square sq = BitOp::popBit(p); + Rank rr = SquarePack::relRank(c, sq) ^ RANK1; // important: use rank1 = 7, ... rank8 = 0 + Distance pdist = (Distance)8 - (Distance)rr; + Distance dist = Tables::distance[okp][sq]; + if ( b.turn() == c ) + dist++; + if ( pdist < dist ) + fscore[ phEndgame ] += sign(c) * unstoppablePasser; + } + } + } + + // scale bishop endgame with opposite color bishops + if ( !(mk & matBishopEGMask) ) + { + Bitboard bishops[2] = { + b.pieces( ctWhite, ptBishop ), + b.pieces( ctBlack, ptBishop ) + }; + + if ( bishops[0] && bishops[1] && abs(b.deltaMat(phOpening)) < 400 ) + { + if ( ( !(bishops[0] & lightSquares) && !(bishops[1] & darkSquares ) ) || + ( !(bishops[0] & darkSquares) && !(bishops[1] & lightSquares ) ) ) + { + fscore[ phOpening ] /= 2; + fscore[ phEndgame ] /= 2; + } + } + } + // eval other less trivial drawish positions + execRecog( b, mk & matMask[ctWhite], scaleRecognizers[ctWhite], numScaleRecognizers ); + execRecog( b, mk & matMask[ctBlack], scaleRecognizers[ctBlack], numScaleRecognizers ); + + // exec true recognizers + execRecog( b, mk, recognizers, numRecognizers ); +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/eval.h b/Engines/Linux/cheng/src/cheng4/eval.h new file mode 100644 index 0000000..6bbbd0b --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/eval.h @@ -0,0 +1,221 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "board.h" +#include "utils.h" + +namespace cheng4 +{ + +// generic eval hash (cache) +template< typename Signature, typename Entry > struct EvalHash +{ + EvalHash() : allocEntries(0) + { + memset( &dummy, 0, sizeof(dummy) ); + dummyAlloc(); + } + ~EvalHash() + { + dealloc(); + } + + // resize hash table + // note: automatically clears table on success + // returns 0 on failure + bool resize( size_t sizeBytes ) + { + size_t sizeEntries = (sizeBytes + sizeof(Entry)-1) / sizeof(Entry); + if ( sizeEntries <= 1 ) + { + dummyAlloc(); + return 1; + } + if ( !roundPow2( sizeEntries ) ) + return 0; + dealloc(); + allocEntries = new(std::nothrow) Entry[sizeEntries+1]; + if ( !allocEntries ) + { + dummyAlloc(); + return 0; + } + entries = static_cast(alignPtr( allocEntries, sizeof(Entry) )); + size = sizeEntries; + return 1; + } + + // clear pawn hash table + void clear() + { + assert( entries != 0 ); + memset( entries, 0, size * sizeof(Entry) ); + } + + // get hashentry ptr from index + inline Entry *index( Signature sig ) + { + return entries + ((size_t)sig & (size-1)); + } +private: + Entry *entries; // entries + Entry *allocEntries; // allocated entries + size_t size; // must be a power of two + + Entry dummy; + + void dummyAlloc() + { + dealloc(); + entries = &dummy; + size = 1; + clear(); + } + void dealloc() + { + if ( allocEntries ) + { + delete[] allocEntries; + allocEntries = 0; + } + } +}; + +// size must be power of 2 +struct EvalCacheEntry +{ + Signature sig; // signature + Score score; // score + Score pad; // pad to 16-byte struct +}; + +typedef EvalHash EvalCache; + +// size must be power of 2 +struct PawnHashEntry +{ + Signature sig; // signature + Bitboard passers[phMax]; // passers for each color + FineScore scores[phMax]; // pawn scores for each game phase +}; + +typedef EvalHash PawnHash; + +// recognizer function type +typedef void (*RecogFunc)( const Board &b, FineScore *fscore ); + +struct MaterialHashEntry +{ + MaterialKey sig; // signature + RecogFunc recog; // recognizer function (can be 0) + FineScore fscore[phMax]; + union u + { + u8 div[phMax]; // scale dividers + u16 packed; // packed dividers + }; +}; + +typedef EvalHash MaterialHash; + +struct Eval +{ + struct Recognizer + { + MaterialKey key; + RecogFunc func; + inline bool operator <( const Recognizer &o ) const + { + return key < o.key; + } + }; + + Eval(); + + // static initializer (sort recognizers) + static void init(); + + // returns final centipawn evaluation from stm's point of view + Score eval( const Board &b, Score alpha = -scInfinity, Score beta = +scInfinity ); + + // returns fast evaluation (psq only) + Score fastEval( const Board &b ); + + // resize eval cache to sz bytes + // returns !0 on success + bool resizeEval( size_t sizeBytes ); + // resize pawn hash to sz bytes + // returns !0 on success + bool resizePawn( size_t sizeBytes ); + // resize material hash to sz bytes + // returns !0 on success + bool resizeMaterial( size_t sizeBytes ); + + // clear eval/pawn/material caches + void clear(); + +private: + // scores for game phases + FineScore fscore[phMax]; + // precomputed values for evaluation + Bitboard occ; // occupied + Bitboard safetyMask[ctMax]; // safety masks for each king + u32 attackers[ctMax]; // attackers for each stm + Bitboard pinMask[ctMax]; + + PawnHashEntry *pe; // pawn hash entry pointer + + // attack mask [color][piece] + Bitboard attm[ctMax][ptMax]; + + EvalCache ecache; + PawnHash phash; + MaterialHash mhash; + + template< PopCountMode pcm > Score ieval( const Board &b, Score alpha = -scInfinity, Score beta = +scInfinity ); + + template< PopCountMode pcm, Color c, bool slow > void evalPawns( const Board &b ); + template< Color c > void evalPassers( const Board &b ); + template< PopCountMode pcm, Color c > void evalKnights( const Board &b ); + template< PopCountMode pcm, Color c > void evalBishops( const Board &b ); + template< PopCountMode pcm, Color c > void evalRooks( const Board &b ); + template< PopCountMode pcm, Color c > void evalQueens( const Board &b ); + template< PopCountMode pcm, Color c > void evalKing( const Board &b ); + + template< Color c > bool isCertainWin( const Board &b ) const; + // eval special endgame cases + template< Color c > void evalSpecial( const Board &b ); + + // eval eg recognizers + void evalRecog( const Board &b ); + + // exec binary search on recognizers array + void execRecog( const Board &b, MaterialKey mk, const Recognizer *recogs, size_t numRecogs ); + + // evaluate blind bishop scaling + template< Color c > void evalBlindBishop( const Board &b ); +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/filterpgn.cpp b/Engines/Linux/cheng/src/cheng4/filterpgn.cpp new file mode 100644 index 0000000..8ff6d57 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/filterpgn.cpp @@ -0,0 +1,251 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "filterpgn.h" +#include "board.h" +#include +#include +#include +#include +#include + +namespace cheng4 +{ + +// FilterPgn::Game + +void FilterPgn::Game::clear() +{ + board.reset(); + positions.clear(); + result = -1; +} + +// FilterPgn + +bool FilterPgn::write(const char *fname) +{ + std::ofstream ofs( fname, std::ios::out | std::ios::binary ); + if (!ofs.is_open()) + return 0; + for (size_t i=0; i= 0 ) + { + if (ch == '[') { + if (state) + { + flushGame(); + game.clear(); + state = 0; + } + if (!parseTag(key, value)) + { + parseRes = 0; + break; + } + // we're only interested in result so far + if (key == "Result") + { + if (value == "1/2-1/2") + game.result = 0.5; + else if (value == "1-0") + game.result = 1; + else if (value == "0-1") + game.result = 0; + else game.result = -1; + } + continue; + } + if (isspace(ch)) + { + getChar(); + continue; + } + // here we start parsing the game + state = 1; + if (ch == '{') + { + // parse comment! + if (!parseComment(comment)) + { + delete[] buf; + return 0; + } + // here we want to filter book moves and checkmates + if (comment == "book" && !game.positions.empty()) + game.positions.pop_back(); + if (comment.empty()) + continue; + const char *c = comment.c_str(); + if ((c[1] == 'M' || c[1] == 'm') && !game.positions.empty()) + game.positions.pop_back(); + continue; + } + if (!isalpha(ch)) + { + // cannot be a move => continue + getChar(); + continue; + } + // so we assume a move goes here + Move m = game.board.fromSAN(ls.ptr); + if (m == mcNone) + continue; + // we got a legal move here... + bool ischeck = game.board.isCheck(m, game.board.discovered()); + UndoInfo ui; + game.board.doMove(m, ui, ischeck); + if ( game.board.turn() == ctWhite ) + game.board.incMove(); + Position pos; + pos.fen = game.board.toFEN(); + pos.outcome = game.result; + game.positions.push_back(pos); + } + flushGame(); + delete[] buf; + return parseRes; +} + +void FilterPgn::flushGame() +{ + for (size_t i=0; i= 0) + { + globalGame.positions.push_back(p); + } + } +} + +bool FilterPgn::parseTag(std::string &key, std::string &value ) +{ + int ch = getChar(); + if (ch != '[') + return 0; + + key.clear(); + value.clear(); + + while ( (ch = peekChar()) >= 0 ) + { + if (isspace(ch)) { + getChar(); + continue; + } + if (ch == ']') + { + getChar(); + return 1; + } + if (ch == '"') + { + if (!parseString(value)) + return 0; + continue; + } + if (!isalpha(ch) && ch != '_') + return 0; + // parse key + do { + key += (char)getChar(); + ch = peekChar(); + } while (ch >= 0 && (ch == '_' || isalnum(ch))); + } + return 0; +} + +bool FilterPgn::parseString(std::string &str) +{ + int ch = getChar(); + if (ch != '"') + return 0; + str.clear(); + while ( (ch = getChar()) >= 0 ) + { + if (ch == '"') { + return 1; + } + str += (char)ch; + } + // unterminated string + return 0; +} + +bool FilterPgn::parseComment(std::string &str) +{ + int ch = getChar(); + if (ch != '{') + return 0; + str.clear(); + while ( (ch = getChar()) >= 0 ) + { + if (ch == '}') { + return 1; + } + str += (char)ch; + } + // unterminated comment + return 0; +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/filterpgn.h b/Engines/Linux/cheng/src/cheng4/filterpgn.h new file mode 100644 index 0000000..97c8afe --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/filterpgn.h @@ -0,0 +1,78 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "board.h" +#include +#include + +namespace cheng4 +{ + +class FilterPgn +{ + struct LexState + { + const char *ptr, *top; + }; + struct Position + { + std::string fen; + // from white's POV + // 0 = loss, 1 = win, 0.5 = draw + float outcome; + }; + struct Game + { + Board board; + std::vector positions; + // 0 = white loss (=black win), 0.5 = draw, 1 = white win, -1 = invalid + float result; + + void clear(); + }; +public: + bool parse(const char *fname); + bool write(const char *fname); +private: + LexState ls; + Game game; + Game globalGame; + + bool parseTag(std::string &key, std::string &value ); + bool parseString(std::string &str); + bool parseComment(std::string &str); + void flushGame(); + + inline int getChar() + { + return ls.ptr < ls.top ? *ls.ptr++ : -1; + } + inline int peekChar() const + { + return ls.ptr < ls.top ? *ls.ptr : -1; + } +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/history.cpp b/Engines/Linux/cheng/src/cheng4/history.cpp new file mode 100644 index 0000000..cfa98a9 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/history.cpp @@ -0,0 +1,40 @@ +#include "history.h" +#include + +namespace cheng4 +{ + +// History + +void History::clear() +{ + memset( history, 0, sizeof(history) ); +} + +void History::add( const Board &b, Move m, i32 depth ) +{ + assert( !MovePack::isSpecial(m) ); + + Piece p = b.piece( MovePack::from(m) ); + Color c = PiecePack::color( p ); + Piece pt = PiecePack::type(p); + assert( pt != ptNone ); + assert( c == b.turn() ); + + i32 val = depth*depth; // causing a cutoff higher in the tree is more important + if ( depth < 0 ) + val = -val; + + i16 &h = history[ c ][ pt ][ MovePack::to(m) ]; + i32 nval = (i32)h + val; + while ( abs(nval) > historyMax ) + { + nval /= 2; + for (p=ptPawn; p<=ptKing; p++) + for ( uint i=0; i<64; i++ ) + history[c][p][i] /= 2; + } + h = (i16)nval; +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/history.h b/Engines/Linux/cheng/src/cheng4/history.h new file mode 100644 index 0000000..9ebe85a --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/history.h @@ -0,0 +1,33 @@ +#pragma once + +#include "board.h" + +namespace cheng4 +{ + +struct History +{ + static const i16 historyMax = 2047; + static const i16 historyMin = -historyMax; + + // history table [stm][piecetype][square] + i16 history[ ctMax ][ ptMax ][ 64 ]; + + inline History() {} + explicit inline History( void * /*zeroInit*/ ) { clear(); } + + // add move which caused cutoff/sub move which didn't + void add( const Board &b, Move m, i32 depth ); + + // get move ordering score + inline i32 score( const Board &b, Move m ) const + { + Piece p = b.piece( MovePack::from( m ) ); + return history[ b.turn() ][ PiecePack::type(p) ][ MovePack::to(m) ]; + } + + // clear table + void clear(); +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/killer.h b/Engines/Linux/cheng/src/cheng4/killer.h new file mode 100644 index 0000000..ec6ef8b --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/killer.h @@ -0,0 +1,54 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "move.h" + +namespace cheng4 +{ + +struct Killer +{ + Move hashMove; + Move killers[2]; // always using two killer moves + Move pad; // pad the struct + + inline Killer() {} + explicit inline Killer( void * /*zeroInit*/ ) { clear(); } + + inline void addKiller( Move m ) + { + if ( killers[0] == m ) + return; + killers[1] = killers[0]; + killers[0] = m; + } + + inline void clear() + { + hashMove = killers[0] = killers[1] = pad = mcNone; + } +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/kpk.cpp b/Engines/Linux/cheng/src/cheng4/kpk.cpp new file mode 100644 index 0000000..f22489d --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/kpk.cpp @@ -0,0 +1,355 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "kpk.h" +#include "tables.h" +#include "magic.h" +#include + +#include "board.h" +#include "search.h" +#include "movegen.h" +#include "thread.h" + +#ifdef GEN_KPK +# include +#endif + +// TODO: refactor KPK::generate (split into more parts) + +namespace cheng4 +{ + +// KPK + +u8 KPK::bits[64*64*24*2/8] = +{ +#include "kpktable.h" +}; + +u8 KPK::getBit( uint b ) +{ + return (u8)( bits[ b >> 3 ] & (1u << (b&7)) ); +} + +void KPK::setBit( uint b, uint v ) +{ + u8 &val = bits[ b >> 3 ]; + u8 msk = (u8)(1u << (b&7)); + val &= ~msk; + val |= msk * (v != 0); +} + +void KPK::init() +{ +} + +enum KPKStatus +{ + stUnknown, + stInvalid, + stWin, // win for side with pawn + stDraw +}; + +void KPK::generate() +{ +#ifdef GEN_KPK + i32 ms = Timer::getMillisec(); + + memset( bits, 0, sizeof(bits) ); + u8 status[ 64*64*24*2 ]; + // status: 0 = unknown, 1 = invalid, 2 = win, 4 = draw + memset( status, 0, sizeof(status) ); + // 64*64*24 + // king pos, bking pos (all) + half-side pawn positions + for ( Square kp = 0; kp < 64; kp++ ) + { + for ( Square bkp = 0; bkp < 64; bkp++ ) + { + for ( uint p = 0; p < 24; p++ ) + { + // build left-wing pawn square + Square psq = (Square)( 8+(p/4)*8 + (p & 3) ); + for ( Color c = ctWhite; c <= ctBlack; c++ ) + { + KPKStatus stat = stUnknown; + if ( kp == bkp || kp == psq || bkp == psq ) + stat = stInvalid; + uint ind = index( kp, bkp, psq, c ); + + // classify trivial wins and stalemates + // if black (from now on side without pawn) can safely capture the pawn, it's a draw + Bitboard bkatt = Tables::kingAttm[ bkp ]; + Bitboard katt = Tables::kingAttm[ kp ]; + if ( katt & BitOp::oneShl( bkp ) ) + stat = stInvalid; // kings too close => invalid + + if ( stat == stUnknown ) + { + bkatt &= ~katt; // can't approach white king + Bitboard pbb = BitOp::oneShl( psq ); + if ( c == ctBlack ) + { + if ( (bkatt & pbb) && !(katt & pbb) ) + stat = stDraw; // black safely recaptures => draw + Bitboard attm = Tables::pawnAttm[ ctWhite ][ psq ]; + bkatt &= ~attm; + // FIXME: it can never happen that kp vs k is a stalemate nor that kp vs k is a checkmate + if ( !bkatt && !(BitOp::oneShl(bkp) & attm ) ) + stat = stDraw; // draw (stalemate) + } + else + { + if ( Tables::pawnAttm[ ctWhite ][ psq ] & BitOp::oneShl( bkp ) ) + stat = stInvalid; // we are on move but black king is in check => invalid position + // now check for safe win + if ( stat == stUnknown && SquarePack::rank(psq) == RANK7 ) + { + Square promoSq = SquarePack::advanceRank< ctWhite, 1 >( psq ); + if ( promoSq != kp && promoSq != bkp ) + { + // promotion square clear + Bitboard promoBb = BitOp::oneShl( promoSq ); + if ( !(bkatt & promoBb) || (katt & promoBb) ) + { + // black can't recapture or promosquare is protected by white king + Bitboard occ = + BitOp::oneShl( kp ) | BitOp::oneShl( bkp ) | BitOp::oneShl( promoSq ); + // it's only certain win if it's not stalemate + Bitboard qattm = Magic::queenAttm( promoSq, occ ); + // if it's not stalemate or it's a check => win + if ( (bkatt & ~qattm) || (qattm & BitOp::oneShl( bkp ) ) ) + stat = stWin; + else + { + // check for safe rook promotion + Bitboard rattm = Magic::rookAttm( promoSq, occ ); + if ( bkatt & ~rattm ) + stat = stWin; + } + } + } + } + } + } + status[ ind ] = (u8)stat; + } + } + } + } + + // ready to iterate + while( iterate( status ) ); + + // the rest of unclassified positions are draws + for (uint i=0; i<64*64*24*2; i++) + setBit( i, status[i] == stWin ? 0 : 1 ); + + ms = Timer::getMillisec() - ms; + printf("kpk init took %d ms\n", ms); + + FILE *f = fopen("kpktable.h", "w"); + for (size_t i=0; i skip + Bitboard bkattm = Tables::kingAttm[ bkp ]; + Bitboard kattm = Tables::kingAttm[ kp ]; + assert( !(bkattm & BitOp::oneShl( bkp )) ); + // generate all moves + if ( c == ctWhite ) + { + kattm &= ~bkattm; + kattm &= BitOp::noneShl( psq ); // can't capture own pawn + uint draws = 0, count = 0; + // king moves + while ( kattm ) + { + count++; + Square nkp = BitOp::popBit( kattm ); + assert( nkp != kp ); + uint nind = index( nkp, bkp, psq, flip(c) ); + // if any move leads to a win, it's a win + u8 nst = status[nind]; + if ( nst == stWin ) + { + status[ind] = stWin; + res = 1; + break; + } else if ( nst == stDraw ) + draws++; + } + + // now pawn pushes + Bitboard occ = BitOp::oneShl( kp ) | BitOp::oneShl( bkp ); + Rank r = SquarePack::rank( psq ); + Square push1 = SquarePack::advanceRank< ctWhite, 1 >( psq ); + if ( !(BitOp::oneShl(push1) & occ) ) + { + // can push by one + count++; + if ( !SquarePack::isRank1Or8(push1) ) + { + uint nind = index( kp, bkp, push1, flip(c) ); + // if any move leads to a win, it's a win + u8 nst = status[nind]; + if ( nst == stWin ) + { + status[ind] = stWin; + res = 1; + } else if ( nst == stDraw ) + draws++; + if ( r == RANK2 ) + { + // pawn push by two + Square push2 = SquarePack::advanceRank< ctWhite, 1 >( push1 ); + if ( !(BitOp::oneShl(push2) & occ) ) + { + // can push by two + assert( !SquarePack::isRank1Or8(push2) ); + count++; + nind = index( kp, bkp, push2, flip(c) ); + // if any move leads to a win, it's a win + nst = status[nind]; + if ( nst == stWin ) + { + status[ind] = stWin; + res = 1; + } else if ( nst == stDraw ) + draws++; + } + } + } + } + + if ( !count || draws == count ) + { + // self-stalemate or every move leads to a draw => it's a draw + assert( status[ind] == stUnknown ); + status[ind] = stDraw; + res = 1; + } + } + else + { + bkattm &= ~kattm; + bkattm &= ~Tables::pawnAttm[ ctWhite ][ psq ]; + // it cannot be a checkmate/stalemate at this moment + if ( !bkattm ) + { + // FIXME: I think this won't happen + status[ind] = stDraw; + res = 1; + continue; + } + // generate all moves + uint losses = 0, count = 0; + while ( bkattm ) + { + count++; + Square nbkp = BitOp::popBit( bkattm ); + assert( bkp != nbkp ); + uint nind = index( kp, nbkp, psq, flip(c) ); + // if any move leads to a draw, it's a draw + u8 nst = status[nind]; + if ( nst == stDraw ) + { + status[ind] = stDraw; + res = 1; + break; + } else if ( nst == stWin ) + losses++; + } + if ( losses == count ) + { + // every move leads to a loss => it's a loss + status[ind] = stWin; + res = 1; + } + } + } + } + } + } +#endif + return res; +} + +static const Square xorMskFile[2] = { 0, 7 }; + +// stm: white = king with pawn +uint KPK::index( Square kp, Square bkp, Square psq, Color stm ) +{ + assert( !SquarePack::isRank1Or8( psq ) ); + File f = SquarePack::file( psq ); + // mirror horizontally if necessary + Square xm = xorMskFile[ f >= EFILE ]; + kp ^= xm; + bkp ^= xm; + psq ^= xm; + f ^= (File)xm; + // now we can build index + uint pp = (( (psq & 0x38)-8)>>1)|f; + assert( pp < 24 ); + return (uint)kp | ((uint)bkp << 6) | ((uint)stm << 12) | ((uint)pp << 13); +} + +static const Square xorMsk[2] = { 0, 0x38 }; + +// is draw? +// color (with pawn), color (stm), king (with pawn) position, bare king position, pawn position +u8 KPK::isDraw( Color c, Color stm, Square kp, Square bkp, Square pp ) +{ + Square xm = xorMsk[ c ]; + return getBit( index( kp^xm, bkp^xm, pp^xm, c^stm ) ); +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/kpk.h b/Engines/Linux/cheng/src/cheng4/kpk.h new file mode 100644 index 0000000..d89f351 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/kpk.h @@ -0,0 +1,49 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "chtypes.h" + +namespace cheng4 +{ + +struct KPK +{ + static u8 bits[64*64*24*2/8]; + static void init(); + static void generate(); + // is draw? + // color (with pawn), color (stm), king (with pawn) position, bare king position, pawn position + static u8 isDraw( Color c, Color stm, Square kp, Square bkp, Square pp ); +private: + static u8 getBit( uint b ); + static void setBit( uint b, uint v ); + // stm: white = king with pawn + static uint index( Square kp, Square bkp, Square psq, Color stm ); + // iterate + // returns 1 if another iteration is needed + static bool iterate( u8 *status ); +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/kpktable.h b/Engines/Linux/cheng/src/cheng4/kpktable.h new file mode 100644 index 0000000..a0dc256 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/kpktable.h @@ -0,0 +1,3074 @@ +// this file has been generated using a simple algorithm, so the license doesn't apply here, +// anyone is free to do anything with the data contained in this file +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +15,15,0,0,0,0,0,0, +28,29,0,0,0,0,0,0, +56,57,0,0,0,0,0,0, +112,113,0,0,0,0,0,0, +224,225,0,0,0,0,0,0, +192,193,0,0,0,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +15,15,14,0,0,0,0,0, +28,29,28,0,0,0,0,0, +56,57,56,0,0,0,0,0, +112,113,112,0,0,0,0,0, +224,225,224,0,0,0,0,0, +192,193,192,0,0,0,0,0, +0,3,3,3,0,0,0,0, +0,7,7,7,0,0,0,0, +0,15,14,14,0,0,0,0, +0,29,28,28,0,0,0,0, +0,57,56,56,0,0,0,0, +0,113,112,112,0,0,0,0, +0,225,224,224,0,0,0,0, +0,193,192,192,0,0,0,0, +0,1,3,3,3,0,0,0, +0,1,7,7,7,0,0,0, +0,1,14,14,14,0,0,0, +0,1,28,28,28,0,0,0, +0,1,56,56,56,0,0,0, +0,1,112,112,112,0,0,0, +0,1,224,224,224,0,0,0, +0,1,192,192,192,0,0,0, +0,1,0,3,3,3,0,0, +0,1,0,7,7,7,0,0, +0,1,0,14,14,14,0,0, +0,1,0,28,28,28,0,0, +0,1,0,56,56,56,0,0, +0,1,0,112,112,112,0,0, +0,1,0,224,224,224,0,0, +0,1,0,192,192,192,0,0, +0,1,0,0,3,3,3,0, +0,1,0,0,7,7,7,0, +0,1,0,0,14,14,14,0, +0,1,0,0,28,28,28,0, +0,1,0,0,56,56,56,0, +0,1,0,0,112,112,112,0, +0,1,0,0,224,224,224,0, +0,1,0,0,192,192,192,0, +0,1,0,0,0,3,3,3, +0,1,0,0,0,7,7,7, +0,1,0,0,0,14,14,14, +0,1,0,0,0,28,28,28, +0,1,0,0,0,56,56,56, +0,1,0,0,0,112,112,112, +0,1,0,0,0,224,224,224, +0,1,0,0,0,192,192,192, +0,1,0,0,0,0,3,3, +0,1,0,0,0,0,7,7, +0,1,0,0,0,0,14,14, +0,1,0,0,0,0,28,28, +0,1,0,0,0,0,56,56, +0,1,0,0,0,0,112,112, +0,1,0,0,0,0,224,224, +0,1,0,0,0,0,192,192, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,248,255,255,255,255,255, +29,29,0,0,0,0,0,0, +56,57,0,0,0,0,0,0, +112,113,0,0,0,0,0,0, +224,225,0,0,0,0,0,0, +192,193,0,0,0,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,254,255,255,255,255,255, +29,29,28,0,0,0,0,0, +56,57,56,0,0,0,0,0, +112,113,112,0,0,0,0,0, +224,225,224,0,0,0,0,0, +192,193,192,0,0,0,0,0, +252,255,255,255,255,255,255,255, +253,255,255,255,255,255,255,255, +249,255,254,255,255,255,255,255, +1,29,28,28,0,0,0,0, +0,57,56,56,0,0,0,0, +0,113,112,112,0,0,0,0, +0,225,224,224,0,0,0,0, +0,193,192,192,0,0,0,0, +0,1,3,3,3,0,0,0, +0,1,7,7,7,0,0,0, +0,1,14,14,14,0,0,0, +0,1,28,28,28,0,0,0, +0,1,56,56,56,0,0,0, +0,1,112,112,112,0,0,0, +0,1,224,224,224,0,0,0, +0,1,192,192,192,0,0,0, +0,1,0,3,3,3,0,0, +0,1,0,7,7,7,0,0, +0,1,0,14,14,14,0,0, +0,1,0,28,28,28,0,0, +0,1,0,56,56,56,0,0, +0,1,0,112,112,112,0,0, +0,1,0,224,224,224,0,0, +0,1,0,192,192,192,0,0, +0,1,0,0,3,3,3,0, +0,1,0,0,7,7,7,0, +0,1,0,0,14,14,14,0, +0,1,0,0,28,28,28,0, +0,1,0,0,56,56,56,0, +0,1,0,0,112,112,112,0, +0,1,0,0,224,224,224,0, +0,1,0,0,192,192,192,0, +0,1,0,0,0,3,3,3, +0,1,0,0,0,7,7,7, +0,1,0,0,0,14,14,14, +0,1,0,0,0,28,28,28, +0,1,0,0,0,56,56,56, +0,1,0,0,0,112,112,112, +0,1,0,0,0,224,224,224, +0,1,0,0,0,192,192,192, +0,1,0,0,0,0,3,3, +0,1,0,0,0,0,7,7, +0,1,0,0,0,0,14,14, +0,1,0,0,0,0,28,28, +0,1,0,0,0,0,56,56, +0,1,0,0,0,0,112,112, +0,1,0,0,0,0,224,224, +0,1,0,0,0,0,192,192, +255,255,255,255,255,255,255,255, +255,247,245,240,255,255,255,255, +255,255,255,255,255,255,255,255, +28,30,0,0,0,0,0,0, +56,58,0,0,0,0,0,0, +112,114,0,0,0,0,0,0, +224,226,0,0,0,0,0,0, +192,194,0,0,0,0,0,0, +243,243,243,255,255,255,255,255, +255,255,255,255,255,255,255,255, +254,254,254,255,255,255,255,255, +28,30,28,0,0,0,0,0, +56,58,56,0,0,0,0,0, +112,114,112,0,0,0,0,0, +224,226,224,0,0,0,0,0, +192,194,192,0,0,0,0,0, +0,3,3,3,0,0,0,0, +0,7,7,7,0,0,0,0, +0,14,14,14,0,0,0,0, +0,30,28,28,0,0,0,0, +0,58,56,56,0,0,0,0, +0,114,112,112,0,0,0,0, +0,226,224,224,0,0,0,0, +0,194,192,192,0,0,0,0, +0,2,3,3,3,0,0,0, +0,2,7,7,7,0,0,0, +0,2,14,14,14,0,0,0, +0,2,28,28,28,0,0,0, +0,2,56,56,56,0,0,0, +0,2,112,112,112,0,0,0, +0,2,224,224,224,0,0,0, +0,2,192,192,192,0,0,0, +0,2,0,3,3,3,0,0, +0,2,0,7,7,7,0,0, +0,2,0,14,14,14,0,0, +0,2,0,28,28,28,0,0, +0,2,0,56,56,56,0,0, +0,2,0,112,112,112,0,0, +0,2,0,224,224,224,0,0, +0,2,0,192,192,192,0,0, +0,2,0,0,3,3,3,0, +0,2,0,0,7,7,7,0, +0,2,0,0,14,14,14,0, +0,2,0,0,28,28,28,0, +0,2,0,0,56,56,56,0, +0,2,0,0,112,112,112,0, +0,2,0,0,224,224,224,0, +0,2,0,0,192,192,192,0, +0,2,0,0,0,3,3,3, +0,2,0,0,0,7,7,7, +0,2,0,0,0,14,14,14, +0,2,0,0,0,28,28,28, +0,2,0,0,0,56,56,56, +0,2,0,0,0,112,112,112, +0,2,0,0,0,224,224,224, +0,2,0,0,0,192,192,192, +0,2,0,0,0,0,3,3, +0,2,0,0,0,0,7,7, +0,2,0,0,0,0,14,14, +0,2,0,0,0,0,28,28, +0,2,0,0,0,0,56,56, +0,2,0,0,0,0,112,112, +0,2,0,0,0,0,224,224, +0,2,0,0,0,0,192,192, +251,251,253,255,255,255,255,255, +255,255,250,255,255,255,255,255, +254,254,253,255,255,255,255,255, +252,254,240,255,255,255,255,255, +56,58,0,0,0,0,0,0, +112,114,0,0,0,0,0,0, +224,226,0,0,0,0,0,0, +192,194,0,0,0,0,0,0, +251,251,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +254,254,255,255,255,255,255,255, +252,254,252,255,255,255,255,255, +56,58,56,0,0,0,0,0, +112,114,112,0,0,0,0,0, +224,226,224,0,0,0,0,0, +192,194,192,0,0,0,0,0, +248,251,251,255,255,255,255,255, +248,255,255,255,255,255,255,255, +248,254,254,255,255,255,255,255, +240,254,252,255,255,255,255,255, +0,58,56,56,0,0,0,0, +0,114,112,112,0,0,0,0, +0,226,224,224,0,0,0,0, +0,194,192,192,0,0,0,0, +0,2,3,3,3,0,0,0, +0,2,7,7,7,0,0,0, +0,2,14,14,14,0,0,0, +0,2,28,28,28,0,0,0, +0,2,56,56,56,0,0,0, +0,2,112,112,112,0,0,0, +0,2,224,224,224,0,0,0, +0,2,192,192,192,0,0,0, +0,2,0,3,3,3,0,0, +0,2,0,7,7,7,0,0, +0,2,0,14,14,14,0,0, +0,2,0,28,28,28,0,0, +0,2,0,56,56,56,0,0, +0,2,0,112,112,112,0,0, +0,2,0,224,224,224,0,0, +0,2,0,192,192,192,0,0, +0,2,0,0,3,3,3,0, +0,2,0,0,7,7,7,0, +0,2,0,0,14,14,14,0, +0,2,0,0,28,28,28,0, +0,2,0,0,56,56,56,0, +0,2,0,0,112,112,112,0, +0,2,0,0,224,224,224,0, +0,2,0,0,192,192,192,0, +0,2,0,0,0,3,3,3, +0,2,0,0,0,7,7,7, +0,2,0,0,0,14,14,14, +0,2,0,0,0,28,28,28, +0,2,0,0,0,56,56,56, +0,2,0,0,0,112,112,112, +0,2,0,0,0,224,224,224, +0,2,0,0,0,192,192,192, +0,2,0,0,0,0,3,3, +0,2,0,0,0,0,7,7, +0,2,0,0,0,0,14,14, +0,2,0,0,0,0,28,28, +0,2,0,0,0,0,56,56, +0,2,0,0,0,0,112,112, +0,2,0,0,0,0,224,224, +0,2,0,0,0,0,192,192, +3,7,0,0,0,0,0,0, +255,255,255,255,255,255,255,255, +255,238,234,224,255,255,255,255, +255,255,255,255,255,255,255,255, +56,60,0,0,0,0,0,0, +112,116,0,0,0,0,0,0, +224,228,0,0,0,0,0,0, +192,196,0,0,0,0,0,0, +3,7,3,0,0,0,0,0, +231,231,231,255,255,255,255,255, +255,255,255,255,255,255,255,255, +252,252,252,255,255,255,255,255, +56,60,56,0,0,0,0,0, +112,116,112,0,0,0,0,0, +224,228,224,0,0,0,0,0, +192,196,192,0,0,0,0,0, +0,7,3,3,0,0,0,0, +0,7,7,7,0,0,0,0, +0,14,14,14,0,0,0,0, +0,28,28,28,0,0,0,0, +0,60,56,56,0,0,0,0, +0,116,112,112,0,0,0,0, +0,228,224,224,0,0,0,0, +0,196,192,192,0,0,0,0, +0,4,3,3,3,0,0,0, +0,4,7,7,7,0,0,0, +0,4,14,14,14,0,0,0, +0,4,28,28,28,0,0,0, +0,4,56,56,56,0,0,0, +0,4,112,112,112,0,0,0, +0,4,224,224,224,0,0,0, +0,4,192,192,192,0,0,0, +0,4,0,3,3,3,0,0, +0,4,0,7,7,7,0,0, +0,4,0,14,14,14,0,0, +0,4,0,28,28,28,0,0, +0,4,0,56,56,56,0,0, +0,4,0,112,112,112,0,0, +0,4,0,224,224,224,0,0, +0,4,0,192,192,192,0,0, +0,4,0,0,3,3,3,0, +0,4,0,0,7,7,7,0, +0,4,0,0,14,14,14,0, +0,4,0,0,28,28,28,0, +0,4,0,0,56,56,56,0, +0,4,0,0,112,112,112,0, +0,4,0,0,224,224,224,0, +0,4,0,0,192,192,192,0, +0,4,0,0,0,3,3,3, +0,4,0,0,0,7,7,7, +0,4,0,0,0,14,14,14, +0,4,0,0,0,28,28,28, +0,4,0,0,0,56,56,56, +0,4,0,0,0,112,112,112, +0,4,0,0,0,224,224,224, +0,4,0,0,0,192,192,192, +0,4,0,0,0,0,3,3, +0,4,0,0,0,0,7,7, +0,4,0,0,0,0,14,14, +0,4,0,0,0,0,28,28, +0,4,0,0,0,0,56,56, +0,4,0,0,0,0,112,112, +0,4,0,0,0,0,224,224, +0,4,0,0,0,0,192,192, +227,231,227,255,255,255,255,255, +247,247,251,255,255,255,255,255, +255,255,245,255,255,255,255,255, +253,253,251,255,255,255,255,255, +248,252,224,255,255,255,255,255, +112,116,0,0,0,0,0,0, +224,228,0,0,0,0,0,0, +192,196,0,0,0,0,0,0, +227,231,227,255,255,255,255,255, +247,247,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +253,253,255,255,255,255,255,255, +248,252,248,255,255,255,255,255, +112,116,112,0,0,0,0,0, +224,228,224,0,0,0,0,0, +192,196,192,0,0,0,0,0, +224,231,227,255,255,255,255,255, +241,247,247,255,255,255,255,255, +241,255,255,255,255,255,255,255, +241,253,253,255,255,255,255,255, +224,252,248,255,255,255,255,255, +0,116,112,112,0,0,0,0, +0,228,224,224,0,0,0,0, +0,196,192,192,0,0,0,0, +0,4,3,3,3,0,0,0, +0,4,7,7,7,0,0,0, +0,4,14,14,14,0,0,0, +0,4,28,28,28,0,0,0, +0,4,56,56,56,0,0,0, +0,4,112,112,112,0,0,0, +0,4,224,224,224,0,0,0, +0,4,192,192,192,0,0,0, +0,4,0,3,3,3,0,0, +0,4,0,7,7,7,0,0, +0,4,0,14,14,14,0,0, +0,4,0,28,28,28,0,0, +0,4,0,56,56,56,0,0, +0,4,0,112,112,112,0,0, +0,4,0,224,224,224,0,0, +0,4,0,192,192,192,0,0, +0,4,0,0,3,3,3,0, +0,4,0,0,7,7,7,0, +0,4,0,0,14,14,14,0, +0,4,0,0,28,28,28,0, +0,4,0,0,56,56,56,0, +0,4,0,0,112,112,112,0, +0,4,0,0,224,224,224,0, +0,4,0,0,192,192,192,0, +0,4,0,0,0,3,3,3, +0,4,0,0,0,7,7,7, +0,4,0,0,0,14,14,14, +0,4,0,0,0,28,28,28, +0,4,0,0,0,56,56,56, +0,4,0,0,0,112,112,112, +0,4,0,0,0,224,224,224, +0,4,0,0,0,192,192,192, +0,4,0,0,0,0,3,3, +0,4,0,0,0,0,7,7, +0,4,0,0,0,0,14,14, +0,4,0,0,0,0,28,28, +0,4,0,0,0,0,56,56, +0,4,0,0,0,0,112,112, +0,4,0,0,0,0,224,224, +0,4,0,0,0,0,192,192, +3,11,0,0,0,0,0,0, +7,15,0,0,0,0,0,0, +255,255,255,255,255,255,255,255, +255,221,213,193,255,255,255,255, +255,255,255,255,255,255,255,255, +112,120,0,0,0,0,0,0, +224,232,0,0,0,0,0,0, +192,200,0,0,0,0,0,0, +3,11,3,0,0,0,0,0, +7,15,7,0,0,0,0,0, +207,207,207,255,255,255,255,255, +255,255,255,255,255,255,255,255, +249,249,249,255,255,255,255,255, +112,120,112,0,0,0,0,0, +224,232,224,0,0,0,0,0, +192,200,192,0,0,0,0,0, +0,11,3,3,0,0,0,0, +0,15,7,7,0,0,0,0, +0,14,14,14,0,0,0,0, +0,28,28,28,0,0,0,0, +0,56,56,56,0,0,0,0, +0,120,112,112,0,0,0,0, +0,232,224,224,0,0,0,0, +0,200,192,192,0,0,0,0, +0,8,3,3,3,0,0,0, +0,8,7,7,7,0,0,0, +0,8,14,14,14,0,0,0, +0,8,28,28,28,0,0,0, +0,8,56,56,56,0,0,0, +0,8,112,112,112,0,0,0, +0,8,224,224,224,0,0,0, +0,8,192,192,192,0,0,0, +0,8,0,3,3,3,0,0, +0,8,0,7,7,7,0,0, +0,8,0,14,14,14,0,0, +0,8,0,28,28,28,0,0, +0,8,0,56,56,56,0,0, +0,8,0,112,112,112,0,0, +0,8,0,224,224,224,0,0, +0,8,0,192,192,192,0,0, +0,8,0,0,3,3,3,0, +0,8,0,0,7,7,7,0, +0,8,0,0,14,14,14,0, +0,8,0,0,28,28,28,0, +0,8,0,0,56,56,56,0, +0,8,0,0,112,112,112,0, +0,8,0,0,224,224,224,0, +0,8,0,0,192,192,192,0, +0,8,0,0,0,3,3,3, +0,8,0,0,0,7,7,7, +0,8,0,0,0,14,14,14, +0,8,0,0,0,28,28,28, +0,8,0,0,0,56,56,56, +0,8,0,0,0,112,112,112, +0,8,0,0,0,224,224,224, +0,8,0,0,0,192,192,192, +0,8,0,0,0,0,3,3, +0,8,0,0,0,0,7,7, +0,8,0,0,0,0,14,14, +0,8,0,0,0,0,28,28, +0,8,0,0,0,0,56,56, +0,8,0,0,0,0,112,112, +0,8,0,0,0,0,224,224, +0,8,0,0,0,0,192,192, +3,11,0,0,0,0,0,0, +199,207,193,255,255,255,255,255, +239,239,247,255,255,255,255,255, +255,255,235,255,255,255,255,255, +251,251,247,255,255,255,255,255, +241,249,193,255,255,255,255,255, +224,232,0,0,0,0,0,0, +192,200,0,0,0,0,0,0, +3,11,3,0,0,0,0,0, +199,207,199,255,255,255,255,255, +239,239,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +251,251,255,255,255,255,255,255, +241,249,241,255,255,255,255,255, +224,232,224,0,0,0,0,0, +192,200,192,0,0,0,0,0, +0,11,3,3,0,0,0,0, +193,207,199,255,255,255,255,255, +227,239,239,255,255,255,255,255, +227,255,255,255,255,255,255,255, +227,251,251,255,255,255,255,255, +193,249,241,255,255,255,255,255, +0,232,224,224,0,0,0,0, +0,200,192,192,0,0,0,0, +0,8,3,3,3,0,0,0, +0,8,7,7,7,0,0,0, +0,8,14,14,14,0,0,0, +0,8,28,28,28,0,0,0, +0,8,56,56,56,0,0,0, +0,8,112,112,112,0,0,0, +0,8,224,224,224,0,0,0, +0,8,192,192,192,0,0,0, +0,8,0,3,3,3,0,0, +0,8,0,7,7,7,0,0, +0,8,0,14,14,14,0,0, +0,8,0,28,28,28,0,0, +0,8,0,56,56,56,0,0, +0,8,0,112,112,112,0,0, +0,8,0,224,224,224,0,0, +0,8,0,192,192,192,0,0, +0,8,0,0,3,3,3,0, +0,8,0,0,7,7,7,0, +0,8,0,0,14,14,14,0, +0,8,0,0,28,28,28,0, +0,8,0,0,56,56,56,0, +0,8,0,0,112,112,112,0, +0,8,0,0,224,224,224,0, +0,8,0,0,192,192,192,0, +0,8,0,0,0,3,3,3, +0,8,0,0,0,7,7,7, +0,8,0,0,0,14,14,14, +0,8,0,0,0,28,28,28, +0,8,0,0,0,56,56,56, +0,8,0,0,0,112,112,112, +0,8,0,0,0,224,224,224, +0,8,0,0,0,192,192,192, +0,8,0,0,0,0,3,3, +0,8,0,0,0,0,7,7, +0,8,0,0,0,0,14,14, +0,8,0,0,0,0,28,28, +0,8,0,0,0,0,56,56, +0,8,0,0,0,0,112,112, +0,8,0,0,0,0,224,224, +0,8,0,0,0,0,192,192, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,249,255,255,255,255,255, +28,28,1,0,0,0,0,0, +56,56,1,0,0,0,0,0, +112,112,1,0,0,0,0,0, +224,224,1,0,0,0,0,0, +192,192,1,0,0,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +28,28,29,0,0,0,0,0, +56,56,57,0,0,0,0,0, +112,112,113,0,0,0,0,0, +224,224,225,0,0,0,0,0, +192,192,193,0,0,0,0,0, +255,255,255,255,255,255,255,255, +253,255,255,255,255,255,255,255, +248,254,255,255,255,255,255,255, +0,28,29,28,0,0,0,0, +0,56,57,56,0,0,0,0, +0,112,113,112,0,0,0,0, +0,224,225,224,0,0,0,0, +0,192,193,192,0,0,0,0, +0,0,3,3,3,0,0,0, +0,0,7,7,7,0,0,0, +0,0,15,14,14,0,0,0, +0,0,29,28,28,0,0,0, +0,0,57,56,56,0,0,0, +0,0,113,112,112,0,0,0, +0,0,225,224,224,0,0,0, +0,0,193,192,192,0,0,0, +0,0,1,3,3,3,0,0, +0,0,1,7,7,7,0,0, +0,0,1,14,14,14,0,0, +0,0,1,28,28,28,0,0, +0,0,1,56,56,56,0,0, +0,0,1,112,112,112,0,0, +0,0,1,224,224,224,0,0, +0,0,1,192,192,192,0,0, +0,0,1,0,3,3,3,0, +0,0,1,0,7,7,7,0, +0,0,1,0,14,14,14,0, +0,0,1,0,28,28,28,0, +0,0,1,0,56,56,56,0, +0,0,1,0,112,112,112,0, +0,0,1,0,224,224,224,0, +0,0,1,0,192,192,192,0, +0,0,1,0,0,3,3,3, +0,0,1,0,0,7,7,7, +0,0,1,0,0,14,14,14, +0,0,1,0,0,28,28,28, +0,0,1,0,0,56,56,56, +0,0,1,0,0,112,112,112, +0,0,1,0,0,224,224,224, +0,0,1,0,0,192,192,192, +0,0,1,0,0,0,3,3, +0,0,1,0,0,0,7,7, +0,0,1,0,0,0,14,14, +0,0,1,0,0,0,28,28, +0,0,1,0,0,0,56,56, +0,0,1,0,0,0,112,112, +0,0,1,0,0,0,224,224, +0,0,1,0,0,0,192,192, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +253,253,249,255,255,255,255,255, +56,56,1,0,0,0,0,0, +112,112,1,0,0,0,0,0, +224,224,1,0,0,0,0,0, +192,192,1,0,0,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +253,253,253,255,255,255,255,255, +56,56,57,0,0,0,0,0, +112,112,113,0,0,0,0,0, +224,224,225,0,0,0,0,0, +192,192,193,0,0,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +253,255,255,255,255,255,255,255, +249,253,253,255,255,255,255,255, +0,56,57,56,0,0,0,0, +0,112,113,112,0,0,0,0, +0,224,225,224,0,0,0,0, +0,192,193,192,0,0,0,0, +255,252,255,255,255,255,255,255, +255,252,255,255,255,255,255,255, +253,248,255,255,255,255,255,255, +248,240,253,253,255,255,255,255, +0,0,57,56,56,0,0,0, +0,0,113,112,112,0,0,0, +0,0,225,224,224,0,0,0, +0,0,193,192,192,0,0,0, +0,0,1,3,3,3,0,0, +0,0,1,7,7,7,0,0, +0,0,1,14,14,14,0,0, +0,0,1,28,28,28,0,0, +0,0,1,56,56,56,0,0, +0,0,1,112,112,112,0,0, +0,0,1,224,224,224,0,0, +0,0,1,192,192,192,0,0, +0,0,1,0,3,3,3,0, +0,0,1,0,7,7,7,0, +0,0,1,0,14,14,14,0, +0,0,1,0,28,28,28,0, +0,0,1,0,56,56,56,0, +0,0,1,0,112,112,112,0, +0,0,1,0,224,224,224,0, +0,0,1,0,192,192,192,0, +0,0,1,0,0,3,3,3, +0,0,1,0,0,7,7,7, +0,0,1,0,0,14,14,14, +0,0,1,0,0,28,28,28, +0,0,1,0,0,56,56,56, +0,0,1,0,0,112,112,112, +0,0,1,0,0,224,224,224, +0,0,1,0,0,192,192,192, +0,0,1,0,0,0,3,3, +0,0,1,0,0,0,7,7, +0,0,1,0,0,0,14,14, +0,0,1,0,0,0,28,28, +0,0,1,0,0,0,56,56, +0,0,1,0,0,0,112,112, +0,0,1,0,0,0,224,224, +0,0,1,0,0,0,192,192, +251,243,247,240,255,255,255,255, +255,255,250,255,255,255,255,255, +254,254,246,240,255,255,255,255, +252,252,226,224,224,255,255,255, +56,56,2,0,0,0,0,0, +112,112,2,0,0,0,0,0, +224,224,2,0,0,0,0,0, +192,192,2,0,0,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +252,252,254,224,224,255,255,255, +56,56,58,0,0,0,0,0, +112,112,114,0,0,0,0,0, +224,224,226,0,0,0,0,0, +192,192,194,0,0,0,0,0, +240,243,243,243,255,255,255,255, +255,255,255,255,255,255,255,255, +248,254,254,254,255,255,255,255, +240,252,254,252,248,255,255,255, +0,56,58,56,0,0,0,0, +0,112,114,112,0,0,0,0, +0,224,226,224,0,0,0,0, +0,192,194,192,0,0,0,0, +0,0,3,3,3,0,0,0, +0,0,7,7,7,0,0,0, +0,0,14,14,14,0,0,0, +0,0,30,28,28,0,0,0, +0,0,58,56,56,0,0,0, +0,0,114,112,112,0,0,0, +0,0,226,224,224,0,0,0, +0,0,194,192,192,0,0,0, +0,0,2,3,3,3,0,0, +0,0,2,7,7,7,0,0, +0,0,2,14,14,14,0,0, +0,0,2,28,28,28,0,0, +0,0,2,56,56,56,0,0, +0,0,2,112,112,112,0,0, +0,0,2,224,224,224,0,0, +0,0,2,192,192,192,0,0, +0,0,2,0,3,3,3,0, +0,0,2,0,7,7,7,0, +0,0,2,0,14,14,14,0, +0,0,2,0,28,28,28,0, +0,0,2,0,56,56,56,0, +0,0,2,0,112,112,112,0, +0,0,2,0,224,224,224,0, +0,0,2,0,192,192,192,0, +0,0,2,0,0,3,3,3, +0,0,2,0,0,7,7,7, +0,0,2,0,0,14,14,14, +0,0,2,0,0,28,28,28, +0,0,2,0,0,56,56,56, +0,0,2,0,0,112,112,112, +0,0,2,0,0,224,224,224, +0,0,2,0,0,192,192,192, +0,0,2,0,0,0,3,3, +0,0,2,0,0,0,7,7, +0,0,2,0,0,0,14,14, +0,0,2,0,0,0,28,28, +0,0,2,0,0,0,56,56, +0,0,2,0,0,0,112,112, +0,0,2,0,0,0,224,224, +0,0,2,0,0,0,192,192, +255,255,250,255,255,255,255,255, +255,255,255,255,255,255,255,255, +254,254,250,255,255,255,255,255, +252,252,246,240,255,255,255,255, +248,248,226,224,224,255,255,255, +112,112,2,0,0,0,0,0, +224,224,2,0,0,0,0,0, +192,192,2,0,0,0,0,0, +255,251,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,254,254,255,255,255,255,255, +252,252,254,240,255,255,255,255, +248,248,250,224,248,255,255,255, +112,112,114,0,0,0,0,0, +224,224,226,0,0,0,0,0, +192,192,194,0,0,0,0,0, +255,251,251,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,254,254,255,255,255,255,255, +248,252,254,252,255,255,255,255, +240,248,250,248,248,255,255,255, +0,112,114,112,0,0,0,0, +0,224,226,224,0,0,0,0, +0,192,194,192,0,0,0,0, +255,248,251,251,255,255,255,255, +255,248,255,255,255,255,255,255, +255,248,254,254,255,255,255,255, +248,240,254,252,255,255,255,255, +240,224,250,248,248,255,255,255, +0,0,114,112,112,0,0,0, +0,0,226,224,224,0,0,0, +0,0,194,192,192,0,0,0, +0,0,2,3,3,3,0,0, +0,0,2,7,7,7,0,0, +0,0,2,14,14,14,0,0, +0,0,2,28,28,28,0,0, +0,0,2,56,56,56,0,0, +0,0,2,112,112,112,0,0, +0,0,2,224,224,224,0,0, +0,0,2,192,192,192,0,0, +0,0,2,0,3,3,3,0, +0,0,2,0,7,7,7,0, +0,0,2,0,14,14,14,0, +0,0,2,0,28,28,28,0, +0,0,2,0,56,56,56,0, +0,0,2,0,112,112,112,0, +0,0,2,0,224,224,224,0, +0,0,2,0,192,192,192,0, +0,0,2,0,0,3,3,3, +0,0,2,0,0,7,7,7, +0,0,2,0,0,14,14,14, +0,0,2,0,0,28,28,28, +0,0,2,0,0,56,56,56, +0,0,2,0,0,112,112,112, +0,0,2,0,0,224,224,224, +0,0,2,0,0,192,192,192, +0,0,2,0,0,0,3,3, +0,0,2,0,0,0,7,7, +0,0,2,0,0,0,14,14, +0,0,2,0,0,0,28,28, +0,0,2,0,0,0,56,56, +0,0,2,0,0,0,112,112, +0,0,2,0,0,0,224,224, +0,0,2,0,0,0,192,192, +195,195,196,192,192,255,255,255, +231,231,230,224,255,255,255,255, +255,255,245,255,255,255,255,255, +252,252,236,224,255,255,255,255, +248,248,196,192,192,255,255,255, +112,112,4,0,0,0,0,0, +224,224,4,0,0,0,0,0, +192,192,4,0,0,0,0,0, +195,195,199,192,192,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +248,248,252,192,192,255,255,255, +112,112,116,0,0,0,0,0, +224,224,228,0,0,0,0,0, +192,192,196,0,0,0,0,0, +192,195,199,195,193,255,255,255, +225,231,231,231,255,255,255,255, +255,255,255,255,255,255,255,255, +240,252,252,252,255,255,255,255, +224,248,252,248,240,255,255,255, +0,112,116,112,0,0,0,0, +0,224,228,224,0,0,0,0, +0,192,196,192,0,0,0,0, +0,0,7,3,3,0,0,0, +0,0,7,7,7,0,0,0, +0,0,14,14,14,0,0,0, +0,0,28,28,28,0,0,0, +0,0,60,56,56,0,0,0, +0,0,116,112,112,0,0,0, +0,0,228,224,224,0,0,0, +0,0,196,192,192,0,0,0, +0,0,4,3,3,3,0,0, +0,0,4,7,7,7,0,0, +0,0,4,14,14,14,0,0, +0,0,4,28,28,28,0,0, +0,0,4,56,56,56,0,0, +0,0,4,112,112,112,0,0, +0,0,4,224,224,224,0,0, +0,0,4,192,192,192,0,0, +0,0,4,0,3,3,3,0, +0,0,4,0,7,7,7,0, +0,0,4,0,14,14,14,0, +0,0,4,0,28,28,28,0, +0,0,4,0,56,56,56,0, +0,0,4,0,112,112,112,0, +0,0,4,0,224,224,224,0, +0,0,4,0,192,192,192,0, +0,0,4,0,0,3,3,3, +0,0,4,0,0,7,7,7, +0,0,4,0,0,14,14,14, +0,0,4,0,0,28,28,28, +0,0,4,0,0,56,56,56, +0,0,4,0,0,112,112,112, +0,0,4,0,0,224,224,224, +0,0,4,0,0,192,192,192, +0,0,4,0,0,0,3,3, +0,0,4,0,0,0,7,7, +0,0,4,0,0,0,14,14, +0,0,4,0,0,0,28,28, +0,0,4,0,0,0,56,56, +0,0,4,0,0,0,112,112, +0,0,4,0,0,0,224,224, +0,0,4,0,0,0,192,192, +227,227,230,224,255,255,255,255, +247,247,245,255,255,255,255,255, +255,255,255,255,255,255,255,255, +253,253,245,255,255,255,255,255, +248,248,236,224,255,255,255,255, +240,240,196,192,192,255,255,255, +224,224,4,0,0,0,0,0, +192,192,4,0,0,0,0,0, +227,227,231,224,255,255,255,255, +255,247,247,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,253,253,255,255,255,255,255, +248,248,252,224,255,255,255,255, +240,240,244,192,240,255,255,255, +224,224,228,0,0,0,0,0, +192,192,196,0,0,0,0,0, +225,227,231,227,255,255,255,255, +255,247,247,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,253,253,255,255,255,255,255, +240,248,252,248,255,255,255,255, +224,240,244,240,240,255,255,255, +0,224,228,224,0,0,0,0, +0,192,196,192,0,0,0,0, +225,224,231,227,255,255,255,255, +255,241,247,247,255,255,255,255, +255,241,255,255,255,255,255,255, +255,241,253,253,255,255,255,255, +240,224,252,248,255,255,255,255, +224,192,244,240,240,255,255,255, +0,0,228,224,224,0,0,0, +0,0,196,192,192,0,0,0, +0,0,4,3,3,3,0,0, +0,0,4,7,7,7,0,0, +0,0,4,14,14,14,0,0, +0,0,4,28,28,28,0,0, +0,0,4,56,56,56,0,0, +0,0,4,112,112,112,0,0, +0,0,4,224,224,224,0,0, +0,0,4,192,192,192,0,0, +0,0,4,0,3,3,3,0, +0,0,4,0,7,7,7,0, +0,0,4,0,14,14,14,0, +0,0,4,0,28,28,28,0, +0,0,4,0,56,56,56,0, +0,0,4,0,112,112,112,0, +0,0,4,0,224,224,224,0, +0,0,4,0,192,192,192,0, +0,0,4,0,0,3,3,3, +0,0,4,0,0,7,7,7, +0,0,4,0,0,14,14,14, +0,0,4,0,0,28,28,28, +0,0,4,0,0,56,56,56, +0,0,4,0,0,112,112,112, +0,0,4,0,0,224,224,224, +0,0,4,0,0,192,192,192, +0,0,4,0,0,0,3,3, +0,0,4,0,0,0,7,7, +0,0,4,0,0,0,14,14, +0,0,4,0,0,0,28,28, +0,0,4,0,0,0,56,56, +0,0,4,0,0,0,112,112, +0,0,4,0,0,0,224,224, +0,0,4,0,0,0,192,192, +3,3,8,0,0,0,0,0, +135,135,136,128,128,255,255,255, +207,207,205,193,255,255,255,255, +255,255,235,255,255,255,255,255, +249,249,217,193,255,255,255,255, +240,240,136,128,128,255,255,255, +224,224,8,0,0,0,0,0, +192,192,8,0,0,0,0,0, +3,3,11,0,0,0,0,0, +135,135,143,128,128,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +240,240,248,128,128,255,255,255, +224,224,232,0,0,0,0,0, +192,192,200,0,0,0,0,0, +0,3,11,3,0,0,0,0, +129,135,143,135,131,255,255,255, +195,207,207,207,255,255,255,255, +255,255,255,255,255,255,255,255, +225,249,249,249,255,255,255,255, +192,240,248,240,224,255,255,255, +0,224,232,224,0,0,0,0, +0,192,200,192,0,0,0,0, +0,0,11,3,3,0,0,0, +0,0,15,7,7,0,0,0, +0,0,14,14,14,0,0,0, +0,0,28,28,28,0,0,0, +0,0,56,56,56,0,0,0, +0,0,120,112,112,0,0,0, +0,0,232,224,224,0,0,0, +0,0,200,192,192,0,0,0, +0,0,8,3,3,3,0,0, +0,0,8,7,7,7,0,0, +0,0,8,14,14,14,0,0, +0,0,8,28,28,28,0,0, +0,0,8,56,56,56,0,0, +0,0,8,112,112,112,0,0, +0,0,8,224,224,224,0,0, +0,0,8,192,192,192,0,0, +0,0,8,0,3,3,3,0, +0,0,8,0,7,7,7,0, +0,0,8,0,14,14,14,0, +0,0,8,0,28,28,28,0, +0,0,8,0,56,56,56,0, +0,0,8,0,112,112,112,0, +0,0,8,0,224,224,224,0, +0,0,8,0,192,192,192,0, +0,0,8,0,0,3,3,3, +0,0,8,0,0,7,7,7, +0,0,8,0,0,14,14,14, +0,0,8,0,0,28,28,28, +0,0,8,0,0,56,56,56, +0,0,8,0,0,112,112,112, +0,0,8,0,0,224,224,224, +0,0,8,0,0,192,192,192, +0,0,8,0,0,0,3,3, +0,0,8,0,0,0,7,7, +0,0,8,0,0,0,14,14, +0,0,8,0,0,0,28,28, +0,0,8,0,0,0,56,56, +0,0,8,0,0,0,112,112, +0,0,8,0,0,0,224,224, +0,0,8,0,0,0,192,192, +131,131,136,128,128,255,255,255, +199,199,205,193,255,255,255,255, +239,239,235,255,255,255,255,255, +255,255,255,255,255,255,255,255, +251,251,235,255,255,255,255,255, +241,241,217,193,255,255,255,255, +224,224,136,128,128,255,255,255, +192,192,8,0,0,0,0,0, +131,131,139,128,131,255,255,255, +199,199,207,193,255,255,255,255, +255,239,239,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,251,251,255,255,255,255,255, +241,241,249,193,255,255,255,255, +224,224,232,128,224,255,255,255, +192,192,200,0,0,0,0,0, +129,131,139,131,131,255,255,255, +195,199,207,199,255,255,255,255, +255,239,239,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,251,251,255,255,255,255,255, +225,241,249,241,255,255,255,255, +192,224,232,224,224,255,255,255, +0,192,200,192,0,0,0,0, +129,128,139,131,131,255,255,255, +195,193,207,199,255,255,255,255, +255,227,239,239,255,255,255,255, +255,227,255,255,255,255,255,255, +255,227,251,251,255,255,255,255, +225,193,249,241,255,255,255,255, +192,128,232,224,224,255,255,255, +0,0,200,192,192,0,0,0, +0,0,8,3,3,3,0,0, +0,0,8,7,7,7,0,0, +0,0,8,14,14,14,0,0, +0,0,8,28,28,28,0,0, +0,0,8,56,56,56,0,0, +0,0,8,112,112,112,0,0, +0,0,8,224,224,224,0,0, +0,0,8,192,192,192,0,0, +0,0,8,0,3,3,3,0, +0,0,8,0,7,7,7,0, +0,0,8,0,14,14,14,0, +0,0,8,0,28,28,28,0, +0,0,8,0,56,56,56,0, +0,0,8,0,112,112,112,0, +0,0,8,0,224,224,224,0, +0,0,8,0,192,192,192,0, +0,0,8,0,0,3,3,3, +0,0,8,0,0,7,7,7, +0,0,8,0,0,14,14,14, +0,0,8,0,0,28,28,28, +0,0,8,0,0,56,56,56, +0,0,8,0,0,112,112,112, +0,0,8,0,0,224,224,224, +0,0,8,0,0,192,192,192, +0,0,8,0,0,0,3,3, +0,0,8,0,0,0,7,7, +0,0,8,0,0,0,14,14, +0,0,8,0,0,0,28,28, +0,0,8,0,0,0,56,56, +0,0,8,0,0,0,112,112, +0,0,8,0,0,0,224,224, +0,0,8,0,0,0,192,192, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +252,252,248,255,255,255,255,255, +56,56,0,1,0,0,0,0, +112,112,0,1,0,0,0,0, +224,224,0,1,0,0,0,0, +192,192,0,1,0,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +252,252,252,255,255,255,255,255, +56,56,56,1,0,0,0,0, +112,112,112,1,0,0,0,0, +224,224,224,1,0,0,0,0, +192,192,192,1,0,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +253,255,255,255,255,255,255,255, +248,252,252,253,255,255,255,255, +0,56,56,57,0,0,0,0, +0,112,112,113,0,0,0,0, +0,224,224,225,0,0,0,0, +0,192,192,193,0,0,0,0, +255,255,255,255,255,255,255,255, +255,252,255,255,255,255,255,255, +248,248,254,255,255,255,255,255, +240,240,252,253,252,255,255,255, +0,0,56,57,56,0,0,0, +0,0,112,113,112,0,0,0, +0,0,224,225,224,0,0,0, +0,0,192,193,192,0,0,0, +0,0,0,3,3,3,0,0, +0,0,0,7,7,7,0,0, +0,0,0,15,14,14,0,0, +0,0,0,29,28,28,0,0, +0,0,0,57,56,56,0,0, +0,0,0,113,112,112,0,0, +0,0,0,225,224,224,0,0, +0,0,0,193,192,192,0,0, +0,0,0,1,3,3,3,0, +0,0,0,1,7,7,7,0, +0,0,0,1,14,14,14,0, +0,0,0,1,28,28,28,0, +0,0,0,1,56,56,56,0, +0,0,0,1,112,112,112,0, +0,0,0,1,224,224,224,0, +0,0,0,1,192,192,192,0, +0,0,0,1,0,3,3,3, +0,0,0,1,0,7,7,7, +0,0,0,1,0,14,14,14, +0,0,0,1,0,28,28,28, +0,0,0,1,0,56,56,56, +0,0,0,1,0,112,112,112, +0,0,0,1,0,224,224,224, +0,0,0,1,0,192,192,192, +0,0,0,1,0,0,3,3, +0,0,0,1,0,0,7,7, +0,0,0,1,0,0,14,14, +0,0,0,1,0,0,28,28, +0,0,0,1,0,0,56,56, +0,0,0,1,0,0,112,112, +0,0,0,1,0,0,224,224, +0,0,0,1,0,0,192,192, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +253,253,255,255,255,255,255,255, +248,248,248,255,255,255,255,255, +112,112,0,1,0,0,0,0, +224,224,0,1,0,0,0,0, +192,192,0,1,0,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +253,253,255,255,255,255,255,255, +248,248,248,255,255,255,255,255, +112,112,112,1,0,0,0,0, +224,224,224,1,0,0,0,0, +192,192,192,1,0,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +253,253,253,255,255,255,255,255, +248,248,248,255,255,255,255,255, +0,112,112,113,0,0,0,0, +0,224,224,225,0,0,0,0, +0,192,192,193,0,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,253,255,255,255,255,255,255, +253,249,253,253,255,255,255,255, +248,240,248,249,255,255,255,255, +0,0,112,113,112,0,0,0, +0,0,224,225,224,0,0,0, +0,0,192,193,192,0,0,0, +255,255,252,255,255,255,255,255, +255,255,252,255,255,255,255,255, +255,252,248,255,255,255,255,255, +248,248,240,253,253,255,255,255, +240,240,224,249,248,255,255,255, +0,0,0,113,112,112,0,0, +0,0,0,225,224,224,0,0, +0,0,0,193,192,192,0,0, +0,0,0,1,3,3,3,0, +0,0,0,1,7,7,7,0, +0,0,0,1,14,14,14,0, +0,0,0,1,28,28,28,0, +0,0,0,1,56,56,56,0, +0,0,0,1,112,112,112,0, +0,0,0,1,224,224,224,0, +0,0,0,1,192,192,192,0, +0,0,0,1,0,3,3,3, +0,0,0,1,0,7,7,7, +0,0,0,1,0,14,14,14, +0,0,0,1,0,28,28,28, +0,0,0,1,0,56,56,56, +0,0,0,1,0,112,112,112, +0,0,0,1,0,224,224,224, +0,0,0,1,0,192,192,192, +0,0,0,1,0,0,3,3, +0,0,0,1,0,0,7,7, +0,0,0,1,0,0,14,14, +0,0,0,1,0,0,28,28, +0,0,0,1,0,0,56,56, +0,0,0,1,0,0,112,112, +0,0,0,1,0,0,224,224, +0,0,0,1,0,0,192,192, +243,243,240,242,255,255,255,255, +255,247,240,242,255,255,255,255, +254,254,240,242,255,255,255,255, +252,252,224,226,252,255,255,255, +248,248,192,194,224,248,255,255, +112,112,0,2,0,0,0,0, +224,224,0,2,0,0,0,0, +192,192,0,2,0,0,0,0, +243,243,243,243,255,255,255,255, +255,255,255,255,255,255,255,255, +254,254,254,254,255,255,255,255, +252,252,252,242,252,255,255,255, +248,248,248,226,224,248,255,255, +112,112,112,2,0,0,0,0, +224,224,224,2,0,0,0,0, +192,192,192,2,0,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +248,252,252,254,252,255,255,255, +240,248,248,250,240,248,255,255, +0,112,112,114,0,0,0,0, +0,224,224,226,0,0,0,0, +0,192,192,194,0,0,0,0, +255,240,243,243,243,255,255,255, +255,255,255,255,255,255,255,255, +255,248,254,254,254,255,255,255, +240,240,252,254,252,248,255,255, +224,224,248,250,248,248,255,255, +0,0,112,114,112,0,0,0, +0,0,224,226,224,0,0,0, +0,0,192,194,192,0,0,0, +0,0,0,3,3,3,0,0, +0,0,0,7,7,7,0,0, +0,0,0,14,14,14,0,0, +0,0,0,30,28,28,0,0, +0,0,0,58,56,56,0,0, +0,0,0,114,112,112,0,0, +0,0,0,226,224,224,0,0, +0,0,0,194,192,192,0,0, +0,0,0,2,3,3,3,0, +0,0,0,2,7,7,7,0, +0,0,0,2,14,14,14,0, +0,0,0,2,28,28,28,0, +0,0,0,2,56,56,56,0, +0,0,0,2,112,112,112,0, +0,0,0,2,224,224,224,0, +0,0,0,2,192,192,192,0, +0,0,0,2,0,3,3,3, +0,0,0,2,0,7,7,7, +0,0,0,2,0,14,14,14, +0,0,0,2,0,28,28,28, +0,0,0,2,0,56,56,56, +0,0,0,2,0,112,112,112, +0,0,0,2,0,224,224,224, +0,0,0,2,0,192,192,192, +0,0,0,2,0,0,3,3, +0,0,0,2,0,0,7,7, +0,0,0,2,0,0,14,14, +0,0,0,2,0,0,28,28, +0,0,0,2,0,0,56,56, +0,0,0,2,0,0,112,112, +0,0,0,2,0,0,224,224, +0,0,0,2,0,0,192,192, +251,251,248,255,255,255,255,255, +255,255,248,255,255,255,255,255, +254,254,248,255,255,255,255,255, +252,252,240,254,255,255,255,255, +248,248,224,242,252,255,255,255, +240,240,192,226,224,248,255,255, +224,224,0,2,0,0,0,0, +192,192,0,2,0,0,0,0, +255,251,251,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,254,254,255,255,255,255,255, +252,252,252,254,255,255,255,255, +248,248,248,242,252,255,255,255, +240,240,240,226,240,248,255,255, +224,224,224,2,0,0,0,0, +192,192,192,2,0,0,0,0, +255,255,251,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,254,255,255,255,255,255, +255,252,252,254,255,255,255,255, +248,248,248,250,252,255,255,255, +240,240,240,242,240,248,255,255, +0,224,224,226,0,0,0,0, +0,192,192,194,0,0,0,0, +255,255,251,251,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,254,254,255,255,255,255, +255,248,252,254,252,255,255,255, +248,240,248,250,252,255,255,255, +240,224,240,242,240,248,255,255, +0,0,224,226,224,0,0,0, +0,0,192,194,192,0,0,0, +255,255,248,251,251,255,255,255, +255,255,248,255,255,255,255,255, +255,255,248,254,254,255,255,255, +255,248,240,254,252,255,255,255, +240,240,224,250,248,248,255,255, +224,224,192,242,240,248,255,255, +0,0,0,226,224,224,0,0, +0,0,0,194,192,192,0,0, +0,0,0,2,3,3,3,0, +0,0,0,2,7,7,7,0, +0,0,0,2,14,14,14,0, +0,0,0,2,28,28,28,0, +0,0,0,2,56,56,56,0, +0,0,0,2,112,112,112,0, +0,0,0,2,224,224,224,0, +0,0,0,2,192,192,192,0, +0,0,0,2,0,3,3,3, +0,0,0,2,0,7,7,7, +0,0,0,2,0,14,14,14, +0,0,0,2,0,28,28,28, +0,0,0,2,0,56,56,56, +0,0,0,2,0,112,112,112, +0,0,0,2,0,224,224,224, +0,0,0,2,0,192,192,192, +0,0,0,2,0,0,3,3, +0,0,0,2,0,0,7,7, +0,0,0,2,0,0,14,14, +0,0,0,2,0,0,28,28, +0,0,0,2,0,0,56,56, +0,0,0,2,0,0,112,112, +0,0,0,2,0,0,224,224, +0,0,0,2,0,0,192,192, +195,195,192,196,195,255,255,255, +231,231,224,228,255,255,255,255, +255,238,224,228,255,255,255,255, +252,252,224,228,255,255,255,255, +248,248,192,196,248,255,255,255, +240,240,128,132,192,240,255,255, +224,224,0,4,0,0,0,0, +192,192,0,4,0,0,0,0, +195,195,195,196,195,255,255,255, +231,231,231,231,255,255,255,255, +255,255,255,255,255,255,255,255, +252,252,252,252,255,255,255,255, +248,248,248,228,248,255,255,255, +240,240,240,196,192,240,255,255, +224,224,224,4,0,0,0,0, +192,192,192,4,0,0,0,0, +193,195,195,199,195,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +240,248,248,252,248,255,255,255, +224,240,240,244,224,240,255,255, +0,224,224,228,0,0,0,0, +0,192,192,196,0,0,0,0, +192,192,195,199,195,193,255,255, +255,225,231,231,231,255,255,255, +255,255,255,255,255,255,255,255, +255,240,252,252,252,255,255,255, +224,224,248,252,248,240,255,255, +192,192,240,244,240,240,255,255, +0,0,224,228,224,0,0,0, +0,0,192,196,192,0,0,0, +0,0,0,7,3,3,0,0, +0,0,0,7,7,7,0,0, +0,0,0,14,14,14,0,0, +0,0,0,28,28,28,0,0, +0,0,0,60,56,56,0,0, +0,0,0,116,112,112,0,0, +0,0,0,228,224,224,0,0, +0,0,0,196,192,192,0,0, +0,0,0,4,3,3,3,0, +0,0,0,4,7,7,7,0, +0,0,0,4,14,14,14,0, +0,0,0,4,28,28,28,0, +0,0,0,4,56,56,56,0, +0,0,0,4,112,112,112,0, +0,0,0,4,224,224,224,0, +0,0,0,4,192,192,192,0, +0,0,0,4,0,3,3,3, +0,0,0,4,0,7,7,7, +0,0,0,4,0,14,14,14, +0,0,0,4,0,28,28,28, +0,0,0,4,0,56,56,56, +0,0,0,4,0,112,112,112, +0,0,0,4,0,224,224,224, +0,0,0,4,0,192,192,192, +0,0,0,4,0,0,3,3, +0,0,0,4,0,0,7,7, +0,0,0,4,0,0,14,14, +0,0,0,4,0,0,28,28, +0,0,0,4,0,0,56,56, +0,0,0,4,0,0,112,112, +0,0,0,4,0,0,224,224, +0,0,0,4,0,0,192,192, +227,227,224,231,255,255,255,255, +247,247,241,255,255,255,255,255, +255,255,241,255,255,255,255,255, +253,253,241,255,255,255,255,255, +248,248,224,252,255,255,255,255, +240,240,192,228,248,255,255,255, +224,224,128,196,192,240,255,255, +192,192,0,4,0,0,0,0, +227,227,227,231,255,255,255,255, +255,247,247,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,253,253,255,255,255,255,255, +248,248,248,252,255,255,255,255, +240,240,240,228,248,255,255,255, +224,224,224,196,224,240,255,255, +192,192,192,4,0,0,0,0, +255,227,227,231,255,255,255,255, +255,255,247,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,253,255,255,255,255,255, +255,248,248,252,255,255,255,255, +240,240,240,244,248,255,255,255, +224,224,224,228,224,240,255,255, +0,192,192,196,0,0,0,0, +255,225,227,231,227,255,255,255, +255,255,247,247,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,253,253,255,255,255,255, +255,240,248,252,248,255,255,255, +240,224,240,244,248,255,255,255, +224,192,224,228,224,240,255,255, +0,0,192,196,192,0,0,0, +255,225,224,231,227,255,255,255, +255,255,241,247,247,255,255,255, +255,255,241,255,255,255,255,255, +255,255,241,253,253,255,255,255, +255,240,224,252,248,255,255,255, +224,224,192,244,240,240,255,255, +192,192,128,228,224,240,255,255, +0,0,0,196,192,192,0,0, +0,0,0,4,3,3,3,0, +0,0,0,4,7,7,7,0, +0,0,0,4,14,14,14,0, +0,0,0,4,28,28,28,0, +0,0,0,4,56,56,56,0, +0,0,0,4,112,112,112,0, +0,0,0,4,224,224,224,0, +0,0,0,4,192,192,192,0, +0,0,0,4,0,3,3,3, +0,0,0,4,0,7,7,7, +0,0,0,4,0,14,14,14, +0,0,0,4,0,28,28,28, +0,0,0,4,0,56,56,56, +0,0,0,4,0,112,112,112, +0,0,0,4,0,224,224,224, +0,0,0,4,0,192,192,192, +0,0,0,4,0,0,3,3, +0,0,0,4,0,0,7,7, +0,0,0,4,0,0,14,14, +0,0,0,4,0,0,28,28, +0,0,0,4,0,0,56,56, +0,0,0,4,0,0,112,112, +0,0,0,4,0,0,224,224, +0,0,0,4,0,0,192,192, +3,3,0,8,0,3,255,255, +135,135,128,136,135,255,255,255, +207,207,193,201,255,255,255,255, +255,221,193,201,255,255,255,255, +249,249,193,201,255,255,255,255, +240,240,128,136,240,255,255,255, +224,224,0,8,128,224,255,255, +192,192,0,8,0,0,0,0, +3,3,3,8,0,3,255,255, +135,135,135,137,135,255,255,255, +207,207,207,207,255,255,255,255, +255,255,255,255,255,255,255,255, +249,249,249,249,255,255,255,255, +240,240,240,200,240,255,255,255, +224,224,224,136,128,224,255,255, +192,192,192,8,0,0,0,0, +1,3,3,11,1,3,255,255, +131,135,135,143,135,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +224,240,240,248,240,255,255,255, +192,224,224,232,192,224,255,255, +0,192,192,200,0,0,0,0, +0,0,3,11,3,3,255,255, +129,129,135,143,135,131,255,255, +255,195,207,207,207,255,255,255, +255,255,255,255,255,255,255,255, +255,225,249,249,249,255,255,255, +192,192,240,248,240,224,255,255, +128,128,224,232,224,224,255,255, +0,0,192,200,192,0,0,0, +0,0,0,11,3,3,0,0, +0,0,0,15,7,7,0,0, +0,0,0,14,14,14,0,0, +0,0,0,28,28,28,0,0, +0,0,0,56,56,56,0,0, +0,0,0,120,112,112,0,0, +0,0,0,232,224,224,0,0, +0,0,0,200,192,192,0,0, +0,0,0,8,3,3,3,0, +0,0,0,8,7,7,7,0, +0,0,0,8,14,14,14,0, +0,0,0,8,28,28,28,0, +0,0,0,8,56,56,56,0, +0,0,0,8,112,112,112,0, +0,0,0,8,224,224,224,0, +0,0,0,8,192,192,192,0, +0,0,0,8,0,3,3,3, +0,0,0,8,0,7,7,7, +0,0,0,8,0,14,14,14, +0,0,0,8,0,28,28,28, +0,0,0,8,0,56,56,56, +0,0,0,8,0,112,112,112, +0,0,0,8,0,224,224,224, +0,0,0,8,0,192,192,192, +0,0,0,8,0,0,3,3, +0,0,0,8,0,0,7,7, +0,0,0,8,0,0,14,14, +0,0,0,8,0,0,28,28, +0,0,0,8,0,0,56,56, +0,0,0,8,0,0,112,112, +0,0,0,8,0,0,224,224, +0,0,0,8,0,0,192,192, +131,131,128,137,135,255,255,255, +199,199,193,207,255,255,255,255, +239,239,227,255,255,255,255,255, +255,255,227,255,255,255,255,255, +251,251,227,255,255,255,255,255, +241,241,193,249,255,255,255,255, +224,224,128,200,240,255,255,255, +192,192,0,136,128,224,255,255, +131,131,131,137,135,255,255,255, +199,199,199,207,255,255,255,255, +255,239,239,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,251,251,255,255,255,255,255, +241,241,241,249,255,255,255,255, +224,224,224,200,240,255,255,255, +192,192,192,136,192,224,255,255, +131,131,131,139,135,255,255,255, +255,199,199,207,255,255,255,255, +255,255,239,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,251,255,255,255,255,255, +255,241,241,249,255,255,255,255, +224,224,224,232,240,255,255,255, +192,192,192,200,192,224,255,255, +131,129,131,139,135,255,255,255, +255,195,199,207,199,255,255,255, +255,255,239,239,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,251,251,255,255,255,255, +255,225,241,249,241,255,255,255, +224,192,224,232,240,255,255,255, +192,128,192,200,192,224,255,255, +129,129,128,139,131,131,255,255, +255,195,193,207,199,255,255,255, +255,255,227,239,239,255,255,255, +255,255,227,255,255,255,255,255, +255,255,227,251,251,255,255,255, +255,225,193,249,241,255,255,255, +192,192,128,232,224,224,255,255, +128,128,0,200,192,224,255,255, +0,0,0,8,3,3,3,0, +0,0,0,8,7,7,7,0, +0,0,0,8,14,14,14,0, +0,0,0,8,28,28,28,0, +0,0,0,8,56,56,56,0, +0,0,0,8,112,112,112,0, +0,0,0,8,224,224,224,0, +0,0,0,8,192,192,192,0, +0,0,0,8,0,3,3,3, +0,0,0,8,0,7,7,7, +0,0,0,8,0,14,14,14, +0,0,0,8,0,28,28,28, +0,0,0,8,0,56,56,56, +0,0,0,8,0,112,112,112, +0,0,0,8,0,224,224,224, +0,0,0,8,0,192,192,192, +0,0,0,8,0,0,3,3, +0,0,0,8,0,0,7,7, +0,0,0,8,0,0,14,14, +0,0,0,8,0,0,28,28, +0,0,0,8,0,0,56,56, +0,0,0,8,0,0,112,112, +0,0,0,8,0,0,224,224, +0,0,0,8,0,0,192,192, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +252,252,248,255,255,255,255,255, +248,248,240,240,255,255,255,255, +112,112,0,0,1,0,0,0, +224,224,0,0,1,0,0,0, +192,192,0,0,1,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +252,252,252,255,255,255,255,255, +248,248,248,240,255,255,255,255, +112,112,112,0,1,0,0,0, +224,224,224,0,1,0,0,0, +192,192,192,0,1,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +248,252,252,252,255,255,255,255, +240,248,248,248,255,255,255,255, +0,112,112,112,1,0,0,0, +0,224,224,224,1,0,0,0, +0,192,192,192,1,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,253,255,255,255,255,255,255, +248,248,252,252,253,255,255,255, +240,240,248,248,249,255,255,255, +0,0,112,112,113,0,0,0, +0,0,224,224,225,0,0,0, +0,0,192,192,193,0,0,0, +255,255,255,255,255,255,255,255, +255,255,252,255,255,255,255,255, +255,248,248,254,255,255,255,255, +248,240,240,252,253,252,255,255, +240,224,224,248,249,248,255,255, +0,0,0,112,113,112,0,0, +0,0,0,224,225,224,0,0, +0,0,0,192,193,192,0,0, +0,0,0,0,3,3,3,0, +0,0,0,0,7,7,7,0, +0,0,0,0,15,14,14,0, +0,0,0,0,29,28,28,0, +0,0,0,0,57,56,56,0, +0,0,0,0,113,112,112,0, +0,0,0,0,225,224,224,0, +0,0,0,0,193,192,192,0, +0,0,0,0,1,3,3,3, +0,0,0,0,1,7,7,7, +0,0,0,0,1,14,14,14, +0,0,0,0,1,28,28,28, +0,0,0,0,1,56,56,56, +0,0,0,0,1,112,112,112, +0,0,0,0,1,224,224,224, +0,0,0,0,1,192,192,192, +0,0,0,0,1,0,3,3, +0,0,0,0,1,0,7,7, +0,0,0,0,1,0,14,14, +0,0,0,0,1,0,28,28, +0,0,0,0,1,0,56,56, +0,0,0,0,1,0,112,112, +0,0,0,0,1,0,224,224, +0,0,0,0,1,0,192,192, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +253,253,255,255,255,255,255,255, +248,248,248,255,255,255,255,255, +240,240,240,240,255,255,255,255, +224,224,0,0,1,0,0,0, +192,192,0,0,1,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,253,255,255,255,255,255,255, +248,248,248,255,255,255,255,255, +240,240,240,240,255,255,255,255, +224,224,224,0,1,0,0,0, +192,192,192,0,1,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,253,253,255,255,255,255,255, +248,248,248,255,255,255,255,255, +240,240,240,240,255,255,255,255, +0,224,224,224,1,0,0,0, +0,192,192,192,1,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,253,253,253,255,255,255,255, +248,248,248,248,255,255,255,255, +240,240,240,240,255,255,255,255, +0,0,224,224,225,0,0,0, +0,0,192,192,193,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,253,255,255,255,255,255, +255,253,249,253,253,255,255,255, +248,248,240,248,249,255,255,255, +240,240,224,240,241,255,255,255, +0,0,0,224,225,224,0,0, +0,0,0,192,193,192,0,0, +255,255,255,252,255,255,255,255, +255,255,255,252,255,255,255,255, +255,255,252,248,255,255,255,255, +255,248,248,240,253,253,255,255, +248,240,240,224,249,248,255,255, +240,224,224,192,241,240,255,255, +0,0,0,0,225,224,224,0, +0,0,0,0,193,192,192,0, +0,0,0,0,1,3,3,3, +0,0,0,0,1,7,7,7, +0,0,0,0,1,14,14,14, +0,0,0,0,1,28,28,28, +0,0,0,0,1,56,56,56, +0,0,0,0,1,112,112,112, +0,0,0,0,1,224,224,224, +0,0,0,0,1,192,192,192, +0,0,0,0,1,0,3,3, +0,0,0,0,1,0,7,7, +0,0,0,0,1,0,14,14, +0,0,0,0,1,0,28,28, +0,0,0,0,1,0,56,56, +0,0,0,0,1,0,112,112, +0,0,0,0,1,0,224,224, +0,0,0,0,1,0,192,192, +243,243,240,240,243,255,255,255, +255,247,240,240,255,255,255,255, +254,254,240,240,254,255,255,255, +252,252,224,224,250,252,255,255, +248,248,192,192,242,240,248,255, +240,240,128,128,226,224,224,240, +224,224,0,0,2,0,0,0, +192,192,0,0,2,0,0,0, +243,243,243,241,242,255,255,255, +255,255,255,250,250,255,255,255, +254,254,254,244,242,255,255,255, +252,252,252,232,226,252,255,255, +248,248,248,208,194,240,248,255, +240,240,240,160,130,224,224,240, +224,224,224,0,2,0,0,0, +192,192,192,0,2,0,0,0, +255,243,243,243,243,255,255,255, +255,255,255,255,255,255,255,255, +255,254,254,254,254,255,255,255, +248,252,252,252,250,252,255,255, +240,248,248,248,242,240,248,255, +224,240,240,240,226,224,224,240, +0,224,224,224,2,0,0,0, +0,192,192,192,2,0,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,248,252,252,254,252,255,255, +240,240,248,248,250,240,248,255, +224,224,240,240,242,224,224,240, +0,0,224,224,226,0,0,0, +0,0,192,192,194,0,0,0, +255,255,240,243,243,243,255,255, +255,255,255,255,255,255,255,255, +255,255,248,254,254,254,255,255, +255,240,240,252,254,252,248,255, +240,224,224,248,250,248,248,255, +224,192,192,240,242,240,224,240, +0,0,0,224,226,224,0,0, +0,0,0,192,194,192,0,0, +0,0,0,0,3,3,3,0, +0,0,0,0,7,7,7,0, +0,0,0,0,14,14,14,0, +0,0,0,0,30,28,28,0, +0,0,0,0,58,56,56,0, +0,0,0,0,114,112,112,0, +0,0,0,0,226,224,224,0, +0,0,0,0,194,192,192,0, +0,0,0,0,2,3,3,3, +0,0,0,0,2,7,7,7, +0,0,0,0,2,14,14,14, +0,0,0,0,2,28,28,28, +0,0,0,0,2,56,56,56, +0,0,0,0,2,112,112,112, +0,0,0,0,2,224,224,224, +0,0,0,0,2,192,192,192, +0,0,0,0,2,0,3,3, +0,0,0,0,2,0,7,7, +0,0,0,0,2,0,14,14, +0,0,0,0,2,0,28,28, +0,0,0,0,2,0,56,56, +0,0,0,0,2,0,112,112, +0,0,0,0,2,0,224,224, +0,0,0,0,2,0,192,192, +251,251,248,251,255,255,255,255, +255,255,248,255,255,255,255,255, +254,254,248,254,255,255,255,255, +252,252,240,252,254,255,255,255, +248,248,224,248,250,252,255,255, +240,240,192,240,242,240,248,255, +224,224,128,160,226,224,224,240, +192,192,0,0,2,0,0,0, +255,251,251,250,255,255,255,255, +255,255,255,253,255,255,255,255, +255,254,254,250,255,255,255,255, +255,252,252,244,254,255,255,255, +248,248,248,232,250,252,255,255, +240,240,240,208,242,240,248,255, +224,224,224,160,226,224,224,240, +192,192,192,0,2,0,0,0, +255,255,251,251,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,254,254,255,255,255,255, +255,252,252,252,254,255,255,255, +255,248,248,248,250,252,255,255, +240,240,240,240,242,240,248,255, +224,224,224,224,226,224,224,240, +0,192,192,192,2,0,0,0, +255,255,255,251,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,254,255,255,255,255, +255,255,252,252,254,255,255,255, +255,248,248,248,250,252,255,255, +240,240,240,240,242,240,248,255, +224,224,224,224,226,224,224,240, +0,0,192,192,194,0,0,0, +255,255,255,251,251,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,254,254,255,255,255, +255,255,248,252,254,252,255,255, +255,248,240,248,250,252,255,255, +240,240,224,240,242,240,248,255, +224,224,192,224,226,224,224,240, +0,0,0,192,194,192,0,0, +255,255,255,248,251,251,255,255, +255,255,255,248,255,255,255,255, +255,255,255,248,254,254,255,255, +255,255,248,240,254,252,255,255, +255,240,240,224,250,248,248,255, +240,224,224,192,242,240,248,255, +224,192,192,128,226,224,224,240, +0,0,0,0,194,192,192,0, +0,0,0,0,2,3,3,3, +0,0,0,0,2,7,7,7, +0,0,0,0,2,14,14,14, +0,0,0,0,2,28,28,28, +0,0,0,0,2,56,56,56, +0,0,0,0,2,112,112,112, +0,0,0,0,2,224,224,224, +0,0,0,0,2,192,192,192, +0,0,0,0,2,0,3,3, +0,0,0,0,2,0,7,7, +0,0,0,0,2,0,14,14, +0,0,0,0,2,0,28,28, +0,0,0,0,2,0,56,56, +0,0,0,0,2,0,112,112, +0,0,0,0,2,0,224,224, +0,0,0,0,2,0,192,192, +195,195,192,192,197,195,255,255, +231,231,224,224,231,255,255,255, +255,238,224,224,255,255,255,255, +252,252,224,224,252,255,255,255, +248,248,192,192,244,248,255,255, +240,240,128,128,228,224,240,255, +224,224,0,0,196,192,192,224, +192,192,0,0,4,0,0,0, +195,195,195,193,196,195,255,255, +231,231,231,226,228,255,255,255, +255,255,255,245,245,255,255,255, +252,252,252,232,228,255,255,255, +248,248,248,208,196,248,255,255, +240,240,240,160,132,224,240,255, +224,224,224,64,4,192,192,224, +192,192,192,0,4,0,0,0, +193,195,195,195,197,195,255,255, +255,231,231,231,231,255,255,255, +255,255,255,255,255,255,255,255, +255,252,252,252,252,255,255,255, +240,248,248,248,244,248,255,255, +224,240,240,240,228,224,240,255, +192,224,224,224,196,192,192,224, +0,192,192,192,4,0,0,0, +255,193,195,195,199,195,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,240,248,248,252,248,255,255, +224,224,240,240,244,224,240,255, +192,192,224,224,228,192,192,224, +0,0,192,192,196,0,0,0, +255,192,192,195,199,195,193,255, +255,255,225,231,231,231,255,255, +255,255,255,255,255,255,255,255, +255,255,240,252,252,252,255,255, +255,224,224,248,252,248,240,255, +224,192,192,240,244,240,240,255, +192,128,128,224,228,224,192,224, +0,0,0,192,196,192,0,0, +0,0,0,0,7,3,3,0, +0,0,0,0,7,7,7,0, +0,0,0,0,14,14,14,0, +0,0,0,0,28,28,28,0, +0,0,0,0,60,56,56,0, +0,0,0,0,116,112,112,0, +0,0,0,0,228,224,224,0, +0,0,0,0,196,192,192,0, +0,0,0,0,4,3,3,3, +0,0,0,0,4,7,7,7, +0,0,0,0,4,14,14,14, +0,0,0,0,4,28,28,28, +0,0,0,0,4,56,56,56, +0,0,0,0,4,112,112,112, +0,0,0,0,4,224,224,224, +0,0,0,0,4,192,192,192, +0,0,0,0,4,0,3,3, +0,0,0,0,4,0,7,7, +0,0,0,0,4,0,14,14, +0,0,0,0,4,0,28,28, +0,0,0,0,4,0,56,56, +0,0,0,0,4,0,112,112, +0,0,0,0,4,0,224,224, +0,0,0,0,4,0,192,192, +227,227,224,227,231,255,255,255, +247,247,241,247,255,255,255,255, +255,255,241,255,255,255,255,255, +253,253,241,253,255,255,255,255, +248,248,224,248,252,255,255,255, +240,240,192,240,244,248,255,255, +224,224,128,224,228,224,240,255, +192,192,0,64,196,192,192,224, +255,227,227,226,231,255,255,255, +255,247,247,245,255,255,255,255, +255,255,255,251,255,255,255,255, +255,253,253,245,255,255,255,255, +255,248,248,232,252,255,255,255, +240,240,240,208,244,248,255,255, +224,224,224,160,228,224,240,255, +192,192,192,64,196,192,192,224, +255,227,227,227,231,255,255,255, +255,255,247,247,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,253,253,255,255,255,255, +255,248,248,248,252,255,255,255, +255,240,240,240,244,248,255,255, +224,224,224,224,228,224,240,255, +192,192,192,192,196,192,192,224, +255,255,227,227,231,255,255,255, +255,255,255,247,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,253,255,255,255,255, +255,255,248,248,252,255,255,255, +255,240,240,240,244,248,255,255, +224,224,224,224,228,224,240,255, +192,192,192,192,196,192,192,224, +255,255,225,227,231,227,255,255, +255,255,255,247,247,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,253,253,255,255,255, +255,255,240,248,252,248,255,255, +255,240,224,240,244,248,255,255, +224,224,192,224,228,224,240,255, +192,192,128,192,196,192,192,224, +255,255,225,224,231,227,255,255, +255,255,255,241,247,247,255,255, +255,255,255,241,255,255,255,255, +255,255,255,241,253,253,255,255, +255,255,240,224,252,248,255,255, +255,224,224,192,244,240,240,255, +224,192,192,128,228,224,240,255, +192,128,128,0,196,192,192,224, +0,0,0,0,4,3,3,3, +0,0,0,0,4,7,7,7, +0,0,0,0,4,14,14,14, +0,0,0,0,4,28,28,28, +0,0,0,0,4,56,56,56, +0,0,0,0,4,112,112,112, +0,0,0,0,4,224,224,224, +0,0,0,0,4,192,192,192, +0,0,0,0,4,0,3,3, +0,0,0,0,4,0,7,7, +0,0,0,0,4,0,14,14, +0,0,0,0,4,0,28,28, +0,0,0,0,4,0,56,56, +0,0,0,0,4,0,112,112, +0,0,0,0,4,0,224,224, +0,0,0,0,4,0,192,192, +3,3,0,0,9,1,3,255, +135,135,128,128,139,135,255,255, +207,207,193,193,207,255,255,255, +255,221,193,193,255,255,255,255, +249,249,193,193,249,255,255,255, +240,240,128,128,232,240,255,255, +224,224,0,0,200,192,224,255, +192,192,0,0,136,128,128,192, +3,3,3,1,8,1,3,255, +135,135,135,130,136,135,255,255, +207,207,207,197,201,255,255,255, +255,255,255,235,235,255,255,255, +249,249,249,209,201,255,255,255, +240,240,240,160,136,240,255,255, +224,224,224,64,8,192,224,255, +192,192,192,128,8,128,128,192, +1,3,3,3,9,1,3,255, +131,135,135,135,139,135,255,255, +255,207,207,207,207,255,255,255, +255,255,255,255,255,255,255,255, +255,249,249,249,249,255,255,255, +224,240,240,240,232,240,255,255, +192,224,224,224,200,192,224,255, +128,192,192,192,136,128,128,192, +1,1,3,3,11,1,3,255, +255,131,135,135,143,135,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,224,240,240,248,240,255,255, +192,192,224,224,232,192,224,255, +128,128,192,192,200,128,128,192, +1,0,0,3,11,3,3,255, +255,129,129,135,143,135,131,255, +255,255,195,207,207,207,255,255, +255,255,255,255,255,255,255,255, +255,255,225,249,249,249,255,255, +255,192,192,240,248,240,224,255, +192,128,128,224,232,224,224,255, +128,0,0,192,200,192,128,192, +0,0,0,0,11,3,3,0, +0,0,0,0,15,7,7,0, +0,0,0,0,14,14,14,0, +0,0,0,0,28,28,28,0, +0,0,0,0,56,56,56,0, +0,0,0,0,120,112,112,0, +0,0,0,0,232,224,224,0, +0,0,0,0,200,192,192,0, +0,0,0,0,8,3,3,3, +0,0,0,0,8,7,7,7, +0,0,0,0,8,14,14,14, +0,0,0,0,8,28,28,28, +0,0,0,0,8,56,56,56, +0,0,0,0,8,112,112,112, +0,0,0,0,8,224,224,224, +0,0,0,0,8,192,192,192, +0,0,0,0,8,0,3,3, +0,0,0,0,8,0,7,7, +0,0,0,0,8,0,14,14, +0,0,0,0,8,0,28,28, +0,0,0,0,8,0,56,56, +0,0,0,0,8,0,112,112, +0,0,0,0,8,0,224,224, +0,0,0,0,8,0,192,192, +131,131,128,131,139,135,255,255, +199,199,193,199,207,255,255,255, +239,239,227,239,255,255,255,255, +255,255,227,255,255,255,255,255, +251,251,227,251,255,255,255,255, +241,241,193,241,249,255,255,255, +224,224,128,224,232,240,255,255, +192,192,0,192,200,192,224,255, +131,131,131,130,139,135,255,255, +255,199,199,197,207,255,255,255, +255,239,239,235,255,255,255,255, +255,255,255,247,255,255,255,255, +255,251,251,235,255,255,255,255, +255,241,241,209,249,255,255,255, +224,224,224,160,232,240,255,255, +192,192,192,64,200,192,224,255, +255,131,131,131,139,135,255,255, +255,199,199,199,207,255,255,255, +255,255,239,239,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,251,251,255,255,255,255, +255,241,241,241,249,255,255,255, +255,224,224,224,232,240,255,255, +192,192,192,192,200,192,224,255, +255,131,131,131,139,135,255,255, +255,255,199,199,207,255,255,255, +255,255,255,239,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,251,255,255,255,255, +255,255,241,241,249,255,255,255, +255,224,224,224,232,240,255,255, +192,192,192,192,200,192,224,255, +255,131,129,131,139,135,255,255, +255,255,195,199,207,199,255,255, +255,255,255,239,239,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,251,251,255,255,255, +255,255,225,241,249,241,255,255, +255,224,192,224,232,240,255,255, +192,192,128,192,200,192,224,255, +255,129,129,128,139,131,131,255, +255,255,195,193,207,199,255,255, +255,255,255,227,239,239,255,255, +255,255,255,227,255,255,255,255, +255,255,255,227,251,251,255,255, +255,255,225,193,249,241,255,255, +255,192,192,128,232,224,224,255, +192,128,128,0,200,192,224,255, +0,0,0,0,8,3,3,3, +0,0,0,0,8,7,7,7, +0,0,0,0,8,14,14,14, +0,0,0,0,8,28,28,28, +0,0,0,0,8,56,56,56, +0,0,0,0,8,112,112,112, +0,0,0,0,8,224,224,224, +0,0,0,0,8,192,192,192, +0,0,0,0,8,0,3,3, +0,0,0,0,8,0,7,7, +0,0,0,0,8,0,14,14, +0,0,0,0,8,0,28,28, +0,0,0,0,8,0,56,56, +0,0,0,0,8,0,112,112, +0,0,0,0,8,0,224,224, +0,0,0,0,8,0,192,192, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +252,252,248,255,255,255,255,255, +248,248,240,240,255,255,255,255, +240,240,224,224,224,255,255,255, +224,224,0,0,0,1,0,0, +192,192,0,0,0,1,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +252,252,252,255,255,255,255,255, +248,248,248,240,255,255,255,255, +240,240,240,224,224,255,255,255, +224,224,224,0,0,1,0,0, +192,192,192,0,0,1,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,252,252,252,255,255,255,255, +240,248,248,248,255,255,255,255, +224,240,240,240,224,255,255,255, +0,224,224,224,0,1,0,0, +0,192,192,192,0,1,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,248,252,252,252,255,255,255, +240,240,248,248,248,255,255,255, +224,224,240,240,240,255,255,255, +0,0,224,224,224,1,0,0, +0,0,192,192,192,1,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,253,255,255,255,255,255, +255,248,248,252,252,253,255,255, +240,240,240,248,248,249,255,255, +224,224,224,240,240,241,255,255, +0,0,0,224,224,225,0,0, +0,0,0,192,192,193,0,0, +255,255,255,255,255,255,255,255, +255,255,255,252,255,255,255,255, +255,255,248,248,254,255,255,255, +255,248,240,240,252,253,252,255, +240,240,224,224,248,249,248,255, +224,224,192,192,240,241,240,255, +0,0,0,0,224,225,224,0, +0,0,0,0,192,193,192,0, +0,0,0,0,0,3,3,3, +0,0,0,0,0,7,7,7, +0,0,0,0,0,15,14,14, +0,0,0,0,0,29,28,28, +0,0,0,0,0,57,56,56, +0,0,0,0,0,113,112,112, +0,0,0,0,0,225,224,224, +0,0,0,0,0,193,192,192, +0,0,0,0,0,1,3,3, +0,0,0,0,0,1,7,7, +0,0,0,0,0,1,14,14, +0,0,0,0,0,1,28,28, +0,0,0,0,0,1,56,56, +0,0,0,0,0,1,112,112, +0,0,0,0,0,1,224,224, +0,0,0,0,0,1,192,192, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +253,253,255,255,255,255,255,255, +248,248,248,255,255,255,255,255, +240,240,240,240,255,255,255,255, +224,224,224,224,224,255,255,255, +192,192,0,0,0,1,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,253,255,255,255,255,255,255, +255,248,248,255,255,255,255,255, +240,240,240,240,255,255,255,255, +224,224,224,224,224,255,255,255, +192,192,192,0,0,1,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,253,255,255,255,255,255, +255,248,248,255,255,255,255,255, +240,240,240,240,255,255,255,255, +224,224,224,224,224,255,255,255, +0,192,192,192,0,1,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,253,253,255,255,255,255, +255,248,248,248,255,255,255,255, +240,240,240,240,255,255,255,255, +224,224,224,224,224,255,255,255, +0,0,192,192,192,1,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,253,253,253,255,255,255, +255,248,248,248,248,255,255,255, +240,240,240,240,240,255,255,255, +224,224,224,224,224,255,255,255, +0,0,0,192,192,193,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,253,255,255,255,255, +255,255,253,249,253,253,255,255, +255,248,248,240,248,249,255,255, +240,240,240,224,240,241,255,255, +224,224,224,192,224,225,255,255, +0,0,0,0,192,193,192,0, +255,255,255,255,252,255,255,255, +255,255,255,255,252,255,255,255, +255,255,255,252,248,255,255,255, +255,255,248,248,240,253,253,255, +255,248,240,240,224,249,248,255, +240,240,224,224,192,241,240,255, +224,224,192,192,128,225,224,255, +0,0,0,0,0,193,192,192, +0,0,0,0,0,1,3,3, +0,0,0,0,0,1,7,7, +0,0,0,0,0,1,14,14, +0,0,0,0,0,1,28,28, +0,0,0,0,0,1,56,56, +0,0,0,0,0,1,112,112, +0,0,0,0,0,1,224,224, +0,0,0,0,0,1,192,192, +243,227,224,224,224,226,255,255, +255,231,224,224,224,226,255,255, +254,238,224,224,224,226,255,255, +252,252,224,224,224,226,252,255, +248,248,192,192,192,194,240,248, +240,240,128,128,128,130,224,224, +224,224,0,0,0,2,192,192, +192,192,0,0,0,2,0,0, +243,243,243,240,240,243,255,255, +255,255,247,240,240,255,255,255, +254,254,254,240,240,254,255,255, +252,252,252,224,224,250,252,255, +248,248,248,192,192,242,240,248, +240,240,240,128,128,226,224,224, +224,224,224,0,0,194,192,192, +192,192,192,0,0,2,0,0, +255,243,243,243,241,242,255,255, +255,255,255,255,250,250,255,255, +255,254,254,254,244,242,255,255, +255,252,252,252,232,226,252,255, +240,248,248,248,208,194,240,248, +224,240,240,240,160,130,224,224, +192,224,224,224,64,2,192,192, +0,192,192,192,0,2,0,0, +255,255,243,243,243,243,255,255, +255,255,255,255,255,255,255,255, +255,255,254,254,254,254,255,255, +255,248,252,252,252,250,252,255, +255,240,248,248,248,242,240,248, +224,224,240,240,240,226,224,224, +192,192,224,224,224,194,192,192, +0,0,192,192,192,2,0,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,248,252,252,254,252,255, +255,240,240,248,248,250,240,248, +224,224,224,240,240,242,224,224, +192,192,192,224,224,226,192,192, +0,0,0,192,192,194,0,0, +255,255,255,240,243,243,243,255, +255,255,255,255,255,255,255,255, +255,255,255,248,254,254,254,255, +255,255,240,240,252,254,252,248, +255,240,224,224,248,250,248,248, +224,224,192,192,240,242,240,224, +192,192,128,128,224,226,224,192, +0,0,0,0,192,194,192,0, +0,0,0,0,0,3,3,3, +0,0,0,0,0,7,7,7, +0,0,0,0,0,14,14,14, +0,0,0,0,0,30,28,28, +0,0,0,0,0,58,56,56, +0,0,0,0,0,114,112,112, +0,0,0,0,0,226,224,224, +0,0,0,0,0,194,192,192, +0,0,0,0,0,2,3,3, +0,0,0,0,0,2,7,7, +0,0,0,0,0,2,14,14, +0,0,0,0,0,2,28,28, +0,0,0,0,0,2,56,56, +0,0,0,0,0,2,112,112, +0,0,0,0,0,2,224,224, +0,0,0,0,0,2,192,192, +251,251,240,240,240,255,255,255, +255,255,240,240,240,255,255,255, +254,254,240,240,240,255,255,255, +252,252,240,240,240,254,255,255, +248,248,224,224,224,250,252,255, +240,240,192,192,192,242,240,248, +224,224,128,128,128,226,224,224, +192,192,0,0,0,194,192,192, +255,251,251,248,251,255,255,255, +255,255,255,248,255,255,255,255, +255,254,254,248,254,255,255,255, +255,252,252,240,252,254,255,255, +255,248,248,224,248,250,252,255, +240,240,240,192,240,242,240,248, +224,224,224,128,224,226,224,224, +192,192,192,0,64,194,192,192, +255,255,251,251,250,255,255,255, +255,255,255,255,253,255,255,255, +255,255,254,254,250,255,255,255, +255,255,252,252,244,254,255,255, +255,248,248,248,232,250,252,255, +255,240,240,240,208,242,240,248, +224,224,224,224,160,226,224,224, +192,192,192,192,64,194,192,192, +255,255,255,251,251,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,254,254,255,255,255, +255,255,252,252,252,254,255,255, +255,255,248,248,248,250,252,255, +255,240,240,240,240,242,240,248, +224,224,224,224,224,226,224,224, +192,192,192,192,192,194,192,192, +255,255,255,255,251,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,254,255,255,255, +255,255,255,252,252,254,255,255, +255,255,248,248,248,250,252,255, +255,240,240,240,240,242,240,248, +224,224,224,224,224,226,224,224, +192,192,192,192,192,194,192,192, +255,255,255,255,251,251,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,254,254,255,255, +255,255,255,248,252,254,252,255, +255,255,248,240,248,250,252,255, +255,240,240,224,240,242,240,248, +224,224,224,192,224,226,224,224, +192,192,192,128,192,194,192,192, +255,255,255,255,248,251,251,255, +255,255,255,255,248,255,255,255, +255,255,255,255,248,254,254,255, +255,255,255,248,240,254,252,255, +255,255,240,240,224,250,248,248, +255,240,224,224,192,242,240,248, +224,224,192,192,128,226,224,224, +192,192,128,128,0,194,192,192, +0,0,0,0,0,2,3,3, +0,0,0,0,0,2,7,7, +0,0,0,0,0,2,14,14, +0,0,0,0,0,2,28,28, +0,0,0,0,0,2,56,56, +0,0,0,0,0,2,112,112, +0,0,0,0,0,2,224,224, +0,0,0,0,0,2,192,192, +195,195,192,192,192,196,195,255, +231,199,192,192,192,196,255,255, +255,206,192,192,192,196,255,255, +252,220,192,192,192,196,255,255, +248,248,192,192,192,196,248,255, +240,240,128,128,128,132,224,240, +224,224,0,0,0,4,192,192, +192,192,0,0,0,4,128,128, +195,195,195,192,192,197,195,255, +231,231,231,224,224,231,255,255, +255,255,238,224,224,255,255,255, +252,252,252,224,224,252,255,255, +248,248,248,192,192,244,248,255, +240,240,240,128,128,228,224,240, +224,224,224,0,0,196,192,192, +192,192,192,0,0,132,128,128, +255,195,195,195,193,196,195,255, +255,231,231,231,226,228,255,255, +255,255,255,255,245,245,255,255, +255,252,252,252,232,228,255,255, +255,248,248,248,208,196,248,255, +224,240,240,240,160,132,224,240, +192,224,224,224,64,4,192,192, +128,192,192,192,128,4,128,128, +255,193,195,195,195,197,195,255, +255,255,231,231,231,231,255,255, +255,255,255,255,255,255,255,255, +255,255,252,252,252,252,255,255, +255,240,248,248,248,244,248,255, +255,224,240,240,240,228,224,240, +192,192,224,224,224,196,192,192, +128,128,192,192,192,132,128,128, +255,255,193,195,195,199,195,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,240,248,248,252,248,255, +255,224,224,240,240,244,224,240, +192,192,192,224,224,228,192,192, +128,128,128,192,192,196,128,128, +255,255,192,192,195,199,195,193, +255,255,255,225,231,231,231,255, +255,255,255,255,255,255,255,255, +255,255,255,240,252,252,252,255, +255,255,224,224,248,252,248,240, +255,224,192,192,240,244,240,240, +192,192,128,128,224,228,224,192, +128,128,0,0,192,196,192,128, +0,0,0,0,0,7,3,3, +0,0,0,0,0,7,7,7, +0,0,0,0,0,14,14,14, +0,0,0,0,0,28,28,28, +0,0,0,0,0,60,56,56, +0,0,0,0,0,116,112,112, +0,0,0,0,0,228,224,224, +0,0,0,0,0,196,192,192, +0,0,0,0,0,4,3,3, +0,0,0,0,0,4,7,7, +0,0,0,0,0,4,14,14, +0,0,0,0,0,4,28,28, +0,0,0,0,0,4,56,56, +0,0,0,0,0,4,112,112, +0,0,0,0,0,4,224,224, +0,0,0,0,0,4,192,192, +227,227,224,224,224,231,255,255, +247,247,224,224,224,255,255,255, +255,255,224,224,224,255,255,255, +253,253,224,224,224,255,255,255, +248,248,224,224,224,252,255,255, +240,240,192,192,192,244,248,255, +224,224,128,128,128,228,224,240, +192,192,0,0,0,196,192,192, +255,227,227,224,227,231,255,255, +255,247,247,241,247,255,255,255, +255,255,255,241,255,255,255,255, +255,253,253,241,253,255,255,255, +255,248,248,224,248,252,255,255, +255,240,240,192,240,244,248,255, +224,224,224,128,224,228,224,240, +192,192,192,0,192,196,192,192, +255,255,227,227,226,231,255,255, +255,255,247,247,245,255,255,255, +255,255,255,255,251,255,255,255, +255,255,253,253,245,255,255,255, +255,255,248,248,232,252,255,255, +255,240,240,240,208,244,248,255, +255,224,224,224,160,228,224,240, +192,192,192,192,64,196,192,192, +255,255,227,227,227,231,255,255, +255,255,255,247,247,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,253,253,255,255,255, +255,255,248,248,248,252,255,255, +255,255,240,240,240,244,248,255, +255,224,224,224,224,228,224,240, +192,192,192,192,192,196,192,192, +255,255,255,227,227,231,255,255, +255,255,255,255,247,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,253,255,255,255, +255,255,255,248,248,252,255,255, +255,255,240,240,240,244,248,255, +255,224,224,224,224,228,224,240, +192,192,192,192,192,196,192,192, +255,255,255,225,227,231,227,255, +255,255,255,255,247,247,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,253,253,255,255, +255,255,255,240,248,252,248,255, +255,255,240,224,240,244,248,255, +255,224,224,192,224,228,224,240, +192,192,192,128,192,196,192,192, +255,255,255,225,224,231,227,255, +255,255,255,255,241,247,247,255, +255,255,255,255,241,255,255,255, +255,255,255,255,241,253,253,255, +255,255,255,240,224,252,248,255, +255,255,224,224,192,244,240,240, +255,224,192,192,128,228,224,240, +192,192,128,128,0,196,192,192, +0,0,0,0,0,4,3,3, +0,0,0,0,0,4,7,7, +0,0,0,0,0,4,14,14, +0,0,0,0,0,4,28,28, +0,0,0,0,0,4,56,56, +0,0,0,0,0,4,112,112, +0,0,0,0,0,4,224,224, +0,0,0,0,0,4,192,192, +3,3,0,0,0,8,1,3, +135,135,128,128,128,136,135,255, +207,142,128,128,128,136,255,255, +255,156,128,128,128,136,255,255, +249,184,128,128,128,136,255,255, +240,240,128,128,128,136,240,255, +224,224,0,0,0,8,192,224, +192,192,0,0,0,8,128,128, +3,3,3,0,0,9,1,3, +135,135,135,128,128,139,135,255, +207,207,207,193,193,207,255,255, +255,255,221,193,193,255,255,255, +249,249,249,193,193,249,255,255, +240,240,240,128,128,232,240,255, +224,224,224,0,0,200,192,224, +192,192,192,0,0,136,128,128, +1,3,3,3,1,8,1,3, +255,135,135,135,130,136,135,255, +255,207,207,207,197,201,255,255, +255,255,255,255,235,235,255,255, +255,249,249,249,209,201,255,255, +255,240,240,240,160,136,240,255, +192,224,224,224,64,8,192,224, +128,192,192,192,128,8,128,128, +255,1,3,3,3,9,1,3, +255,131,135,135,135,139,135,255, +255,255,207,207,207,207,255,255, +255,255,255,255,255,255,255,255, +255,255,249,249,249,249,255,255, +255,224,240,240,240,232,240,255, +255,192,224,224,224,200,192,224, +128,128,192,192,192,136,128,128, +255,1,1,3,3,11,1,3, +255,255,131,135,135,143,135,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,224,240,240,248,240,255, +255,192,192,224,224,232,192,224, +128,128,128,192,192,200,128,128, +255,1,0,0,3,11,3,3, +255,255,129,129,135,143,135,131, +255,255,255,195,207,207,207,255, +255,255,255,255,255,255,255,255, +255,255,255,225,249,249,249,255, +255,255,192,192,240,248,240,224, +255,192,128,128,224,232,224,224, +128,128,0,0,192,200,192,128, +0,0,0,0,0,11,3,3, +0,0,0,0,0,15,7,7, +0,0,0,0,0,14,14,14, +0,0,0,0,0,28,28,28, +0,0,0,0,0,56,56,56, +0,0,0,0,0,120,112,112, +0,0,0,0,0,232,224,224, +0,0,0,0,0,200,192,192, +0,0,0,0,0,8,3,3, +0,0,0,0,0,8,7,7, +0,0,0,0,0,8,14,14, +0,0,0,0,0,8,28,28, +0,0,0,0,0,8,56,56, +0,0,0,0,0,8,112,112, +0,0,0,0,0,8,224,224, +0,0,0,0,0,8,192,192, +131,131,128,128,128,139,135,255, +199,199,193,193,193,207,255,255, +239,239,193,193,193,255,255,255, +255,255,193,193,193,255,255,255, +251,251,193,193,193,255,255,255, +241,241,193,193,193,249,255,255, +224,224,128,128,128,232,240,255, +192,192,0,0,0,200,192,224, +255,131,131,128,131,139,135,255, +255,199,199,193,199,207,255,255, +255,239,239,227,239,255,255,255, +255,255,255,227,255,255,255,255, +255,251,251,227,251,255,255,255, +255,241,241,193,241,249,255,255, +255,224,224,128,224,232,240,255, +192,192,192,0,192,200,192,224, +255,131,131,131,130,139,135,255, +255,255,199,199,197,207,255,255, +255,255,239,239,235,255,255,255, +255,255,255,255,247,255,255,255, +255,255,251,251,235,255,255,255, +255,255,241,241,209,249,255,255, +255,224,224,224,160,232,240,255, +255,192,192,192,64,200,192,224, +255,255,131,131,131,139,135,255, +255,255,199,199,199,207,255,255, +255,255,255,239,239,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,251,251,255,255,255, +255,255,241,241,241,249,255,255, +255,255,224,224,224,232,240,255, +255,192,192,192,192,200,192,224, +255,255,131,131,131,139,135,255, +255,255,255,199,199,207,255,255, +255,255,255,255,239,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,251,255,255,255, +255,255,255,241,241,249,255,255, +255,255,224,224,224,232,240,255, +255,192,192,192,192,200,192,224, +255,255,131,129,131,139,135,255, +255,255,255,195,199,207,199,255, +255,255,255,255,239,239,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,251,251,255,255, +255,255,255,225,241,249,241,255, +255,255,224,192,224,232,240,255, +255,192,192,128,192,200,192,224, +255,255,129,129,128,139,131,131, +255,255,255,195,193,207,199,255, +255,255,255,255,227,239,239,255, +255,255,255,255,227,255,255,255, +255,255,255,255,227,251,251,255, +255,255,255,225,193,249,241,255, +255,255,192,192,128,232,224,224, +255,192,128,128,0,200,192,224, +0,0,0,0,0,8,3,3, +0,0,0,0,0,8,7,7, +0,0,0,0,0,8,14,14, +0,0,0,0,0,8,28,28, +0,0,0,0,0,8,56,56, +0,0,0,0,0,8,112,112, +0,0,0,0,0,8,224,224, +0,0,0,0,0,8,192,192, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +252,252,248,255,255,255,255,255, +248,248,240,240,255,255,255,255, +240,240,224,224,224,255,255,255, +224,224,0,0,0,0,1,0, +192,192,0,0,0,0,1,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +252,252,252,255,255,255,255,255, +248,248,248,240,255,255,255,255, +240,240,240,224,224,255,255,255, +224,224,224,0,0,0,1,0, +192,192,192,0,0,0,1,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,252,252,252,255,255,255,255, +240,248,248,248,255,255,255,255, +224,240,240,240,224,255,255,255, +0,224,224,224,0,0,1,0, +0,192,192,192,0,0,1,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,248,252,252,252,255,255,255, +240,240,248,248,248,255,255,255, +224,224,240,240,240,255,255,255, +0,0,224,224,224,0,1,0, +0,0,192,192,192,0,1,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,253,255,255,255,255,255, +255,248,248,252,252,252,255,255, +240,240,240,248,248,248,255,255, +224,224,224,240,240,240,255,255, +0,0,0,224,224,224,1,0, +0,0,0,192,192,192,1,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,240,240,254,255,255,255, +255,248,224,224,252,252,253,255, +240,240,192,192,248,248,249,255, +224,224,128,128,240,240,241,255, +0,0,0,0,224,224,225,0, +0,0,0,0,192,192,193,0, +255,255,255,255,255,255,255,255, +0,0,0,0,0,7,7,7, +0,0,0,0,0,14,15,14, +0,0,0,0,0,28,29,28, +0,0,0,0,0,56,57,56, +0,0,0,0,0,112,113,112, +0,0,0,0,0,224,225,224, +0,0,0,0,0,192,193,192, +0,0,0,0,0,0,3,3, +0,0,0,0,0,0,7,7, +0,0,0,0,0,0,15,14, +0,0,0,0,0,0,29,28, +0,0,0,0,0,0,57,56, +0,0,0,0,0,0,113,112, +0,0,0,0,0,0,225,224, +0,0,0,0,0,0,193,192, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +253,253,255,255,255,255,255,255, +248,248,248,255,255,255,255,255, +240,240,240,240,255,255,255,255, +224,224,224,224,224,255,255,255, +192,192,0,0,0,0,1,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,253,255,255,255,255,255,255, +255,248,248,255,255,255,255,255, +240,240,240,240,255,255,255,255, +224,224,224,224,224,255,255,255, +192,192,192,0,0,0,1,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,253,255,255,255,255,255, +255,248,248,255,255,255,255,255, +240,240,240,240,255,255,255,255, +224,224,224,224,224,255,255,255, +0,192,192,192,0,0,1,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,253,253,255,255,255,255, +255,248,248,248,255,255,255,255, +240,240,240,240,255,255,255,255, +224,224,224,224,224,255,255,255, +0,0,192,192,192,0,1,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,253,253,253,255,255,255, +255,248,248,248,248,255,255,255, +240,240,240,240,240,255,255,255, +224,224,224,224,224,255,255,255, +0,0,0,192,192,192,1,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,249,255,255,255,255, +255,255,253,241,253,253,255,255, +255,248,248,224,248,248,255,255, +240,240,240,192,240,240,255,255, +224,224,224,128,224,224,255,255, +0,0,0,0,192,192,193,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,240,240,240,255,255,255, +255,255,240,240,240,253,253,255, +255,248,224,224,224,248,249,255, +240,240,192,192,192,240,241,255, +224,224,128,128,128,224,225,255, +0,0,0,0,0,192,193,192, +255,255,255,255,255,252,255,255, +255,255,255,255,255,252,255,255, +0,0,0,0,0,0,15,14, +0,0,0,0,0,0,29,28, +0,0,0,0,0,0,57,56, +0,0,0,0,0,0,113,112, +0,0,0,0,0,0,225,224, +0,0,0,0,0,0,193,192, +243,195,192,192,192,192,194,192, +255,199,192,192,192,192,194,192, +254,206,192,192,192,192,194,192, +252,220,192,192,192,192,194,192, +248,248,192,192,192,192,194,192, +240,240,128,128,128,128,130,128, +224,224,0,0,0,0,2,0, +192,192,0,0,0,0,2,0, +243,243,227,224,224,224,226,255, +255,255,231,224,224,224,226,255, +254,254,238,224,224,224,226,255, +252,252,252,224,224,224,226,252, +248,248,248,192,192,192,194,240, +240,240,240,128,128,128,130,224, +224,224,224,0,0,0,2,192, +192,192,192,0,0,0,2,0, +255,243,243,243,240,240,243,255, +255,255,255,247,240,240,255,255, +255,254,254,254,240,240,254,255, +255,252,252,252,224,224,250,252, +255,248,248,248,192,192,242,240, +224,240,240,240,128,128,226,224, +192,224,224,224,0,0,194,192, +0,192,192,192,0,0,2,0, +255,255,243,243,243,241,242,255, +255,255,255,255,255,250,250,255, +255,255,254,254,254,244,242,255, +255,255,252,252,252,232,226,252, +255,240,248,248,248,208,194,240, +224,224,240,240,240,160,130,224, +192,192,224,224,224,64,2,192, +0,0,192,192,192,0,2,0, +255,255,255,243,243,243,243,255, +255,255,255,255,255,255,255,255, +255,255,255,254,254,254,254,255, +255,255,248,252,252,252,250,252, +255,240,240,248,248,248,242,240, +224,224,224,240,240,240,226,224, +192,192,192,224,224,224,194,192, +0,0,0,192,192,192,2,0, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,224,224,252,252,254,252, +255,240,192,192,248,248,250,240, +224,224,128,128,240,240,242,224, +192,192,0,0,224,224,226,192, +0,0,0,0,192,192,194,0, +0,0,0,0,0,3,3,3, +255,255,255,255,255,255,255,255, +0,0,0,0,0,14,14,14, +0,0,0,0,0,28,30,28, +0,0,0,0,0,56,58,56, +0,0,0,0,0,112,114,112, +0,0,0,0,0,224,226,224, +0,0,0,0,0,192,194,192, +0,0,0,0,0,0,3,3, +0,0,0,0,0,0,7,7, +0,0,0,0,0,0,14,14, +0,0,0,0,0,0,30,28, +0,0,0,0,0,0,58,56, +0,0,0,0,0,0,114,112, +0,0,0,0,0,0,226,224, +0,0,0,0,0,0,194,192, +251,251,224,224,224,224,226,255, +255,255,224,224,224,224,226,255, +254,254,224,224,224,224,226,255, +252,252,224,224,224,224,226,255, +248,248,224,224,224,224,226,252, +240,240,192,192,192,192,194,240, +224,224,128,128,128,128,130,224, +192,192,0,0,0,0,2,192, +255,251,251,240,240,240,255,255, +255,255,255,240,240,240,255,255, +255,254,254,240,240,240,255,255, +255,252,252,240,240,240,254,255, +255,248,248,224,224,224,250,252, +255,240,240,192,192,192,242,240, +224,224,224,128,128,128,226,224, +192,192,192,0,0,0,194,192, +255,255,251,251,248,251,255,255, +255,255,255,255,248,255,255,255, +255,255,254,254,248,254,255,255, +255,255,252,252,240,252,254,255, +255,255,248,248,224,248,250,252, +255,240,240,240,192,240,242,240, +224,224,224,224,128,224,226,224, +192,192,192,192,0,64,194,192, +255,255,255,251,251,250,255,255, +255,255,255,255,255,253,255,255, +255,255,255,254,254,250,255,255, +255,255,255,252,252,244,254,255, +255,255,248,248,248,232,250,252, +255,240,240,240,240,208,242,240, +224,224,224,224,224,160,226,224, +192,192,192,192,192,64,194,192, +255,255,255,255,251,251,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,254,254,255,255, +255,255,255,252,252,252,254,255, +255,255,248,248,248,248,250,252, +255,240,240,240,240,240,242,240, +224,224,224,224,224,224,226,224, +192,192,192,192,192,192,194,192, +255,255,255,255,255,251,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,254,255,255, +255,255,255,240,252,252,254,255, +255,255,248,224,248,248,250,252, +255,240,240,192,240,240,242,240, +224,224,224,128,224,224,226,224, +192,192,192,0,192,192,194,192, +255,255,255,255,255,251,251,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,254,254,255, +255,255,224,224,224,252,254,252, +255,255,224,224,224,248,250,252, +255,240,192,192,192,240,242,240, +224,224,128,128,128,224,226,224, +192,192,0,0,0,192,194,192, +255,255,255,255,255,248,251,251, +255,255,255,255,255,248,255,255, +255,255,255,255,255,248,254,254, +0,0,0,0,0,0,30,28, +0,0,0,0,0,0,58,56, +0,0,0,0,0,0,114,112, +0,0,0,0,0,0,226,224, +0,0,0,0,0,0,194,192, +195,131,128,128,128,128,132,128, +231,135,128,128,128,128,132,128, +255,142,128,128,128,128,132,128, +252,156,128,128,128,128,132,128, +248,184,128,128,128,128,132,128, +240,240,128,128,128,128,132,128, +224,224,0,0,0,0,4,0, +192,192,0,0,0,0,4,0, +195,195,195,192,192,192,196,195, +231,231,199,192,192,192,196,255, +255,255,206,192,192,192,196,255, +252,252,220,192,192,192,196,255, +248,248,248,192,192,192,196,248, +240,240,240,128,128,128,132,224, +224,224,224,0,0,0,4,192, +192,192,192,0,0,0,4,128, +255,195,195,195,192,192,197,195, +255,231,231,231,224,224,231,255, +255,255,255,238,224,224,255,255, +255,252,252,252,224,224,252,255, +255,248,248,248,192,192,244,248, +255,240,240,240,128,128,228,224, +192,224,224,224,0,0,196,192, +128,192,192,192,0,0,132,128, +255,255,195,195,195,193,196,195, +255,255,231,231,231,226,228,255, +255,255,255,255,255,245,245,255, +255,255,252,252,252,232,228,255, +255,255,248,248,248,208,196,248, +255,224,240,240,240,160,132,224, +192,192,224,224,224,64,4,192, +128,128,192,192,192,128,4,128, +255,255,193,195,195,195,197,195, +255,255,255,231,231,231,231,255, +255,255,255,255,255,255,255,255, +255,255,255,252,252,252,252,255, +255,255,240,248,248,248,244,248, +255,224,224,240,240,240,228,224, +192,192,192,224,224,224,196,192, +128,128,128,192,192,192,132,128, +255,255,192,192,195,195,199,195, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,192,192,248,248,252,248, +255,224,128,128,240,240,244,224, +192,192,0,0,224,224,228,192, +128,128,0,0,192,192,196,128, +0,0,0,0,0,3,7,3, +0,0,0,0,0,7,7,7, +255,255,255,255,255,255,255,255, +0,0,0,0,0,28,28,28, +0,0,0,0,0,56,60,56, +0,0,0,0,0,112,116,112, +0,0,0,0,0,224,228,224, +0,0,0,0,0,192,196,192, +0,0,0,0,0,0,7,3, +0,0,0,0,0,0,7,7, +0,0,0,0,0,0,14,14, +0,0,0,0,0,0,28,28, +0,0,0,0,0,0,60,56, +0,0,0,0,0,0,116,112, +0,0,0,0,0,0,228,224, +0,0,0,0,0,0,196,192, +227,227,192,192,192,192,196,255, +247,247,192,192,192,192,196,255, +255,255,192,192,192,192,196,255, +253,253,192,192,192,192,196,255, +248,248,192,192,192,192,196,255, +240,240,192,192,192,192,196,248, +224,224,128,128,128,128,132,224, +192,192,0,0,0,0,4,192, +255,227,227,224,224,224,231,255, +255,247,247,224,224,224,255,255, +255,255,255,224,224,224,255,255, +255,253,253,224,224,224,255,255, +255,248,248,224,224,224,252,255, +255,240,240,192,192,192,244,248, +255,224,224,128,128,128,228,224, +192,192,192,0,0,0,196,192, +255,255,227,227,224,227,231,255, +255,255,247,247,241,247,255,255, +255,255,255,255,241,255,255,255, +255,255,253,253,241,253,255,255, +255,255,248,248,224,248,252,255, +255,255,240,240,192,240,244,248, +255,224,224,224,128,224,228,224, +192,192,192,192,0,192,196,192, +255,255,255,227,227,226,231,255, +255,255,255,247,247,245,255,255, +255,255,255,255,255,251,255,255, +255,255,255,253,253,245,255,255, +255,255,255,248,248,232,252,255, +255,255,240,240,240,208,244,248, +255,224,224,224,224,160,228,224, +192,192,192,192,192,64,196,192, +255,255,255,227,227,227,231,255, +255,255,255,255,247,247,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,253,253,255,255, +255,255,255,248,248,248,252,255, +255,255,240,240,240,240,244,248, +255,224,224,224,224,224,228,224, +192,192,192,192,192,192,196,192, +255,255,255,224,227,227,231,255, +255,255,255,255,255,247,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,253,255,255, +255,255,255,224,248,248,252,255, +255,255,240,192,240,240,244,248, +255,224,224,128,224,224,228,224, +192,192,192,0,192,192,196,192, +255,255,192,192,192,195,199,195, +255,255,255,255,255,247,247,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,253,253,255, +255,255,192,192,192,248,252,248, +255,255,192,192,192,240,244,248, +255,224,128,128,128,224,228,224, +192,192,0,0,0,192,196,192, +0,0,0,0,0,0,7,3, +255,255,255,255,255,241,247,247, +255,255,255,255,255,241,255,255, +255,255,255,255,255,241,253,253, +0,0,0,0,0,0,60,56, +0,0,0,0,0,0,116,112, +0,0,0,0,0,0,228,224, +0,0,0,0,0,0,196,192, +3,3,0,0,0,0,8,0, +135,7,0,0,0,0,8,0, +207,14,0,0,0,0,8,0, +255,28,0,0,0,0,8,0, +249,56,0,0,0,0,8,0, +240,112,0,0,0,0,8,0, +224,224,0,0,0,0,8,0, +192,192,0,0,0,0,8,0, +3,3,3,0,0,0,8,1, +135,135,135,128,128,128,136,135, +207,207,142,128,128,128,136,255, +255,255,156,128,128,128,136,255, +249,249,184,128,128,128,136,255, +240,240,240,128,128,128,136,240, +224,224,224,0,0,0,8,192, +192,192,192,0,0,0,8,128, +255,3,3,3,0,0,9,1, +255,135,135,135,128,128,139,135, +255,207,207,207,193,193,207,255, +255,255,255,221,193,193,255,255, +255,249,249,249,193,193,249,255, +255,240,240,240,128,128,232,240, +255,224,224,224,0,0,200,192, +128,192,192,192,0,0,136,128, +255,1,3,3,3,1,8,1, +255,255,135,135,135,130,136,135, +255,255,207,207,207,197,201,255, +255,255,255,255,255,235,235,255, +255,255,249,249,249,209,201,255, +255,255,240,240,240,160,136,240, +255,192,224,224,224,64,8,192, +128,128,192,192,192,128,8,128, +255,1,1,3,3,3,9,1, +255,255,131,135,135,135,139,135, +255,255,255,207,207,207,207,255, +255,255,255,255,255,255,255,255, +255,255,255,249,249,249,249,255, +255,255,224,240,240,240,232,240, +255,192,192,224,224,224,200,192, +128,128,128,192,192,192,136,128, +255,1,0,0,3,3,11,1, +255,255,128,128,135,135,143,135, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255, +255,255,128,128,240,240,248,240, +255,192,0,0,224,224,232,192, +128,128,0,0,192,192,200,128, +0,0,0,0,0,3,11,3, +0,0,0,0,0,7,15,7, +0,0,0,0,0,14,14,14, +255,255,255,255,255,255,255,255, +0,0,0,0,0,56,56,56, +0,0,0,0,0,112,120,112, +0,0,0,0,0,224,232,224, +0,0,0,0,0,192,200,192, +0,0,0,0,0,0,11,3, +0,0,0,0,0,0,15,7, +0,0,0,0,0,0,14,14, +0,0,0,0,0,0,28,28, +0,0,0,0,0,0,56,56, +0,0,0,0,0,0,120,112, +0,0,0,0,0,0,232,224, +0,0,0,0,0,0,200,192, +131,131,128,128,128,128,136,135, +199,199,128,128,128,128,136,255, +239,239,128,128,128,128,136,255, +255,255,128,128,128,128,136,255, +251,251,128,128,128,128,136,255, +241,241,128,128,128,128,136,255, +224,224,128,128,128,128,136,240, +192,192,0,0,0,0,8,192, +255,131,131,128,128,128,139,135, +255,199,199,193,193,193,207,255, +255,239,239,193,193,193,255,255, +255,255,255,193,193,193,255,255, +255,251,251,193,193,193,255,255, +255,241,241,193,193,193,249,255, +255,224,224,128,128,128,232,240, +255,192,192,0,0,0,200,192, +255,255,131,131,128,131,139,135, +255,255,199,199,193,199,207,255, +255,255,239,239,227,239,255,255, +255,255,255,255,227,255,255,255, +255,255,251,251,227,251,255,255, +255,255,241,241,193,241,249,255, +255,255,224,224,128,224,232,240, +255,192,192,192,0,192,200,192, +255,255,131,131,131,130,139,135, +255,255,255,199,199,197,207,255, +255,255,255,239,239,235,255,255, +255,255,255,255,255,247,255,255, +255,255,255,251,251,235,255,255, +255,255,255,241,241,209,249,255, +255,255,224,224,224,160,232,240, +255,192,192,192,192,64,200,192, +255,255,131,131,131,131,139,135, +255,255,255,199,199,199,207,255, +255,255,255,255,239,239,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,251,251,255,255, +255,255,255,241,241,241,249,255, +255,255,224,224,224,224,232,240, +255,192,192,192,192,192,200,192, +255,255,131,128,131,131,139,135, +255,255,255,193,199,199,207,255, +255,255,255,255,255,239,255,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,251,255,255, +255,255,255,193,241,241,249,255, +255,255,224,128,224,224,232,240, +255,192,192,0,192,192,200,192, +255,255,128,128,128,131,139,135, +255,255,128,128,128,135,143,135, +255,255,255,255,255,239,239,255, +255,255,255,255,255,255,255,255, +255,255,255,255,255,251,251,255, +255,255,128,128,128,240,248,240, +255,255,128,128,128,224,232,240, +255,192,0,0,0,192,200,192, +0,0,0,0,0,0,11,3, +0,0,0,0,0,0,15,7, +255,255,255,255,255,227,239,239, +255,255,255,255,255,227,255,255, +255,255,255,255,255,227,251,251, +0,0,0,0,0,0,120,112, +0,0,0,0,0,0,232,224, +0,0,0,0,0,0,200,192 diff --git a/Engines/Linux/cheng/src/cheng4/magic.cpp b/Engines/Linux/cheng/src/cheng4/magic.cpp new file mode 100644 index 0000000..b9ab413 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/magic.cpp @@ -0,0 +1,568 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +// based on Tord Romstad's Looking for magics: https://chessprogramming.wikispaces.com/Looking+for+Magics + +#include "magic.h" +#include + +namespace cheng4 +{ + +#define STOP_RAY(i) \ + (i) = ((i)+7) / 7 * 7; \ + (i)--; + +typedef struct MovTab +{ + i8 next; // next_index (-1 => done) + i8 skip; // skip_index (sliders only, -1 => done) +} MovTab; + +static const i8 nmtab[][2] = +{ + { -1, +2 }, + { -1, -2 }, + { -2, +1 }, + { -2, -1 }, + { +1, +2 }, + { +1, -2 }, + { +2, +1 }, + { +2, -1 }, + { 127, 127 } +}; + +static const i8 bmtab[][2] = +{ + { +1, +1 }, + { +2, +2 }, + { +3, +3 }, + { +4, +4 }, + { +5, +5 }, + { +6, +6 }, + { +7, +7 }, + { +1, -1 }, + { +2, -2 }, + { +3, -3 }, + { +4, -4 }, + { +5, -5 }, + { +6, -6 }, + { +7, -7 }, + { -1, +1 }, + { -2, +2 }, + { -3, +3 }, + { -4, +4 }, + { -5, +5 }, + { -6, +6 }, + { -7, +7 }, + { -1, -1 }, + { -2, -2 }, + { -3, -3 }, + { -4, -4 }, + { -5, -5 }, + { -6, -6 }, + { -7, -7 }, + { 127, 127 } +}; + +static const i8 rmtab[][2] = +{ + { +0, +1 }, + { +0, +2 }, + { +0, +3 }, + { +0, +4 }, + { +0, +5 }, + { +0, +6 }, + { +0, +7 }, + { +0, -1 }, + { +0, -2 }, + { +0, -3 }, + { +0, -4 }, + { +0, -5 }, + { +0, -6 }, + { +0, -7 }, + { +1, +0 }, + { +2, +0 }, + { +3, +0 }, + { +4, +0 }, + { +5, +0 }, + { +6, +0 }, + { +7, +0 }, + { -1, +0 }, + { -2, +0 }, + { -3, +0 }, + { -4, +0 }, + { -5, +0 }, + { -6, +0 }, + { -7, +0 }, + { 127, 127 } +}; + +static const i8 qmtab[][2] = +{ + { +1, +1 }, + { +2, +2 }, + { +3, +3 }, + { +4, +4 }, + { +5, +5 }, + { +6, +6 }, + { +7, +7 }, + { +1, -1 }, + { +2, -2 }, + { +3, -3 }, + { +4, -4 }, + { +5, -5 }, + { +6, -6 }, + { +7, -7 }, + { -1, +1 }, + { -2, +2 }, + { -3, +3 }, + { -4, +4 }, + { -5, +5 }, + { -6, +6 }, + { -7, +7 }, + { -1, -1 }, + { -2, -2 }, + { -3, -3 }, + { -4, -4 }, + { -5, -5 }, + { -6, -6 }, + { -7, -7 }, + { +0, +1 }, + { +0, +2 }, + { +0, +3 }, + { +0, +4 }, + { +0, +5 }, + { +0, +6 }, + { +0, +7 }, + { +0, -1 }, + { +0, -2 }, + { +0, -3 }, + { +0, -4 }, + { +0, -5 }, + { +0, -6 }, + { +0, -7 }, + { +1, +0 }, + { +2, +0 }, + { +3, +0 }, + { +4, +0 }, + { +5, +0 }, + { +6, +0 }, + { +7, +0 }, + { -1, +0 }, + { -2, +0 }, + { -3, +0 }, + { -4, +0 }, + { -5, +0 }, + { -6, +0 }, + { -7, +0 }, + { 127, 127 } +}; + +// [original][current] +static MovTab qmnew[64][64]; +static MovTab rmnew[64][64]; +static MovTab bmnew[64][64]; +static MovTab nmnew[64][64]; // note: only next used + +static i32 findSkip( i32 x, i32 y, i32 i, i32 num, const i8 mtab[][2] ) +{ + while ( i < num ) + { + STOP_RAY(i); + i++; + if ( i >= num ) + break; + i32 nx = x + mtab[i][0], ny = y + mtab[i][1]; + if ( (nx & ~7) || (ny & ~7) ) + { + continue; + } + return (ny << 3) + nx; + } + return -1; +} + +static void initNewMovTab() +{ + memset( qmnew, -1, sizeof(qmnew) ); + memset( rmnew, -1, sizeof(rmnew) ); + memset( bmnew, -1, sizeof(bmnew) ); + memset( nmnew, -1, sizeof(nmnew) ); + i32 i; + for (i=0; i<64; i++) + { + i32 x = i & 7; + i32 y = i >> 3; + i32 j; + i32 nextpos, nextposj; + + // queen + for ( nextpos = i, nextposj = j=0; j<8*7; j++) + { + i32 nx = x + qmtab[j][0], ny = y + qmtab[j][1]; + if ( (nx & ~7) || (ny & ~7 ) ) + { + STOP_RAY(j); + continue; + } + i32 ni = (ny << 3) | nx; + qmnew[ i ][ nextpos ].next = (i8)ni; + qmnew[ i ][ nextpos ].skip = (i8)findSkip( x, y, nextposj, 8*7, qmtab ); + nextposj = j; + nextpos = ni; + } + // rook + for ( nextpos = i, nextposj = j=0; j<4*7; j++) + { + i32 nx = x + rmtab[j][0], ny = y + rmtab[j][1]; + if ( (nx & ~7) || (ny & ~7 ) ) + { + STOP_RAY(j); + continue; + } + i32 ni = (ny << 3) | nx; + rmnew[ i ][ nextpos ].next = (i8)ni; + rmnew[ i ][ nextpos ].skip = (i8)findSkip( x, y, nextposj, 4*7, rmtab ); + nextposj = j; + nextpos = ni; + } + // bishop + for ( nextpos = i, nextposj = j=0; j<4*7; j++) + { + i32 nx = x + bmtab[j][0], ny = y + bmtab[j][1]; + if ( (nx & ~7) || (ny & ~7 ) ) + { + STOP_RAY(j); + continue; + } + i32 ni = (ny << 3) | nx; + bmnew[ i ][ nextpos ].next = (i8)ni; + bmnew[ i ][ nextpos ].skip = (i8)findSkip( x, y, nextposj, 4*7, bmtab ); + nextposj = j; + nextpos = ni; + } + // knight + for ( nextpos = i, j=0; j<8; j++) + { + i32 nx = x + nmtab[j][0], ny = y + nmtab[j][1]; + if ( (nx & ~7) || (ny & ~7 ) ) + { + continue; + } + i32 ni = (ny << 3) | nx; + nmnew[ i ][ nextpos ].next = (i8)ni; + nextpos = ni; + } + } +} + +Bitboard Magic::rookRelOcc[64]; +Bitboard Magic::bishopRelOcc[64]; +u8 Magic::rookShr[64]; +u8 Magic::bishopShr[64]; +const Bitboard *Magic::rookPtr[64]; +const Bitboard *Magic::bishopPtr[64]; + +const Bitboard Magic::rookMagic[64] = { + U64C(0x80001820804000), + U64C(0xa440100040002003), + U64C(0x3080200010000880), + U64C(0x100210008041000), + U64C(0x100040800021100), + U64C(0xa600080922001410), + U64C(0x4080020000800100), + U64C(0x8300044120810002), + U64C(0x6012800040012280), + U64C(0x400401000402000), + U64C(0x241002000410011), + U64C(0xa2002040081201), + U64C(0x1280800800040080), + U64C(0x1042000402001008), + U64C(0x404002118041092), + U64C(0xa001802480004100), + U64C(0x8190208000804014), + U64C(0x401000c040012000), + U64C(0x16820020420014), + U64C(0x800090020100100), + U64C(0x3010008000410), + U64C(0x8002080110400420), + U64C(0x800808002000100), + U64C(0x825020024408409), + U64C(0x8030802880004010), + U64C(0x40010100208050), + U64C(0x240104200208200), + U64C(0x9043002100100408), + U64C(0x208000500110008), + U64C(0x27000300040008), + U64C(0x8130088400020110), + U64C(0x50088200110444), + U64C(0xc0400020800080), + U64C(0x402000401000), + U64C(0xa100200101001048), + U64C(0x1008008008801000), + U64C(0xc01000413000800), + U64C(0x20040080800200), + U64C(0x10021004000801), + U64C(0x8144910062000084), + U64C(0x200248440048002), + U64C(0x201000404001), + U64C(0x200100020008080), + U64C(0x6800801000800c), + U64C(0x4080100850010), + U64C(0x882020004008080), + U64C(0x7840011042840008), + U64C(0x4000045085220004), + U64C(0x4482106008200), + U64C(0x100209100400100), + U64C(0x200100104100), + U64C(0x1080010008180), + U64C(0x4008004200040040), + U64C(0x1003040080020080), + U64C(0x9002108162080400), + U64C(0x201040080410200), + U64C(0x12c304103208001), + U64C(0x8000110480284001), + U64C(0x4000110020000c41), + U64C(0x9023009000620409), + U64C(0x8022002010080402), + U64C(0x1000804008241), + U64C(0x444802032c9004), + U64C(0x5000004401002082) +}; + +const Bitboard Magic::bishopMagic[64] = { + U64C(0x22823a0401041104), + U64C(0x804100409003024), + U64C(0x4810202000400), + U64C(0x1004440088000144), + U64C(0x204042040019080), + U64C(0x1402111048004004), + U64C(0xc000542404400022), + U64C(0x4000220200a44004), + U64C(0x49410408120043), + U64C(0x41102202204200), + U64C(0xb000043822084003), + U64C(0x40424881a00), + U64C(0x4040420010290), + U64C(0x2108220600004), + U64C(0x8002108410021000), + U64C(0x20c04222100240), + U64C(0x8222008304883), + U64C(0x50800802080044), + U64C(0x84809001020208), + U64C(0x1000804110000), + U64C(0x4204002210220000), + U64C(0x1080201012011), + U64C(0x80108004118a000), + U64C(0x6040082008200), + U64C(0x150a40028585042), + U64C(0x2084142301404), + U64C(0x2008040208104014), + U64C(0x8208080100202020), + U64C(0x402040002008201), + U64C(0xa208008001100092), + U64C(0x2002020104010122), + U64C(0x8080888005004810), + U64C(0x8008200910840860), + U64C(0x140490580404a80a), + U64C(0x650240400184803), + U64C(0x100020080080080), + U64C(0x400408020420200), + U64C(0x4a01010201090041), + U64C(0x42083c8081b10800), + U64C(0x924e02006010d402), + U64C(0x4104808010402), + U64C(0x66c022104801040), + U64C(0x8881040024082200), + U64C(0x20404200800802), + U64C(0xa080104001040), + U64C(0x20381010a0200201), + U64C(0x5448320084150200), + U64C(0x48680080800024), + U64C(0x181008221200010), + U64C(0x1008090081004), + U64C(0x896d80485c102031), + U64C(0x2000110042020004), + U64C(0x5082803041040), + U64C(0x4000401082308131), + U64C(0x40828214050002), + U64C(0x4010214011412), + U64C(0x52010c01240280), + U64C(0x94404042105004), + U64C(0x8000c00042080400), + U64C(0x80000e84042e), + U64C(0xa0c080060424408), + U64C(0x4400b00810219201), + U64C(0x8912220284110400), + U64C(0x284100220540484) +}; + +static Bitboard indexToU64( int index, int bits, u64 m ) +{ + Bitboard result = 0; + for (int i = 0; i < bits; i++) + { + int j = m ? BitOp::getLSB( m ) : -1; + if ( j < 0 ) + break; + if (index & (1 << i)) result |= BitOp::oneShl( (Square)j ); + m &= BitOp::noneShl( (Square)j ); + } + return result; +} + +static u64 ratt(int sq, u64 block) +{ + u64 result = 0ULL; + int rk = sq/8, fl = sq%8, r, f; + for (r = rk+1; r <= 7; r++) { + result |= (1ULL << (fl + r*8)); + if (block & (1ULL << (fl + r*8))) break; + } + for (r = rk-1; r >= 0; r--) { + result |= (1ULL << (fl + r*8)); + if (block & (1ULL << (fl + r*8))) break; + } + for (f = fl+1; f <= 7; f++) { + result |= (1ULL << (f + rk*8)); + if (block & (1ULL << (f + rk*8))) break; + } + for (f = fl-1; f >= 0; f--) { + result |= (1ULL << (f + rk*8)); + if (block & (1ULL << (f + rk*8))) break; + } + return result; +} + +static u64 batt(int sq, u64 block) +{ + u64 result = 0; + int rk = sq/8, fl = sq%8, r, f; + for (r = rk+1, f = fl+1; r <= 7 && f <= 7; r++, f++) { + result |= (1ULL << (f + r*8)); + if (block & (1ULL << (f + r * 8))) break; + } + for (r = rk+1, f = fl-1; r <= 7 && f >= 0; r++, f--) { + result |= (1ULL << (f + r*8)); + if (block & (1ULL << (f + r * 8))) break; + } + for (r = rk-1, f = fl+1; r >= 0 && f <= 7; r--, f++) { + result |= (1ULL << (f + r*8)); + if (block & (1ULL << (f + r * 8))) break; + } + for (r = rk-1, f = fl-1; r >= 0 && f >= 0; r--, f--) { + result |= (1ULL << (f + r*8)); + if (block & (1ULL << (f + r * 8))) break; + } + return result; +} + +u32 Magic::initMagicPtrs( Square sq, bool bishop ) +{ + i32 i, n; + const u64 &mask = bishop ? bishopRelOcc[sq] : rookRelOcc[sq]; + n = BitOp::popCount(mask); + + // max 12 bits! + Bitboard *b = new Bitboard[ 4096 ]; + Bitboard *a = new Bitboard[ (size_t)1u << n ]; + + memset( a, 0, ((size_t)1u << n) * sizeof(Bitboard) ); + + for (i = 0; i < (i32)(1 << n); i++) { + b[i] = indexToU64(i, n, mask); + + i32 j; + if ( bishop ) + j = (i32)((b[i] * bishopMagic[sq]) >> bishopShr[sq]); + else + j = (i32)((b[i] * rookMagic[sq]) >> rookShr[sq]); + + a[j] = bishop ? batt(sq, b[i]) : ratt(sq, b[i]); + } + if ( bishop ) + { + bishopPtr[ sq ] = a; + } + else + { + rookPtr[ sq ] = a; + } + delete[] b; + return 8 * (1<= 0 ) + { + if ( rmnew[ i ][ cur ].next != rmnew[ i ][ cur ].skip ) + { + // relevant! + msk |= BitOp::oneShl( cur ); + } + cur = rmnew[ i ][ cur ].next; + } + rookRelOcc[ i ] = msk; + rookShr[ i ] = (u8)(64-BitOp::popCount(msk)); + + // bishop + msk = 0; + cur = bmnew[ i ][ i ].next; + while ( cur >= 0 ) + { + if ( bmnew[ i ][ cur ].next != bmnew[ i ][ cur ].skip ) + { + // relevant! + msk |= BitOp::oneShl( cur ); + } + cur = bmnew[ i ][ cur ].next; + } + bishopRelOcc[ i ] = msk; + bishopShr[ i ] = (u8)(64-BitOp::popCount(msk)); + } + + for (Square i=0; i<64; i++) + for (uint j=0; j<2; j++) + initMagicPtrs( i, j ? 1 : 0 ); +} + +void Magic::done() +{ + for (Square i=0; i<64; i++) + { + delete[] bishopPtr[i]; + delete[] rookPtr[i]; + } +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/magic.h b/Engines/Linux/cheng/src/cheng4/magic.h new file mode 100644 index 0000000..4b786d9 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/magic.h @@ -0,0 +1,85 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "tables.h" +#include "chtypes.h" + +namespace cheng4 +{ + +// singleton +class Magic +{ +protected: + static u32 initMagicPtrs( Square sq, bool bishop ); + // rook/bishop relevant occupancy masks + static Bitboard rookRelOcc[64]; + static Bitboard bishopRelOcc[64]; + // rook/bishop magic shr + static u8 rookShr[64]; + static u8 bishopShr[64]; + // rook/bishop magic pointers + static const Bitboard *rookPtr[64]; + static const Bitboard *bishopPtr[64]; + // rook/bishop magic multipliers + static const Bitboard rookMagic[64]; + static const Bitboard bishopMagic[64]; +public: + static void init(); + static void done(); + + // occ: block mask + static inline Bitboard rookAttm( Square sq, Bitboard occ ) + { + return rookPtr[ sq ][ (rookMagic[ sq ] * (occ & rookRelOcc[ sq ])) >> rookShr[ sq ] ]; + } + + // occ: block mask + static inline Bitboard bishopAttm( Square sq, Bitboard occ ) + { + return bishopPtr[ sq ][ (bishopMagic[ sq ] * (occ & bishopRelOcc[ sq ])) >> bishopShr[ sq ] ]; + } + + // occ: block mask + static inline Bitboard queenAttm( Square sq, Bitboard occ ) + { + return rookAttm( sq, occ ) | bishopAttm( sq, occ ); + } + + template< Piece pt > static inline Bitboard sliderAttm( Square sq, Bitboard occ ) + { + assert( isSlider( pt ) ); + if ( pt == ptBishop ) + return bishopAttm( sq, occ ); + else if ( pt == ptRook ) + return rookAttm( sq, occ ); + else if ( pt == ptQueen ) + return queenAttm( sq, occ ); + else return 0; + } + +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/main.cpp b/Engines/Linux/cheng/src/cheng4/main.cpp new file mode 100644 index 0000000..13f8018 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/main.cpp @@ -0,0 +1,63 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include "magic.h" +#include "movegen.h" +#include "history.h" +#include "zobrist.h" +#include "psq.h" +#include "search.h" +#include "engine.h" +#include "protocol.h" +#include + +int main( int argc, char **argv ) +{ + // disable I/O buffering + std::cin.rdbuf()->pubsetbuf(0, 0); + std::cout.rdbuf()->pubsetbuf(0, 0); + setbuf( stdin, 0 ); + setbuf( stdout, 0 ); + + // static init + cheng4::Engine::init( argc-1, const_cast(argv)+1 ); + + cheng4::Engine *eng = new cheng4::Engine; + cheng4::Protocol *proto = new cheng4::Protocol( *eng ); + + eng->run(); + + while ( !proto->shouldQuit() ) + { + std::string line; + std::getline( std::cin, line ); + proto->parse( line ); + } + + delete proto; + delete eng; + + cheng4::Engine::done(); + return 0; +} diff --git a/Engines/Linux/cheng/src/cheng4/make_bsd.sh b/Engines/Linux/cheng/src/cheng4/make_bsd.sh new file mode 100644 index 0000000..1150bf1 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/make_bsd.sh @@ -0,0 +1,2 @@ +clang++ -Wall -Wpedantic -W -O3 -std=c++0x -fno-stack-protector -fno-rtti -fno-exceptions -fomit-frame-pointer -DNDEBUG -U_FORTIFY_SOURCE -static allinone.cpp -o cheng4_bsd_x64 -lpthread +strip cheng4_bsd_x64 diff --git a/Engines/Linux/cheng/src/cheng4/make_droid.sh b/Engines/Linux/cheng/src/cheng4/make_droid.sh new file mode 100644 index 0000000..c01535d --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/make_droid.sh @@ -0,0 +1 @@ +../../../droidchain/bin/arm-linux-androideabi-g++ -s -Wall -W -O4 -fno-stack-protector -fomit-frame-pointer -fno-rtti -fno-exceptions -fexpensive-optimizations -DNDEBUG -U_FORTIFY_SOURCE -static allinone.cpp -o cheng4_droid diff --git a/Engines/Linux/cheng/src/cheng4/make_linux.sh b/Engines/Linux/cheng/src/cheng4/make_linux.sh new file mode 100644 index 0000000..1523c99 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/make_linux.sh @@ -0,0 +1,2 @@ +g++ -s -Wall -Wpedantic -W -O4 -std=c++0x -fno-stack-protector -fomit-frame-pointer -fno-rtti -fno-exceptions -fexpensive-optimizations -DNDEBUG -U_FORTIFY_SOURCE -static allinone.cpp -o cheng4_linux_x64 -lpthread + diff --git a/Engines/Linux/cheng/src/cheng4/make_mingw.bat b/Engines/Linux/cheng/src/cheng4/make_mingw.bat new file mode 100644 index 0000000..850664e --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/make_mingw.bat @@ -0,0 +1 @@ +g++ -m64 -s -Wall -Wpedantic -W -O4 -std=c++0x -fno-stack-protector -fomit-frame-pointer -fno-rtti -fno-exceptions -fexpensive-optimizations -DNDEBUG -U_FORTIFY_SOURCE -static allinone.cpp -o cheng4_mingw_x64 -lwinmm diff --git a/Engines/Linux/cheng/src/cheng4/make_mingw.sh b/Engines/Linux/cheng/src/cheng4/make_mingw.sh new file mode 100644 index 0000000..850664e --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/make_mingw.sh @@ -0,0 +1 @@ +g++ -m64 -s -Wall -Wpedantic -W -O4 -std=c++0x -fno-stack-protector -fomit-frame-pointer -fno-rtti -fno-exceptions -fexpensive-optimizations -DNDEBUG -U_FORTIFY_SOURCE -static allinone.cpp -o cheng4_mingw_x64 -lwinmm diff --git a/Engines/Linux/cheng/src/cheng4/make_osx.sh b/Engines/Linux/cheng/src/cheng4/make_osx.sh new file mode 100644 index 0000000..faedfb2 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/make_osx.sh @@ -0,0 +1,2 @@ +clang++ -Wall -Wpedantic -W -O3 -std=c++0x -fno-stack-protector -fno-rtti -fno-exceptions -fomit-frame-pointer -DNDEBUG -U_FORTIFY_SOURCE allinone.cpp -o cheng4_osx_x64 +strip cheng4_osx_x64 diff --git a/Engines/Linux/cheng/src/cheng4/move.cpp b/Engines/Linux/cheng/src/cheng4/move.cpp new file mode 100644 index 0000000..9a21bf2 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/move.cpp @@ -0,0 +1,121 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "move.h" +#include "chtypes.h" +#include "tables.h" +#include "utils.h" + +namespace cheng4 +{ + +static Square parseSquare( const char *&ptr ) +{ + File f; + Rank r; + if ( *ptr < 'a' || *ptr > 'h' ) + return sqInvalid; + f = *ptr++ - 'a'; + if ( *ptr < '1' || *ptr > '8' ) + return sqInvalid; + r = ('8' - *ptr++) ^ RANK8; + return SquarePack::init( f, r ); +} + +// MovePack + +std::string MovePack::toUCI( Move m, bool frc ) +{ + char buf[16]; + *toUCI(buf, m, frc) = 0; + return buf; +} + +char *MovePack::toUCI( char *dst, Move m, bool frc ) +{ + if ( m == mcNull || m == mcNone ) + return scpy(dst, "0000"); + + if ( frc && isCastling(m) ) + return SquarePack::file( MovePack::to(m) ) >= EFILE ? scpy(dst, "O-O") : scpy(dst, "O-O-O"); + + Square from = MovePack::from( m ); + Square to = MovePack::to( m ); + *dst++ = (char)( SquarePack::file( from ) + 'a' ); + *dst++ = (char)( '8' - (SquarePack::rank( from ) ^ RANK8) ); + *dst++ = (char)( SquarePack::file( to ) + 'a' ); + *dst++ = (char)( '8' - (SquarePack::rank( to ) ^ RANK8) ); + Piece promo = MovePack::promo( m ); + if ( promo ) + *dst++ = " nbrq"[promo]; + return dst; +} + +Move MovePack::fromUCI( const std::string &str ) +{ + const char *ptr = str.c_str(); + return fromUCI( ptr ); +} + +Move MovePack::fromUCI( const char *&ptr ) +{ + const char *old = ptr; // we don't want to advance on failure + Square from, to; + from = parseSquare( ptr ); + if ( from == sqInvalid ) + { + ptr = old; + return mcNone; + } + to = parseSquare( ptr ); + if ( to == sqInvalid ) + { + ptr = old; + return mcNone; + } + if ( !*ptr ) + return MovePack::init( from, to ); + Piece promo = ptNone; + switch( *ptr | 32 ) + { + case 'n': + promo = ptKnight; + ptr++; + break; + case 'b': + promo = ptBishop; + ptr++; + break; + case 'r': + promo = ptRook; + ptr++; + break; + case 'q': + promo = ptQueen; + ptr++; + break; + } + return MovePack::initPromo( from, to, promo ); +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/move.h b/Engines/Linux/cheng/src/cheng4/move.h new file mode 100644 index 0000000..db5631d --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/move.h @@ -0,0 +1,194 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "chtypes.h" +#include + +namespace cheng4 +{ + +enum MoveConstants +{ + maxMoves = 256, + maxCaptures = 128 +}; + +// move is packed u32 +// bit 0..5: from +// bit 6..11: to +// bit 12..14: promo: ChessPiece +// bit 15..16: special flags: 0 = normal move, 1 = castling, 2 = capture, 3 = ep capture +// bit 17..31: static score used for move ordering + +// move masks +const Move mmFrom = 63; +const Move mmTo = 63<<6; +const Move mmPromo = 7<<12; +const Move mmMove = mmFrom | mmTo | mmPromo; +const Move mmBook = 0xffff; // including castling +const Move mmSpecial = 7<<15; +const Move mmNoScore = 0x3ffff; // remove score part +const Move mmScore = 0xfffc0000; + +enum MoveShifts +{ + msFrom = 0, + msTo = 6, + msPromo = 12, + msSpecial = 15, + msScore = 18 +}; + +// move flags +const Move mfNone = 0; +const Move mfCastling = 1 << msSpecial; +const Move mfCapture = 2 << msSpecial; +const Move mfEpCapture = 4 << msSpecial; + +// move constants +const Move mcNone = 0; +const Move mcNull = 0x1fff; + +typedef uint MoveScore; + +// singleton +struct MovePack +{ + static inline Square from( Move move ) + { + return move & mmFrom; + } + + static inline Move setTo( Move move, Square sq ) + { + Move res = move & ~( (Move)63 << msTo ); + return res |= (Move)(sq & 63) << msTo; + } + + static inline Square to( Move move ) + { + return (Square)( (move & mmTo) >> msTo ); + } + + static inline Piece promo( Move move ) + { + return (Piece)( (move & mmPromo) >> msPromo ); + } + + static inline Move isCastling( Move move ) + { + return move & mfCastling; + } + + static inline Move isCapture( Move move ) + { + return move & (mfCapture|mfEpCapture); + } + + static inline Move isEpCapture( Move move ) + { + return move & mfEpCapture; + } + + // special move: capture, ep capture, castling, promotion + static inline Move isSpecial( Move move ) + { + return move & (mmSpecial | mmPromo); + } + + static inline Move isPromo( Move move ) + { + return move & mmPromo; + } + + // is promotion or ep capture? + static inline Move isPromoOrEp( Move move ) + { + return move & (mmPromo | mfEpCapture); + } + + static inline Move init( Square from, Square to ) + { + return (Move)(from | (to << msTo)); + } + + static inline Move initCapture( Square from, Square to ) + { + return (Move)(from | (to << msTo) | mfCapture); + } + + static inline Move initPromo( Square from, Square to, Piece promo ) + { + return (Move)(from | (to << msTo) | (promo << msPromo)); + } + + static inline Move initPromoCapture( Square from, Square to, Piece promo ) + { + return (Move)(from | (to << msTo) | (promo << msPromo) | mfCapture); + } + + static inline Move initEpCapture( Square from, Square to ) + { + return (Move)(from | (to << msTo) | mfEpCapture); + } + + static inline Move initCastling( Square from, Square to ) + { + return (Move)(from | (to << msTo) | mfCastling); + } + + static inline Move initScore( MoveScore score ) + { + return (Move)(score << msScore); + } + + template< bool capture > static inline Move initMove( Square from, Square to ) + { + return capture ? initCapture( from, to ) : init( from, to ); + } + template< bool capture > static inline Move initPromoMove( Square from, Square to, Piece promo ) + { + return capture ? initPromoCapture( from, to, promo ) : initPromo( from, to, promo ); + } + + static inline bool equal( Move m0, Move m1 ) + { + return (m0 & mmMove) == (m1 & mmMove); + } + + static inline bool equalBook( Move m0, BookMove m1 ) + { + return (BookMove)(m0 & mmBook) == m1; + } + + // convert to UCI move (doesn't add null terminator) + static char *toUCI( char *dst, Move m, bool frc = 0 ); + static std::string toUCI( Move m, bool frc = 0 ); + // from UCI move + static Move fromUCI( const std::string &str ); + static Move fromUCI( const char *&ptr ); +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/movegen.cpp b/Engines/Linux/cheng/src/cheng4/movegen.cpp new file mode 100644 index 0000000..356eeb2 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/movegen.cpp @@ -0,0 +1,505 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "movegen.h" +#include +#include + +namespace cheng4 +{ + +// use insertion sort instead of std::sort (0.8% faster on Win/icc) +static void isort( Move *buf, MoveCount count ) +{ + for ( MoveCount i = 1; i 0 && buf[j-1] < m ) + { + buf[j] = buf[j-1]; + j--; + } + buf[j] = m; + } +} + +// MoveGen + +static const uint phaseNormalLegal[] = { + mpCapNoSort, + mpBufferLegal, + mpCastling, + mpCastlingBuffer, + mpQuietNoSort, + mpBufferLegal, + mpDone +}; + +static const uint phaseNormalNoCastlingLegal[] = { + mpCapNoSort, + mpBufferLegal, + mpQuietNoSort, + mpBufferLegal, + mpDone +}; + +static const uint phaseEvasLegal[] = { + mpEvasNoSort, + mpEvasBufferLegal, + mpDone +}; + +static const uint phaseNormal[] = { + mpHash, + mpCap, + mpCapBuffer, + mpKiller1, + mpKiller2, + mpCastling, + mpCastlingBuffer, + mpQuiet, + mpQuietBuffer, + mpBadCap, + mpBadCapBuffer, + mpDone +}; + +static const uint phaseNormalNoCastling[] = { + mpHash, + mpCap, + mpCapBuffer, + mpKiller1, + mpKiller2, + mpQuiet, + mpQuietBuffer, + mpBadCap, + mpBadCapBuffer, + mpDone +}; + +static const uint phaseEvas[] = { + mpHash, + mpKiller1, + mpKiller2, + mpEvas, + mpEvasBuffer, + mpDone +}; + +static const uint phaseQCapsNoCastling[] = { + mpHash, + mpQCap, + mpQCapBuffer, + mpDone +}; + +static const uint phaseQCaps[] = { + mpHash, + mpQCap, + mpQCapBuffer, + mpCastling, + mpCastlingBuffer, + mpDone +}; + +static const uint phaseQCapsChecks[] = { + mpHash, + mpQCap, + mpQCapBuffer, + mpQChecks, + mpQChecksBuffer, + mpDone +}; + +// legal only version +MoveGen::MoveGen( const Board &b_ ) : mode( mmLegal ), board(b_), killer(0), history(0), genMoveCount(0) +{ + dcMask = board.discovered(); + pin = board.pins(); + phPtr = board.inCheck() ? phaseEvasLegal : (board.canCastle() ? phaseNormalLegal : phaseNormalNoCastlingLegal ); +} + +MoveGen::MoveGen(const Board &b_, const Killer &killer_, const History &history_, uint mode_) + : mode(mode_), board(b_), killer(&killer_), history(&history_), genMoveCount(0) +{ + dcMask = board.discovered(); + pin = board.pins(); + + assert( !((killer->hashMove | killer->killers[0] | killer->killers[1]) & mmScore) ); + + switch( mode ) + { + case mmNormal: + phPtr = board.inCheck() ? phaseEvas : (board.canCastle() ? phaseNormal : phaseNormalNoCastling); + break; + case mmLegal: + phPtr = board.inCheck() ? phaseEvasLegal : (board.canCastle() ? phaseNormalLegal : phaseNormalNoCastlingLegal ); + break; + case mmQCaps: + phPtr = board.inCheck() ? phaseEvas : (board.canCastle() ? phaseQCaps : phaseQCapsNoCastling); + break; + case mmQCapsChecks: + phPtr = board.inCheck() ? phaseEvas : phaseQCapsChecks; + break; + } +} + +bool MoveGen::alreadyGenerated( Move m ) +{ + m &= mmNoScore; + for (MoveCount i=0; ihashMove; + phPtr++; + if ( !res || !(board.inCheck() ? board.isLegal<1,0>( res, pins() ) : board.isLegal<0,0>( res, pins() ) ) ) + goto loop; + + genMoves[ genMoveCount++ ] = res; + break; + case mpKiller1: + res = killer->killers[0]; + phPtr++; + if ( !res || alreadyGenerated(res) || + !(board.inCheck() ? board.isLegal<1,1>( res, pins() ) : board.isLegal<0,1>( res, pins() ) ) ) + goto loop; + genMoves[ genMoveCount++ ] = res; + break; + case mpKiller2: + res = killer->killers[1]; + phPtr++; + if ( !res || alreadyGenerated(res) || + !(board.inCheck() ? board.isLegal<1,1>( res, pins() ) : board.isLegal<0,1>( res, pins() ) ) ) + goto loop; + genMoves[ genMoveCount++ ] = res; + break; + case mpCapNoSort: + count = generateCaptures( board, moveBuf ); + index = 0; + phPtr++; + goto loop; + break; + case mpCap: + count = generateCaptures( board, moveBuf ); + index = badCapCount = 0; + scoreCaptures(); + phPtr++; + goto loop; + break; + case mpBadCap: + index = 0; + phPtr++; + goto loop; + break; + case mpQCap: + count = generateCaptures( board, moveBuf, 0 ); + index = 0; + scoreCaptures(); + phPtr++; + goto loop; + break; + case mpQChecks: + count = board.turn() == ctWhite ? + generateChecks< ctWhite >( moveBuf ) : generateChecks< ctBlack >( moveBuf ); + scoreChecks(); + index = 0; + phPtr++; + goto loop; + break; + case mpCastling: + assert( board.canCastle() ); + index = 0; + count = board.turn() == ctWhite ? + generateCastling< ctWhite >( board, moveBuf ) + : generateCastling< ctBlack >( board, moveBuf ); + phPtr++; + goto loop; + break; + case mpQuietNoSort: + count = generateQuiet( board, moveBuf ); + index = 0; + phPtr++; + goto loop; + break; + case mpQuiet: + count = generateQuiet( board, moveBuf ); + scoreQuiet(); + index = 0; + phPtr++; + goto loop; + break; + case mpEvasNoSort: + count = generateEvasions( board, moveBuf ); + index = 0; + phPtr++; + goto loop; + break; + case mpEvas: + count = generateEvasions( board, moveBuf ); + scoreEvasions(); + index = 0; + phPtr++; + goto loop; + break; + case mpCapBuffer: + // here we'll ocassionally move to badcaps so it's different + do + { +loopcap: + if ( index >= count ) + { + phPtr++; + goto loop; + } + res = moveBuf[ index++ ]; + + if ( alreadyGenerated(res) ) + goto loopcap; + + // do fast(sign) see + if ( board.see<1>(res) < 0 ) + { + // bad capture detected + assert( badCapCount < maxCaptures ); + badCaps[ badCapCount++ ] = res; + goto loopcap; + } + } while( !board.pseudoIsLegal<0>( res, pin ) ); + break; + case mpQCapBuffer: + // here we'll ocassionally move to badcaps so it's different + do + { +qloopcap: + if ( index >= count ) + { + phPtr++; + goto loop; + } + res = moveBuf[ index++ ]; + + if ( alreadyGenerated(res) ) + goto qloopcap; + + // do fast(sign) see + if ( board.see<1>( res ) < 0 ) + // bad capture detected + goto qloopcap; + } while( !board.pseudoIsLegal<0>( res, pin ) ); + break; + case mpCastlingBuffer: + if ( index >= count ) + { + phPtr++; + goto loop; + } + res = moveBuf[ index++ ]; + if ( alreadyGenerated(res) ) + goto loop; + break; + case mpCastlingBufferLegal: + if ( index >= count ) + { + phPtr++; + goto loop; + } + res = moveBuf[ index++ ]; + break; + case mpEvasBuffer: + do + { + if ( index >= count ) + { + phPtr++; + goto loop; + } + res = moveBuf[ index++ ]; + } while ( alreadyGenerated(res) || !board.pseudoIsLegal<1>( res, pin ) ); + break; + case mpEvasBufferLegal: + do + { + if ( index >= count ) + { + phPtr++; + goto loop; + } + res = moveBuf[ index++ ]; + } while ( !board.pseudoIsLegal<1>( res, pin ) ); + break; + case mpBufferLegal: + do + { + if ( index >= count ) + { + phPtr++; + goto loop; + } + res = moveBuf[ index++ ]; + } while ( !board.pseudoIsLegal<0>( res, pin ) ); + break; + case mpQuietBuffer: + do + { + if ( index >= count ) + { + phPtr++; + goto loop; + } + res = moveBuf[ index++ ]; + } while ( alreadyGenerated(res) || !board.pseudoIsLegal<0>( res, pin ) ); + break; + case mpQChecksBuffer: + do + { +checksloop: + if ( index >= count ) + { + phPtr++; + goto loop; + } + res = moveBuf[ index++ ]; + if ( alreadyGenerated(res) ) + goto checksloop; + if ( MovePack::isCastling(res) ) + break; + if ( board.see<1>( res ) < 0 ) + continue; // skip bad see checks + } while ( !board.pseudoIsLegal<0>( res, pin ) ); + assert( board.isCheck( res, dcMask ) ); + break; + case mpBadCapBuffer: + do + { + if ( index >= badCapCount ) + { + phPtr++; + goto loop; + } + res = badCaps[ index++ ]; + } while( alreadyGenerated(res) || !board.pseudoIsLegal<0>( res, pin ) ); + break; + default: //case mpDone: + res = mcNone; + break; + } + return res & mmNoScore; // remove score +} + +// scoring and sorting + +void MoveGen::scoreCaptures() +{ + // MVV/LVA-based + Move *mp = moveBuf; + const Move *me = mp + count; + for ( ;mp < me; mp++ ) + { + assert( !(*mp & mmScore) ); + if ( !MovePack::isCapture( *mp ) ) + { + *mp += MovePack::promo( *mp ) << msScore; + continue; + } + // apply MVV/LVA + Piece mvv = Tables::mvvValue[ PiecePack::type( board.piece( MovePack::to( *mp ) ) ) ]; + Piece lva = Tables::lvaValue[ PiecePack::type( board.piece( MovePack::from( *mp ) ) ) ]; + assert( mvv ); + *mp += ( (((mvv << 3) - lva)<<3) + MovePack::promo( *mp ) ) << msScore; + } + isort( moveBuf, count ); +} + +void MoveGen::scoreEvasions() +{ + Move *mp = moveBuf; + const Move *me = moveBuf + count; + for ( ;mp < me; mp++ ) + { + assert( !(*mp & mmScore) ); + if ( board.see<0>(*mp) >= 0 ) + { + if ( MovePack::isCapture(*mp) ) + { + // captures by MVV/LVA + Piece mvv = Tables::mvvValue[ PiecePack::type( board.piece( MovePack::to( *mp ) ) ) ]; + Piece lva = Tables::lvaValue[ PiecePack::type( board.piece( MovePack::from( *mp ) ) ) ]; + *mp += ( ((mvv << 3) - lva) + 1 + 2*History::historyMax ) << msScore; + } + else + // history + *mp += (history->score( board, *mp ) + History::historyMax) << msScore; + } + } + isort( moveBuf, count ); +} + +void MoveGen::scoreChecks() +{ +// isort( moves, count ); +} + +void MoveGen::scoreQuiet() +{ + // history-based + Move *mp = moveBuf; + const Move *me = mp + count; + for ( ;mp < me; mp++ ) + { + assert( !(*mp & mmScore) ); + // apply history + *mp += (history->score( board, *mp ) + History::historyMax) << msScore; + } + isort( moveBuf, count ); +} + +static Board dummyBoard; + +// can't copy +MoveGen::MoveGen( const MoveGen & ) : board(dummyBoard), killer(0), history(0) +{ + assert( 0 && "illegal copying of MoveGen class!" ); +} + +// can't assign +MoveGen &MoveGen::operator =( const MoveGen & ) +{ + assert( 0 && "illegal assignment of MoveGen class!" ); + return *this; +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/movegen.h b/Engines/Linux/cheng/src/cheng4/movegen.h new file mode 100644 index 0000000..4f96458 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/movegen.h @@ -0,0 +1,674 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +// TODO: get rid of copy-paste code for slow versions somehow + +#include "move.h" +#include "tables.h" +#include "board.h" +#include "magic.h" +#include "killer.h" +#include "history.h" + +namespace cheng4 +{ + +enum MoveGenMode +{ + mmNormal, // normal mode + mmLegal, // perft: legal-only mode + mmQCaps, // quiescence captures and promotions only + mmQCapsChecks // quiescence captures, promotions and checks only +}; + +// movegen phases +enum MoveGenPhase +{ + mpDone, // all done + mpHash, // hashmove + mpCap, // captures and promotions (note that only good/winning captures belong here) + mpCapBuffer, // buffer phases: picks sorted moves from buffer + mpQCap, // quiescence captures and promotions (ignores underpromotions) + mpQCapBuffer, + mpQChecks, // qchecks + mpQChecksBuffer, + mpKiller1, // killer1 + mpKiller2, // killer2 + mpCastling, // castling moves + mpCastlingBuffer, + mpQuiet, // quiet moves + mpQuietBuffer, + mpBadCap, // bad captures + mpBadCapBuffer, + mpEvas, // evasions + mpEvasBuffer, + // special non-sorting versions for full legal movegen (perft) + mpCapNoSort, + mpQuietNoSort, + mpBufferLegal, + mpCastlingBufferLegal, + mpEvasNoSort, + mpEvasBufferLegal +}; + +class MoveGen +{ + // can't assign/copy + MoveGen &operator =( const MoveGen & ); + MoveGen( const MoveGen & ); +protected: + friend class Board; + template< Color color, bool underpromo, bool capture > static inline Move *genPromo( Square sq, + Square tsq, Move *moves ) + { + *moves++ = MovePack::initPromoMove< capture >( sq, tsq, ptQueen ); + if ( underpromo ) + { + *moves++ = MovePack::initPromoMove< capture >( sq, tsq, ptKnight ); + *moves++ = MovePack::initPromoMove< capture >( sq, tsq, ptBishop ); + *moves++ = MovePack::initPromoMove< capture >( sq, tsq, ptRook ); + } + return moves; + } + + template< Color color, bool underpromo > static Move *genPawnCaps( const Board &b, Move *moves ) + { + // FIXME: better handling of ep square? + Bitboard opp = b.pieces( flip(color) ); + Bitboard tmp = b.pieces( color, ptPawn ); + Square ep = b.epSquare(); + if ( ep ) + opp |= BitOp::oneShl( ep ); // a trick to add ep to target squares + while ( tmp ) + { + Square sq = BitOp::popBit( tmp ); + Bitboard targ = opp & Tables::pawnAttm[ color ][ sq ]; + + while ( targ ) + { + Square tsq = BitOp::popBit( targ ); + if ( SquarePack::relRank( tsq ) == RANK8 ) + // promo-captures + moves = genPromo< color, underpromo, 1 >( sq, tsq, moves ); + else + *moves++ = tsq == ep ? MovePack::initEpCapture( sq, tsq ) : MovePack::initCapture( sq, tsq ); + } + + // now handle standard promotions + if ( SquarePack::relRank( sq ) == RANK7 ) + { + Square tsq = SquarePack::advanceRank( sq ); + if ( b.isVacated( tsq ) ) + moves = genPromo< color, underpromo, 0 >( sq, tsq, moves ); + } + } + return moves; + } + + // because of evasions + template< Color color, bool underpromo > static Move *genPawnCapsSlow( Bitboard oopp, const Board &b, Move *moves ) + { + // FIXME: better handling of ep square? + Bitboard opp = oopp; + opp &= b.pieces( flip(color) ); + Bitboard tmp = b.pieces( color, ptPawn ); + Square ep = b.epSquare(); + if ( ep ) + opp |= BitOp::oneShl( ep ); // a trick to add ep to target squares + while ( tmp ) + { + Square sq = BitOp::popBit( tmp ); + Bitboard targ = opp & Tables::pawnAttm[ color ][ sq ]; + + while ( targ ) + { + Square tsq = BitOp::popBit( targ ); + if ( SquarePack::relRank( tsq ) == RANK8 ) + // promo-captures + moves = genPromo< color, underpromo, 1 >( sq, tsq, moves ); + else + *moves++ = tsq == ep ? MovePack::initEpCapture( sq, tsq ) : MovePack::initCapture( sq, tsq ); + } + + // now handle standard promotions + if ( SquarePack::relRank( sq ) == RANK7 ) + { + Square tsq = SquarePack::advanceRank( sq ); + if ( b.isVacated( tsq ) && (oopp & BitOp::oneShl( tsq )) ) + moves = genPromo< color, underpromo, 0 >( sq, tsq, moves ); + } + } + return moves; + } + + template< Color color > static Move *genPawnPushes( const Board &b, Move *moves ) + { + Bitboard tmp = b.pieces( color, ptPawn ); + while ( tmp ) + { + Square sq = BitOp::popBit( tmp ); + Square front = SquarePack::advanceRank< color, 1 >( sq ); + + if ( b.isVacated( front ) && SquarePack::relRank< color >( sq ) != RANK7 ) + { + // push forward (one) + *moves++ = MovePack::init( sq, front ); + if ( SquarePack::relRank< color >( sq ) == RANK2 ) + { + Square front2 = SquarePack::advanceRank< color, 1 >( front ); + if ( b.isVacated( front2 ) ) + // push forward (two) + *moves++ = MovePack::init( sq, front2 ); + } + } + } + return moves; + } + + // because of evasions + template< Color color > static Move *genPawnPushesSlow( Bitboard targm, const Board &b, Move *moves ) + { + Bitboard tmp = b.pieces( color, ptPawn ); + while ( tmp ) + { + Square sq = BitOp::popBit( tmp ); + Square front = SquarePack::advanceRank< color, 1 >( sq ); + + if ( b.isVacated( front ) && SquarePack::relRank< color >( sq ) != RANK7 ) + { + // push forward (one) + if ( targm & BitOp::oneShl( front ) ) + *moves++ = MovePack::init( sq, front ); + if ( SquarePack::relRank< color >( sq ) == RANK2 ) + { + Square front2 = SquarePack::advanceRank< color, 1 >( front ); + if ( b.isVacated( front2 ) && ( targm & BitOp::oneShl( front2 ) ) ) + // push forward (two) + *moves++ = MovePack::init( sq, front2 ); + } + } + } + return moves; + } + + template< Color color > static Move *genPawnChecks( Bitboard dc, Square ekp, + Bitboard targm, const Board &b, Move *moves ) + { + Bitboard tmp = b.pieces( color, ptPawn ); + while ( tmp ) + { + Square sq = BitOp::popBit( tmp ); + Square front = SquarePack::advanceRank< color, 1 >( sq ); + + if ( b.isVacated( front ) && SquarePack::relRank< color >( sq ) != RANK7 ) + { + // push forward (one) + Bitboard tom = BitOp::oneShl( front ); + Bitboard tm = targm; + if ( BitOp::oneShl(sq) & dc ) + // discovered checker + if ( !(tom & Tables::ray[ ekp ][ sq ] ) ) + tm = ~U64C(0); + + if ( tm & BitOp::oneShl( front ) ) + *moves++ = MovePack::init( sq, front ); + if ( SquarePack::relRank< color >( sq ) == RANK2 ) + { + Square front2 = SquarePack::advanceRank< color, 1 >( front ); + + tom = BitOp::oneShl( front2 ); + tm = targm; + if ( BitOp::oneShl(sq) & dc ) + // discovered checker + if ( !(tom & Tables::ray[ ekp ][ sq ] ) ) + tm = ~U64C(0); + + if ( b.isVacated( front2 ) && ( tm & tom ) ) + // push forward (two) + *moves++ = MovePack::init( sq, front2 ); + } + } + } + return moves; + } + + template< Color color, bool capture > static inline Move *genKnights( Bitboard tmask, + const Board &b, Move *moves ) + { + Bitboard tmp = b.pieces( color, ptKnight ); + while ( tmp ) + { + Square sq = BitOp::popBit( tmp ); + Bitboard targ = Tables::knightAttm[ sq ] & tmask; + + while ( targ ) + *moves++ = MovePack::initMove< capture >( sq, BitOp::popBit( targ ) ); + } + return moves; + } + + template< Color color, bool capture > static inline Move *genKnightChecks( + Bitboard dc, Bitboard dctmask, Bitboard tmask, const Board &b, Move *moves ) + { + Bitboard tmp = b.pieces( color, ptKnight ); + while ( tmp ) + { + Square sq = BitOp::popBit( tmp ); + Bitboard targ = Tables::knightAttm[ sq ] & ( (BitOp::oneShl(sq) & dc) ? dctmask : tmask ); + + while ( targ ) + *moves++ = MovePack::initMove< capture >( sq, BitOp::popBit( targ ) ); + } + return moves; + } + + // slow version for evasions + template< Color color > static inline Move *genKnightsSlow( Bitboard opp, Bitboard tmask, + const Board &b, Move *moves ) + { + Bitboard tmp = b.pieces( color, ptKnight ); + while ( tmp ) + { + Square sq = BitOp::popBit( tmp ); + Bitboard targ = Tables::knightAttm[ sq ] & tmask; + + while ( targ ) + { + Square tsq = BitOp::popBit( targ ); + *moves++ = ( BitOp::oneShl( tsq ) & opp ) ? + MovePack::initCapture( sq, tsq ) + : MovePack::init( sq, tsq ); + } + } + return moves; + } + + template< Color color, Piece piece, bool capture > static inline Move *genSliders( Bitboard occ, + Bitboard tmask, const Board &b, Move *moves ) + { + Bitboard tmp = b.pieces( color, piece ); + while ( tmp ) + { + Square sq = BitOp::popBit( tmp ); + Bitboard targ = Magic::sliderAttm( sq, occ ) & tmask; + while ( targ ) + *moves++ = MovePack::initMove< capture >( sq, BitOp::popBit( targ ) ); + } + return moves; + } + + template< Color color, Piece piece, bool capture > static inline Move *genSliderChecks( + Bitboard dc, Bitboard dctmask, Bitboard occ, Bitboard tmask, const Board &b, Move *moves ) + { + Bitboard tmp = b.pieces( color, piece ); + while ( tmp ) + { + Square sq = BitOp::popBit( tmp ); + Bitboard targ = Magic::sliderAttm( sq, occ ) & + ( (BitOp::oneShl(sq) & dc) ? dctmask : tmask ); + while ( targ ) + *moves++ = MovePack::initMove< capture >( sq, BitOp::popBit( targ ) ); + } + return moves; + } + + // slow version for evasions + template< Color color, Piece piece > static inline Move *genSlidersSlow( Bitboard occ, + Bitboard opp, Bitboard tmask, const Board &b, Move *moves ) + { + Bitboard tmp = b.pieces( color, piece ); + while ( tmp ) + { + Square sq = BitOp::popBit( tmp ); + Bitboard targ = Magic::sliderAttm( sq, occ ) & tmask; + while ( targ ) + { + Square tsq = BitOp::popBit( targ ); + *moves++ = ( BitOp::oneShl( tsq ) & opp ) ? + MovePack::initCapture( sq, tsq ) + : MovePack::init( sq, tsq ); + } + } + return moves; + } + + template< Color color, bool capture > static inline Move *genKingMoves( Bitboard tmask, const Board &b, + Move *moves ) + { + Square sq = b.king( color ); + Bitboard tmp = Tables::kingAttm[ b.king( color ) ] & tmask; + while ( tmp ) + *moves++ = MovePack::initMove( sq, BitOp::popBit( tmp ) ); + return moves; + } + + // slow version because of evasions + template< Color color > static inline Move *genKingMovesSlow( Bitboard opp, const Board &b, + Move *moves ) + { + Square sq = b.king( color ); + Bitboard tmp = Tables::kingAttm[ b.king( color ) ]; + tmp &= ~b.pieces( color ); // avoid self-captures + while ( tmp ) + { + Square tsq = BitOp::popBit( tmp ); + *moves++ = ( BitOp::oneShl( tsq ) & opp ) ? + MovePack::initCapture( sq, tsq ) + : MovePack::init( sq, tsq ); + } + return moves; + } + + // generate pseudolegal captures and promotions + // returns number of moves generated + template< Color color, bool underpromo > static MoveCount genCaps( const Board &b, Move *moves ) + { + Move *om = moves; + + Bitboard occ = b.occupied(); + Bitboard opp = b.pieces( flip(color) ); + + // generate pawn captures + moves = genPawnCaps< color, underpromo >( b, moves ); + + // knight captures + moves = genKnights< color, 1 >( opp, b, moves ); + + // bishop captures + moves = genSliders< color, ptBishop, 1 >( occ, opp, b, moves ); + + // rook captures + moves = genSliders< color, ptRook, 1 >( occ, opp, b, moves ); + + // queen captures + moves = genSliders< color, ptQueen, 1 >( occ, opp, b, moves ); + + // king captures + moves = genKingMoves< color, 1 >( opp, b, moves ); + + assert( moves - om < maxMoves ); + return (MoveCount)(moves - om); + } + + // generate castling move + template< Color color > static Move *genCastling( File rookfile, const Board &b, Move *moves ) + { + Square kp = b.king( color ); + File kf = SquarePack::file(kp); + Square ktarg = SquarePack::setFile( kp, (File)( (kf < rookfile) ? GFILE : CFILE ) ); + Square rtarg = SquarePack::setFile( kp, (File)( (kf < rookfile) ? FFILE : DFILE ) ); + Square rp = SquarePack::setFile( kp, rookfile ); + + assert( PiecePack::type( b.piece( rp ) ) == ptRook ); + + Color opc = flip( color ); + + Bitboard occ = b.occupied(); + + occ &= BitOp::noneShl( kp ); + occ &= BitOp::noneShl( rp ); + + // king/rook path + Bitboard kpath = Tables::between[ kp ][ ktarg ]; + Bitboard rpath = Tables::between[ rp ][ rtarg ]; + + if ( (kpath|rpath) & occ ) + return moves; // path blocked + + *moves = MovePack::initCastling( kp, ktarg ); + + // make sure all squares between kp and ktarg aren't attacked + int kpinc = (kp < ktarg) ? +1 : -1; + for( ;kp != ktarg ;kp = (Square)((int)kp + kpinc) ) + { + if ( b.doesAttack<1>( opc, kp, occ ) ) + return moves; + } + return moves + !b.doesAttack<1>( opc, kp, occ ); + } + + template< Color color > static MoveCount genQuiet( const Board &b, Move *moves ) + { + Move *om = moves; + + Bitboard occ = b.occupied(); + Bitboard nocc = ~occ; + + // now generate pawn pushes + moves = genPawnPushes< color >( b, moves ); + + // knight moves + moves = genKnights< color, 0 >( nocc, b, moves ); + + // bishop moves + moves = genSliders< color, ptBishop, 0 >( occ, nocc, b, moves ); + + // rook moves + moves = genSliders< color, ptRook, 0 >( occ, nocc, b, moves ); + + // queen moves + moves = genSliders< color, ptQueen, 0 >( occ, nocc, b, moves ); + + // king moves + moves = genKingMoves< color, 0 >( nocc, b, moves ); + + assert( moves - om < maxMoves ); + return (MoveCount)(moves - om); + } + + template< Color color > static MoveCount genEvas( const Board &b, Move *moves ) + { + /* + let's think a bit about it: + if not doublecheck: + possible evasions: capture checker + if checker is a slider, move piece to mask between king and checker + finally king moves + */ + + Move *om = moves; + Bitboard opp = b.pieces( flip(color) ); + Bitboard evasMask = b.evasions(); + if ( evasMask ) + { + // generate non-king moves + + Bitboard occ = b.occupied(); + + // pawns + // FIXME: better! + moves = genPawnCapsSlow< color, 1 >( evasMask, b, moves ); + moves = genPawnPushesSlow< color >( evasMask, b, moves ); + + // knights + moves = genKnightsSlow< color >( opp, evasMask, b, moves ); + + // bishops + moves = genSlidersSlow< color, ptBishop >( occ, opp, evasMask, b, moves ); + + // rooks + moves = genSlidersSlow< color, ptRook >( occ, opp, evasMask, b, moves ); + + // queens + moves = genSlidersSlow< color, ptQueen >( occ, opp, evasMask, b, moves ); + } + // finally generate king moves (castling is not an option here) + moves = genKingMovesSlow< color >( opp, b, moves ); + + assert( moves - om < maxMoves ); + return (MoveCount)(moves - om); + } + + static inline MoveCount generateCaptures( const Board &b, Move *moves, bool underpromo = 1 ) + { + if ( underpromo ) + return b.turn() == ctWhite ? genCaps< ctWhite, 1 >( b, moves ) : genCaps< ctBlack, 1 >( b, moves ); + else + return b.turn() == ctWhite ? genCaps< ctWhite, 0 >( b, moves ) : genCaps< ctBlack, 0 >( b, moves ); + } + + static inline MoveCount generateQuiet( const Board &b, Move *moves ) + { + // promotions already generated + // now generate castling moves and quiet moves + return b.turn() == ctWhite ? genQuiet< ctWhite >( b, moves ) : genQuiet< ctBlack >( b, moves ); + } + + template< Color color > static inline MoveCount generateCastling( const Board &b, Move *moves ) + { + const Move *om = moves; + CastRights cr = b.castRights( color ); + if ( CastPack::allowedShort( cr ) ) + // do short castling (kingside) + moves = genCastling< color >( CastPack::shortFile(cr), b, moves ); + + if ( CastPack::allowedLong( cr ) ) + // do long castling (queenside) + moves = genCastling< color >( CastPack::longFile(cr), b, moves ); + return (MoveCount)(moves - om); + } + + // qsearch generate_checks helper + template< Color color > inline MoveCount generateChecks( Move *moves ) + { + const Board &b = board; + assert( !b.inCheck() ); + // we don't generate any captures/underpromotions here + // three possibilities: + // - direct checks + // - discovered checks + // - castling into check + const Move *om = moves; + Square ekp = b.king( flip(color) ); + Bitboard occ = b.occupied(); + Bitboard nocc = ~occ; + Bitboard diagMask = Magic::bishopAttm( ekp, occ ); + Bitboard orthoMask = Magic::rookAttm( ekp, occ ); + + // direct pawn checks + // note that this shouldn't generate promotions anyway! + moves = genPawnChecks< color >( dcMask, ekp, Tables::pawnAttm[ flip(color) ][ ekp ] & nocc, b, moves ); + + // knight checks + moves = genKnightChecks< color, 0 >( dcMask, nocc, Tables::knightAttm[ ekp ] & nocc, b, moves ); + + // bishop checks + moves = genSliderChecks< color, ptBishop, 0 >( dcMask, nocc, occ, diagMask & nocc, b, moves ); + + // rook checks + moves = genSliderChecks< color, ptRook, 0 >( dcMask, nocc, occ, orthoMask & nocc, b, moves ); + + // direct queen checks (can't give discovered checks) + moves = genSliders< color, ptQueen, 0 >( occ, (orthoMask | diagMask) & nocc, b, moves ); + + // king can only give a discovered check + Square kp = b.king( color ); + if ( dcMask & BitOp::oneShl( kp ) ) + moves = genKingMoves< color, 0 >( Tables::kingAttm[ kp ] & nocc & ~Tables::ray[ ekp ][ kp ], b, moves ); + + // last thing to try: castling into check! + CastRights cr = b.castRights( color ); + if ( cr ) + { + // FIXME: better?! + Move cm; + if ( CastPack::allowedShort(cr) ) + { + Move *tmp = color == ctWhite ? + MoveGen::genCastling< ctWhite >( CastPack::shortFile(cr), b, &cm ) : + MoveGen::genCastling< ctBlack >( CastPack::shortFile(cr), b, &cm ); + if ( tmp > &cm && b.isCheck( cm, dcMask ) ) + *moves++ = cm; + } + if ( CastPack::allowedLong(cr) ) + { + Move *tmp = color == ctWhite ? + MoveGen::genCastling< ctWhite >( CastPack::longFile(cr), b, &cm ) : + MoveGen::genCastling< ctBlack >( CastPack::longFile(cr), b, &cm ); + if ( tmp > &cm && b.isCheck( cm, dcMask ) ) + *moves++ = cm; + } + } + return (MoveCount)(moves - om); + } + + // generate (pseudolegal) evasion moves (=moves out of check) + static inline MoveCount generateEvasions( const Board &b, Move *moves ) + { + return b.turn() == ctWhite ? genEvas< ctWhite >( b, moves ) : genEvas< ctBlack >( b, moves ); + } + + uint mode; // movegen mode + const Board &board; // board ref + const Killer * const killer; // killer ref (includes hashmove) + const History * const history; // history ref + Bitboard dcMask; // discovered checkers + Bitboard pin; // pins + const uint *phPtr; // phase ptr + MoveCount index; // move buffer index + MoveCount count; // move buffer count + MoveCount badCapCount; // bad capture buffer move count + Move moveBuf[ maxMoves ]; // move buffer + Move badCaps[ maxCaptures ]; // bad captures buffer + + Move genMoves[ 4 ]; // already generated moves (hash, killers) (FIXME: use constant, rename) + MoveCount genMoveCount; // number of already generated moves + + // score and sort specific moves + void scoreCaptures(); + void scoreEvasions(); + void scoreChecks(); + void scoreQuiet(); + + bool alreadyGenerated( Move m ); + +public: + MoveGen( const Board &b, const Killer &killer, const History &history, uint mode = mmNormal ); + // legal only version + MoveGen( const Board &b ); + + // generate next move, if mcNone is returned => no more moves available + Move next(); + + // returns discovered checkers mask (always) + inline Bitboard discovered() const + { + return dcMask; + } + + // returns pin mask (always) + inline Bitboard pins() const + { + return pin; + } + + // current movegen phase + inline uint phase() const + { + return *phPtr; + } +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/prng.h b/Engines/Linux/cheng/src/cheng4/prng.h new file mode 100644 index 0000000..c9530f5 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/prng.h @@ -0,0 +1,67 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "types.h" + +namespace cheng4 +{ + +struct PRNG +{ + u64 keys[4]; // 4 keys + + static inline u64 rol( u64 r, u8 amt ) + { + assert( amt != 0 && amt < 64 ); + return (r << amt) | (r >> (64-amt) ); + } + static inline u64 ror( u64 r, u8 amt ) + { + assert( amt != 0 && amt < 64 ); + return (r >> amt) | (r << (64-amt) ); + } + + // passes diehard tests! + // can't test dieharder under windows + // one round of PRNG + inline u64 next64() + { + u64 tmp = keys[0] + keys[2] - keys[1] - keys[3]; + keys[0] ^= rol( keys[1], 5 ); + keys[1] += ror( keys[2], 27 ); + keys[2] -= rol( keys[3], 41 ); + return keys[3] ^= ror( tmp, 17 ) - 0xfacebabec0ca101aULL; + } + + PRNG( u64 seed = 0 ) + { + keys[0] = keys[1] = keys[2] = keys[3] = seed; + // scramble + for (int i=0; i<64; i++) + next64(); + } +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/protocol.cpp b/Engines/Linux/cheng/src/cheng4/protocol.cpp new file mode 100644 index 0000000..43304e0 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/protocol.cpp @@ -0,0 +1,2182 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "protocol.h" +#include "engine.h" +#include "version.h" +#include "movegen.h" +#include "thread.h" +#include "tune.h" +#include "utils.h" +#include "filterpgn.h" +#include +#include +#include + +// these because of pbook +#include +#include +#include +#include + +#ifdef IS_X64 +# define maxHash "16384" +#else +# define maxHash "1024" +#endif + +// TODO: - refactor into separate methods, simplify + +namespace cheng4 +{ + +static u64 pbook( std::ofstream &ofs, std::set< Signature > &procmap, Board &b, Search &s, + std::vector &line, Ply p, Depth d ) +{ + u64 res = 0; + + std::set< Signature >::const_iterator ci = procmap.find(b.sig()); + if ( ci != procmap.end() ) + return res; + SearchMode sm; + sm.reset(); + sm.maxDepth = 18; + sm.multiPV = 16 >> p; + if ( sm.multiPV > 8 ) + sm.multiPV = 8; + if ( sm.multiPV < 2 ) + sm.multiPV = 2; + if ( d == 1 ) + sm.multiPV = 1; + s.clearHash(); + s.clearSlots(); + s.iterate(b, sm, 1); + procmap.insert( b.sig() ); + + std::vector< Move > moves; + + size_t num = std::min( (size_t)sm.multiPV, s.rootMoves.count ); + for (size_t i=0; iscore) > 40 ) + continue; + moves.push_back( s.rootMoves.sorted[i]->move ); + } + if ( moves.empty() ) + return res; + + if ( d <= 0 ) + { + // dump line + std::string l; + Board tb; + tb.reset(); + for (size_t i=0; i okmap; + TransTable tt; + Search *s = new Search; + tt.resize( 64*4096*1024 ); // 256 MB + s->setHashTable( &tt ); + Board b; + b.reset(); + std::ofstream ofs("booklines.txt"); + std::vector< Move > line; + u64 res = pbook( ofs, okmap, b, *s, line, 0, 8 ); + if ( !ofs ) + { + std::cout << "can't write outfile" << std::endl; + } + std::cout << "positions: " << res << std::endl; + delete s; +} + +static void runEPDSuite( const EPDFile &epd, Depth depth ) +{ + TransTable tt; + Search *s = new Search; + tt.resize( 4096*1024 ); + s->setHashTable( &tt ); + size_t matching = 0; + size_t total = epd.positions.size(); + for ( size_t i=0; iclearSlots(); + s->clearHash(); + Board b; + if ( !b.fromFEN( ep.fen.c_str() ) ) + continue; + SearchMode sm; + sm.reset(); + sm.maxDepth = depth; + s->iterate( b, sm, 1 ); + Move bm = s->iterBest; + size_t j; + for ( j=0; jresize( 1*1048576 ); + s->setHashTable(tt); + Board b; + SearchMode sm; + sm.reset(); + sm.maxDepth = 15; + + const char **p = benchFens; + + i32 ticks = Timer::getMillisec(); + while ( *p ) + { + s->clearHash(); + s->clearSlots(); + b.fromFEN( *p++ ); + s->iterate(b, sm, 1 ); + total += s->nodes; + } + ticks = Timer::getMillisec() - ticks; + delete tt; + delete s; + std::cout << total << " nodes in " + << ticks << " msec (" << std::fixed + << total*1000/(ticks ? ticks : 1) << " nps)" << std::endl; +} + +static NodeCount perft( cheng4::Board &b, Depth depth ) +{ + if ( !depth ) + return 1; + NodeCount res = 0; + + MoveGen mg( b ); + + if ( depth == 1 ) + { + // bulk counting only + while ( mg.next() != mcNone ) + res++; + return res; + } + + Move m; + UndoInfo ui; + + while ( (m = mg.next()) != mcNone ) + { + bool isCheck = b.isCheck(m, mg.discovered() ); + + b.doMove( m, ui, isCheck ); + res += perft( b, depth-1 ); + b.undoMove( ui ); + } + + return res; +} + +static bool pbench() +{ + uint count = 0; + for (const PerfTest *pt = suite; pt->fen; pt++ ) + count++; + + i32 totticks = Timer::getMillisec(); + + uint index = 0; + uint fails = 0; + for (const PerfTest *pt = suite; pt->fen; pt++, index++ ) + { + std::cout << "position " << 1+index << "/" << count << " : " << pt->fen << std::endl; + + cheng4::Board b; + if ( !b.fromFEN( pt->fen ) ) + { + std::cout << "ILLEGAL FEN!" << std::endl; + return 0; + } + + NodeCount result; + i32 ticks = Timer::getMillisec(); + std::cout << "perft(" << (int)pt->depth << ") = " << (result = perft( b, pt->depth )) << std::endl; + ticks = Timer::getMillisec() - ticks; + std::cout << "took " << (double)ticks / 1000.0 << " sec, " << (double)result / 1000.0 / (double)ticks << " Mnps" << std::endl; + + if ( result != pt->count ) + fails++; + + std::cout << ((result == pt->count) ? "passed" : "FAILED!") << std::endl; + } + totticks = Timer::getMillisec() - totticks; + std::cout << "total " << (double)totticks / 1000.0 << " sec" << std::endl; + if ( fails ) + std::cout << fails << " / " << count << " FAILED!" << std::endl; + else + std::cout << "ALL OK" << std::endl; + return !fails; +} + +static void filterPgn( const char *fname ) +{ + FilterPgn fp; + if (!fp.parse(fname)) + { + std::cout << "failed to parse " << fname << std::endl; + return; + } + if (!fp.write("filterPgn_out.fen")) + std::cout << "failed to write filterPgn_out.fen" << std::endl; + else + std::cout << "all ok" << std::endl; +} + +// Protocol + +void Protocol::Level::reset() +{ + moves = 0; + mins = 0; + secs = 0; + inc = 0; + move = 1; +} + +static void protoCallback( const SearchInfo &si, void *param ) +{ + static_cast(param)->searchCallback( si ); +} + +Protocol::Protocol( Engine &eng ) : multiPV(1), protover(1), analyze(0), force(0), clocksRunning(0), engineColor(ctBlack), + invalidState(0), frc(0), edit(0), post(1), fixedTime(0), maxCores(64), adjudicated(0), type( ptNative ), + engine(eng), quitFlag(0) +{ + level.reset(); + + npsLimit = 0; + depthLimit = 0; + timeLimit = 0; + etime = otime = 60*1000; + searchMode.reset(); + eng.setCallback( protoCallback, this ); +} + +Protocol::~Protocol() +{ + engine.setCallback( 0, 0 ); +} + +bool Protocol::parse( const std::string &line ) +{ + MutexLock _( parseMutex ); + switch( type ) + { + case ptUCI: + return parseUCI( line ); + case ptCECP: + return parseCECP( line ); + case ptNative: + break; + } + if ( line == "uci" ) + { + type = ptUCI; + return parseUCI( line ); + } + if ( line == "xboard" ) + { + type = ptCECP; + return parseCECP( line ); + } + if ( line == "quit" ) + { + quitFlag = 1; + return 1; + } + // new: force uci mode if not otherwise specified + type = ptUCI; + engine.setUCIMode(1); + return parseUCI(line); +} + +bool Protocol::shouldQuit() const +{ + return quitFlag; +} + +// start sending (reset buffer) +void Protocol::sendStart( uint flags ) +{ + mutex.lock(); + sendStr.str( std::string() ); + switch( type ) + { + case ptUCI: + if ( !(flags & (sifRaw | sifBestMove | sifPonderMove)) ) + sendStr << "info"; + break; + case ptCECP: + break; + case ptNative: + break; + } +} + +// start sending (reset buffer) +void Protocol::sendEnd() +{ + // coding around rdbuf()->in_avail() which doesn't always work! + std::string strg = sendStr.str(); + if ( !strg.empty() ) + { + std::cout << strg << std::endl; + std::cout.flush(); // FIXME: this is necessary under Linux to work properly under xboard + } + mutex.unlock(); +} + +// called from search +void Protocol::searchCallback( const SearchInfo &si ) +{ + sendStart( si.flags ); + + if ( si.flags & sifDepth ) + sendDepth( si.depth ); + if ( si.flags & sifSelDepth ) + sendSelDepth( si.selDepth ); + if ( si.flags & sifTime ) + sendTime( si.time ); + if ( si.flags & sifNodes ) + sendNodes( si.nodes ); + if ( si.flags & sifNPS ) + sendNPS( si.nps ); + if ( si.flags & sifCurIndex ) + sendCurIndex( si.curIndex, si.curCount ); + if ( si.flags & sifCurMove ) + sendCurMove( si.curMove ); + if ( si.flags & sifPV ) + { + assert( (si.flags & sifNodes) && (si.flags & sifTime) && (si.flags & sifDepth) ); + sendPV( si, si.pvIndex, si.pvScore, si.pvBound, (size_t)si.pvCount, si.pv ); + } + if ( si.flags & sifBestMove ) + sendBest( si.bestMove, (si.flags & sifPonderMove) ? si.ponderMove : mcNone ); + + sendEnd(); + + if ( si.flags & sifBestMove ) + finishBest(); +} + +// send current depth +void Protocol::sendDepth( Depth d ) +{ + switch( type ) + { + case ptUCI: + sendStr << " depth " << (int)d; + break; + case ptCECP: + case ptNative: + break; + } +} + +// send selective depth +void Protocol::sendSelDepth( Ply d ) +{ + switch( type ) + { + case ptUCI: + sendStr << " seldepth " << (int)d; + break; + case ptCECP: + case ptNative: + break; + } +} + +// send time +void Protocol::sendTime( Time time ) +{ + switch( type ) + { + case ptUCI: + sendStr << " time " << time; + break; + case ptCECP: + case ptNative: + break; + } +} + +// send nodes +void Protocol::sendNodes( NodeCount n ) +{ + switch( type ) + { + case ptUCI: + sendStr << " nodes " << n; + break; + case ptCECP: + case ptNative: + break; + } +} + +// send nodes +void Protocol::sendNPS( NodeCount n ) +{ + switch( type ) + { + case ptUCI: + sendStr << " nps " << n; + break; + case ptCECP: + case ptNative: + break; + } +} + +// send current move index (zero based) +void Protocol::sendCurIndex( MoveCount index, MoveCount /*count*/ ) +{ + switch( type ) + { + case ptUCI: + sendStr << " currmovenumber " << (index+1); + break; + case ptCECP: + case ptNative: + break; + } +} + +// send current move +void Protocol::sendCurMove( Move move ) +{ + switch( type ) + { + case ptUCI: + sendStr << " currmove " << engine.board().toUCI(move); + break; + case ptCECP: + case ptNative: + break; + } +} + +static std::string uciScore( Score score ) +{ + std::stringstream res; + if ( ScorePack::isMate( score ) ) + { + int msc = score >= 0 ? (scInfinity - score)/2 + 1 : (-scInfinity - score + 1)/2 - 1; + assert( msc ); + assert( (msc >= 0 && score >= 0) || (msc < 0 && score < 0) ); + res << "mate " << msc; + } else res << "cp " << score; + return res.str(); +} + +// index: k-best(multipv) zero-based index +void Protocol::sendPV( const SearchInfo &si, uint index, Score score, enum BoundType bound, size_t pvCount, + const Move *pv ) +{ + switch( type ) + { + case ptUCI: + if ( bound == btLower ) + sendStr << " lowerbound "; + else if ( bound == btUpper ) + sendStr << " upperbound "; + sendStr << " multipv " << (1+index) << " score " << uciScore( score ) << " pv"; + for (size_t i=0; i disabled + sendStr << (bound == btUpper ? '-' : bound == btLower ? '+' : ' '); + sendStr << " "; + sendStr.width(5); + // TODO: convert score to pseudo-standard mate scores + sendStr << score << " "; + sendStr.width(8); + sendStr << (t/10) << " "; + sendStr.width(12); + sendStr << n; + Board b( engine.board() ); + + Move ponder = mcNone; + if ( engine.isPondering() ) + ponder = engine.getPonderMove(); + + if ( ponder != mcNone ) + sendStr << " (" << engine.ponderBoard().toSAN( ponder ) << ')'; + + for (size_t i=0; i beg ) + res = std::string( beg, c ); + start = c - str.c_str(); + return res; +} + +// to simplify option parsing +static std::string nextOptToken( const std::string &str, size_t &start ) +{ + std::string res; + const char *c = str.c_str() + start; + // consume initial whitespace/= + while ( *c && isspace(*c & 255) ) + c++; + const char *beg = c; + // token + while ( *c && *c != '=' ) + c++; + if ( c > beg ) + res = std::string( beg, c ); + start = c - str.c_str(); + if ( *c == '=' ) + start++; + return res; +} + +// parse UCI command +bool Protocol::parseUCI( const std::string &line ) +{ + size_t pos = 0; + std::string token = nextToken( line, pos ); + if ( token.empty() ) + return 0; + + if ( token == "ponderhit" ) + { + engine.ponderHit(); + return 1; + } + if ( token == "stop" ) + { + engine.stopSearch(); + return 1; + } + if ( token == "isready" ) + { + sendStart( sifRaw ); + sendRaw( "readyok" ); + sendEnd(); + return 1; + } + if ( token == "go" ) + { + SearchMode sm; + sm.reset(); + sm.multiPV = multiPV; + + i32 wtime, btime, winc, binc, movestogo; + wtime = btime = winc = binc = movestogo = 0; + + for (;;) + { + token = nextToken( line, pos ); + if ( token.empty() ) + break; + if ( token == "ponder" ) + { + sm.ponder = 1; + } + else + if ( token == "infinite" ) + { + sm.reset(); + sm.multiPV = multiPV; + } + else if ( token == "movetime" ) + { + // parse movetime + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "movetime requires time parameter", line ); + return 0; + } + long mt = strtol( token.c_str(), 0, 10 ); + if ( mt <= 0 ) + mt = -1; + sm.absLimit = sm.maxTime = (i32)mt; + sm.fixedTime = 1; + } + else if ( token == "movestogo" ) + { + // parse movestogo + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "movestogo requires int parameter", line ); + return 0; + } + long mt = strtol( token.c_str(), 0, 10 ); + movestogo = (i32)mt; + } + else if ( token == "winc" ) + { + // parse winc + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "winc requires int parameter", line ); + return 0; + } + long i = strtol( token.c_str(), 0, 10 ); + winc = (i32)i; + } + else if ( token == "binc" ) + { + // parse binc + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "binc requires int parameter", line ); + return 0; + } + long i = strtol( token.c_str(), 0, 10 ); + binc = (i32)i; + } + else if ( token == "wtime" ) + { + // parse wtime + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "wtime requires time parameter", line ); + return 0; + } + long t = strtol( token.c_str(), 0, 10 ); + if ( t <= 0 ) + t = -1; + wtime = (i32)t; + } + else if ( token == "btime" ) + { + // parse btime + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "btime requires time parameter", line ); + return 0; + } + long t = strtol( token.c_str(), 0, 10 ); + if ( t <= 0 ) + t = -1; + btime = (i32)t; + } + else if ( token == "depth" ) + { + // parse depth + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "depth requires int parameter", line ); + return 0; + } + long i = strtol( token.c_str(), 0, 10 ); + sm.maxDepth = (Depth)std::min( (int)maxDepth, (int)i ); + } + else if ( token == "mate" ) + { + // parse mate + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "mate requires int parameter", line ); + return 0; + } + long i = strtol( token.c_str(), 0, 10 ); + sm.mateSearch = (uint)std::max(0l, i); + } + else if ( token == "nodes" ) + { + // parse nodes + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "nodes requires int parameter", line ); + return 0; + } + std::stringstream ss; + ss.str( token ); + ss >> sm.maxNodes; + } else if ( token == "searchmoves" ) + { + // parse moves to restrict search to + for (;;) + { + size_t opos = pos; + token = nextToken( line, pos ); + if ( token.empty() ) + break; + // now parse UCI move + const Board &b = engine.board(); + Move m = b.fromUCI( token ); + bool legal = b.inCheck() ? b.isLegal<1, 0>(m, b.pins() ) : + b.isLegal<0, 0>(m, b.pins() ); + if ( !legal ) + { + pos = opos; + break; + } + sm.moves.push_back( m ); + } + } + } + + if ( wtime || btime ) + { + // tournament time controls! + engine.abortSearch(); + Color turn = engine.mainThread->search.board.turn(); + + i32 mytime, myinc, optime, opinc; + if ( turn == ctWhite ) + { + mytime = wtime; + myinc = winc; + optime = btime; + opinc = binc; + } + else + { + mytime = btime; + myinc = binc; + optime = wtime; + opinc = winc; + } + allocTime( mytime, myinc, optime, opinc, movestogo, sm ); + } + + engine.startSearch( sm ); + return 1; + } + if ( token == "position" ) + { + engine.abortSearch(); + token = nextToken( line, pos ); + if ( token.empty() ) + return 0; + if ( token == "startpos" ) + { + engine.resetBoard(); + } else if ( token == "fen" ) + { + Board b; + const char *c = line.c_str() + pos; + c = b.fromFEN( c ); + if ( !c ) + { + error( "illegal fen from GUI", line ); + return 0; + } + engine.setBoard( b ); + pos = c - line.c_str(); + } else { + error( "invalid position command", line ); + return 0; + } + token = nextToken( line, pos ); + if ( token == "moves" ) + { + // parse moves + const char *c = line.c_str() + pos; + for (;;) + { + skipSpaces(c); + // now parse UCI move + Move m = engine.board().fromUCI( c ); + if ( m == mcNone ) + break; + if ( !engine.doMove( m ) ) + { + illegalMove( m, line ); + return 0; + } + } + return 1; + } + return 1; + } + if ( token == "quit" ) + { + quitFlag = 1; + return 1; + } + if ( token == "uci" ) + { +#ifdef USE_TUNING + PSq::init(); +#endif + sendStart( sifRaw ); + sendRaw( "id name "); sendRaw( Version::version() ); sendEOL(); + sendRaw( "id author "); sendRaw( Version::author() ); sendEOL(); + sendRaw( "option name Hash type spin min 1 max " maxHash " default 4" ); sendEOL(); + sendRaw( "option name Clear Hash type button" ); sendEOL(); + sendRaw( "option name Ponder type check default false" ); sendEOL(); + sendRaw( "option name OwnBook type check default true" ); sendEOL(); + sendRaw( "option name MultiPV type spin min 1 max 256 default 1" ); sendEOL(); + sendRaw( "option name UCI_Chess960 type check default false" ); sendEOL(); + sendRaw( "option name Threads type spin min 1 max 64 default 1" ); sendEOL(); + sendRaw( "option name UCI_LimitStrength type check default false" ); sendEOL(); + sendRaw( "option name UCI_Elo type spin min 800 max 2500 default 2500" ); sendEOL(); + sendRaw( "option name NullMove type check default true" ); sendEOL(); +#ifdef USE_TUNING + for ( size_t i=0; iname() + " type spin min -1000000 max 1000000 default " + par->get(); + sendRaw( str ); sendEOL(); + } +#endif + sendRaw( "uciok" ); + sendEnd(); + engine.setUCIMode(1); + return 1; + } + if ( token == "setoption" ) + { + parseUCIOptions( line, pos ); + return 1; + } + if ( token == "ucinewgame" ) + { + engine.abortSearch(); + engine.clearHash(); + return 1; + } + if ( parseSpecial( token, line, pos ) ) + return 1; + error( "unknown command", line ); + return 0; +} + +bool Protocol::parseUCIOptions( const std::string &line, size_t &pos ) +{ + std::string token; + token = nextToken( line, pos ); + if ( token != "name" ) + { + error( "name expected", line ); + return 0; + } + std::string key; + for (;;) + { + token = nextToken( line, pos ); + if ( token.empty() ) + break; + if ( token == "value" ) + break; + if ( key.empty() ) + key = token; + else + key = key + " " + token; + } + std::string value; + const char *c = line.c_str() + pos; + // skip blanks + while ( *c && isspace(*c & 255) ) + c++; + value = c; + // examine key + if ( key == "Clear Hash" ) + { + engine.clearHash(); + return 1; + } + if ( key == "Hash" ) + { + long hm = strtol( value.c_str(), 0, 10 ); + return engine.setHash( (uint)std::max(1l, hm) ); + } + if ( key == "Ponder" ) + { + engine.setPonder( value == "true" ); + return 1; + } + if ( key == "Threads" ) + { + long thr = strtol( value.c_str(), 0, 10 ); + engine.setThreads( (uint)std::max( 1l, thr ) ); + return 1; + } + if ( key == "MultiPV" ) + { + long mpv = strtol( value.c_str(), 0, 10 ); + multiPV = (uint)std::max( 1l, std::min( 256l, mpv ) ); + engine.setMultiPV( multiPV ); + return 1; + } + if ( key == "OwnBook" ) + { + engine.setOwnBook( value != "false" ); // was value == "true", this is just to fix an annoying Arena bug! + return 1; + } + if ( key == "UCI_Chess960" ) + { + // handled automatically + return 1; + } + if ( key == "UCI_LimitStrength") + { + engine.setLimit( value == "true" ); + return 1; + } + if ( key == "UCI_Elo") + { + long elo = strtol( value.c_str(), 0, 10 ); + elo = std::max( 800L, elo ); + elo = std::min( 2500L, elo ); + engine.setElo( (u32)elo ); + return 1; + } + if ( key == "NullMove") + { + engine.setNullMove( value != "false" ); + return 1; + } +#ifdef USE_TUNING + if ( TunableParams::setParam(key.c_str(), value.c_str()) ) + { + PSq::init(); + return 1; + } +#endif + error( "unknown option", line ); + return 0; +} + +void Protocol::setSearchModeCECP( SearchMode &sm ) +{ + sm.reset(); + sm.multiPV = multiPV; + if ( timeLimit ) + { + sm.absLimit = sm.maxTime = timeLimit; + sm.fixedTime = fixedTime; + } + else + { + i32 movestogo = 0; + if ( level.moves ) + { + // calculate movestogo + uint move = engine.board().move(); + move -= level.move; + move %= level.moves; + move = level.moves - move; + movestogo = (i32)move; + } + i32 einc = level.inc, oinc = level.inc; + allocTime( etime, einc, otime, oinc, movestogo, sm ); + } + if ( npsLimit ) + sm.maxNodes = npsLimit * sm.maxTime; + sm.maxDepth = depthLimit; +} + +// start CECP-mode search +bool Protocol::startSearchCECP() +{ + if ( force ) + return 0; + Color stm = engine.board().turn(); + if ( stm != engineColor ) + return 0; + startTicks = Timer::getMillisec(); + SearchMode sm; + sm.reset(); + setSearchModeCECP( sm ); + engine.startSearch( sm ); + return 1; +} + +bool Protocol::parseCECP( const std::string &line ) +{ + bool res = parseCECPInternal( line ); + if ( res && !invalidState && !edit && analyze ) + { + SearchMode sm; + sm.reset(); + sm.multiPV = multiPV; + engine.startSearch( sm ); + } + return res; +} + +bool Protocol::parseCECPEdit( const std::string &line ) +{ + size_t pos = 0; + std::string token = nextToken( line, pos ); + if ( token.empty() ) + return 0; + if ( token == "c" ) + { + // flip color + editBoard.setTurn( flip( editBoard.turn() ) ); + return 1; + } + if ( token == "#" ) + { + editBoard.clearPieces(); + return 1; + } + if ( token == "." ) + { + edit = 0; + editBoard.updateBitboards(); + if ( !editBoard.isValid() ) + { + sendStart( sifRaw ); + sendRaw( "tellusererror Illegal position" ); + sendEnd(); + invalidState = 1; + error( "edit: invalid position", line ); + return 0; + } + // assign castling rights automatically! + editBoard.setFischerRandom( frc ); + editBoard.autoCastlingRights(); + + engine.setBoard( editBoard ); + level.move = editBoard.move(); + return 1; + } + // assume it's in the format Pa4 (xa4 is extended and should clear square) + if ( token.length() == 3 ) + { + const char *c = token.c_str(); + char ch = c[0] | 32; + int f = (int)((c[1] | 32) - 'a'); + bool invalid = 0; + if ( f < AFILE || f > HFILE ) + invalid = 1; + if ( c[2] < '1' || c[2] > '8' ) + invalid = 1; + Piece pt = ptNone; + int r = -1; + if ( !invalid ) + { + r = ('8' - c[2]) ^ RANK8; + switch( ch ) + { + case 'x': + pt = ptNone; + break; + case 'p': + pt = ptPawn; + break; + case 'n': + pt = ptKnight; + break; + case 'b': + pt = ptBishop; + break; + case 'r': + pt = ptRook; + break; + case 'q': + pt = ptQueen; + break; + case 'k': + pt = ptKing; + break; + default: + invalid = 1; + } + } + if ( !invalid ) + { + editBoard.setPiece( editBoard.turn(), pt, SquarePack::init( (File)f, (Rank)r ) ); + return 1; + } + } + + error( "unknown command", line ); + return 0; +} + +void Protocol::abortSearch() +{ + engine.abortSearch(); +} + +void Protocol::startPondering( bool nostop ) +{ + if ( force || analyze || edit || engine.board().turn() == engineColor ) + return; + if ( engine.getPonder() && !engine.isPondering() ) + { + SearchMode sm; + sm.reset(); + setSearchModeCECP( sm ); + engine.startPondering( sm, nostop ); + } +} + +bool Protocol::parseCECPInternal( const std::string &line ) +{ + if ( edit ) + return parseCECPEdit( line ); + size_t pos = 0; + std::string token = nextToken( line, pos ); + if ( token.empty() ) + return 0; + + // look for move first... + // note that the move could be a rook capture => castling! + Move move = engine.actualBoard().fromUCI( token ); + if ( move != mcNone ) + { + bool phit = 0; + if ( !invalidState && engine.doMove( move, 0, &phit ) ) + { + if ( adjudicate() ) + return 1; + // only start new search if move was not ponderhit + if ( !phit ) + startSearchCECP(); + return 1; + } + illegalMove( move, line ); + return 0; + } + + if ( token == "go" ) + { + if ( invalidState ) + { + error( "current board state is invalid", line ); + return 0; + } + leaveForce(); + engineColor = engine.board().turn(); + startSearchCECP(); + return 1; + } + + if ( token == "time" ) + { + fixedTime = 0; + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "time arg expected", line ); + return 0; + } + long tmp = strtol( token.c_str(), 0, 10 ); + etime = (tmp > 0) ? (Time)(tmp * 10) : (Time)-1; + return 1; + } + if ( token == "otim" ) + { + fixedTime = 0; + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "otim arg expected", line ); + return 0; + } + long tmp = strtol( token.c_str(), 0, 10 ); + otime = (tmp > 0) ? (Time)(tmp * 10) : (Time)-1; + return 1; + } + if ( token == "force" ) + { + enterForce(); + return 1; + } + if ( token == "white" ) + { + stopClocks(); + engineColor = ctBlack; + if ( setTurn( ctWhite ) ) + return 1; + error( "can't set stm to white", line ); + return 0; + } + if ( token == "black" ) + { + stopClocks(); + engineColor = ctWhite; + if ( setTurn( ctBlack ) ) + return 1; + error( "can't set stm to black", line ); + return 0; + } + if ( token == "level" ) + { + // parse level... + // only increment is float according to hgm + // the format is: + // moves min(:sec) inc + timeLimit = 0; // override time limit + fixedTime = 0; + Level lev; + lev.reset(); + lev.move = engine.board().move(); + + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "level moves expected", line ); + return 0; + } + long lmoves = std::max( 0l, strtol( token.c_str(), 0, 10 ) ); + lev.moves = (uint)lmoves; + + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "level time expected", line ); + return 0; + } + const char *c = token.c_str(); + long lmins = std::max( 0l, strtol( c, (char **)&c, 10 ) ); + lev.mins = (uint)lmins; + lev.secs = 0; + if ( *c == ':' ) + { + // parse secs + c++; + long lsecs = std::max( 0l, strtol( c, 0, 10 ) ); + lev.secs = (uint)lsecs; + } + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "level inc expected", line ); + return 0; + } + double dinc = std::max( 0.0, strtod( token.c_str(), 0 ) ); + dinc *= 1000; + lev.inc = (Time)dinc; + level = lev; + return 1; + } + if ( token == "st" ) + { + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "st arg expected", line ); + return 0; + } + long tmp = strtol( token.c_str(), 0, 10 ); + timeLimit = (tmp > 0) ? (Time)(tmp * 1000) : (Time)-1; + fixedTime = 1; + return 1; + } + if ( token == "sd" ) + { + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "sd arg expected", line ); + return 0; + } + long tmp = strtol( token.c_str(), 0, 10 ); + depthLimit = (tmp > 0) ? (Depth)tmp : 1; + return 1; + } + if ( token == "nps" ) + { + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "nps arg expected", line ); + return 0; + } + std::stringstream ss( token ); + ss.str( token ); + ss >> npsLimit; + return 1; + } + if ( token == "ping" ) + { + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "ping arg expected", line ); + return 0; + } + sendStart( sifRaw ); + sendRaw( "pong " ); + sendRaw( token ); + sendEnd(); + return 1; + } + if ( token == "memory" ) + { + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "memory arg expected", line ); + return 0; + } + uint memory; + std::stringstream ss( token ); + ss.str( token ); + ss >> memory; + if ( memory < 1 ) + memory = 1; + if ( !engine.setHash( memory ) ) + { + error( "couldn't adjust memory", line ); + return 0; + } + return 1; + } + if ( token == "protover" ) + { + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "protover arg expected", line ); + return 0; + } + long pver = strtol( token.c_str(), 0, 10 ); + protover = (int)pver; + + // FIXME: ping temporarily disabled as it probably causes connection stalls in xboard mode in cutechess + sendStart( sifRaw ); + sendRaw( + "feature name=0 san=0 usermove=0 time=1 sigint=0 sigterm=0 pause=0 reuse=1 analyze=1 colors=0 setboard=1 " + "nps=1 smp=1 debug=0 draw=0 playother=1 variants=\"normal,fischerandom\" ics=0 memory=1 ping=0 " + "option=\"Clear Hash -button\" option=\"Hash -spin 4 1 " maxHash "\" option=\"Threads -spin 1 1 64\" " + "option=\"OwnBook -check 1\" option=\"LimitStrength -check 0\" option=\"Elo -spin 2500 800 2500\" " + "option=\"MultiPV -spin 1 1 256\" option=\"NullMove -check 1\" myname=\"" + ); + sendRaw( Version::version() ); + sendRaw( "\" " + "done=1" + ); + sendEnd(); + return 1; + } + if ( token == "variant" ) + { + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "variant arg expected", line ); + return 0; + } + if ( token != "normal" && token != "fischerandom" ) + { + error( "unsupported variant", line ); + return 0; + } + frc = token == "fischerandom"; + return 1; + } + if ( token == "easy" ) + { + if ( engine.getPonder() ) + { + // abort search if pondering + if ( engine.isPondering() ) + abortSearch(); + engine.setPonder(0); + } + return 1; + } + if ( token == "hard" ) + { + if ( !engine.getPonder() ) + { + engine.setPonder(1); + startPondering(); + } + return 1; + } + if ( token == "exit" ) + { + if ( analyze ) + { + abortSearch(); + analyze = 0; + return 1; + } + error( "not analyzing", line ); + return 0; + } + if ( token == "cores" ) + { + token = nextToken( line, pos ); + if ( token.empty() ) + { + error( "cores arg expected", line ); + return 0; + } + long cores = strtol( token.c_str(), 0, 10 ); + maxCores = (uint)std::max( 1l, cores ); + engine.limitThreads( maxCores ); + return 1; + } + if ( token == "option" ) + { + token = nextOptToken( line, pos ); + if ( token.empty() ) + { + error( "option arg expected", line ); + return 0; + } + // parse options here + // FIXME: separate method to handle this + if ( token == "Clear Hash" ) + { + engine.clearHash(); + return 1; + } + if ( token == "Hash" ) + { + long hsz = std::max( 1l, strtol( line.c_str() + pos, 0, 10 ) ); + if ( !engine.setHash( (uint)hsz ) ) + error( "couldn't set hash size", line ); + return 1; + } + if ( token == "Threads" ) + { + long thr = strtol( line.c_str() + pos, 0, 10 ); + engine.setThreads( (uint)std::max( 1l, thr ) ); + return 1; + } + if ( token == "MultiPV" ) + { + long mpv = strtol( line.c_str() + pos, 0, 10 ); + multiPV = (uint)std::max( 1l, std::min( 256l, mpv ) ); + engine.setMultiPV( multiPV ); + return 1; + } + if ( token == "OwnBook" ) + { + long obk = strtol( line.c_str() + pos, 0, 10 ); + engine.setOwnBook( obk != 0 ); + return 1; + } + if ( token == "NullMove" ) + { + long nm = strtol( line.c_str() + pos, 0, 10 ); + engine.setNullMove( nm != 0 ); + return 1; + } + if ( token == "LimitStrength" ) + { + long lst = strtol( line.c_str() + pos, 0, 10 ); + engine.setLimit( lst != 0 ); + return 1; + } + if ( token == "Elo" ) + { + long elo = strtol( line.c_str() + pos, 0, 10 ); + engine.setElo( (u32)std::max( 2500l, std::min( 800l, elo ) ) ); + return 1; + } + error( "uknown option", line ); + return 0; + } + if ( token == "quit" ) + { + quitFlag = 1; + return 1; + } + if ( token == "analyze" ) + { + if ( !invalidState ) + { + analyze = 1; + return 1; + } + error( "current board state is invalid", line ); + return 0; + } + if ( token == "new" ) + { + leaveForce(); + npsLimit = 0; + depthLimit = 0; + timeLimit = 0; + fixedTime = 0; + + invalidState = 0; + + abortSearch(); + engine.clearHash(); + engine.resetBoard(); + engineColor = ctBlack; + searchMode.reset(); + // reset clocks + resetClocks(); + + adjudicated = 0; + return 1; + } + if ( token == "undo" ) + { + if ( !invalidState && engine.undoMove() ) + return 1; + error( "can't undo", line ); + return 0; + } + if ( token == "remove" ) + { + // this complicated expression is to silence some static analyzers + if ( !invalidState && engine.undoMove() ) + if ( engine.undoMove() ) + return 1; + error( "can't remove", line ); + return 0; + } + if ( token == "playother" ) + { + leaveForce(); + engine.abortSearch(); + Color oec = engineColor; + engineColor = flip( engine.turn() ); + if ( oec != engineColor ) + std::swap( etime, otime ); + startSearchCECP(); + // start pondering if enabled... + startPondering(); + return 1; + } + if ( token == "?" ) + { + // FIXME: what to do if ? is received while pondering (doing nothing ATM) + if ( !analyze && !engine.isPondering() ) + { + // FIXME: this causes deadlocks now that I've fixed UCI pondering bug... + // FIXME: this is super ugly, redesign and rewrite completely!!! (really?) + parseMutex.unlock(); + engine.stopSearch(); + parseMutex.lock(); + } + return 1; + } + if ( token == "result" ) + { + // don't waste system resource just in case the engine is pondering + if ( !analyze ) + abortSearch(); + return 1; + } + if ( token == "setboard" ) + { + invalidState = 0; + Board b; + if ( !b.fromFEN( line.c_str() + pos ) ) + { + sendStart( sifRaw ); + sendRaw( "tellusererror Illegal position" ); + sendEnd(); + invalidState = 1; + error( "invalid fen", line ); + return 0; + } + engine.setBoard( b ); + level.move = b.move(); + return 1; + } + if ( token == "edit" ) + { + abortSearch(); + invalidState = 0; + editBoard = engine.board(); + edit = 1; + return 1; + } + if ( token == "accepted" ) + { + // silently ignore + return 1; + } + if ( token == "post" ) + { + post = 1; + return 1; + } + if ( token == "nopost" ) + { + post = 0; + return 1; + } + if ( token == "uci" ) + { + // switch to the (preferred atm) UCI protocol + type = ptUCI; + return parseUCI( line ); + } + if ( token == "xboard" ) + { +#ifdef USE_TUNING + PSq::init(); +#endif + return 1; // consume silently + } + if ( parseSpecial( token, line, pos ) ) + return 1; + error( "unknown command", line ); + return 0; +} + +void Protocol::error( const std::string &msg, const std::string &line ) +{ + switch( type ) + { + case ptUCI: + sendStart(0); + sendInfo( msg ); + sendEnd(); + break; + case ptCECP: + sendStart( sifRaw ); + sendRaw( "Error (" ); + sendRaw( msg ); + sendRaw( "): "); + sendRaw( line ); + sendEnd(); + break; + case ptNative: + break; + } +} + +// CECP: reset clock +void Protocol::resetClocks() +{ + // TODO: implement... + +} + +void Protocol::stopClocks() +{ + abortSearch(); + clocksRunning = 0; +} + +bool Protocol::setTurn( Color c ) +{ + return engine.setTurn( c ); +} + +void Protocol::leaveForce() +{ + if ( force ) + { + force = 0; + } +} + +void Protocol::enterForce() +{ + stopClocks(); + force = 1; +} + +void Protocol::illegalMove( Move m, const std::string &line ) +{ + switch( type ) + { + case ptUCI: + error( "illegal move from GUI", line ); + break; + case ptCECP: + sendStart( sifRaw ); + sendRaw( "Illegal move: " ); + sendRaw( engine.board().toUCI( m ) ); + sendEnd(); + break; + case ptNative: + break; + } +} + +// try to adjudicate game after engine/user move +// if it's win/draw/loss, result is nonzero and appropriate string is sent to GUI +bool Protocol::adjudicate() +{ + const Board &b = engine.board(); + Draw dr = b.isDraw(); + if ( dr == drawMaterial ) + { + sendStart( sifRaw ); + sendRaw( "result 1/2-1/2 {Insufficient material}" ); + sendEnd(); + adjudicated = 1; + return 1; + } + if ( dr == drawFifty ) + { + sendStart( sifRaw ); + sendRaw( "result 1/2-1/2 {Fifty move rule}" ); + sendEnd(); + adjudicated = 1; + return 1; + } + MoveGen mg( b ); + Move m = mg.next(); + if ( m == mcNone ) + { + if ( b.inCheck() ) + { + // mated! + sendStart( sifRaw ); + if ( b.turn() == ctBlack ) + { + sendRaw( "result 1-0 {White mates}" ); + adjudicated = 1*2; + } + else + { + sendRaw( "result 0-1 {Black mates}" ); + adjudicated = -1*2; + } + sendEnd(); + adjudicated |= 1; + } else + { + // stalemate + sendStart( sifRaw ); + sendRaw( "result 1/2-1/2 {Stalemate}" ); + sendEnd(); + adjudicated = 1; + } + return 1; + } + // check for draw by repetition! + if ( engine.isThreefold() ) + { + sendStart( sifRaw ); + sendRaw( "result 1/2-1/2 {Threefold repetition}" ); + sendEnd(); + adjudicated = 1; + return 1; + } + return 0; +} + +// parse special (nonstd) command +bool Protocol::parseSpecial( const std::string &token, const std::string &line, size_t &pos ) +{ + if ( token == "dump" ) + { + engine.abortSearch(); + engine.board().dump(); + Score evl = engine.mainThread->search.eval.eval( engine.board() ); + std::cout << "eval: " << evl << std::endl; + std::cout.flush(); + return 1; + } + if ( token == "bench" ) + { + engine.abortSearch(); + bench(); + return 1; + } + if ( token == "pbench" ) + { + engine.abortSearch(); + pbench(); + return 1; + } + if ( token == "perft" ) + { + std::string t = nextToken( line, pos ); + if ( t.empty() ) + { + error( "perft arg expected", line ); + return 1; + } + engine.abortSearch(); + long tmp = strtol( t.c_str(), 0, 10 ); + Depth d = (Depth)( std::max( 1l, std::min( (long)maxDepth, tmp ) ) ); + Board b( engine.board() ); + i32 ms = Timer::getMillisec(); + NodeCount res = perft( b, d ); + ms = Timer::getMillisec() - ms; + std::cout << res << " nodes" << std::endl; + std::cout << "took " << ms << " ms" << std::endl; + std::cout.flush(); + return 1; + } + if ( token == "divide" ) + { + std::string t = nextToken( line, pos ); + if ( t.empty() ) + { + error( "divide arg expected", line ); + return 1; + } + engine.abortSearch(); + long tmp = strtol( t.c_str(), 0, 10 ); + Depth d = (Depth)( std::max( 1l, std::min( (long)maxDepth, tmp ) ) ); + Board b( engine.board() ); + MoveGen mg( b ); + Move m; + NodeCount total = 0; + MoveCount mc = 0; + i32 ms = Timer::getMillisec(); + while ( (m = mg.next()) != mcNone ) + { + mc++; + bool isCheck = b.isCheck( m, mg.discovered() ); + std::cout << b.toSAN( m ) << ' '; + UndoInfo ui; + b.doMove( m, ui, isCheck ); + NodeCount nc = perft( b, d-1 ); + b.undoMove( ui ); + total += nc; + std::cout << nc << std::endl; + } + ms = Timer::getMillisec() - ms; + std::cout << (uint)mc << " moves " << total << " nodes" << std::endl; + std::cout << "took " << ms << " ms" << std::endl; + std::cout.flush(); + return 1; + } + if ( token == "book" ) + { + // special book debug + engine.abortSearch(); + Board b( engine.board() ); + std::vector< Move > moves; + std::vector< u32 > counts; + u32 sum; + sum = std::max(1u, engine.book.enumEntries(b, moves, 0, &counts)); + assert( moves.size() == counts.size() ); + for ( size_t i=0; idump(); + std::cout.flush(); + return 1; + } +#endif + return 0; +} + +void Protocol::allocTime(i32 mytime, i32 myinc, i32 /*optime*/, i32 /*opinc*/, i32 movestogo, SearchMode &sm) +{ + sm.absLimit = 0; + i32 mvl; + bool suddenDeath = 0; + if ( movestogo == 0 ) + { + // sudden death + suddenDeath = 1; + movestogo = 25; + mytime -= 100; // reserve + } + mvl = (mytime + movestogo * myinc) / movestogo; + if ( suddenDeath && mvl > mytime/2 ) + mvl = mytime/2; + + if ( movestogo == 1 ) + sm.absLimit = mvl -= 100; // reserve + else + sm.absLimit = mytime/4; + + if ( mvl <= 0 ) + mvl = -1; + if ( sm.absLimit <= 0 ) + sm.absLimit = -1; + sm.maxTime = mvl; +} + +// is game over (CECP)? +int Protocol::isGameOverCECP() const +{ + return adjudicated; +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/protocol.h b/Engines/Linux/cheng/src/cheng4/protocol.h new file mode 100644 index 0000000..ce9a059 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/protocol.h @@ -0,0 +1,188 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include +#include +#include "search.h" +#include "thread.h" +#include "epd.h" + +namespace cheng4 +{ + +enum ProtoType +{ + ptNative, + ptUCI, + ptCECP +}; + +class Engine; +struct SearchInfo; + +class Protocol +{ + std::stringstream sendStr; // send string + Mutex mutex; // send mutex + Mutex parseMutex; // parse mutex + + // CECP specific stuff + struct Level + { + uint moves; // 0 = sudden death + uint mins; // minutes + uint secs; // seconds + Time inc; // increment in msec + uint move; // base move + + void reset(); + }; + + uint multiPV; // current multipv value (both protocols) + + int protover; // CECP protocol version + bool analyze; // analyze mode + bool force; // force mode + bool clocksRunning; // clock is running + Color engineColor; // engine color + SearchMode searchMode; // current searchmode + Time etime, otime; // time/opponent time in ms + Time timeLimit; // time limit in ms, 0 = none + NodeCount npsLimit; // NPS limit, 0 = none + Depth depthLimit; // depth limit, 0 = none + bool invalidState; // invalid board state + bool frc; // frc variant + bool edit; // edit mode + Board editBoard; // edit board + Level level; // current level (tc) + bool post; // post (=show thinking) + bool fixedTime; // fixed time per move + i32 startTicks; // CECP search start ticks (ms) + uint maxCores; // CECP maximum # of coress allowed + int adjudicated; // game over (adjudicated) bit 1: adj_flag, msbits: result + + // try to adjudicate game after engine/user move + // if it's win/draw/loss, result is nonzero and appropriate string is sent to GUI + bool adjudicate(); + void abortSearch(); + void startPondering( bool nostop = 0 ); + void resetClocks(); + void stopClocks(); + bool setTurn( Color c ); + void leaveForce(); + void enterForce(); + // start CECP-mode search + bool startSearchCECP(); + // set time to think etc. + void setSearchModeCECP( SearchMode &sm ); + // CECP end + + // generic error message + void error( const std::string &msg, const std::string &line ); + // illegal move message + void illegalMove( Move m, const std::string &line ); + + // parse UCI command + bool parseUCI( const std::string &line ); + // parse UCI options + bool parseUCIOptions( const std::string &line, size_t &pos ); + // parse CECP command + bool parseCECP( const std::string &line ); + // internal version + bool parseCECPInternal( const std::string &line ); + // parse edit commands + bool parseCECPEdit( const std::string &line ); + // parse special (nonstd) command + bool parseSpecial( const std::string &token, const std::string &line, size_t &pos ); + + // allocate think time based on TC + void allocTime( i32 mytime, i32 myinc, i32 optime, i32 opinc, i32 movestogo, SearchMode &sm ); + + EPDFile epd; +public: + ProtoType type; + Engine &engine; + bool volatile quitFlag; + + Protocol( Engine &eng ); + ~Protocol(); + + void newIteration(); + + // called from search + void searchCallback( const SearchInfo &si ); + + // start sending (reset buffer) + void sendStart( uint flags ); + // start sending + void sendEnd(); + + // send custom info message + void sendInfo( const std::string &msg ); + + // send raw mesage + void sendRaw( const std::string &msg ); + + // send raw EOL + void sendEOL(); + + // send current depth + void sendDepth( Depth d ); + // send selective depth + void sendSelDepth( Ply d ); + // send PV + // passing si because of CECP + // index: k-best(multipv) zero-based index + void sendPV( const SearchInfo &si, uint index, Score score, enum BoundType bound, size_t pvCount, const Move *pv ); + // send nodes + void sendNodes( NodeCount total ); + // send nps + void sendNPS( NodeCount nps ); + // send time + void sendTime( Time time ); + // send best move + void sendBest( Move best, Move ponder = mcNone ); + // called after best move is sent + void finishBest(); + // send current move index (zero based) + void sendCurIndex( MoveCount index, MoveCount count ); + // send current move + void sendCurMove( Move move ); + // send hash full (permill) + void sendHash( uint full ); + // send TB hits + void sendTBHits( u64 hits ); + + // parse line from GUI + bool parse( const std::string &line ); + + // should parser quit? + bool shouldQuit() const; + + // is game over (CECP)? (returns adjudicated flag) + int isGameOverCECP() const; +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/psq.cpp b/Engines/Linux/cheng/src/cheng4/psq.cpp new file mode 100644 index 0000000..14c6a2d --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/psq.cpp @@ -0,0 +1,236 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "psq.h" +#include +#include + +namespace cheng4 +{ + +// PSq + +TUNE_CONST i16 PSq::materialTables[phMax][ptMax] = +{ + // opening + { + 0, 61, 327, 309, 435, 1063, 0 + }, + // endgame + { + 0, 98, 337, 339, 539, 999, 0 + } +}; + +TUNE_CONST i16 PSq::pawnTables[2][64] = +{ + // opening + { + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 132, 97, 99, 109, 11, 6, -98, -100, + -1, 5, 37, 22, 65, 96, 2, 38, + -5, 11, 4, 20, 32, 28, 2, 0, + -1, 1, 12, 18, 15, 18, -5, 8, + 0, 8, 0, -4, 15, -2, 6, -3, + -5, -13, -12, -7, -10, 15, 11, -9, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }, + // endgame + { + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 38, 47, 38, 7, 8, 11, 38, 14, + 37, 33, 16, -14, -10, 5, 12, 7, + 23, 12, 1, -18, -7, -7, 6, 1, + 10, 5, -7, -8, -9, -1, 2, -6, + 3, -1, -6, -9, -2, 1, 1, -7, + 9, 4, -2, -4, 3, 9, 4, -8, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + } +}; + +TUNE_CONST i16 PSq::knightTables[2][64] = +{ + // opening + { + -183, -111, -57, -13, 91, -83, -9, -145, + -25, -23, 21, 22, 1, 26, -5, -28, + -52, -12, 12, 24, 86, 90, 12, -33, + -9, 3, 16, 31, -13, 35, -12, 35, + -4, 14, 13, 4, 13, 19, 27, 2, + -17, -4, -4, 11, 30, 0, 9, -6, + -10, -6, 0, 10, 8, 13, -15, 0, + 14, -21, -9, 2, 6, 14, -11, -60 + }, + // endgame + { + -18, -5, 6, 6, 19, 4, 2, -55, + 9, 13, 8, 22, 19, -2, 1, 0, + 1, 3, 14, 19, 12, 16, 8, 6, + 7, 8, 20, 23, 21, 27, 22, 16, + -1, 12, 18, 16, 25, 19, 16, 6, + -26, -5, -2, 14, 11, -2, 3, -5, + -28, -10, -13, -5, 0, -9, -4, -7, + -41, -24, -16, -15, -9, -10, -11, -75 + } +}; + +TUNE_CONST i16 PSq::bishopTables[2][64] = +{ + // opening + { + -26, -43, -68, -49, -25, -61, -61, -12, + -36, -1, -9, -3, -21, -36, -53, -67, + -11, 9, 20, 7, 5, 66, -5, 6, + -18, -9, -12, 33, 0, -3, -5, -18, + -15, 1, -11, 15, 10, -9, -2, 7, + -8, 0, 8, -7, 3, 2, 14, 9, + 1, 2, 4, -5, -2, 5, 14, 7, + -7, 16, -12, -22, 9, -15, 9, -32 + }, + // endgame + { + 13, 20, 17, 14, -2, 2, 7, 3, + 5, 6, 11, 8, 6, -1, 5, -2, + 5, 15, 3, 10, 8, 19, 10, 9, + -3, 6, 9, 17, 14, 9, 5, 3, + -11, 7, 10, 16, 8, 7, 0, -2, + -2, 6, 9, 8, 20, -1, -1, -8, + -10, -4, -2, 0, -1, 0, 3, -29, + -13, -10, -9, -7, -4, -2, -2, -14 + } +}; + +TUNE_CONST i16 PSq::rookTables[2][64] = +{ + // opening + { + 55, 19, 31, 28, -2, 115, 39, 165, + 23, 12, 37, 68, 53, 59, 13, 85, + 4, 29, 22, 44, 98, 116, 109, 58, + -3, 4, 5, 27, 31, 31, 39, -1, + -23, -12, -3, 3, -7, -10, 7, -22, + -24, -7, -9, -4, -3, 2, 9, -14, + -41, -33, -5, 7, -4, 5, -4, -59, + -12, -7, -2, 3, 5, -6, -4, -19 + }, + // endgame + { + 2, 13, 17, 13, 16, 21, 21, 14, + 21, 24, 26, 27, 24, 18, 20, 19, + 26, 22, 26, 25, 24, 26, 17, 16, + 23, 29, 27, 25, 22, 26, 25, 19, + 13, 16, 17, 13, 13, 22, 16, 6, + -3, 2, 4, -1, -4, 0, 3, -8, + -13, -4, -2, -8, -7, -7, -8, -14, + -11, -10, -3, -6, -10, -5, -7, -22 + } +}; + +TUNE_CONST i16 PSq::queenTables[2][64] = +{ + // opening + { + -15, 18, 2, 36, 33, 155, 151, 116, + -17, -29, 11, 8, -6, 22, 8, 88, + 5, 6, 4, -3, 18, 81, 80, 8, + -4, 2, -17, -12, 2, -12, 15, -5, + -9, -10, -2, -8, -4, -2, 12, -1, + -11, -6, -6, -3, 3, 0, 10, 7, + -23, -9, -3, 8, 10, 13, 10, -7, + -8, 1, -7, -1, 8, -28, -43, -25 + }, + // endgame + { + -4, 10, 19, 21, 29, 32, 21, 25, + 9, 17, 29, 36, 42, 39, 37, 40, + 7, 13, 25, 42, 44, 51, 46, 49, + 3, 22, 32, 32, 40, 51, 56, 44, + 5, 16, 16, 26, 20, 33, 29, 23, + -3, 6, 5, 1, 9, 16, 6, -6, + -10, -8, -5, -11, -9, -27, -39, -27, + -18, -27, -16, -19, -31, -46, -63, -55 + } +}; + +TUNE_CONST i16 PSq::kingTables[2][64] = +{ + // opening + { + -90, -84, -87, -86, -59, -89, -92, -258, + -82, -89, -78, -82, -93, -85, -87, 17, + -89, -84, -85, -84, -85, -84, -52, -89, + -90, 101, -81, -88, -95, -89, -38, -95, + -100, -5, -29, -106, -49, -88, -67, -92, + -39, -15, -43, -33, -62, -38, -20, -43, + 12, -47, -1, -62, -38, -38, 4, 15, + -29, 3, 9, -64, 2, -52, 18, 15 + }, + // endgame + { + -105, 3, 7, 7, 10, 27, 27, -72, + -45, 28, 33, 18, 25, 40, 51, -13, + 14, 36, 35, 33, 35, 56, 52, 21, + 3, 28, 35, 36, 38, 41, 36, 7, + -18, 13, 26, 30, 29, 26, 15, -11, + -24, -2, 12, 20, 20, 11, 0, -17, + -25, -11, 2, 1, 5, 2, -4, -20, + -37, -22, -16, -27, -37, -21, -20, -44 + } +}; + +i16 PSq::tables[ phMax ][ ctMax ][ ptMax ][ 64 ]; + +// init PSQ table +// (bakes material into it) +void PSq::init( u8 phase, Color color, Piece piece, const i16 * const material, const i16 * const table ) +{ + assert( phase <= phEndgame && piece <= ptKing && piece >= ptPawn ); + assert( material && table ); + i32 base = (i32)material[ piece ]; + for (Square sq = 0; sq < 64; sq++) + { + i16 &val = tables[ phase ][ color ][ piece ][ squareIndex( color, sq ) ]; + i32 res = base + table[sq]; + if ( color == ctBlack ) + res = -res; + assert( res >= -32768 && res <= 32767 ); + val = (i16)res; + } +} + +void PSq::init() +{ + memset( tables, 0, sizeof(tables) ); + for (Phase ph = phOpening; ph <= phEndgame; ph++ ) + for (Color c = ctWhite; c <= ctBlack; c++) + { + init( ph, c, ptPawn, materialTables[ph], pawnTables[ ph ] ); + init( ph, c, ptKnight, materialTables[ph], knightTables[ ph ] ); + init( ph, c, ptBishop, materialTables[ph], bishopTables[ ph ] ); + init( ph, c, ptRook, materialTables[ph], rookTables[ ph ] ); + init( ph, c, ptQueen, materialTables[ph], queenTables[ ph ] ); + init( ph, c, ptKing, materialTables[ph], kingTables[ ph ] ); + } +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/psq.h b/Engines/Linux/cheng/src/cheng4/psq.h new file mode 100644 index 0000000..414ff87 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/psq.h @@ -0,0 +1,66 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "chtypes.h" +#include "tune.h" + +namespace cheng4 +{ + +struct PSq +{ + // default tables + static TUNE_CONST i16 materialTables[2][ptMax]; + + static TUNE_CONST i16 pawnTables[2][64]; + static TUNE_CONST i16 knightTables[2][64]; + static TUNE_CONST i16 bishopTables[2][64]; + static TUNE_CONST i16 rookTables[2][64]; + static TUNE_CONST i16 queenTables[2][64]; + static TUNE_CONST i16 kingTables[2][64]; + + // [phase][color][piece][square] + static i16 tables[ 2 ][ 2 ][ ptMax ][ 64 ]; + + // init PSQ tables (using default values) + static void init(); + + // init PSQ table + // (bakes material into it) + static void init( u8 phase, Color color, Piece piece, const i16 * const material, const i16 * const table ); + + // psq-index based on color and square + template< Color color > static inline Square index( Square sq ) + { + return color == ctWhite ? sq : sq ^ 0x38; + } + // function version + static inline Square squareIndex( Color c, Square sq ) + { + return c == ctWhite ? index(sq) : index(sq); + } +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/repetition.h b/Engines/Linux/cheng/src/cheng4/repetition.h new file mode 100644 index 0000000..ea9b5f1 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/repetition.h @@ -0,0 +1,104 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "chtypes.h" +#include +#include + +namespace cheng4 +{ + +typedef u8 repIndex; + +// FIXME: rethink completely +// repetition stack +struct RepHash +{ + Signature rep[ repHashMax ]; // repetition signatures + u8 res[ repHashMax ]; // fifty counter reset flag (1=just captured/moved a pawn) + repIndex start[ repHashMax ]; // starting pointers + repIndex ptr; // stack ptr + repIndex sptr; // starting stack ptr + + RepHash() + { + memset( rep, 0, sizeof(rep) ); + memset( res, 0, sizeof(res) ); + memset( start, 0, sizeof(start) ); + clear(); + } + + void copyFrom( const RepHash &o ) + { + ptr = o.ptr; + sptr = o.sptr; + memcpy( start, o.start, sptr*sizeof(repIndex) ); + memcpy( res, o.res, ptr*sizeof(u8) ); + memcpy( rep, o.rep, ptr*sizeof(Signature) ); + } + + // clear rep hash + inline void clear() + { + assert( this ); + sptr = ptr = 0; + } + + // is repetition? + inline bool isRep( Signature h ) const + { + // the position below first resulted from a pawn move/capture + int i; + repIndex first = sptr > 0 ? start[ sptr - 1 ] : 0; + for (i = (int)ptr-3; i >= first; i -= 2 ) + { + if ( rep[i] == h ) + break; + } + return i >= first; + } + inline void push( Signature h, bool reset ) + { + if ( reset ) + { + assert( sptr < repHashMax-1 ); + start[ sptr++ ] = ptr; + } + res[ ptr ] = reset ? 1 : 0; + assert( ptr < repHashMax-1 ); + rep[ ptr++ ] = h; + } + inline void pop() + { + assert( ptr > 0 ); + if ( res[ --ptr ] ) + { + assert( sptr > 0 ); + sptr--; + } + } +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/search.cpp b/Engines/Linux/cheng/src/cheng4/search.cpp new file mode 100644 index 0000000..3abcdfa --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/search.cpp @@ -0,0 +1,1474 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "search.h" +#include "movegen.h" +#include "thread.h" +#include "tune.h" +#include +#include +#include +#include + +namespace cheng4 +{ + +// SearchMode + +void SearchMode::reset() +{ + moves.clear(); + mateSearch = 0; + maxDepth = 0; + maxTime = 0; + maxNodes = 0; + multiPV = 1; + absLimit = 0; + ponder = 0; + fixedTime = 0; +} + +// SearchInfo + +void SearchInfo::reset() +{ + flags = 0; +} + +// Search::RootMoves + +Search::RootMoves &Search::RootMoves::operator =( const RootMoves &o ) +{ + discovered = o.discovered; + count = o.count; + for ( size_t i=0; i= mode.maxTime ) + return 1; + } + if ( mode.maxNodes && nodes >= mode.maxNodes ) + return 1; + } + if ( ms - nodeTicks >= 1000 ) + { + // report nodes now + i32 dt = ms - startTicks; + info.reset(); + info.flags |= sifNodes | sifNPS; + info.nodes = smpNodes(); + info.nps = dt ? info.nodes * 1000 / dt : 0; + sendInfo(); + nodeTicks = ms; + } + } + return 0; +} + +template< bool pv, bool incheck > Score Search::qsearch( Ply ply, Depth depth, Score alpha, Score beta ) +{ + assert( incheck == board.inCheck() ); + assert( alpha >= -scInfinity && beta <= scInfinity && alpha < beta ); + + if ( aborting | abortingSmp ) + return scInvalid; + + uint pvIndex = initPly( ply ); + if (!pv) + (void)pvIndex; + + // update selective depth + if ( ply > selDepth ) + selDepth = ply; + + // mate distance pruning + alpha = std::max( alpha, ScorePack::checkMated(ply) ); + beta = std::min( beta, ScorePack::mateIn(ply) ); + if ( alpha >= beta ) + return alpha; + + // check for timeout + if ( !(searchFlags & sfNoTimeout) && timeOut() ) + { + aborting = 1; + return scInvalid; + } + + // check for draw first + if ( isDraw() ) + return scDraw; + + // maximum ply reached? + if ( ply >= maxPly ) + return scDraw; + + bool qchecks = !incheck && !depth; +#ifndef USE_TUNING + Depth ttDepth = qchecks ? 0 : -1; + + Score ttScore = tt->probe( board.sig(), ply, ttDepth, alpha, beta, stack[ply].killers.hashMove ); + if ( !pv && ttScore != scInvalid ) + { + assert( ScorePack::isValid( ttScore ) ); + stack[ply].current = stack[ply].killers.hashMove; + return ttScore; + } +#endif + + Score oalpha; + if ( pv ) + oalpha = alpha; + + Score ev; + Score best; + if ( incheck ) + best = -scInfinity; + else + { + best = ev = eval.eval( board, alpha, beta ); + +#ifndef NDEBUG + Board tb(board); + tb.swap(); + // FIXME: ok? + Score sev = eval.eval( tb, -beta, -alpha ); + if ( sev != ev ) + { + eval.clear(); + ev = eval.eval( board, alpha, beta ); + sev = eval.eval( tb, -beta, -alpha ); + std::cout << "eval_symmetry_bug!" << std::endl; + board.dump(); + tb.dump(); + } +#endif + + assert( !ScorePack::isMate( ev ) ); + if ( best >= beta ) + return best; // stand pat + if ( best > alpha ) + alpha = best; + } + + // qsearch limit + if ( !incheck && depth < minQsDepth ) + return best; + + MoveGen mg( board, stack[ply].killers, history, qchecks ? mmQCapsChecks : mmQCaps ); + Move m; + Move bestMove = mcNone; + + size_t count = 0; + while ( (m = mg.next()) != mcNone ) + { + stack[ ply ].current = m; + count++; + + bool ischeck = board.isCheck( m, mg.discovered() ); + + // delta/qsearch futility +#ifndef USE_TUNING + if ( useFutility && !pv && !incheck && !ischeck && MovePack::isCapture(m) ) + { + Score fscore = ev + board.moveGain( m ); + if ( fscore + 200 <= alpha ) + continue; + } +#endif + + UndoInfo ui; + board.doMove( m, ui, ischeck ); + rep.push( board.sig(), !board.fifty() ); + + Score score = ischeck ? + -qsearch< pv, 1 >( ply+1, depth-1, -beta, -alpha ) : + -qsearch< pv, 0 >( ply+1, depth-1, -beta, -alpha ); + + rep.pop(); + board.undoMove( ui ); + + if ( aborting | abortingSmp ) + return scInvalid; + + if ( score > best ) + { + best = score; + if ( score > alpha ) + { + bestMove = m; + alpha = score; + if (pv) + { + // copy underlying PV + triPV[pvIndex] = bestMove; + copyPV(ply); + } + if ( score >= beta ) + { + // no history here => depth is <= 0 + if ( !MovePack::isSpecial( m ) ) + stack[ply].killers.addKiller( m ); +#ifndef USE_TUNING + tt->store( board.sig(), age, m, score, btLower, ttDepth, ply ); +#endif + return score; + } + } + } + } + + if ( incheck && !count ) + // checkmated + return ScorePack::checkMated( ply ); + + assert( best > -scInfinity ); + +#ifndef USE_TUNING + tt->store( board.sig(), age, bestMove, best, (HashBound)(pv ? (best > oalpha ? btExact : btUpper) : btUpper), + ttDepth, ply ); +#endif + + return best; +} + +template< bool pv, bool incheck, bool donull > + Score Search::search( Ply ply, FracDepth fdepth, Score alpha, Score beta ) +{ + assert( incheck == board.inCheck() ); + assert( alpha >= -scInfinity && beta <= scInfinity && alpha < beta ); + + if ( aborting | abortingSmp ) + return scInvalid; + + Depth depth = (Depth)(fdepth / fracOnePly); + + // qsearch + if ( depth <= 0 ) + return qsearch< pv, incheck >( ply, 0, alpha, beta ); + + uint pvIndex = initPly( ply ); + if (!pv) + (void)pvIndex; + + // update selective depth + if ( ply > selDepth ) + selDepth = ply; + + // mate distance pruning + alpha = std::max( alpha, ScorePack::checkMated(ply) ); + beta = std::min( beta, ScorePack::mateIn(ply) ); + if ( alpha >= beta ) + return alpha; + + // check for timeout + if ( !(searchFlags & sfNoTimeout) && timeOut() ) + { + aborting = 1; + return scInvalid; + } + + // check for draw first + if ( isDraw() ) + return scDraw; + + // maximum ply reached? + if ( ply >= maxPly ) + return scDraw; + + // probe hashtable + TransEntry lte; + Score ttScore = tt->probe( board.sig(), ply, depth, alpha, beta, stack[ply].killers.hashMove, lte ); + if ( !pv && ttScore != scInvalid ) + { + assert( ScorePack::isValid( ttScore ) ); + stack[ply].current = stack[ply].killers.hashMove; + return ttScore; // tt cutoff + } + + Score fscore; + if ( !pv && !incheck ) + { + fscore = eval.eval(board); + // use more precise tt score if possible + Score ttBetter = TransTable::probeEval( board.sig(), ply, fscore, lte ); + if ( ttBetter != scInvalid ) + fscore = ttBetter; + // beta razoring + Score razEval; + if ( useRazoring && depth <= 4 && (razEval = fscore - betaMargins[depth]) > alpha && !ScorePack::isMate(beta) ) + return razEval; + } + + if ( useRazoring && !pv && !incheck && depth <= 3 && stack[ply].killers.hashMove == mcNone && + !ScorePack::isMate(alpha) ) + { + // razoring + Score margin = razorMargins[depth]; + + Score razEval = fscore; + if ( razEval + margin < alpha ) + { + Score scout = alpha - margin; + Score score = qsearch< 0, 0 >( ply, 0, scout-1, scout ); + if ( score < scout ) + return score; + } + } + + if ( useNull && !pv && !incheck && donull && depth > 1 + && board.canDoNull() && fscore > alpha && !(searchFlags & sfNoNullMove) ) + { + // null move pruning + Depth R = 2 + depth/4; + + UndoInfo ui; + board.doNullMove( ui ); + stack[ ply ].current = mcNull; + + rep.push( board.sig(), 1 ); + Score score = -search< 0, 0, 0 >( ply+1, (depth-R-1) * fracOnePly, -beta, -alpha); + rep.pop(); + + board.undoNullMove( ui ); + + if ( score >= beta ) + { + if ( depth <= 6 ) + return ScorePack::isMate(score) ? beta : score; + + // using nullmove reductions instead! + depth = depth*2/3; + fdepth = fdepth*2/3; + if ( depth <= 0 ) + return qsearch< pv, incheck >( ply, 0, alpha, beta ); + } + } + + // bench-tuned depths (not a great idea but still) + if ( pv && depth > 2 && stack[ply].killers.hashMove == mcNone ) + { + // IID at pv nodes + search< pv, incheck, 0 >( ply, (depth/3) * fracOnePly, alpha, beta ); + tt->probe( board.sig(), ply, depth, alpha, beta, stack[ply].killers.hashMove ); + } + if ( !pv && depth > 8 && stack[ply].killers.hashMove == mcNone ) + { + // IID at nonpv nodes + search< pv, incheck, 0 >( ply, (depth/3) * fracOnePly, alpha, beta ); + tt->probe( board.sig(), ply, depth, alpha, beta, stack[ply].killers.hashMove ); + } + + Score best = -scInfinity; + + Score oalpha; + if ( pv ) + oalpha = alpha; + + MoveGen mg( board, stack[ply].killers, history, mmNormal ); + Move m; + Move bestMove = mcNone; + size_t count = 0; // move count + size_t lmrCount = 0; + Move failHist[maxMoves]; + MoveCount failHistCount = 0; + + while ( (m = mg.next()) != mcNone ) + { + stack[ ply ].current = m; + count++; + + if ( !MovePack::isSpecial(m) && mg.phase() >= mpQuietBuffer ) + lmrCount++; + + if ( !MovePack::isSpecial( m ) ) + failHist[ failHistCount++ ] = m; + + bool ischeck = board.isCheck( m, mg.discovered() ); + + Score score; + + // extend + FracDepth extension = std::min( (FracDepth)fracOnePly, extend( m, ischeck, mg.discovered() ) ); + FracDepth newDepth = fdepth - fracOnePly + extension; + + if ( useFutility && !pv && !incheck && mg.phase() >= mpQuietBuffer && + !extension && depth <= 4 && !MovePack::isSpecial(m) && !ScorePack::isMate(beta) && + board.canPrune(m) ) + { + // futility pruning + Score futScore = fscore + futMargins[depth] - (Score)(20*lmrCount); + if ( futScore <= alpha ) + continue; + } + + i32 hist; + if ( !incheck ) + hist = history.score(board, m); + + UndoInfo ui; + board.doMove( m, ui, ischeck ); + rep.push( board.sig(), !board.fifty() ); + + score = alpha+1; + if ( pv && count > 1 ) + { + if ( useLMR && !incheck && lmrCount >= 3 && mg.phase() >= mpQuietBuffer && !MovePack::isSpecial(m) + && (depth > 6 || hist <= 0) && !ischeck && depth > 2 && !extension && board.canReduce(m) ) + { + // LMR at pv nodes + stack[ ply ].reduction = (FracDepth)( fracOnePly*std::min((size_t)3, lmrCount/3 ) ); + score = -search< 0, 0, 1 >( ply+1, newDepth - stack[ ply ].reduction, -alpha-1, -alpha ); + stack[ ply ].reduction = 0; + } + + if ( score > alpha ) + score = ischeck ? + -search< 0, 1, 1 >( ply+1, newDepth, -alpha-1, -alpha ) : + -search< 0, 0, 1 >( ply+1, newDepth, -alpha-1, -alpha ); + } + // new: reduce bad captures as well + if ( useLMR && !pv && !incheck && lmrCount >= 3 && mg.phase() >= mpQuietBuffer && + /*!MovePack::isSpecial(m) &&*/ (depth > 6 || hist <= 0) && !ischeck && depth > 2 && + !extension && board.canReduce(m) ) + { + // LMR at nonpv nodes + stack[ ply ].reduction = (FracDepth)( fracOnePly*std::min((size_t)3, lmrCount/3) ); + score = -search< 0, 0, 1 >( ply+1, newDepth - stack[ ply ].reduction, -alpha-1, -alpha ); + stack[ ply ].reduction = 0; + } + + if ( score > alpha ) + score = ischeck ? + -search< pv, 1, !pv >( ply+1, newDepth, -beta, -alpha ) : + -search< pv, 0, !pv >( ply+1, newDepth, -beta, -alpha ); + + rep.pop(); + board.undoMove( ui ); + + if ( aborting | abortingSmp ) + return scInvalid; + + if ( score > best ) + { + best = score; + if ( score > alpha ) + { + bestMove = m; + alpha = score; + if (pv) + { + // copy underlying PV + triPV[pvIndex] = bestMove; + copyPV(ply); + } + if ( score >= beta ) + { + if ( !MovePack::isSpecial( m ) ) + { + stack[ply].killers.addKiller( m ); + history.add( board, m, depth ); + assert( failHistCount > 0 ); + // this useless if is here only to silence msc static analyzer + if ( failHistCount > 0 ) + failHistCount--; + } + for (MoveCount i=0; istore( board.sig(), age, m, score, btLower, depth, ply ); + return score; + } + } + } + } + + if ( !count ) + // stalemate or checkmate + return incheck ? ScorePack::checkMated(ply) : scDraw; + + // very important -- we pruned some moves but it's possible that we didn't actually try a move + // in order to avoid storing wrong mate score to tt, this is necessary + if ( best == -scInfinity ) + { + best = alpha; + } + + assert( best > -scInfinity ); + + tt->store( board.sig(), age, bestMove, best, + (HashBound)(!pv ? btUpper : + (best > oalpha ? btExact : btUpper)), depth, ply ); + + return best; +} + +Search::Search( size_t evalKilo, size_t pawnKilo, size_t matKilo ) : startTicks(0), nodeTicks(0), + timeOutCounter(0), triPV(0), newMultiPV(0), selDepth(0), tt(0), nodes(0), age(0), callback(0), + callbackParam(0), canStop(0), abortRequest(0), aborting(0), abortingSmp(0), + outputBest(1), ponderHit(0), maxThreads(63), eloLimit(0), maxElo(2500), + minQsDepth(-maxDepth), verbose(1), verboseFixed(1), searchFlags(0), startSearch(0), master(0) +{ + board.reset(); + mode.reset(); + info.reset(); + for ( int i=0; iclear(); +} + +void Search::clearSlots( bool clearEval ) +{ + if ( clearEval ) + eval.clear(); + history.clear(); + memset( stack, 0, sizeof(stack) ); +} + +void Search::sendPV( const RootMove &rm, Depth depth, Score score, Score alpha, Score beta, uint mpvindex ) +{ + if ( verbose || !verboseFixed ) + { + i32 dt = Timer::getMillisec() - startTicks; + SearchInfo &si = verbose ? info : infoPV[mpvindex]; + + si.reset(); + // depth required by stupid UCI + si.flags |= sifDepth | sifSelDepth | sifPV | sifTime | sifNodes | sifNPS; + si.pvScore = score; + si.pvBound = (score >= beta) ? btLower : (score <= alpha) ? btUpper : btExact; + si.pvIndex = mpvindex; + si.pvCount = rm.pvCount; + si.pv = rm.pv; + si.nodes = smpNodes(); + si.nps = dt ? si.nodes * 1000 / dt : 0; + si.time = (Time)dt; + Ply sd = selDepth; + for (size_t i=0; isearch.selDepth); + si.depth = depth; + si.selDepth = (Ply)(sd+1); + if ( verbose ) + sendInfo(); + } +} + +void Search::flushCachedPV( size_t totalMoves ) +{ + for ( size_t i=0; i( 0 ); + + Score oalpha = alpha; + + FracDepth fd = (FracDepth)depth << fracShift; + + Score best = scInvalid; + Move bestm = mcNone; + + // first thing to do: sort root moves + std::stable_sort( rootMoves.sorted, rootMoves.sorted + rootMoves.count, rootPred ); + for (size_t i=0; i= mode.multiPV ) + rm.score = -scInfinity; + } + + size_t count = 0; + + for (size_t i=0; i= currmoveLimit ) + { + info.reset(); + info.flags |= sifCurIndex | sifCurMove; + info.curIndex = (MoveCount)i; + info.curCount = (MoveCount)rootMoves.count; + info.curMove = rm.move; + sendInfo(); + } + } + + NodeCount onodes = nodes; + + Score score; + + bool isCheck = board.isCheck( rm.move, rootMoves.discovered ); + + // extend + FracDepth extension = extend<1>( rm.move, isCheck, rootMoves.discovered ); + FracDepth newDepth = fd - fracOnePly + extension; + + UndoInfo ui; + + board.doMove( rm.move, ui, isCheck ); + rep.push( board.sig(), !board.fifty() ); + + score = alpha+1; + if ( count > mode.multiPV ) + { + score = isCheck ? + -search< 0, 1, 1 >( 1, newDepth, -alpha-1, -alpha ) : + -search< 0, 0, 1 >( 1, newDepth, -alpha-1, -alpha ); + } + if ( score > alpha ) + { + score = isCheck ? + -search< 1, 1, 0 >( 1, newDepth, -beta, -alpha ) : + -search< 1, 0, 0 >( 1, newDepth, -beta, -alpha ); + } + rep.pop(); + board.undoMove( ui ); + + if ( aborting ) + return scInvalid; + if ( abortingSmp ) + break; + + rm.nodes = nodes - onodes; + + if ( count == 1 && score <= alpha ) + { + // FIXME: break here?! + rootMoves.bestMove = triPV[0] = rm.move; + triPV[1] = mcNone; + // extract pv now + extractPV( rm ); + sendPV( rm, depth, score, oalpha, beta ); + if ( master ) + { + master->abortingSmp = 1; + rm.score = score; + } + return score; // early exit => fail low! + } + + if ( score > best ) + { + bestm = rm.move; + best = score; + } + if ( score > alpha ) + { + // copy underlying PV + triPV[0] = rm.move; + copyPV(0); + + alpha = score; + rm.score = score; + + // extract pv now + extractPV( rm ); + + if ( mode.multiPV <= 1 ) + { + sendPV( rm, depth, score, oalpha, beta ); + + // make sure rm is first now! + for (size_t j=i; j>0; j--) + rootMoves.sorted[j] = rootMoves.sorted[j-1]; + rootMoves.sorted[0] = &rm; + } + else + { + // special (multipv mode) + // first, determine if this move makes it into new multipv + // if not, don't do anything + uint mpv = std::min( (uint)count, mode.multiPV ); + uint pvcount = 0; + bool ok = 0; + for ( size_t j=0; jscore; + if ( mscore != -scInfinity ) + pvcount++; + if ( score >= mscore ) + ok = 1; + } + mpv = std::min( mpv, pvcount ); + if ( ok ) + { + // yes, we're updating multipv move score + std::stable_sort( rootMoves.sorted, rootMoves.sorted + count, rootPred ); + // FIXME: if in xboard mode, could send the PV right away + // doing the stupid UCI stuff shouldn't hurt probably + if ( mpv >= mode.multiPV ) + { + // send PVs + for (size_t j=0; jscore, + -scInfinity, scInfinity, (uint)j); + } + } + // make sure alpha is up to date + if ( mpv < mode.multiPV ) + alpha = -scInfinity; + else + { + // we're really only interested in moves that beat worst multiPV move + Score newAlpha = scInfinity; + for (size_t j=0; jscore ); + alpha = newAlpha; + } + } + } + + // set -inf score to uninteresting moves + for (size_t j=mode.multiPV; jscore = -scInfinity; + + if ( score >= beta ) + { + // cutoff + rootMoves.bestMove = bestm; + rootMoves.bestScore = best; + + // don't store if we're searching a subset of root moves! + if ( mode.moves.empty() ) + tt->store( board.sig(), age, bestm, best, btLower, depth, 0 ); + + if ( master ) + master->abortingSmp = 1; + + return best; + } + } + } + + if ( abortingSmp ) + { + for (size_t i=0; isearch.rootMoves; + if ( rm.bestMove == mcNone ) + continue; + best = rm.bestScore; + rootMoves = rm; + + // we have to reset cached pvs if any + for (size_t i=0; iscore, oalpha, beta, j ); + + // FIXME: break here? + return best; + } + assert( bestm != mcNone ); + if ( bestm == mcNone ) + return scInvalid; // paranoid + } + + rootMoves.bestMove = bestm; + rootMoves.bestScore = best; + + // don't store if we're searching a subset of root moves! + if ( rootMoves.count && mode.moves.empty() ) + tt->store( board.sig(), age, bestm, best, (HashBound)(best > oalpha ? btExact : btUpper), depth, 0 ); + + if ( master ) + master->abortingSmp = 1; + + return best; +} + +i32 Search::initIteration() +{ + i32 sticks = Timer::getMillisec(); + + iterBest = iterPonder = mcNone; + canStop = 0; + abortRequest = 0; + aborting = 0; + outputBest = 1; + ponderHit = 0; + verbose = 0; + verboseFixed = 1; + + timeOutCounter = 1023; + nodeTicks = startTicks = sticks; + + nodes = 0; + + // increment age + age++; + + return sticks; +} + +Score Search::iterate( Board &b, const SearchMode &sm, bool nosendbest ) +{ + assert( tt ); + + Score res = scInvalid; + + selDepth = 0; + for (size_t i=0; isearch.selDepth = 0; + + initIteration(); + startSearch.signal(); + + // don't output anything if we should think for a limited amount of time + verbose = verboseFixed = !sm.maxTime; + + board = b; + mode = sm; + + Killer killers(0); + History hist(0); + + rootMoves.moves[0].move = mcNone; + rootMoves.count = 0; + + // init with hashmove if available + tt->probe( b.sig(), 0, 0, scDraw, scDraw, killers.hashMove ); + + // init root moves + MoveGen mg( b, killers, hist ); + Move m; + rootMoves.discovered = mg.discovered(); + + while ( (m = mg.next()) != mcNone ) + { + if ( !sm.moves.empty() && std::find(sm.moves.begin(), sm.moves.end(), m) == sm.moves.end() ) + continue; + if ( !verboseFixed ) + infoPV[ rootMoves.count ].reset(); + RootMove &rm = rootMoves.moves[ rootMoves.count++ ]; + rm.nodes = 0; + rm.score = -scInfinity; + rm.move = m; + rm.pv[0] = mcNone; + rm.pvCount = 0; + } + + for (size_t i=0; i= verboseLimit ) + { + // turning on verbose; + verbose = 1; + flushCachedPV( rootMoves.count ); + } + + if ( d > 1 && (!mode.ponder || ponderHit) && mode.maxTime && !mode.fixedTime ) + { + // make sure we can at least finish first move on this iteration, + // assuming it will take 50% of current iteration (=100% previous iteration) + if ( total + lastIterationDelta > mode.maxTime ) + break; + } + + i32 limitStart = 0; + if ( eloLimit && maxElo < (u32)maxStrength ) + limitStart = curTicks; + + if ( verbose ) + { + info.reset(); + info.flags |= sifDepth | sifTime; + info.depth = d; + info.time = (Time)total; + sendInfo(); + } + + if ( d == 1 ) + { + // depth 1: always full + // disable timeout here + abortingSmp = 0; + enableTimeOut(0); + res = lastIteration = root( d, -scInfinity, +scInfinity ); + enableTimeOut(1); + canStop = 1; + if ( abortRequest ) + aborting = 1; + } + else if ( mode.multiPV > 1 ) + { + // lazySMP kicks in here + smpStart( d, -scInfinity, scInfinity ); + res = root( d, -scInfinity, scInfinity ); + smpStop(); + } + else + { + // aspiration search + Score prevScore = lastIteration; + + Score alpha = lastIteration - 15; + Score beta = lastIteration + 15; + + i32 maxTime = mode.maxTime; + bool blunderCheck = 0; + + for (;;) + { + alpha = std::max( -scInfinity, alpha ); + beta = std::min( +scInfinity, beta ); + assert( alpha < beta ); + + // lazySMP kicks in here + smpStart( d, alpha, beta ); + Score score = root( d, alpha, beta ); + smpStop(); + + if ( aborting ) + break; + + res = score; + + if ( score > alpha && score < beta ) + { + lastIteration = score; + break; + } + if ( score <= alpha ) + { + // fail low + alpha = (alpha - lastIteration)*2; + alpha += lastIteration; + if ( abs( score - prevScore ) >= 30 ) + { + // blunder warning => give more time to resolve iteration (if possible) + blunderCheck = 1; + mode.maxTime = mode.absLimit; + } + } + else + { + // fail high + beta = (beta - lastIteration)<<1; + beta += lastIteration; + } + } + if ( blunderCheck ) + mode.maxTime = maxTime; + } + if ( eloLimit && maxElo < (u32)maxStrength ) + { + // we're in elo limit mode elo => add artificial slowdown! + i32 ticks = Timer::getMillisec(); + i32 delta = ticks - limitStart; + i32 slowdown = (i32)maxStrength - (i32)maxElo; + // -100 = 2x slower + // -200 = 4x slower + // -300 = 8x slower + // -400 = 16x slower + // -500 = 32x slower + // -600 = 64x slower + // -700 = 128x slower + // -800 = 256x slower + // -900 = 512x slower + // -1000 = 1024x slower + // -1100 = 2048x slower + // -1200 = 4096x slower + // -1300 = 8192x slower + // -1400 = 16384x slower + // -1500 = 32768x slower + // -1600 = 65536x slower + // -1700 = 131072x slower + // .. etc + i32 delay = (i32)(pow(2.0, slowdown/100.0) * delta); + delay -= delta + 1; // adjust for sleep granularity + if ( sm.maxTime && ticks + delay - startTicks >= sm.maxTime ) + aborting = 1; // early exit => we won't be able to reach next iteration anyway + while ( delay > 0 && !aborting && eloLimit && maxElo < (u32)maxStrength ) + { + Thread::sleep(1); + // hack to force timeout check + timeOutCounter = 1023; + if ( timeOut() ) + { + aborting = 1; + break; + } + i32 current = Timer::getMillisec() - ticks; + if ( current >= delay ) + break; + } + } + if ( aborting ) + break; + } + + flushCachedPV( rootMoves.count ); + + if ( mode.ponder ) + { + // wait for stop or ponderhit! + // FIXME: better! (use event) + while ( !aborting && !ponderHit ) + Thread::sleep(1); + } + + // finally report total nodes and time + if ( verbose ) + { + i32 dt = Timer::getMillisec() - startTicks; + info.reset(); + info.flags |= sifTime | sifNodes | sifNPS; + info.nodes = smpNodes(); + info.nps = dt ? info.nodes * 1000 / dt : 0; + info.time = (Time)dt; + sendInfo(); + } + + if ( outputBest ) + { + // return best move and ponder move (if available) + if ( !rootMoves.sorted[0] ) + { + iterBest = iterPonder = mcNone; + if ( !nosendbest ) + sendBest(); + return res; + } + const RootMove &rm = *rootMoves.sorted[0]; + iterBest = rm.move; + if ( rm.pvCount > 1 ) + iterPonder = rm.pv[1]; + if ( iterPonder == mcNone && iterBest != mcNone && rootMoves.count ) + { + // we don't have a move to ponder on! + // this can happen if we're in the middle of resolving a fail-low or fail-high and time is up + // so try to extract it from hashtable! + iterPonder = extractPonderFromHash( iterBest ); + } + if ( !nosendbest ) + sendBest(); + } + return res; +} + +void Search::getBest( SearchInfo &sinfo ) +{ + sinfo.reset(); + sinfo.flags |= sifBestMove; + sinfo.bestMove = iterBest; + if ( iterPonder != mcNone ) + { + sinfo.flags |= sifPonderMove; + sinfo.ponderMove = iterPonder; + } + iterBest = iterPonder = mcNone; +} + +void Search::sendBest() +{ + getBest( info ); + sendInfo(); +} + +void Search::setCallback( SearchCallback cbk, void *param ) +{ + callback = cbk; + callbackParam = param; +} + +// execute info callback +void Search::sendInfo( const SearchInfo &sinfo ) const +{ + if ( !sinfo.flags || !callback ) + return; + callback( sinfo, callbackParam ); +} + +void Search::sendInfo() const +{ + sendInfo( info ); +} + +// copy underlying PV +void Search::copyPV( Ply ply ) +{ + uint index = triIndex(ply); + Move *dst = triPV + index + 1; + const Move *src = triPV + index + (maxPV-ply); + assert( index + (maxPV-ply) == triIndex(ply+1) ); + do + { + *dst++ = *src; + } while ( *src++ ); +} + +// extract PV for rm +void Search::extractPV( RootMove &rm ) const +{ + rm.pvCount = 0; + const Move *src = triPV; + assert( *src ); + while ( *src ) + rm.pv[ rm.pvCount++ ] = *src++; + rm.pv[ rm.pvCount ] = mcNone; +} + +Move Search::extractPonderFromHash( Move best ) +{ + Move ponder; + UndoInfo ui; + board.doMove( best, ui, board.isCheck( best, board.discovered()) ); + tt->probe(board.sig(), 0, 0, scDraw, scDraw, ponder); + if ( ponder != mcNone ) + { + // found - now make sure it's legal + bool legal = board.inCheck() ? board.isLegal< 1, 0 >(ponder, board.pins()) + : board.isLegal< 0, 0 >(ponder, board.pins()); + if ( !legal ) + ponder = mcNone; + } + board.undoMove(ui); + return ponder; +} + +// set helper threads +void Search::setThreads( size_t nt ) +{ + if ( nt > maxThreads ) + nt = maxThreads; + if ( smpThreads.size() == nt ) + return; + for ( size_t i=0; i < smpThreads.size(); i++) + smpThreads[i]->kill(); + smpThreads.clear(); + for ( size_t i=0; i < nt; i++) + { + LazySMPThread *smpt = new LazySMPThread; + smpt->search.master = this; + smpt->search.setHashTable( tt ); + smpt->run(); + smpThreads.push_back( smpt ); + } +} + +// set maximum # of helper threads +void Search::setMaxThreads( size_t maxt ) +{ + maxThreads = maxt; + setThreads( smpThreads.size() ); +} + +// set multipv (can also be called while analyzing!) +void Search::setMultiPV( uint mpv ) +{ + newMultiPV = mpv; +} + +void Search::setEloLimit( bool limit ) +{ + eloLimit = limit; +} + +void Search::setMaxElo( u32 elo ) +{ + maxElo = elo; +} + +// enable timeout +void Search::enableTimeOut( bool enable ) +{ + if ( !enable ) + searchFlags |= sfNoTimeout; + else + searchFlags &= ~sfNoTimeout; +} + + +// enable nullmove +void Search::enableNullMove( bool enable ) +{ + if ( !enable ) + searchFlags |= sfNoNullMove; + else + searchFlags &= ~sfNoNullMove; +} + +void Search::smpStart( Depth depth, Score alpha, Score beta ) +{ + abortingSmp = 0; + for ( size_t i=0; istart( depth + (Depth)((i&1)^1), alpha, beta, *this ); +} + +void Search::smpStop() +{ + for ( size_t i=0; iabort(); +} + +void Search::smpSync() const +{ + for ( size_t i=0; isearching ); + Search &s = smpThreads[i]->search; + s.initIteration(); + s.age = age; + s.board = board; + // FIXME: better? + s.rep.copyFrom(rep); + s.history = history; + s.rootMoves = rootMoves; + // never use timeout for smp helper threads! + s.searchFlags = searchFlags | sfNoTimeout; + } +} + +// static init +void Search::init() +{ + TUNE_EXPORT(Score, razorMargin1, razorMargins[1]); + TUNE_EXPORT(Score, razorMargin2, razorMargins[2]); + TUNE_EXPORT(Score, razorMargin3, razorMargins[3]); + + TUNE_EXPORT(Score, futMargin1, futMargins[1]); + TUNE_EXPORT(Score, futMargin2, futMargins[2]); + TUNE_EXPORT(Score, futMargin3, futMargins[3]); + TUNE_EXPORT(Score, futMargin4, futMargins[4]); + + TUNE_EXPORT(Score, betaMargin1, betaMargins[1]); + TUNE_EXPORT(Score, betaMargin2, betaMargins[2]); + TUNE_EXPORT(Score, betaMargin3, betaMargins[3]); + TUNE_EXPORT(Score, betaMargin4, betaMargins[4]); +} + +// LazySMPThread + +LazySMPThread::LazySMPThread() : searching(0), shouldQuit(0) +{ + memset( &commandData, 0, sizeof(commandData) ); +} + +void LazySMPThread::destroy() +{ + search.abort(1); + shouldQuit = 1; + commandEvent.signal(); + quitEvent.wait(); +} + +void LazySMPThread::work() +{ + SearchMode sm; + sm.reset(); + search.mode = sm; + + for (;;) + { + commandEvent.wait(); + // search or quit! + if ( shouldQuit ) + break; + + Depth depth; + Score alpha, beta; + const CommandData &c = commandData; + depth = c.depth; + alpha = c.alpha; + beta = c.beta; + search.mode.multiPV = c.multiPV; + search.rootMoves = c.rootMoves; + search.abortRequest = 0; + search.aborting = 0; + search.rootMoves.bestMove = mcNone; + searching = 1; + startedSearch.signal(); + + assert( search.searchFlags & sfNoTimeout ); + search.root( depth, alpha, beta ); + + searching = 0; + doneSearch.signal(); + } + quitEvent.signal(); +} + +void LazySMPThread::abort() +{ + search.abort(1); + doneSearch.wait(); +} + +void LazySMPThread::start( Depth depth, Score alpha, Score beta, const Search &master ) +{ + CommandData &cd = commandData; + cd.depth = depth; + cd.alpha = alpha; + cd.beta = beta; + cd.rootMoves = master.rootMoves; + cd.multiPV = master.mode.multiPV; + + commandEvent.signal(); + startedSearch.wait(); +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/search.h b/Engines/Linux/cheng/src/cheng4/search.h new file mode 100644 index 0000000..65c64d4 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/search.h @@ -0,0 +1,411 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "board.h" +#include "history.h" +#include "killer.h" +#include "trans.h" +#include "eval.h" +#include "repetition.h" +#include "thread.h" +#include + +namespace cheng4 +{ + +struct SearchMode +{ + std::vector< Move > moves; // search only these moves (if not empty) + uint mateSearch; // if nonzero, search for mate in x moves + Depth maxDepth; // maximum search depth (only if nonzero) + NodeCount maxNodes; // maximum nodes to search (only if nonzero) + uint multiPV; // multiPV (default: 1 => no multipv) + i32 maxTime; // maximum time in milliseconds (0 if infinite) + i32 absLimit; // absolute maximum time in msec (0 if infinite) + volatile bool ponder; // pondering? + bool fixedTime; // fixed time per move + + void reset(); +}; + +// extra search flags +enum SearchFlags +{ + sfNoTimeout = 1, + sfNoNullMove = 2 +}; + +enum SearchInfoFlags +{ + sifNodes = 1, + sifNPS = 2, + sifTB = 4, + sifDepth = 8, + sifSelDepth = 16, + sifCurIndex = 32, + sifCurMove = 64, + sifTime = 128, + sifPV = 256, + sifHashFull = 512, + sifBestMove = 1024, + sifPonderMove = 2048, + sifRaw = 4096 // protocol send mode hack: force raw (direct)mode +}; + +struct SearchInfo +{ + const Move *pv; // PV + NodeCount nodes; // nodes + NodeCount nps; // nps + u64 tbHits; // TB hits + Ply selDepth; // selective depth + + MoveCount curIndex; // zero-based + MoveCount curCount; // total move count + + Move curMove; // current move + Time time; // total time searched so far + + uint pvIndex; // multi pv mode: zero-based index + Score pvScore; // PV score + uint pvCount; // number of moves in PV + + uint hashFull; // hash full (permill) + Move bestMove; // best move + Move ponderMove; // ponder move + + uint flags; // flags valid entries + enum BoundType pvBound; // bound type + Depth depth; // current nominal depth + + // reset search info + void reset(); +}; + +class LazySMPThread; + +typedef void (*SearchCallback)( const SearchInfo &si, void *param ); + +struct Search +{ + struct Stack + { + Move current; // current move + Killer killers; // killers + FracDepth reduction; // reducing + u32 pad[2]; // pad structure to 32 bytes + }; + + Board board; // board + History history; // history table + Eval eval; // eval + + Stack stack[ maxStack ]; // search stack + + RepHash rep; // repetition stack + i32 startTicks; // start ticks + i32 nodeTicks; // last reported node counts + uint timeOutCounter; // time out node counter + Move *triPV; // triangular PV table + volatile uint newMultiPV; // next iteration multiPV (0 = none) + Ply selDepth; // selective depth for this thread + + // shared data + TransTable *tt; // transposition table (shared) + SearchMode mode; // search mode + NodeCount nodes; + Age age; + + // lazy SMP helper threads (always desired_threads-1) + std::vector< LazySMPThread * > smpThreads; + + SearchInfo info; + SearchInfo infoPV[maxMoves]; + SearchCallback callback; + void *callbackParam; + + bool canStop; // can stop search (at least iteration 1 must complete) + bool abortRequest; // abort search requested? + AbortFlag volatile aborting; // aborting search? + AbortFlag volatile abortingSmp; // aborting because another thread has finished root window + bool volatile outputBest; // output bestmove? (used in conjunction with aborting flag) + bool volatile ponderHit; // ponderhit! + + size_t maxThreads; // maximum number of helper threads allowed (i.e 0 = none; 1 thread total) + // defaults to 63 + volatile bool eloLimit; // elo limit master flag + volatile u32 maxElo; // 2500 = full + + Depth minQsDepth; // min qsearch depth (limits qs explosions) + + bool verbose; // can send verbose commands (currmove etc.)? + bool verboseFixed; // if this is set, verboseLimit is ignored and verbose is fixed + volatile u8 searchFlags; // search flags + + Move iterBest, iterPonder; // best/ponder move from last iteration + + // root data + struct RootMove + { + Move move; + Score score; + NodeCount nodes; + Move pv[maxPV]; + uint pvCount; + }; + + struct RootMovePtrPred + { + inline bool operator()( const RootMove *m0, const RootMove *m1 ) const + { + if ( m0->score != m1->score ) + return m0->score > m1->score; + return m0->nodes > m1->nodes; + } + }; + + struct RootMoves + { + Bitboard discovered; // discovered checkers mask + RootMove moves[ maxMoves ]; + RootMove *sorted[ maxMoves ]; + size_t count; + Move bestMove; // root search best move + Score bestScore; // root search best score + + inline RootMoves() {} + inline RootMoves( const RootMoves &o ) { *this = o; } + RootMoves &operator =( const RootMoves &o ); + }; + + RootMoves rootMoves; + RootMovePtrPred rootPred; + + Event startSearch; // start search event (signaled when it's safe to set abort flag!) + // note: manual reset event + + // timed out? + bool timeOut(); + + // extensions (before move is made) + template< bool pv > FracDepth extend( Move m, bool isCheck, Bitboard dc ) const + { + if ( isCheck ) + { + (void)dc; // no warnings about unreferenced param + // extend non-discovered checks in non-pv nodes less + if ( !pv && !(BitOp::oneShl(MovePack::from(m)) & dc) ) + return fracOnePly/2; + return fracOnePly; + } + + if ( MovePack::isCapture(m) ) + { + NPMat npm = board.nonPawnMat(); + if ( npm && npm == Tables::npValue[ PiecePack::type(board.piece(MovePack::to(m))) ] ) + return fracOnePly; // extend pawn ending one ply + } + FracDepth ext = 0; + + Piece p = board.piece( MovePack::from(m) ); + if ( PiecePack::type( p ) != ptPawn ) + return ext; + Square to = MovePack::to(m); + if ( (board.turn() == ctWhite ? SquarePack::relRank(to) : SquarePack::relRank(to)) != RANK7 ) + return ext; + if ( Tables::passerMask[ board.turn() ][ to ] & board.pieces( flip(board.turn()), ptPawn ) ) + return ext; + // extend passer pushes to 7th rank 1 ply + return fracOnePly; + } + + // compute triangular PV base index (see CPW) + static inline uint triIndex( Ply ply ) + { + return ply*(2*maxPV+1-ply)/2; + } + + // copy underlying PV + void copyPV( Ply ply ); + + template inline uint initPly( Ply ply ) + { + uint res; + stack[ ply ].current = mcNone; +#ifdef USE_TUNING + stack[ ply ].killers.hashMove = mcNone; // note: this is only necessary if we don't hash qsearch +#endif + stack[ ply+2 ].killers.clear(); + nodes++; + if ( pv ) + triPV[res = triIndex(ply)] = mcNone; + else + res = 0; + return res; + } + + // is draw? + inline bool isDraw() const + { + return (board.isDraw() != drawNotDraw) || rep.isRep( board.sig() ); + } + + // quiescence search + template< bool pv, bool incheck > Score qsearch( Ply ply, Depth depth, Score alpha, Score beta ); + + // alpha-beta search + template< bool pv, bool incheck, bool donull > + Score search( Ply ply, FracDepth fdepth, Score alpha, Score beta ); + + // send PV info + void sendPV( const RootMove &rm, Depth depth, Score score, Score alpha, Score beta, uint mpvindex = 0 ); + + // this is for delaying PV results + void flushCachedPV( size_t totalMoves ); + + // do root search + Score root( Depth depth, Score alpha = -scInfinity, Score beta = +scInfinity ); + + // start new search and iterate + Score iterate( Board &b, const SearchMode &sm, bool nosendbest = 0 ); + + // clear all helper slots + void clearSlots( bool clearEval = 1 ); + + // clear hashtable (and slots) + void clearHash(); + + // set hashtable + void setHashTable( TransTable *tt_ ); + + // abort search + // nobest: when set, don't output bestmove + inline void abort( bool nobest = 0 ) + { + if ( !nobest && !canStop ) + abortRequest = 1; + else + aborting = 1; + outputBest = !nobest; + } + + void setCallback( SearchCallback cbk, void *param = 0 ); + + // execute info callback + void sendInfo() const; + void sendInfo( const SearchInfo &sinfo ) const; + + // get bestmove/pondermove from last iteration + void getBest( SearchInfo &sinfo ); + + // send bestmove/pondermove from last iteration + void sendBest(); + + // extract PV for rm + void extractPV( RootMove &rm ) const; + + Move extractPonderFromHash( Move best ); + + Search( size_t evalKilo = 256, size_t pawnKilo = 512, size_t matKilo = 64 ); + ~Search(); + + // set helper threads + void setThreads( size_t nt ); + + // set maximum # of helper threads + void setMaxThreads( size_t maxt ); + + // set multipv (can also be called while analyzing!) + void setMultiPV( uint mpv ); + + // set elo limit master flag + void setEloLimit( bool limit ); + + // set maximum elo limit (2500 = full) + void setMaxElo( u32 elo ); + + // enable timeout flag + void enableTimeOut( bool enable ); + + // enable nullmove flag + void enableNullMove( bool enable ); + + // start root smp search + void smpStart( Depth depth, Score alpha, Score beta ); + // stop root smp search + void smpStop(); + // sync smp threads (before iteration starts) + void smpSync() const; + + // return number of nodes searched + inline NodeCount smpNodes() const; + + // static init + static void init(); + +protected: + Search *master; // SMP master + i32 initIteration(); +}; + +class LazySMPThread : public Thread +{ +public: + Search search; + + struct CommandData + { + Depth depth; + Score alpha; + Score beta; + Search::RootMoves rootMoves; + uint multiPV; + } commandData; + + Event startedSearch; // set when search has started + Event doneSearch; // set when done with search + Event commandEvent; // set when command is pending + Event quitEvent; // quit event + volatile bool searching; // searching flag + volatile bool shouldQuit; // should quit? + + LazySMPThread(); + void destroy(); + + void start( Depth depth, Score alpha, Score beta, const Search &master ); + void abort(); + + void work(); +}; + +inline NodeCount Search::smpNodes() const +{ + NodeCount res = nodes; + for ( size_t i=0; isearch.nodes; + return res; +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/see.cpp b/Engines/Linux/cheng/src/cheng4/see.cpp new file mode 100644 index 0000000..9dbad58 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/see.cpp @@ -0,0 +1,148 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "board.h" +#include + +namespace cheng4 +{ + + // Board/see + + // static exchange evaluator + template< bool fast > int Board::see( Move m ) const + { + if ( MovePack::isCastling( m ) || MovePack::isEpCapture( m ) ) + return 0; + Square from = MovePack::from( m ); + Piece pieceFrom = piece( from ); + Piece pfrom = PiecePack::type( pieceFrom ); + Square to = MovePack::to( m ); + + Piece pto = from == to ? (Piece)ptNone : PiecePack::type( piece( to ) ); + + int score = Tables::seeValue[ pto ]; + + // early exit when using fast (sign) see + if ( fast && Tables::seeValue[ pfrom ] <= score ) + return 0; + + Bitboard occ = occupied(); + // get attack mask + // do initial capture/move + occ &= BitOp::noneShl( from ); + // note: no need to clear 'to' bit + // now get all attackers + Bitboard attk = allAttacksTo( to, occ ); + + // FIXME: use turn() instead? => NO (so that I can use see in eval) + Color stm = flip( PiecePack::color( pieceFrom ) ); + + // exit sooner if undefended (FIXME: remove this? => TODO: measure) + if ( !(attk & pieces(stm)) ) + // undefended => winning + return score; + + // score list (swap) + int scores[64]; + int index = 1; + + Bitboard diagSliders = this->diagSliders(); + Bitboard orthoSliders = this->orthoSliders(); + Bitboard allSliders = diagSliders | orthoSliders; + + scores[ 0 ] = score; + int value = Tables::seeValue[ pfrom ]; + do + { + // TODO: refactor/simplify inner loop! + Piece p; + for ( p = ptPawn; p <= ptQueen; p++ ) + { + Bitboard tmp = attk & pieces( stm, p ); + if ( !tmp ) + continue; + + Bitboard attacker = (tmp & ((Bitboard)0-tmp)); // isolate LSBit of attacker + assert( attk & attacker ); + assert( occ & attacker ); + attk ^= attacker; + occ ^= attacker; + + // add hidden attackers + // FIXME: use smart extraction using dir and getLSB/getMSB? + // probably not as these may be slow on certain machines + switch(p) + { + case ptPawn: + case ptBishop: + attk |= Magic::bishopAttm( to, occ ) & diagSliders & occ; + break; + case ptRook: + attk |= Magic::rookAttm( to, occ ) & orthoSliders & occ; + break; + case ptQueen: + // only queen can hide both diagonal and orthogonal sliders + attk |= Magic::queenAttm( to, occ ) & allSliders & occ; + break; + } + + assert( index < 64 ); + scores[index] = -scores[ index-1 ] + value; + index++; + + value = Tables::seeValue[ p ]; + break; + } + + if ( p == ptKing ) + { + if ( (attk & BitOp::oneShl(king( stm ))) ) + { + // king does capture + assert( index < 64 ); + scores[index] = -scores[ index-1 ] + value; + index++; + + if ( attk & pieces( flip(stm) ) ) + { + scores[index] = Tables::seeValue[p]; // king recaptured! + index++; + } + } + break; + } + stm = flip( stm ); + } while ( attk & pieces(stm) ); + + // finally negamax score list + while ( --index > 0 ) + scores[ index-1 ] = std::min( scores[ index-1 ], -scores[ index ] ); + + return scores[0]; + } + + template int Board::see<0>( Move m ) const; + template int Board::see<1>( Move m ) const; + +} diff --git a/Engines/Linux/cheng/src/cheng4/tables.cpp b/Engines/Linux/cheng/src/cheng4/tables.cpp new file mode 100644 index 0000000..4d43565 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/tables.cpp @@ -0,0 +1,448 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "tables.h" +#include +#include + +// TODO: split init parts into more functions + +namespace cheng4 +{ + +// Tables + +u8 Tables::lsBit16[ 65536 ]; +u8 Tables::msBit16[ 65536 ]; +u8 Tables::popCount16[ 65536 ]; +u8 Tables::popCount8[ 256 ]; +Bitboard Tables::oneShlTab[ 64 ]; +Bitboard Tables::noneShlTab[ 256 ]; +Bitboard Tables::kingAttm[ 64 ]; +Bitboard Tables::knightAttm[ 64 ]; +Bitboard Tables::pawnAttm[ 2 ][ 64 ]; +bool Tables::neighbor[ 64 ][ 64 ]; +u8 Tables::direction[ 64 ][ 64 ]; +i8 Tables::advance[ dirMax ]; +Bitboard Tables::between[ 64 ][ 64 ]; +Bitboard Tables::ray[ 64 ][ 64 ]; +Bitboard Tables::diagAttm[ 64 ]; +Bitboard Tables::orthoAttm[ 64 ]; +Bitboard Tables::queenAttm[ 64 ]; +Bitboard Tables::passerMask[ 2 ][ 64 ]; +Bitboard Tables::frontMask[ 2 ][ 64 ]; +Bitboard Tables::isoMask[8]; +Bitboard Tables::chainMask[ 64 ]; +Bitboard Tables::outpostMask[ 2 ][ 64 ]; +u8 Tables::moveValid[ 64 ][ 64 ]; +u8 Tables::distance[ 64 ][ 64 ]; +const Bitboard Tables::seventhRank[2] = { + U64C(0x000000000000ff00), + U64C(0x00ff000000000000) +}; +const Bitboard Tables::eighthRank[2] = { + U64C(0x00000000000000ff), + U64C(0xff00000000000000) +}; +Bitboard Tables::fileMask[8]; +const u8 Tables::seeValue[] = { 0, 1, 3, 3, 5, 9, 99 }; +const u8 Tables::npValue[] = { 0, 0, 3, 3, 5, 9, 0 }; +const int Tables::sign[ctMax] = {1, -1}; +// at least nonzero for king - safeguard +const u8 Tables::mvvValue[ ptMax ] = { 1, 1, 2, 2, 3, 4, 1 }; +const u8 Tables::lvaValue[ ptMax ] = {0, 1, 2, 2, 3, 4, 0 }; +const Score Tables::gainPromo[ ptMax ] = { 0, 0, 225, 225, 400, 875, 0 }; // promotion score gain table +const Score Tables::gainCap[ ptMax ] = { 100, 100, 325, 325, 500, 975, 0}; // capture score gain table + +void Tables::init() +{ + // bitcount/lsbit/msbit tables + for (u32 i=0; i<65536; i++) + { + uint bc = 0; + for (uint j=0; j<16; j++) + if ( i & (1 << j) ) + bc++; + + popCount16[ i ] = (u8)bc; + if ( i < 256 ) + popCount8[ i ] = (u8)bc; + + for (uint j=0; j<16; j++) + { + if ( i & (1<> 1) & R1MASK; + b |= b >> 8; + b |= b << 8; + kingAttm[i] = b & noneShlTab[i]; + b = oneShlTab[i]; + Bitboard km = 0; + km |= (b << 17) & L1MASK; + km |= (b << 15) & R1MASK; + km |= (b >> 17) & R1MASK; + km |= (b >> 15) & L1MASK; + km |= (b << 10) & L2MASK; + km |= (b << 6) & R2MASK; + km |= (b >> 10) & R2MASK; + km |= (b >> 6) & L2MASK; + knightAttm[i] = km; + } + + // init neighbor table + for (Square i=0; i<64; i++) + for (Square j=0; j<64; j++) + neighbor[ i ][ j ] = (oneShlTab[i] & kingAttm[j]) != 0; + + // init advance table + advance[ dirNone ] = +0; + advance[ dirUp ] = -8; + advance[ dirDown ] = +8; + advance[ dirLeft ] = -1; + advance[ dirRight ] = +1; + advance[ dirUpLeft ] = -9; + advance[ dirUpRight ] = -7; + advance[ dirDownLeft ] = +7; + advance[ dirDownRight ] = +9; + + // init direction table + for (Square i=0; i<64; i++) + { + File f0 = SquarePack::file( i ); + Rank r0 = SquarePack::rank( i ); + for (Square j=0; j<64; j++) + { + direction[ i ][ j ] = dirNone; + if ( i == j ) + continue; + File f1 = SquarePack::file( j ); + Rank r1 = SquarePack::rank( j ); + if ( r0 == r1 ) + direction[ i ][ j ] = (u8)( f1 > f0 ? dirRight : dirLeft ); + else if ( f0 == f1 ) + direction[ i ][ j ] = (u8)( r1 > r0 ? dirDown : dirUp ); + else + { + int dx = (int)f1 - (int)f0; + int dy = (int)r1 - (int)r0; + if ( abs(dx) != abs(dy) ) + continue; + if ( dx < 0 && dy < 0 ) + direction[ i ][ j ] = dirUpLeft; + else if ( dx > 0 && dy < 0 ) + direction[ i ][ j ] = dirUpRight; + else if ( dx < 0 && dy > 0 ) + direction[ i ][ j ] = dirDownLeft; + else + direction[ i ][ j ] = dirDownRight; + } + } + } + + // init between/ray masks + for (Square i=0; i<64; i++) + { + for (Square j=0; j<64; j++) + { + between[i][j] = ray[i][j] = 0; + u8 dir = direction[ i ][ j ]; + if ( dir == dirNone ) + continue; + Bitboard mask = oneShlTab[i]; + Square s = i; + while ( s != j ) + { + s = (Square)(s+advance[ dir ]); + if ( s < 64 ) // keep static analyzer happy + mask |= oneShlTab[ s ]; + } + between[ i ][ j ] = mask; + + // now ray + Bitboard rm = oneShlTab[i]; + for (uint k=0; k<8; k++) + { + switch( dir ) + { + case dirUp: + rm |= (rm >> 8); + break; + case dirDown: + rm |= (rm << 8); + break; + case dirLeft: + rm |= (rm >> 1) & R1MASK; + break; + case dirRight: + rm |= (rm << 1) & L1MASK; + break; + case dirUpLeft: + rm |= (rm >> 9) & R1MASK; + break; + case dirDownRight: + rm |= (rm << 9) & L1MASK; + break; + case dirUpRight: + rm |= (rm >> 7) & L1MASK; + break; + case dirDownLeft: + rm |= (rm << 7) & R1MASK; + break; + } + } + rm &= noneShlTab[i]; + ray[ i ][ j ] = rm; + assert( between[i][j] & ray[i][j] ); + } + } + + // pawn attack mask + for (Square i=0; i<64; i++) + { + Bitboard b = oneShlTab[i]; + Bitboard m; + m = (b >> 9) & R1MASK; + m |= (b >> 7) & L1MASK; + pawnAttm[ ctWhite ][ i ] = m; + m = (b << 9) & L1MASK; + m |= (b << 7) & R1MASK; + pawnAttm[ ctBlack ][ i ] = m; + } + + // diagonal/orthogonal attack masks + for (Square i=0; i<64; i++) + { + Bitboard m = 0; + Bitboard bit = oneShlTab[i]; + Bitboard b; + b = bit; + for (uint j=0; j<8; j++) + { + b |= (b >> 9) & R1MASK; + b |= (b << 9) & L1MASK; + } + m |= b; + b = bit; + for (uint j=0; j<8; j++) + { + b |= (b >> 7) & L1MASK; + b |= (b << 7) & R1MASK; + } + m |= b; + m &= ~bit; + diagAttm[ i ] = m; + + m = 0; + b = bit; + for (uint j=0; j<8; j++) + { + b |= (b << 1) & L1MASK; + b |= (b >> 1) & R1MASK; + } + m |= b; + b = bit; + for (uint j=0; j<8; j++) + { + b |= b >> 8; + b |= b << 8; + } + m |= b; + m &= ~bit; + orthoAttm[ i ] = m; + queenAttm[ i ] = m | diagAttm[i]; + } + + // init movevalid table + for (Square i=0; i<64; i++) + for (Square j=0; j<64; j++) + { + u8 &m = moveValid[i][j]; + m = 0; + if ( i == j ) + continue; + if ( neighbor[i][j] ) + m |= 1 << ptKing; + if ( knightAttm[i] & oneShlTab[j] ) + m |= 1 << ptKnight; + if ( diagAttm[i] & oneShlTab[j] ) + m |= 1 << ptBishop; + if ( orthoAttm[i] & oneShlTab[j] ) + m |= 1 << ptRook; + if ( queenAttm[i] & oneShlTab[j] ) + m |= 1 << ptQueen; + } + + // init passerMask table + for ( Color c=ctWhite; c <= ctBlack; c++ ) + for ( Square sq = 0; sq < 64; sq++ ) + { + Bitboard b = oneShlTab[sq]; + if ( c == ctWhite ) + { + // white + b >>= 8; + b |= (b >> 1) & R1MASK; + b |= (b << 1) & L1MASK; + for (int i=0; i<8; i++) + b |= b >> 8; + } + else + { + // black + b <<= 8; + b |= (b >> 1) & R1MASK; + b |= (b << 1) & L1MASK; + for (int i=0; i<8; i++) + b |= b << 8; + } + passerMask[c][sq] = b; + } + + // init frontMask table + for ( Color c=ctWhite; c <= ctBlack; c++ ) + for ( Square sq = 0; sq < 64; sq++ ) + { + Bitboard b = oneShlTab[sq]; + for (uint i=0; i<8; i++) + b |= BitOp::shiftForward(c, b); + b &= noneShlTab[sq]; + frontMask[c][sq] = b; + } + + // init outpostMask table + for ( Color c=ctWhite; c <= ctBlack; c++ ) + for ( Square sq = 0; sq < 64; sq++ ) + { + Bitboard b = pawnAttm[c][sq]; + for (uint i=0; i<8; i++) + b |= BitOp::shiftForward(c, b); + outpostMask[c][sq] = b; + } + // init fileMask table + for ( File f = AFILE; f <= HFILE; f++ ) + { + Bitboard b = oneShlTab[(Square)f]; + for ( uint i=0; i<8; i++ ) + b |= b << 8; + fileMask[f] = b; + } + // init distance table + for ( Square i = 0; i < 64; i++ ) + { + File fi = SquarePack::file( i ); + Rank ri = SquarePack::rank( i ); + for ( Square j = 0; j < 64; j++ ) + { + File fj = SquarePack::file( j ); + Rank rj = SquarePack::rank( j ); + int dx = (int)fj - (int)fi; + int dy = (int)rj - (int)ri; + int adx = abs(dx); + int ady = abs(dy); + int sqd = std::min( adx, ady ); + int dist = sqd + (adx - sqd) + (ady - sqd); + distance[ i ][ j ] = (u8)dist; + } + } + // init isoPawnMask + for ( File i = 0; i<8; i++ ) + { + Bitboard tmp = fileMask[i]; + isoMask[i] = BitOp::shiftLeft(tmp) | BitOp::shiftRight(tmp); + } + // init chainMask + for ( Square i = 0; i<64; i++ ) + { + Bitboard tmp = BitOp::oneShl(i); + Bitboard b = BitOp::shiftLeft(tmp) | BitOp::shiftRight(tmp); + b |= b << 8; + b |= b >> 8; + chainMask[i] = b; + } +} + +// BitOp + +bool BitOp::hwPopCnt = 0; + +// disable hardware popcount +void BitOp::disableHwPopCount() +{ + hwPopCnt = 0; +} + +// static init (detects hw popcount) +void BitOp::init() +{ +#ifdef _MSC_VER + int id[4] = {0}; + __cpuid(id, 0); + int nids = id[0]; + if ( nids >= 2 ) + { + id[2] = 0; + __cpuid(id, 1); + hwPopCnt = (id[2] & 0x800000) != 0; + } +#elif defined(__GNUC__) && !defined(__ANDROID__) + int id[4] = {0}; + asm( + "cpuid": + "=a" (id[0]), + "=b" (id[1]), + "=c" (id[2]), + "=d" (id[3]) : + "a" (0) + ); + int nids = id[0]; + if ( nids >= 2 ) + { + id[2] = 0; + asm( + "cpuid": + "=a" (id[0]), + "=b" (id[1]), + "=c" (id[2]), + "=d" (id[3]) : + "a" (1) + ); + hwPopCnt = (id[2] & 0x800000) != 0; + } +#endif +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/tables.h b/Engines/Linux/cheng/src/cheng4/tables.h new file mode 100644 index 0000000..7665810 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/tables.h @@ -0,0 +1,403 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "chtypes.h" + +#ifndef __ANDROID__ +# define USE_POPCNT +#endif + +#if defined(_MSC_VER) +# include +#endif + +namespace cheng4 +{ + +enum PopCountMode +{ + pcmNormal, + pcmHardware +}; + +// files +enum Files +{ + AFILE, BFILE, CFILE, DFILE, EFILE, FFILE, GFILE, HFILE +}; + +// ranks +enum Ranks +{ + RANK8, RANK7, RANK6, RANK5, RANK4, RANK3, RANK2, RANK1 +}; + +// squares +enum Squares +{ + A8, B8, C8, D8, E8, F8, G8, H8, + A7, B7, C7, D7, E7, F7, G7, H7, + A6, B6, C6, D6, E6, F6, G6, H6, + A5, B5, C5, D5, E5, F5, G5, H5, + A4, B4, C4, D4, E4, F4, G4, H4, + A3, B3, C3, D3, E3, F3, G3, H3, + A2, B2, C2, D2, E2, F2, G2, H2, + A1, B1, C1, D1, E1, F1, G1, H1 +}; + +// square-color masks +static const Bitboard lightSquares = U64C( 0xaa55aa55aa55aa55 ); +static const Bitboard darkSquares = U64C( 0x55aa55aa55aa55aa ); +static const Bitboard pawnPromoSquares = U64C( 0xff000000000000ff ); + +// shift-adjust masks +static const Bitboard L1MASK = U64C( 0xfefefefefefefefe ); +static const Bitboard L2MASK = U64C( 0xfcfcfcfcfcfcfcfc ); +static const Bitboard R1MASK = U64C( 0x7f7f7f7f7f7f7f7f ); +static const Bitboard R2MASK = U64C( 0x3f3f3f3f3f3f3f3f ); + +struct BitOp; + +// singleton +struct Tables +{ + static Bitboard oneShlTab[64]; + static Bitboard noneShlTab[256]; // FIXME: 256 instead of 64 due to silly gcc compiler warning? + static Bitboard kingAttm[64]; + static Bitboard knightAttm[64]; + static Bitboard pawnAttm[2][64]; + static bool neighbor[64][64]; + static Bitboard between[64][64]; + static Bitboard ray[64][64]; // semi-infinite ray [from][to], goes beyond to + static Bitboard diagAttm[64]; // diagonal pseudo attack mask + static Bitboard orthoAttm[64]; // orthogonal pseudo attack mask + static Bitboard queenAttm[64]; // queen pseudo attack mask + static Bitboard passerMask[2][64]; // passer mask [color][square] + static Bitboard frontMask[2][64]; // in front mask [color][square] + static Bitboard isoMask[8]; // isolated mask [file] + static Bitboard chainMask[64]; // chained mask [file] + static Bitboard outpostMask[2][64]; // outpost mask [color][square]: if there are no opp pawns in this mask + // then it may be an outpost + static u8 direction[64][64]; // [from][to] + static u8 moveValid[64][64]; // move valid: [from][to] & (1< static inline Bitboard sliderAttm( Square sq ) + { + assert( isSlider( pt ) ); + if ( pt == ptBishop ) + return diagAttm[ sq ]; + if ( pt == ptRook ) + return orthoAttm[ sq ]; + if ( pt == ptQueen ) + return queenAttm[ sq ]; + return 0; + } + +protected: + friend struct BitOp; + // pop counts for each 16-bit parts + static u8 popCount16[ 65536 ]; + static u8 popCount8[ 256 ]; + // lsb/msb stuff + static u8 lsBit16[ 65536 ]; + static u8 msBit16[ 65536 ]; +}; + +#if (defined(__GNUC__) && (defined(__LP64__) || defined(__x86_64__))) || (defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_X64))) +# define IS_X64 1 +#endif + +// singleton +struct BitOp +{ + // TODO: rename to something more logical + static inline Bitboard oneShl( Square x ) + { + assert( !( x & ~63 ) ); +#ifdef IS_X64 + return U64C(1) << x; +#else + return Tables::oneShlTab[ x ]; +#endif + } + + static inline Bitboard noneShl( Square x ) + { + assert( !( x & ~63 ) ); +#ifdef IS_X64 + return ~(U64C(1) << x); +#else + return Tables::noneShlTab[ x ]; +#endif + } + + static inline uint getLSB( u64 m ) + { + assert( m ); +#ifndef _MSC_VER + #if defined(__GNUC__) && defined(__i386__) + i32 res; + asm( + "bsfl (%1),%%eax;" + "jnz 0f;" + "bsfl 4(%1),%%eax;" + "orl $0x20,%%eax;" + "0:movl %%eax,%0" : + "=r" (res) : + "r" (&m) : + "cc", "eax" + ); + return res; + #elif defined(__GNUC__) && defined(IS_X64) + u64 res; + asm( + "bsfq %1, %0" : + "=r" (res) : + "rm" (m) : "cc" + ); + return (uint)(res & 0xffffffffu); +// return __builtin_ffsl(m); // FIXME: doesn't work here => I wonder why? + #else + for (uint i=0; m && i<4*16; i+=16, m >>= 16) + { + u16 p = (u16)m; + if ( p ) + return Tables::lsBit16[ p ] + i; + } + return 0u-1u; + #endif +#else + #if defined ( _M_AMD64 ) || defined ( _M_X64 ) + unsigned long index; + _BitScanForward64(&index, m); + return index; + #else + __asm + { + bsf eax, dword ptr [m] + jnz done + bsf eax, dword ptr [m+4] + or eax, 32 +done: + } + #endif +#endif + } + + static inline Square popBit( u64 &m ) + { + assert( m ); + Square res = (Square)getLSB(m); + m &= m - 1; + return res; + } + + static inline uint getMSB( u64 m ) + { + assert( m ); +#ifndef _MSC_VER + #if defined(__GNUC__) && defined(__i386__) + u32 res; + asm( + "bsrl 4(%1),%%eax;" + "jnz 1f;" + "bsrl (%1),%%eax;" + "jnz 0f;" + "1:orl $0x20,%%eax;" + "0:movl %%eax,%0" : + "=r" (res) : + "r" (&m) : + "cc", "eax" + ); + return (uint)res; + #elif defined(__GNUC__) && defined(IS_X64) + u64 res; + asm( + "bsrq %1, %0" : + "=r" (res) : + "rm" (m) : "cc" + ); + return (uint)(res & 0xffffffffu); + #else + for (uint i=3*16; m; i-=16, m <<= 16) + { + u16 p = (u16)((m >> 48) & 0xffffu); + if ( p ) + return (uint)(Tables::msBit16[ p ] + i); + } + return (uint)(0u-1u); + #endif +#else + #if defined ( _M_AMD64 ) || defined ( _M_X64 ) + unsigned long index; + unsigned char isNonzero; + isNonzero = _BitScanReverse64(&index, m); + return (uint)(index & 0xffffffffu); + #else + __asm + { + bsr eax, dword ptr [m+4] //edi + jnz done1 + bsr eax, dword ptr [m] //esi + jnz done +done1: + or eax, 32 +done: + } + #endif +#endif + } + + // return pop count for a 64-bit rep + template< PopCountMode pcm > static inline uint popCount( u64 val ) + { +#ifdef USE_POPCNT + if ( pcm == pcmHardware ) + { + #ifdef _MSC_VER + #if defined ( _M_AMD64 ) || defined ( _M_X64 ) + // stupid Intel is slower using __popcnt64!!! + #if defined(__INTEL_COMPILER) + return (uint)_mm_popcnt_u64( val ); + #else + return (uint)__popcnt64( val ); + #endif + #else + // stupid Intel is slower using __popcnt64!!! + #if defined(__INTEL_COMPILER) + return (uint)(_mm_popcnt_u32( (u32)(val & 0xffffffffu) ) + _mm_popcnt_u32( (u32)(val >> 32) )); + #else + return (uint)(__popcnt( (u32)(val & 0xffffffffu) ) + __popcnt( (u32)(val >> 32) )); + #endif + #endif + #elif defined(__GNUC__) + #if defined(IS_X64) + u64 res; + asm( + "popcnt %1, %0" : + "=r" (res) : + "rm" (val) : "cc" + ); + return (uint)(res & 0xffffffffu); + #else + u32 res, res2; + asm( + "popcnt %1, %0" : + "=r" (res) : + "rm" ((u32)(val & 0xffffffffu)) : "cc" + ); + asm( + "popcnt %1, %0" : + "=r" (res2) : + "rm" ((u32)(val >> 32)) : "cc" + ); + return (uint)(res+res2); + #endif + #else + assert( 0 && "HW popcount not supported" ); + return 0; + #endif + } + else +#endif + { + return (uint)( + Tables::popCount16[ val & 65535 ] + + Tables::popCount16[ (val >> 16) & 65535 ] + + Tables::popCount16[ (val >> 32) & 65535 ] + + Tables::popCount16[ (val >> 48) & 65535 ]); + } + } + + static inline uint popCount( u64 val ) + { + return popCount< pcmNormal >( val ); + } + + // shift bitboard one rank forward + template< Color c > static inline Bitboard shiftForward( Bitboard b ) + { + return c == ctWhite ? b >> 8 : b << 8; + } + static inline Bitboard shiftForward( Color c, Bitboard b ) + { + return c == ctWhite ? shiftForward(b) : shiftForward(b); + } + // shift bitboard one rank backward + template< Color c > static inline Bitboard shiftBackward( Bitboard b ) + { + return c != ctWhite ? b >> 8 : b << 8; + } + static inline Bitboard shiftBackward( Color c, Bitboard b ) + { + return c == ctWhite ? shiftBackward(b) : shiftBackward(b); + } + // shift bitboard one file right (no wraparound) + static inline Bitboard shiftRight( Bitboard b ) + { + return (b << 1) & L1MASK; + } + // shift bitboard one file left (no wraparound) + static inline Bitboard shiftLeft( Bitboard b ) + { + return (b >> 1) & R1MASK; + } + + // has hardware popcount? + static inline bool hasHwPopCount() + { + return hwPopCnt; + } + + // disable hardware popcount + static void disableHwPopCount(); + + // static init (detects hw popcount) + static void init(); + + +private: + static bool hwPopCnt; +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/thread.cpp b/Engines/Linux/cheng/src/cheng4/thread.cpp new file mode 100644 index 0000000..06453a3 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/thread.cpp @@ -0,0 +1,398 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "thread.h" + +// FIXME: gettimeofday is unreliable!!! change it! (really?) + +#ifdef _WIN32 +#define USE_TIMEGETTIME // should be much more accurate, but... there's timeBeginPeriod which is potentially bad +#include +#undef min +#undef max +#include +#include + +#if defined(USE_TIMEGETTIME) && !defined(__GNUC__) +#pragma comment(lib, "winmm.lib") +#endif + +#else +#include +#include +#include +#include +#include +#endif + +namespace cheng4 +{ + +// Mutex + +Mutex::Mutex( int enabled ) : handle(0) +{ + if ( !enabled ) + return; +#ifdef _WIN32 + handle = new CRITICAL_SECTION; + InitializeCriticalSection( (LPCRITICAL_SECTION)handle ); +#else + handle = new pthread_mutex_t; + pthread_mutex_init( (pthread_mutex_t *)handle, 0 ); +#endif +} + +Mutex::~Mutex() +{ + if ( handle ) + { +#ifdef _WIN32 + DeleteCriticalSection( (LPCRITICAL_SECTION)handle ); + delete (CRITICAL_SECTION *)handle; +#else + pthread_mutex_destroy( (pthread_mutex_t *)handle ); + delete (pthread_mutex_t *)handle; +#endif + } +} + +void Mutex::lock() +{ + if ( !handle ) + return; +#ifdef _WIN32 + EnterCriticalSection( (LPCRITICAL_SECTION)handle ); +#else + pthread_mutex_lock( (pthread_mutex_t *)handle ); +#endif +} + +void Mutex::unlock() +{ + if ( !handle ) + return; +#ifdef _WIN32 + LeaveCriticalSection( (LPCRITICAL_SECTION)handle ); +#else + pthread_mutex_unlock( (pthread_mutex_t *)handle ); +#endif +} + +// MutexLock + +MutexLock::MutexLock( Mutex &m, bool nolock ) : mref( &m ) +{ + if ( nolock ) + mref = 0; + else + mref->lock(); +} + +MutexLock::~MutexLock() +{ + if ( mref ) + mref->unlock(); +} + +// Event + +Event::Event(bool autoReset_) : handle(0), handle2(0), autoReset( autoReset_ ), flag(0) +{ +#ifdef _WIN32 + handle = CreateEvent( 0, autoReset ? FALSE : TRUE, FALSE, 0); +#else + handle = new pthread_cond_t; + pthread_cond_init((pthread_cond_t *)handle, 0); + handle2 = new pthread_mutex_t; + pthread_mutex_init( (pthread_mutex_t *)handle2, 0 ); +#endif +} + +Event::~Event() +{ +#ifdef _WIN32 + if ( handle != 0 ) + CloseHandle( (HANDLE)handle ); + +#else + pthread_cond_destroy((pthread_cond_t *)handle); + delete (pthread_cond_t *)handle; + pthread_mutex_destroy( (pthread_mutex_t *)handle2 ); + delete (pthread_mutex_t *)handle2; +#endif +} + +bool Event::wait( int ms ) +{ +#ifdef _WIN32 + if ( handle != 0 ) + { + return WaitForSingleObject( (HANDLE)handle, + ms == -1 ? INFINITE : ms ) == WAIT_OBJECT_0; + } + return 0; +#else + int res = 0; + if ( ms == -1 ) + { + pthread_mutex_lock( (pthread_mutex_t *)handle2 ); + while ( !flag && (res = pthread_cond_wait((pthread_cond_t *)handle, (pthread_mutex_t *)handle2)) == 0 ) + ; + if ( autoReset ) + flag = 0 ; + pthread_mutex_unlock( (pthread_mutex_t *)handle2 ); + } + else + { + struct timeval tv; + struct timespec ts; + gettimeofday(&tv, 0); + tv.tv_sec += ms / 1000; + tv.tv_usec += (ms % 1000) * 1000; + // handle overflow + while ( tv.tv_usec >= 1000000 ) + { + tv.tv_usec -= 1000000; + tv.tv_sec++; + } + ts.tv_sec = tv.tv_sec; + ts.tv_nsec = tv.tv_usec * 1000; + pthread_mutex_lock( (pthread_mutex_t *)handle2 ); + while ( !flag && (res = pthread_cond_timedwait((pthread_cond_t *)handle, (pthread_mutex_t *)handle2, &ts)) == 0 ) + ; + if ( res == 0 && autoReset ) + flag = 0 ; + pthread_mutex_unlock( (pthread_mutex_t *)handle2 ); + } + return res == 0; +#endif +} + +void Event::signal() +{ +#ifdef _WIN32 + if ( handle != 0 ) + SetEvent( (HANDLE)handle ); +#else + pthread_mutex_lock( (pthread_mutex_t *)handle2 ); + flag = 1; + pthread_cond_signal((pthread_cond_t *)handle); + pthread_mutex_unlock( (pthread_mutex_t *)handle2 ); +#endif +} + +void Event::reset() +{ +#ifdef _WIN32 + if ( handle != 0 ) + ResetEvent( (HANDLE)handle ); +#else + pthread_mutex_lock( (pthread_mutex_t *)handle2 ); + flag = 0; + pthread_mutex_unlock( (pthread_mutex_t *)handle2 ); +#endif +} + +// Thread + +#ifdef _WIN32 +static unsigned int __stdcall threadProc( void *param ) +{ + static_cast(param)->work(); + return 0; +} +#else +static void *threadProc( void *param ) +{ + static_cast(param)->work(); + return 0; +} +#endif + +Thread::Thread( void *param ) : thrParam( param ), handle(0), shouldTerminate(0), killFlag(0) +{ +} + +// use this instead of dtor! +void Thread::destroy() +{ +} + +void Thread::wait() +{ + if ( !handle ) + return; // not running + destroy(); + shouldTerminate = 1; +#ifdef _WIN32 + WaitForSingleObject( (HANDLE)handle, INFINITE ); + CloseHandle( (HANDLE)handle ); +#else + void *vp = 0; + if ( pthread_join( *(pthread_t *)handle, &vp ) != 0 ) + { +#ifndef __ANDROID__ + pthread_setcanceltype( PTHREAD_CANCEL_ASYNCHRONOUS, 0 ); + pthread_cancel( *(pthread_t *)handle ); +#endif + } + delete (pthread_t *)handle; +#endif + handle = 0; + shouldTerminate = 0; +} + +Thread::~Thread() +{ + assert( killFlag && "don't call delete directly!" ); +} + +void Thread::kill() +{ + killFlag = 1; + wait(); + delete this; +} + +// returns current thread id +void *Thread::current() +{ +#ifdef _WIN32 + return (void *)(uintptr_t)GetCurrentThreadId(); +#else + return (void *)pthread_self(); +#endif +} + +// create and run thread +bool Thread::run() +{ + if ( handle ) + return 0; // already running +#ifdef _WIN32 + handle = (HANDLE)_beginthreadex( 0, 0, threadProc, (LPVOID)this, 0/*CREATE_SUSPENDED*/, 0 ); + if ( !handle || handle == INVALID_HANDLE_VALUE ) + return 0; +#else + handle = new pthread_t; + pthread_attr_t attr; + pthread_attr_init(&attr); + pthread_create( (pthread_t *)handle, 0 /* attr */, threadProc, this ); + pthread_attr_destroy(&attr); +#endif + return 1; +} + +bool Thread::setPriority(int prior) +{ +#ifdef _WIN32 + if ( !handle ) + return 0; + if ( prior > 3 ) + prior = 3; + else if ( prior < - 4 ) + prior = -4; + int tp; + switch( prior ) + { + case +3: + tp = THREAD_PRIORITY_TIME_CRITICAL; + break; + case +2: + tp = THREAD_PRIORITY_HIGHEST; + break; + case +1: + tp = THREAD_PRIORITY_ABOVE_NORMAL; + break; + case 0: + tp = THREAD_PRIORITY_NORMAL; + break; + case -1: + tp = THREAD_PRIORITY_BELOW_NORMAL; + break; + case -2: + tp = THREAD_PRIORITY_LOWEST; + break; + case -3: + tp = THREAD_PRIORITY_IDLE; + break; + default: + tp = THREAD_PRIORITY_NORMAL; + } + return SetThreadPriority( (HANDLE)handle, tp ) != FALSE; +#else + struct sched_param param; + param.sched_priority = -prior; + /*int ret =*/ pthread_setschedparam (*(pthread_t *)handle, SCHED_OTHER, ¶m); + return 1; +#endif +} + +// sleep in ms +void Thread::sleep( int ms ) +{ +#ifdef _WIN32 + Sleep( ms ); +#else + ::usleep( ms * 1000 ); +#endif +} + +// Timer + +void Timer::init() +{ +#if defined(_WIN32) && defined(USE_TIMEGETTIME) + timeBeginPeriod(1); +#endif +} + +void Timer::done() +{ +#if defined(_WIN32) && defined(USE_TIMEGETTIME) + timeEndPeriod(1); +#endif +} + +i32 Timer::getMillisec() +{ +#ifndef _WIN32 + struct timeval tp; + struct timezone tzp; + + gettimeofday( &tp, &tzp ); + + return (i32)((tp.tv_sec) * 1000 + tp.tv_usec / 1000); +#else + +#ifdef USE_TIMEGETTIME + return (i32)(timeGetTime() & 0xffffffffU); +#else + return (i32)(GetTickCount() & 0xffffffffU); +#endif + +#endif +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/thread.h b/Engines/Linux/cheng/src/cheng4/thread.h new file mode 100644 index 0000000..97b0bae --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/thread.h @@ -0,0 +1,135 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "types.h" + +namespace cheng4 +{ + +// micro platform-dependent sys core + +class Mutex +{ + Mutex( const Mutex & ) + { + assert( 0 && "Mutex cannot be copied!" ); + } + Mutex &operator =( const Mutex & ) + { + assert( 0 && "Mutex cannot be copied!" ); + return *this; + } +protected: + void *handle; // system-specific mutex handle +public: + Mutex( int enabled = 1 ); + ~Mutex(); + + void lock(); + void unlock(); +}; + +class MutexLock +{ +protected: + Mutex *mref; // mutex refptr +public: + MutexLock( Mutex &m, bool nolock = 0 ); + ~MutexLock(); +}; + +class Event +{ + Event( const Event & ) + { + assert( 0 && "Event cannot be copied!" ); + } + Event &operator =( const Event & ) + { + assert( 0 && "Event cannot be copied!" ); + return *this; + } +protected: + void *handle, *handle2; + bool autoReset; + volatile bool flag; +public: + Event( bool autoReset_ = 1 ); + ~Event(); + + bool wait( int ms = -1 ); + void reset(); + void signal(); +}; + +// thread is not run/created until the first call to resume() +class Thread +{ +protected: + void *thrParam; + void *handle; // sys-specific handle + volatile bool shouldTerminate; // thread should terminate flag + volatile bool killFlag; // killing flag +public: + Thread( void *param = 0 ); + // never implement dtor, implement destroy() instead + virtual ~Thread(); + + // use this instead of dtor! + virtual void destroy(); + + // run thread (first time) + virtual bool run(); + + // main worker proc + // MUST be overridden + virtual void work() = 0; + + // wait for thread to terminate + void wait(); + + // kill thread (DON'T USE DELETE!!!) + // also waits for thread to terminate + void kill(); + + // sets thread priority: 0 = normal, -1 = below normal, +1 = above normal + bool setPriority( int prio ); + + // sleep in ms + static void sleep( int ms ); + + // returns current thread id + static void *current(); +}; + +struct Timer +{ + static void init(); + static void done(); + // get millisecond counter + static i32 getMillisec(); +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/trans.cpp b/Engines/Linux/cheng/src/cheng4/trans.cpp new file mode 100644 index 0000000..a6183f1 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/trans.cpp @@ -0,0 +1,205 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "trans.h" +#include "utils.h" +#include "move.h" +#include +#include + +namespace cheng4 +{ + +// TransTable + +// TT align size in bytes; must be power of two +static const uint alignSize = 4096; + +TransTable::TransTable() : allocEntries(0) +{ + memset( dummy, 0, sizeof(dummy) ); + dummyAlloc(); +} + +void TransTable::clear() +{ + memset( entries, 0, sizeof(TransEntry) * size ); +} + +TransTable::~TransTable() +{ + dealloc(); +} + +void TransTable::dealloc() +{ + if ( allocEntries ) + { + delete[] allocEntries; + allocEntries = 0; + } +} + +void TransTable::dummyAlloc() +{ + dealloc(); + entries = dummy; + size = buckets; + clear(); +} + +bool TransTable::resize( size_t sizeBytes ) +{ + size_t sizeEntries = (sizeBytes + sizeof(TransEntry)-1)/sizeof(TransEntry); + if ( sizeEntries <= buckets ) + { + // do dummy alloc (buckets entries) + dummyAlloc(); + return 1; + } + if ( !roundPow2( sizeEntries ) ) + return 0; // bad size + if ( size == sizeEntries ) + return 1; + // realloc! + dealloc(); + allocEntries = new(std::nothrow) TransEntry[ sizeEntries + alignSize/sizeof(TransEntry) ]; + if ( !allocEntries ) + { + dummyAlloc(); + return 0; + } + // align entries + entries = static_cast(alignPtr( allocEntries, alignSize )); + size = sizeEntries; + return 1; +} + +// return entry +Score TransTable::probe( Signature sig, Ply ply, Depth depth, Score alpha, Score beta, Move &mv, TransEntry <e ) const +{ + mv = mcNone; + size_t ei = ((size_t)sig & (size-1) & ~(buckets-1)); + const TransEntry *te = entries + ei; + for ( uint i=0; i= beta ) + return score; + break; + default:; + } + return scInvalid; + } + } + return scInvalid; +} + +Score TransTable::probeEval( Signature sig, Ply ply, Score val, const TransEntry <e ) +{ + if ( lte.bhash != sig || lte.u.s.depth < (Depth)-1 ) + return scInvalid; + BoundType bt = (BoundType)(lte.u.s.bound & 3); + Score score = ScorePack::unpackHash( lte.u.s.score, ply ); + switch( bt ) + { + case btExact: + return score; + case btUpper: + if ( score <= val ) + return score; + break; + case btLower: + if ( score >= val ) + return score; + break; + default:; + } + return scInvalid; +} + +// store into hash table +void TransTable::store( Signature sig, Age age, Move move, Score score, HashBound bound, Depth depth, Ply ply ) +{ + assert( !( bound & ~3) ); + assert( ScorePack::isValid(score) ); + assert( score != -scInfinity ); + + size_t ei = ((size_t)sig & (size-1) & ~(buckets-1)); + TransEntry *te = entries + ei; + TransEntry *be = 0; // best entry + i32 beScore = -0x7fffffff; + + age <<= 2; + + TransEntry lte; + for ( uint i=0; i use that! + if ( move == mcNone ) + move = lte.u.s.move; + be = te; + break; + } + // replace based on depth and age + // FIXME: better? + i32 escore = ((i32)depth-lte.u.s.depth)*2 + ((Age)(lte.u.s.bound & 0xfc) != age) * 256 - + ((lte.u.s.bound & 3) == btExact); + if ( escore > beScore ) + { + be = te; + beScore = escore; + } + } + assert( be ); + lte = *be; + lte.u.s.bound = age | bound; + lte.u.s.depth = depth; + lte.u.s.move = move; + lte.u.s.score = ScorePack::packHash( score, ply ); + lte.bhash = sig ^ lte.u.word2; + *be = lte; +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/trans.h b/Engines/Linux/cheng/src/cheng4/trans.h new file mode 100644 index 0000000..c352fd6 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/trans.h @@ -0,0 +1,92 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "chtypes.h" + +namespace cheng4 +{ + +// size must be power of 2 +struct TransEntry +{ + Signature bhash; // board hash signature + union u + { + struct s + { + Move move; // move + HashScore score; // score (matescores are relative) + HashDepth depth; // depth + HashBound bound; // hash bound and age packed into this + } s; + u64 word2; + } u; +}; + +class TransTable +{ +protected: + static const uint bucketBits = 2; + static const uint buckets = 1 << bucketBits; + TransEntry *allocEntries; // original block alloc ptr + TransEntry *entries; // aligned entries + size_t size; // size in entries; must be a power of two + TransEntry dummy[buckets]; // dummy entry if no space is allocated (1-entry hashtable) + + // alloc buckets entries using dummy + void dummyAlloc(); + // deallocate + void dealloc(); +public: + TransTable(); + ~TransTable(); + + // resize hashtable + // note: clears table automatically on success + // if resize fails, hashtable size is not guaranteed to be the same as before reallocation! + // returns 1 on success + bool resize( size_t sizeBytes ); + + // clear hashtable + void clear(); + + // probe hash table + // returns scInvalid if probe failed + inline Score probe( Signature sig, Ply ply, Depth depth, Score alpha, Score beta, Move &mv ) const + { + TransEntry lte; + return probe( sig, ply, depth, alpha, beta, mv, lte ); + } + + // new version returning lte + Score probe( Signature sig, Ply ply, Depth depth, Score alpha, Score beta, Move &mv, TransEntry <e ) const; + static Score probeEval( Signature sig, Ply ply, Score val, const TransEntry <e ); + + // store into hash table + // TODO: reorder params + void store( Signature sig, Age age, Move move, Score score, HashBound bound, Depth depth, Ply ply ); +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/tune.cpp b/Engines/Linux/cheng/src/cheng4/tune.cpp new file mode 100644 index 0000000..8d4836f --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/tune.cpp @@ -0,0 +1,97 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "tune.h" + +#ifdef USE_TUNING + +#include + +namespace cheng4 +{ + +// TunableParams + +TunableParams *TunableParams::inst = 0; + +TunableParams *TunableParams::get() +{ + // note: not thread-safe + if ( !inst ) + inst = new TunableParams; + return inst; +} + +std::vector< TunableBase * > TunableParams::params; + +void TunableParams::addParam( TunableBase *param ) +{ + params.push_back( param ); +} + +bool TunableParams::setParam( const char *name, const char *value ) +{ + for ( size_t i=0; iname() == name ) + { + params[i]->set( value ); + return 1; + } + } + return 0; +} + +// dump params +void TunableParams::dump() +{ + for ( size_t i=0; iname() << " = " << params[i]->get() << std::endl; + } +} + +size_t TunableParams::paramCount() +{ + return params.size(); +} + +const TunableBase *TunableParams::getParam( size_t index ) +{ + return params[index]; +} + +TunableBase *TunableParams::findParam( const char *name ) +{ + for (size_t i=0; iname() == name) { + return params[i]; + } + } + return 0; +} + +} + +#endif diff --git a/Engines/Linux/cheng/src/cheng4/tune.h b/Engines/Linux/cheng/src/cheng4/tune.h new file mode 100644 index 0000000..a432aee --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/tune.h @@ -0,0 +1,94 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#ifndef USE_TUNING +# define TUNE_STATIC static +# define TUNE_CONST const +# define TUNE_EXPORT(x, y, z) +#else +# include +# include +# include + +# define TUNE_STATIC +# define TUNE_CONST +# define TUNE_EXPORT(x, y, z) static const Tunable tunable_##y(&z, #y) + +namespace cheng4 +{ + +class TunableBase +{ +public: + virtual const std::string &name() const = 0; + virtual void set( const char *str ) = 0; + virtual std::string get() const = 0; +}; + +class TunableParams +{ + static TunableParams *inst; +public: + static TunableParams *get(); + static std::vector< TunableBase * > params; + static void addParam( TunableBase *param ); + static bool setParam( const char *name, const char *value ); + static size_t paramCount(); + static const TunableBase *getParam( size_t index ); + static TunableBase *findParam( const char *name ); + // dump params + static void dump(); +}; + +// this represents a tunable parameter +template< typename T > class Tunable : public TunableBase +{ + T *value; + std::string parName; +public: + Tunable( T *tvalue, const char *tname ) : value(tvalue), parName(tname) + { + TunableParams::get()->addParam(this); + } + const std::string &name() const + { + return parName; + } + std::string get() const + { + std::stringstream stream; + stream << *value; + return stream.str(); + } + void set( const char *str ) + { + std::stringstream stream(str); + stream >> *value; + } +}; + +} + +#endif diff --git a/Engines/Linux/cheng/src/cheng4/types.h b/Engines/Linux/cheng/src/cheng4/types.h new file mode 100644 index 0000000..c6c3cdc --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/types.h @@ -0,0 +1,64 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#ifndef _MSC_VER +# include // uintptr_t, ... +#else +typedef signed __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef signed __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef signed __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; +#endif + +#include // size_t, ... + +namespace cheng4 +{ + +// probably more useful aliases +typedef uint8_t b8; +typedef int8_t i8; +typedef uint8_t u8; +typedef int16_t i16; +typedef uint16_t u16; +typedef int32_t i32; +typedef uint32_t u32; +typedef int64_t i64; +typedef uint64_t u64; + +typedef unsigned int uint; + +template < class T > static inline T abs( const T &x ) +{ + return x < 0 ? -x : x; +} + +} + +#include diff --git a/Engines/Linux/cheng/src/cheng4/utils.cpp b/Engines/Linux/cheng/src/cheng4/utils.cpp new file mode 100644 index 0000000..6a3be14 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/utils.cpp @@ -0,0 +1,97 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "utils.h" +#include +#ifndef _MSC_VER +#include +#endif + +namespace cheng4 +{ + +// returns true if input is power of two +bool isPow2( size_t sz ) +{ + size_t tmp = sz; + while ( tmp < sz ) + { + size_t otmp = tmp; + tmp <<= 1; + if ( tmp < otmp ) + return 0; // overflow + } + return tmp == sz; +} + +// round size to nearest power of two +bool roundPow2( size_t &sz ) +{ + size_t tmp = 1; + while ( tmp < sz ) + { + size_t otmp = tmp; + tmp <<= 1; + if ( tmp < otmp ) + return 0; // overflow + } + sz = tmp; + return 1; +} + +// align pointer +void *alignPtr( void *ptr, size_t align ) +{ + assert( isPow2(align) ); + return reinterpret_cast( ((uintptr_t)ptr + align-1) & ~(uintptr_t)(align-1) ); +} + +// simple unsafe string copy (doesn't copy null terminator!) +char *scpy( char *dst, const char *src ) +{ + while (*src) + *dst++ = *src++; + return dst; +} + +// skip leading spaces (exclude EOLs) +void skipSpaces( const char *&ptr ) +{ + while (*ptr && *ptr > 0 && *ptr <= 32 && *ptr != 13 && *ptr != 10 ) + ptr++; +} + +// skip until EOL (and skip it too) +void skipUntilEOL( const char *&ptr ) +{ + while ( *ptr && *ptr != 13 && *ptr != 10 ) + ptr++; + if ( !*ptr ) + return; + if ( *ptr == 13 && ptr[1] == 10 ) + ptr += 2; + else + ptr++; +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/utils.h b/Engines/Linux/cheng/src/cheng4/utils.h new file mode 100644 index 0000000..6192efe --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/utils.h @@ -0,0 +1,46 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include + +// various utility functions that didn't fit elsewhere + +namespace cheng4 +{ + +// returns true if input is power of two +bool isPow2( size_t sz ); +// round size to nearest power of two +bool roundPow2( size_t &sz ); +// align pointer +void *alignPtr( void *ptr, size_t align ); +// simple unsafe string copy (doesn't copy null terminator!) +char *scpy( char *dst, const char *src ); +// skip leading spaces (exclude EOLs) +void skipSpaces( const char *&ptr ); +// skip until EOL (and skip it too) +void skipUntilEOL( const char *&ptr ); + +} diff --git a/Engines/Linux/cheng/src/cheng4/version.cpp b/Engines/Linux/cheng/src/cheng4/version.cpp new file mode 100644 index 0000000..3307d28 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/version.cpp @@ -0,0 +1,41 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "version.h" + +namespace cheng4 +{ + +// Version + +std::string Version::version() +{ + return "Cheng 4.39"; +} + +std::string Version::author() +{ + return "Martin Sedlak"; +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/version.h b/Engines/Linux/cheng/src/cheng4/version.h new file mode 100644 index 0000000..b98ca77 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/version.h @@ -0,0 +1,37 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include + +namespace cheng4 +{ + +struct Version +{ + static std::string version(); + static std::string author(); +}; + +} diff --git a/Engines/Linux/cheng/src/cheng4/zobrist.cpp b/Engines/Linux/cheng/src/cheng4/zobrist.cpp new file mode 100644 index 0000000..38cc194 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/zobrist.cpp @@ -0,0 +1,62 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "zobrist.h" +#include "prng.h" +#include + +namespace cheng4 +{ + +// Zobrist + +Signature Zobrist::turn; // turn (stm) xor-hash +Signature Zobrist::epFile[8]; // en-passant file hash [epfile] +Signature Zobrist::piece[2][ptMax][64]; // [color][piece][square] +Signature Zobrist::cast[2][0x88+1]; // castling rights [color][rights] + +void Zobrist::init() +{ + PRNG prng; + // turn + turn = prng.next64(); + + // epFile + for (int i=0; i<8; i++) + epFile[i] = prng.next64(); + + // piece + memset( piece, 0, sizeof(piece) ); + for (Color c=ctWhite; c<=ctBlack; c++) + for (Piece p=ptPawn; p<=ptKing; p++) + for (Square sq = 0; sq < 64; sq++ ) + piece[c][p][sq] = prng.next64(); + + // castling + cast[ ctWhite ][0] = cast[ ctBlack ][0] = 0; + for (Color c=ctWhite; c<=ctBlack; c++) + for (uint i=1; i<=0x88; i++) + cast[c][i] = prng.next64(); +} + +} diff --git a/Engines/Linux/cheng/src/cheng4/zobrist.h b/Engines/Linux/cheng/src/cheng4/zobrist.h new file mode 100644 index 0000000..6f7ef61 --- /dev/null +++ b/Engines/Linux/cheng/src/cheng4/zobrist.h @@ -0,0 +1,42 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#pragma once + +#include "chtypes.h" + +namespace cheng4 +{ + +// singleton +struct Zobrist +{ + static void init(); + + static Signature turn; // turn (stm) xor-hash + static Signature epFile[8]; // en-passant file hash [epfile] + static Signature piece[2][ptMax][64]; // [color][piece][square] + static Signature cast[2][0x88+1]; // castling rights [color][rights] +}; + +} diff --git a/Engines/Linux/cheng/src/license.txt b/Engines/Linux/cheng/src/license.txt new file mode 100644 index 0000000..58eca8a --- /dev/null +++ b/Engines/Linux/cheng/src/license.txt @@ -0,0 +1,20 @@ +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2012-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. diff --git a/Engines/Linux/cheng/src/pgimport/booklines.bin b/Engines/Linux/cheng/src/pgimport/booklines.bin new file mode 100644 index 0000000..60990f4 Binary files /dev/null and b/Engines/Linux/cheng/src/pgimport/booklines.bin differ diff --git a/Engines/Linux/cheng/src/pgimport/booklines.txt b/Engines/Linux/cheng/src/pgimport/booklines.txt new file mode 100644 index 0000000..b627585 --- /dev/null +++ b/Engines/Linux/cheng/src/pgimport/booklines.txt @@ -0,0 +1,393 @@ +f4 d5 Nf3 Nf6 e3 g6 b3 Bg7 Bb2 O-O Be2 c5 O-O Nc6 Ne5 Qc7 +f4 d5 Nf3 Nf6 e3 Bg4 Be2 e6 O-O Bd6 b3 O-O Bb2 c5 +f4 d5 Nf3 c5 e3 Nc6 Bb5 Bd7 b3 Nf6 Bb2 Qb6 Bxc6 Bxc6 O-O +f4 d5 Nf3 c5 e3 Nc6 Bb5 Bd7 b3 Nf6 Bxc6 Bxc6 Bb2 e6 O-O Be7 +f4 d5 Nf3 Nf6 g3 Bg4 Bg2 Bxf3 Bxf3 c6 O-O Nbd7 +f4 d5 Nf3 Nf6 e3 g6 b3 Bg7 Bb2 O-O Be2 c5 O-O Nc6 Ne5 Bd7 +f4 d5 Nf3 Nf6 e3 e6 b3 c5 Bb2 Nc6 Bb5 Be7 Bxc6 bxc6 Ne5 Bb7 +f4 d5 b3 Nf6 e3 d4 Bd3 dxe3 dxe3 +f4 d5 b3 Nf6 e3 c5 Nf3 Nc6 Bb5 Bd7 Bb2 e6 O-O Be7 d3 +f4 d5 b3 Bg4 Bb2 Nc6 g3 +f4 d5 b3 Nf6 Bb2 g6 e3 Bg7 Nf3 0-0 Be2 c5 0-0 Nc6 Ne5 +f4 d5 Nf3 g6 g3 Bg7 Bg2 Nf6 0-0 c5 d3 0-0 Qe1 +f4 d5 Nf3 g6 e3 Bg7 Nc3 Nf6 Be2 +f4 g6 Nf3 Bg7 g3 Nf6 Bg2 O-O O-O c5 d3 d5 Qe1 d4 Na3 Nc6 +e4 Nf6 e5 Nd5 d4 d6 Nf3 g6 Bc4 Nb6 Bb3 Bg7 Ng5 e6 f4 dxe5 +e4 Nf6 e5 Nd5 d4 d6 Nf3 g6 Bc4 Nb6 Bb3 Bg7 Qe2 Nc6 O-O O-O +e4 Nf6 e5 Nd5 c4 Nb6 c5 Nd5 +e4 Nf6 e5 Nd5 Qf3 +e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 Nf3 O-O Bd3 Nc6 e5 dxe5 fxe5 Nh5 +e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 Nf3 c5 dxc5 Qa5 Bd3 Qxc5 Qe2 O-O +e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 Nf3 c5 Bb5 Bd7 Bxd7 +e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 Be2 O-O O-O c6 Re1 Nbd7 Bf4 Qa5 +e4 d6 d4 g6 Nc3 Bg7 Be3 a6 Qd2 Nd7 f3 b5 g4 Bb7 Nge2 c5 +e4 e5 d4 exd4 Qxd4 Nc6 Qe3 Nf6 a3 g6 +e4 e5 d4 exd4 Qxd4 Nc6 Qe3 Nf6 Bd2 Bb4 a3 Bxd2 Nxd2 O-O O-O-O Re8 +e4 e5 d4 exd4 Qxd4 Nc6 Qa4 Nf6 Nf3 d6 Bg5 Be7 Nc3 O-O O-O-O Bd7 +e4 e5 d4 exd4 Qxd4 Nc6 Qa4 Nf6 Bg5 Be7 Nc3 O-O O-O-O Re8 +e4 e5 d4 exd4 Qxd4 Nc6 Qa4 Nf6 Nc3 Bc5 f3 O-O Bg5 Be7 +e4 e5 d4 exd4 Qxd4 Nc6 Qa4 Bc5 Nf3 Nge7 +e4 g6 d4 Bg7 f4 +c4 e5 Nc3 Nf6 Nf3 Nc6 g3 d5 cxd5 Nxd5 Bg2 Nb6 O-O Be7 d3 O-O +c4 e5 Nc3 Nf6 Nf3 Nc6 g3 d5 cxd5 Nxd5 Bg2 Nb6 O-O Be7 a3 O-O +c4 e5 Nc3 Nf6 g3 Bb4 Bg2 O-O Nf3 Re8 O-O e4 Nd4 Bxc3 bxc3 d6 +c4 e5 Nc3 Nf6 Nf3 Nc6 e3 Bb4 Qc2 Bxc3 Qxc3 Qe7 a3 d5 d4 exd4 +c4 e5 Nc3 Nf6 Nf3 Nc6 d4 exd4 Nxd4 Bb4 Bg5 h6 Bh4 Bxc3 bxc3 Ne5 +c4 e5 Nc3 Nf6 Nf3 Nc6 g3 d5 cxd5 Nxd5 Bg2 Nb6 O-O Be7 a3 Be6 +c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 e4 Nge7 Nge2 O-O d3 d6 O-O f5 +c4 e5 Nc3 Nf6 Nf3 Nc6 g3 Bb4 Bg2 0-0 0-0 +c4 Nf6 Nc3 g6 g3 Bg7 Bg2 O-O Nf3 d6 O-O e5 d3 Nc6 Rb1 a5 +c4 Nf6 Nc3 c5 Nf3 e6 g3 b6 Bg2 Bb7 b3 Be7 Bb2 O-O +c4 Nf6 Nc3 e6 d4 Bb4 Qc2 O-O a3 Bxc3 Qxc3 b6 g3 Bb7 Nf3 d5 +c4 Nf6 g3 c6 Bg2 e5 d4 exd4 Qxd4 d5 Nf3 Be7 +c4 Nf6 d4 e6 Nf3 b6 a3 Bb7 Nc3 d5 cxd5 Nxd5 +c4 Nf6 d4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 +c4 e6 g3 d5 Bg2 dxc4 Qa4 Nd7 Qxc4 c5 d3 +c4 c5 g3 g6 Bg2 Bg7 Nf3 Nc6 Nc3 d6 O-O Nh6 d4 +c4 c5 Nf3 Nf6 Nc3 e6 g3 b6 Bg2 Bb7 O-O Be7 d4 cxd4 Qxd4 d6 +Nf3 Nf6 c4 g6 Nc3 Bg7 d4 O-O Bg5 d6 e3 Nbd7 Be2 c6 O-O h6 +Nf3 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 g3 Bg7 Bg2 e5 Qa4 Bd7 Qb3 Nb6 +Nf3 Nf6 g3 g6 Bg2 Bg7 O-O O-O d4 d5 c4 dxc4 Na3 c3 bxc3 c5 +Nf3 Nf6 g3 d5 Bg2 c6 O-O Bg4 d3 Nbd7 Nbd2 e5 e4 dxe4 dxe4 Bc5 +Nf3 Nf6 d4 d5 Bg5 e6 Nbd2 Be7 e3 Nbd7 Bd3 b6 O-O Bb7 Ne5 Nxe5 +Nf3 Nf6 d4 d5 Bg5 g6 Nc3 Bg7 Bxf6 exf6 e4 c6 exd5 cxd5 +b3 e5 Bb2 Nc6 e3 Nf6 Bb5 d6 Ne2 Bd7 O-O a6 Bxc6 Bxc6 d4 Qe7 +b3 e5 Bb2 Nc6 e3 Nf6 Bb5 d6 Nf3 a6 Bxc6 bxc6 O-O e4 +b3 e5 Bb2 Nc6 e3 d5 Bb5 Bd6 Bxc6 bxc6 Nf3 Qe7 +b3 e5 Bb2 Nc6 e3 d5 Bb5 f6 Ne2 +b3 e5 Bb2 Nc6 e3 g6 f4 Bg7 Nf3 +d4 f5 g3 Nf6 Bg2 g6 Nf3 Bg7 O-O O-O c4 d6 Nc3 c6 d5 e5 +d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d5 Nc3 c6 +d4 f5 c4 Nf6 Nc3 e6 Nf3 Bb4 Qb3 a5 +d4 f5 Nc3 Nf6 Bg5 d5 Bxf6 exf6 e3 Be6 Bd3 Nc6 Nge2 Qd7 a3 O-O-O +d4 f5 g3 Nf6 Bg2 c6 Nf3 g6 O-O Bg7 b3 O-O c4 d6 Nc3 Na6 +d4 f5 g4 fxg4 e4 d6 h3 Nf6 Nc3 +d4 f5 g4 fxg4 Bf4 Nf6 Nc3 +d4 f5 g4 fxg4 h3 +d4 f5 g4 d5 +b4 d5 Bb2 Bg4 +b4 d5 Bb2 Nf6 Nf3 Bf5 +b4 d5 Bb2 Qd6 a3 +b4 e5 Bb2 Bxb4 Bxe5 Nf6 +b4 e5 Bb2 Bxb4 Bxe5 f6 +b4 e5 a3 d5 Bb2 Bd6 Nf3 Qe7 +g3 e5 c4 +g3 d5 Nf3 +g3 d5 Bg2 Nf6 d3 c6 f4 g6 Nf3 Bg7 +g3 d5 Bg2 Nf6 Nf3 c6 O-O Bg4 d3 Nbd7 +d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bxf6 Bxf6 Rc1 c6 +d4 d5 c4 e6 Nc3 c6 Nf3 Nf6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 Bb7 +d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7 Bf4 O-O e3 c5 dxc5 Bxc5 Qc2 Nc6 +d4 d5 c4 e6 Nf3 Nf6 g3 Be7 Bg2 O-O O-O dxc4 Qc2 a6 Qxc4 b5 +d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 c6 e3 Be7 Bd3 Ne4 Bxe7 Qxe7 +d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 +d4 d5 c4 c6 Nf3 Nf6 Nc3 e6 e3 Nbd7 Qc2 Bd6 Bd3 O-O O-O dxc4 Bxc4 b5 1Bd3 Bb7 +d4 d5 c4 dxc4 e3 c5 +d4 d5 c4 dxc4 e4 Nf6 e5 Nd5 Bxc4 Nb6 Bd3 Nc6 Be3 g6 +d4 d5 c4 dxc4 Nf3 a6 e3 Nf6 Bxc4 e6 Qe2 +d4 d5 Bg5 c6 e3 Qb6 +d4 d5 Bg5 h6 Bh4 c6 e3 Qb6 Bd3 Nd7 +d4 d5 Bg5 Nf6 Bxf6 exf6 e3 Bd6 c4 dxc4 Bxc4 O-O Nc3 Nd7 +d4 Nf6 c4 e6 Nf3 Bb4 Nbd2 b6 a3 Bxd2 Qxd2 Bb7 e3 0-0 +d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 Nc3 +d4 Nf6 c4 e6 Nf3 b6 g3 Bb4 Bd2 Be7 Nc3 Bb7 Bg2 c6 e4 d5 exd5 cxd5 1Ne5 O-O +d4 Nf6 c4 e6 Nf3 Bb4 Nbd2 b6 a3 Bxd2 Qxd2 Bb7 e3 O-O +d4 Nf6 c4 e6 Nf3 d5 +d4 Nf6 c4 e6 Nf3 d5 Nc3 Be7 Bf4 0-0 e3 Nbd7 c5 c6 Bd3 +d4 Nf6 c4 g6 g3 c6 Bg2 d5 Qa4 +d4 Nf6 c4 g6 f3 c5 +d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 c5 Ne2 Nc6 Be3 O-O 1O-O +d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 Bd2 Bg7 e4 Nxc3 Bxc3 O-O Qd2 Nc6 +d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bb5 c6 Ba4 O-O Ne2 e5 1O-O +d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Be3 c5 Rc1 Qa5 Qd2 O-O 1Nf3 Bg4 1d5 +d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Rb1 0-0 Be2 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 Be3 O-O +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 Bg5 Be6 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 Be3 Be7 O-O Nc6 +e4 c5 Nf3 d6 Bb5 Bd7 Bxd7 Qxd7 O-O Nc6 c3 Nf6 Re1 e6 d4 cxd4 +e4 c5 Nf3 d6 Bb5 Bd7 Bxd7 Qxd7 O-O Nc6 c3 Nf6 d4 Nxe4 d5 Ne5 +e4 c5 Nf3 d6 Bb5 Bd7 Bxd7 Qxd7 c4 Nc6 Nc3 Nf6 d4 cxd4 Nxd4 g6 +e4 c5 Nf3 d6 Bb5 Nd7 d4 Nf6 O-O a6 Bxd7 Nxd7 c3 cxd4 cxd4 +e4 c5 Nf3 d6 d4 cxd4 Qxd4 Nf6 e5 Nc6 Bb5 Qa5 Nc3 Qxb5 Nxb5 Nxd4 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 O-O O-O +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be3 e5 Nb3 Be6 f3 Be7 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be2 e6 O-O Be7 f4 Qc7 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be2 e6 O-O Be7 f4 O-O +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be3 Ng4 Bg5 h6 Bh4 g5 Bg3 Bg7 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd3 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 Be7 O-O O-O f4 Nc6 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 g4 h6 Bg2 Nc6 h3 Bd7 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 g4 h6 g5 hxg5 Bxg5 Nc6 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 g4 h6 h4 Be7 Rg1 d5 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be3 Be7 f3 a6 Qd2 Nc6 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 f3 e5 Nb3 +e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 d6 Bg5 e6 Qd2 a6 O-O-O Bd7 +e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 d6 Bg5 e6 Qd2 a6 O-O-O h6 +e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 d6 Bc4 e6 Be3 Be7 Qe2 a6 +e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 d6 Bc4 Qb6 Nb3 e6 O-O Be7 +e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Bxf6 gxf6 Na3 b5 +e4 c5 Nf3 Nc6 Bb5 e6 O-O Nge7 c3 d5 exd5 Qxd5 Re1 a6 Bxc6 Nxc6 +e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nf6 Nc3 d6 Be2 Be7 O-O O-O Be3 Nc6 +e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nf6 Nc3 d6 Be3 a6 f3 b5 Qd2 Nbd7 +e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Nc3 Qc7 g3 Bb4 +e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Qd2 Nf6 O-O-O Bb4 +e4 c5 Nf3 e6 g3 Nc6 Bg2 d5 exd5 exd5 O-O Nf6 d4 Be7 Be3 cxd4 Nxd4 Bg4 +e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 Be3 e6 Qd2 Rb8 Nge2 Nd4 +e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 f4 e6 Nf3 Nge7 O-O O-O +e4 c5 Nc3 Nc6 f4 g6 Nf3 Bg7 Bc4 e6 f5 Nge7 fxe6 dxe6 +e4 c5 Nc3 Nc6 f4 g6 Nf3 Bg7 Bb5 Nd4 O-O a6 Bd3 d6 Nxd4 cxd4 +e4 c5 Nc3 Nc6 Nf3 g6 d4 cxd4 Nxd4 Bg7 Be3 Nf6 Bc4 O-O Bb3 d6 +e4 c5 c3 d5 exd5 Qxd5 d4 Nf6 Nf3 Bg4 Be2 e6 h3 Bh5 O-O Nc6 +e4 c5 c3 d5 exd5 Qxd5 d4 Nf6 Nf3 Bg4 Be2 e6 O-O Nc6 Be3 cxd4 +e4 c5 d4 cxd4 c3 dxc3 Nxc3 Nc6 Nf3 e6 Bc4 a6 O-O Nge7 Bg5 f6 +e4 c5 f4 e6 Nf3 Nc6 Nc3 a6 g3 d5 e5 Nge7 Bg2 Nf5 O-O h5 +e4 c5 f4 e6 Nf3 Nc6 Nc3 a6 g3 d5 Bg2 d4 +e4 c5 f4 e6 Nf3 Nc6 Nc3 a6 g3 d5 d3 d4 Ne2 Nf6 +e4 c5 f4 e6 Nf3 d5 Bb5 Bd7 Bxd7 Nxd7 d3 Bd6 O-O Ne7 c4 O-O +e4 c5 f4 Nc6 Nf3 g6 Bb5 Bg7 Bxc6 bxc6 d3 d6 O-O Nf6 Nc3 O-O +e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Ng3 Bg6 h4 h6 Nf3 Nd7 h5 Bh7 Bd3 Bxd3 1Qxd3 e6 +e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Ng3 Bg6 Nf3 Nd7 Bd3 Bxd3 Qxd3 Ngf6 +e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nd7 Ng5 Ngf6 Bd3 e6 N1f3 Bd6 Qe2 h6 +e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nd7 Nf3 Ngf6 Nxf6 Nxf6 Bc4 Bf5 Qe2 e6 +e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nf6 Nxf6 exf6 Bc4 Bd6 Qh5 O-O Ne2 Nd7 +e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nd7 Bc4 Ngf6 Ng5 e6 Qe2 Nb6 Bb3 h6 +e4 c6 d4 d5 Nc3 g6 h3 Bg7 +e4 c6 d4 d5 e5 Bf5 Nf3 e6 Be2 Ne7 +e4 d5 exd5 Qxd5 Nc3 Qa5 Nf3 Nf6 h3 Bf5 b4 Qb6 Rb1 e6 +e4 d5 exd5 Qxd5 Nc3 Qa5 d4 Nf6 Nf3 c6 Bc4 Bf5 Bd2 e6 Qe2 Bb4 +e4 d5 exd5 Qxd5 Nc3 Qa5 d4 Nf6 Nf3 c6 h3 Bf5 Bd3 Bxd3 Qxd3 e6 +e4 d5 exd5 Qxd5 Nc3 Qa5 Nf3 Nf6 h3 Bf5 Bc4 e6 d3 c6 a3 Nbd7 +e4 d5 exd5 Qxd5 Nc3 Qa5 d4 Nf6 Nf3 Bf5 Bc4 e6 O-O c6 Ne5 Nbd7 +e4 d5 exd5 Qxd5 Nc3 Qa5 g3 +e4 d5 exd5 Nf6 d4 Nxd5 c4 Nb6 Nc3 e5 dxe5 Qxd1 Nxd1 Nc6 f4 Be6 +e4 d5 exd5 Nf6 d4 Nxd5 c4 Nb6 Nf3 Bg4 c5 N6d7 Bc4 e6 h3 Bxf3 +e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 Bxc3 bxc3 Ne7 Qg4 O-O Bd3 f5 +e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 e5 Nfd7 Bxe7 Qxe7 f4 a6 Nf3 c5 +e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 e5 Nfd7 Bxe7 Qxe7 f4 O-O Nf3 c5 +e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 e5 Nfd7 h4 +e4 e6 d4 d5 Nc3 Nf6 Bg5 dxe4 Nxe4 Be7 Bxf6 Bxf6 Nf3 Nd7 Qd2 O-O +e4 e6 d4 d5 Nc3 Nf6 e5 Nfd7 f4 c5 Nf3 Nc6 Be3 cxd4 Nxd4 Bc5 +e4 e6 d4 d5 Nc3 Bb4 e5 Ne7 a3 Bxc3 bxc3 c5 Qg4 Nbc6 Nf3 O-O +e4 e6 d4 d5 Nc3 Bb4 e5 Ne7 a3 Bxc3 bxc3 c5 Qg4 O-O Nf3 c4 +e4 e6 d4 d5 Nd2 c5 +e4 e6 d4 d5 e5 c5 c3 Nc6 g3 +e4 e6 d4 d5 e5 c5 c3 Qb6 +e4 e5 Bc4 Nf6 d3 Nc6 Nf3 Bc5 c3 +e4 e5 d4 exd4 Qxd4 Nc6 Qe3 g6 +e4 e5 f4 exf4 Nf3 g5 h4 g4 Ne5 +e4 e5 Nf3 Nc6 c3 Nf6 d4 d6 d5 +e4 e5 Nf3 Nc6 c3 Nf6 d4 d6 Be3 Be7 Nbd2 O-O dxe5 Nxe5 Nxe5 dxe5 +e4 e5 Nf3 Nc6 c3 Nf6 d4 d5 Bb5 Nxe4 Nxe5 Bd7 Qb3 Nxe5 Qxd5 Qe7 +e4 e5 Nf3 Nc6 c3 Nf6 d4 Nxe4 d5 Nb8 Bd3 Nc5 Nxe5 Nxd3 Nxd3 d6 +e4 e5 Nf3 Nc6 c3 Nf6 d4 Nxe4 d5 Nb8 Bd3 Nc5 Nxe5 Nxd3 Nxd3 Be7 +e4 e5 Nf3 Nc6 c3 Nf6 d4 Nxe4 d5 Nb8 Nxe5 Qe7 Qd4 +e4 e5 Nf3 Nc6 c3 Nf6 d4 Nxe4 d5 Ne7 Nxe5 Ng6 Nxg6 hxg6 Bd3 Nf6 +e4 e5 Nf3 Nc6 c3 d5 Qa4 f6 Bb5 +e4 e5 2 .Nf3 Nc6 c3 d5 Qa4 Bd7 exd5 Nd4 Qd1 Nxf3 Qxf3 Nf6 Bc4 e4 +e4 e5 Nf3 Nc6 c3 d5 Qa4 Qd6 Bb5 Bd7 exd5 Qxd5 O-O O-O-O Bc4 Qd6 +e4 e5 Nf3 Nc6 c3 d5 Qa4 Qd6 exd5 Qxd5 Bb5 +e4 e5 Nf3 Nc6 c3 Nf6 d4 exd4 e5 Nd5 cxd4 Bb4 Bd2 Bxd2 Qxd2 O-O +e4 e5 Nf3 Nc6 c3 Nf6 d4 exd4 e5 Nd5 cxd4 d6 Bb5 Be7 Nc3 Be6 +e4 e5 Nf3 Nc6 c3 Nf6 d4 exd4 e5 Ne4 Qe2 f5 exf6 d5 Nbd2 Qxf6 +e4 e5 Nf3 Nc6 c3 Nf6 d4 d5 Bb5 exd4 e5 Ne4 Nxd4 Bd7 Bxc6 bxc6 +e4 e5 Nf3 Nc6 c3 Nf6 d4 d5 Bb5 exd4 e5 Ne4 cxd4 Bb4 Nbd2 O-O +e4 e5 Nf3 Nc6 c3 Nf6 d4 d5 Bb5 Nxe4 Nxe5 Bd7 Bxc6 Bxc6 Qf3 Qf6 +e4 e5 Nf3 Nc6 c3 d5 Qa4 f6 d3 Be6 Be3 Qd7 Nbd2 +e4 e5 Nf3 Nf6 Nxe5 d6 Nf3 Nxe4 Qe2 Qe7 d3 Nf6 Bg5 Qxe2 Bxe2 Be7 +e4 e5 Nf3 Nf6 Nxe5 d6 Nf3 Nxe4 Qe2 Qe7 d3 Nf6 Nc3 Qxe2 Bxe2 Be7 +e4 e5 Nf3 Nf6 Nxe5 d6 Nf3 Nxe4 d4 d5 Bd3 Be7 Nbd2 f5 +e4 e5 Nf3 Nf6 d4 Nxe4 Bd3 +e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 +e4 e5 Nf3 Nc6 Bb5 Nf6 d3 Bc5 c3 O-O +e4 e5 Nf3 Nc6 Bb5 Nf6 d3 Bc5 O-O d6 Re1 O-O Bxc6 bxc6 h3 Re8 +e4 e5 Nf3 Nc6 Bb5 Nf6 O-O Nxe4 d4 Nd6 Bxc6 dxc6 dxe5 Nf5 Qxd8 Kxd8 h3 Bd7 1Nc3 h6 +e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Ba5 +e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Bd6 d4 Nf6 +e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 f6 Nf4 +e4 e6 d4 d5 Nc3 Nf6 e5 Nfd7 Nf3 c5 +e4 e6 d4 d5 Nc3 Bb4 Ne2 Nc6 +e4 e6 Qe2 c5 +e4 e5 f4 exf4 Nf3 d5 exd5 Nf6 +e4 e5 d4 exd4 c3 dxc3 +e4 e5 Nf3 Nf6 Nc3 Nc6 d4 +e4 e5 Nf3 Nf6 Bc4 +e4 e5 Nf3 Nc6 d4 exd4 c3 +e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bc5 Nb3 Bb6 a4 a6 +e4 e5 Nf3 Nc6 d4 exd4 Bc4 +e4 e5 Nf3 Nc6 Nc3 Nf6 g3 Bc5 Bg2 d6 d3 a6 +e4 e5 Nf3 Nc6 Nc3 Nf6 d4 exd4 Nd5 +e4 e5 Nf3 Nc6 Bc4 Bc5 d3 Nf6 Nc3 d6 +e4 e5 Nf3 Nc6 Bc4 Bc5 O-O Nf6 Nc3 +e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 O-O Qd6 d3 +e4 e5 Nf3 Nc6 Bb5 a6 Ba4 d6 d4 +e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 d4 Be7 O-O +e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 Qe2 b5 Bb3 Bc5 +e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 d4 exd4 Re1 O-O e5 Ne8 +e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Bxc6 dxc6 +e4 e5 Nf3 Nc6 Bb5 Nf6 Qe2 +e4 e5 Nf3 Nc6 Bb5 Nf6 Nc3 a6 Ba4 +e4 e5 Nf3 Nc6 Bb5 Nf6 Nc3 Bc5 +e4 e5 Nc3 Nf6 f4 d5 +e4 e5 Nc3 Nf6 Bc4 Nxe4 +e4 e5 Nc3 Nf6 Bc4 Nc6 d3 Bb4 +e4 e5 Nc3 Nf6 Bc4 Bb4 Nf3 +e4 e5 Nc3 Nc6 +e4 c6 f4 +e4 c6 d4 d5 exd5 cxd5 c4 Nf6 Nc3 Nc6 cxd5 Nxd5 +e4 c6 d4 d5 exd5 cxd5 c4 Nf6 Nc3 Nc6 Bg5 Be6 +e4 c6 d4 d5 exd5 cxd5 Bd3 Nc6 c3 +e4 c6 d4 d5 e5 Bf5 g4 +e4 c5 d4 cxd4 c3 dxc3 Nxc3 Nc6 Nf3 d6 Bc4 e6 O-O Nf6 Qe2 Be7 Rd1 e5 +e4 c5 c3 e6 d4 +e4 c5 c3 Nf6 e5 Nd5 d4 cxd4 cxd4 e6 +e4 c5 c3 Nf6 e5 Nd5 d4 cxd4 cxd4 d6 Nf3 Nc6 +e4 c5 c3 Nf6 e5 Nd5 Nf3 Nc6 Na3 +e4 c5 b3 d6 +e4 c5 Nf3 e6 c3 Nf6 e5 Nd5 d4 cxd4 cxd4 +e4 c5 Nf3 d6 d4 cxd4 Qxd4 a6 +e4 c5 Nf3 d6 d4 cxd4 Qxd4 Nc6 Bb5 Bd7 Bxc6 Bxc6 Nc3 Nf6 Bg5 e6 O-O-O Be7 1Rhe1 O-O 1Qd2 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 g3 Nc6 Nde2 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 1O-O-O Rc8 1Bb3 Ne5 1h4 h5 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O Nb3 Be6 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 Bc4 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be2 Bg7 O-O O-O Be3 Nc6 Nb3 a5 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Bc4 Bg7 O-O +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Bc4 a6 Bb3 b5 O-O Be7 Qf3 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Bc4 Nc6 Be3 a6 Qe2 Qc7 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Bb5 Bd7 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 f4 e5 Nf3 Nbd7 a4 Be7 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 f4 Nbd7 Be2 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 a4 Nc6 Be2 e6 O-O Be7 Be3 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 a3 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Nbd7 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bc4 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O Nb3 Qb6 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Be3 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bc4 Qb6 Nxc6 bxc6 O-O g6 +e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bc4 +e4 c5 Nf3 d6 b3 +e4 c5 Nf3 d6 Nc3 +e4 c5 Nf3 d6 Bc4 +e4 c5 Nf3 d6 Bb5 Bd7 Bxd7 Nxd7 O-O Ngf6 +e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 O-O Bb3 a5 a4 +e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 d6 g3 +e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 d6 Be2 e5 +e4 c5 Nf3 Nc6 Nc3 Nf6 Be2 g6 d4 cxd4 Nxd4 d6 Nb3 Bg7 Be3 +e4 c5 Nc3 d6 g3 +e4 c5 Nc3 Nc6 g3 e6 +e4 c5 Nc3 Nc6 f4 e6 Nf3 +e4 c5 Nc3 Nc6 f4 d6 +e4 Nf6 e5 Nd5 Nc3 +e4 Nf6 e5 Nd5 Bc4 Nb6 Bb3 c5 c3 c4 Bc2 Nc6 Nf3 Qc7 Qe2 g5 +e4 Nc6 Nc3 +d4 f5 e4 +d4 d5 c4 e6 Nf3 c5 e3 Nf6 +d4 d5 c4 e6 Nf3 Nf6 Qc2 Be7 Bf4 O-O e3 c5 Nc3 Nc6 dxc5 Bxc5 O-O-O Qa5 1a3 +d4 d5 c4 e6 Nc3 c6 cxd5 exd5 Nf3 +d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nge2 Re8 1h3 Nf8 1O-O-O +d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Qc2 Bd6 b3 O-O Be2 b6 +d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 Bd6 Qc2 O-O O-O dxc4 Bxc4 a6 1Rd1 +d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7 e3 O-O Bd3 +d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 h6 Bh4 O-O Nf3 b6 Bd3 Bb7 O-O Nbd7 1Rc1 +d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bxf6 Bxf6 Qb3 +d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 +d4 d5 c4 dxc4 Qa4 +d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 O-O a6 a4 Nc6 Nc3 +d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 O-O a6 Qe2 b5 Bd3 cxd4 exd4 +d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 O-O a6 Nc3 +d4 d5 c4 dxc4 Nf3 Nf6 Qa4 c6 Qxc4 Bf5 +d4 d5 c4 dxc4 Nc3 +d4 d5 c4 c6 e3 Bf5 +d4 d5 c4 c6 Nf3 Nf6 g3 +d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Qe2 Bg6 +d4 d5 Nf3 Nf6 g3 c6 Bg2 +d4 d5 Nf3 Nf6 g3 Bf5 +d4 d5 Nf3 Nf6 Bg5 g6 Nbd2 Bg7 e3 O-O c3 +d4 d5 Nf3 Nf6 Bg5 e6 +d4 d5 Nf3 Nf6 Bf4 e6 +d4 d5 Nf3 Nf6 Bf4 c5 e3 e6 +d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O Nb6 Nc3 Nc6 d5 Na5 1e4 c6 +d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O O-O c6 Nc3 dxc4 +d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 Ne4 cxd5 Nxg5 Nxg5 e6 +d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 Ne4 Bh4 Nxc3 bxc3 dxc4 +d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bf4 O-O e3 c5 dxc5 +d4 Nf6 c4 g6 Nc3 Bg7 g3 O-O Bg2 d6 e3 +d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 g3 O-O Bg2 +d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f4 O-O Be2 c5 d5 e6 Nf3 exd5 exd5 +d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Qa4 Nbd7 Qxc4 c5 Nf3 a6 Qc2 +d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 a6 +d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 Nc6 O-O Rb8 +d4 Nf6 c4 e6 Nf3 d5 Nc3 Be7 Bg5 h6 Bh4 O-O e3 b6 Bd3 Bb7 O-O Nbd7 +d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 Bd3 d5 O-O Bd6 Nc3 +d4 Nf6 c4 e6 Nf3 b6 a3 Bb7 Nc3 d5 cxd5 Nxd5 e3 Be7 +d4 Nf6 c4 e6 Nf3 b6 Nc3 Bb7 Bg5 h6 Bh4 Bb4 e3 Bxc3 bxc3 +d4 Nf6 c4 e6 Nf3 b6 Bg5 +d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 Nf3 +d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 Bd3 d5 Nf3 O-O O-O Nc6 +d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 Bd3 Nc6 Nf3 Bxc3 bxc3 d6 O-O +d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 Bd3 Nc6 Ne2 +d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O a3 Bxc3 bxc3 +d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 cxd4 exd4 b6 1Bg5 Bb7 +d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 Qc7 +d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 b6 O-O Bb7 a3 Bd6 +d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Bd3 d5 a3 Bxc3 bxc3 +d4 Nf6 c4 e6 Nc3 Bb4 a3 Bxc3 bxc3 +d4 Nf6 c4 e6 Nc3 Bb4 Qc2 O-O a3 Bxc3 Qxc3 b6 Bg5 Bb7 f3 h6 +d4 Nf6 c4 e6 Nc3 Bb4 Nf3 b6 Qb3 c5 +d4 Nf6 c4 e6 Nc3 Bb4 Bg5 h6 Bh4 c5 d5 d6 e3 Bxc3 bxc3 e5 Qc2 +d4 Nf6 c4 e6 Nc3 Bb4 Bd2 O-O +d4 Nf6 Nf3 g6 Bg5 Bg7 Nbd2 O-O c3 +d4 Nf6 Nf3 g6 Bf4 Bg7 +d4 Nf6 Nf3 e6 g3 b5 Bg2 Bb7 O-O +d4 Nf6 Nf3 e6 Bg5 c5 e3 Be7 +d4 Nf6 Nf3 e6 Bf4 d5 e3 +d4 Nf6 Nf3 d6 Bg5 +d4 Nf6 Nf3 b6 e3 Bb7 Bd3 e6 O-O +d4 Nf6 Nf3 b6 Bf4 +d4 Nf6 Bg5 e6 e4 h6 Bxf6 Qxf6 +d4 Nf6 Bg5 d5 Bxf6 gxf6 +d4 Nf6 Bg5 d5 Bxf6 exf6 e3 +d4 Nf6 Bg5 c5 Bxf6 gxf6 +d4 Nf6 Bg5 Ne4 h4 c5 +d4 Nf6 Bg5 Ne4 Bh4 +d4 Nf6 Bg5 Ne4 Bf4 c5 d5 Qb6 +c4 g6 Nc3 Bg7 g3 +c4 e6 Nf3 d5 g3 Nf6 Bg2 dxc4 Qa4 +c4 e6 Nf3 d5 g3 Nf6 Bg2 Be7 O-O O-O b3 c5 Bb2 Nc6 +c4 e6 Nf3 d5 g3 Nf6 Bg2 Be7 O-O O-O b3 b6 +c4 e5 Nc3 g6 g3 Bg7 Bg2 +c4 e5 Nc3 f5 g3 Nf6 Bg2 d6 +c4 e5 Nc3 Nf6 g3 g6 Bg2 Bg7 e3 d6 Nge2 O-O +c4 e5 Nc3 Nf6 g3 g6 Bg2 Bg7 Nf3 d6 d3 O-O O-O c6 +c4 e5 Nc3 Nc6 g3 f5 Bg2 Nf6 d3 +c4 e5 Nc3 Nc6 g3 Nf6 Bg2 +c4 e5 Nc3 Nc6 Nf3 g6 g3 Bg7 Bg2 d6 d3 f5 O-O Nf6 Rb1 O-O b4 h6 +c4 e5 Nc3 Nc6 Nf3 Nf6 e3 Bb4 Qc2 +c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 O-O g6 +c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 O-O e6 Nc3 Be7 d4 cxd4 Qxd4 d6 b3 Nbd7 +c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 O-O e6 Nc3 Be7 d4 cxd4 Qxd4 d6 Rd1 a6 1b3 Nbd7 1e4 +c4 c5 Nf3 Nf6 d4 cxd4 Nxd4 e6 g3 Qb6 +c4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 e6 +c4 c5 Nc3 g6 g3 Bg7 Bg2 +c4 c5 Nc3 g6 Nf3 +c4 c5 Nc3 Nf6 Nf3 d5 cxd5 Nxd5 e4 Nb4 +c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 e4 Nf6 Nge2 O-O O-O d6 d3 a6 +c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 Nf3 e5 O-O d6 d3 Nge7 +c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 Nf3 e5 O-O Nge7 d3 O-O a3 +c4 c5 Nc3 Nc6 Nf3 Nf6 e3 e5 +c4 b6 Nf3 Bb7 +c4 b6 Nc3 Bb7 e4 +c4 Nf6 Nc3 g6 g3 Bg7 Bg2 O-O e4 d6 Nge2 c5 d3 Nc6 O-O +b3 e5 Bb2 Nc6 e3 Nf6 Bb5 d6 +b3 b6 +Nf3 d5 g3 c5 Bg2 g6 O-O Bg7 +Nf3 d5 g3 c5 Bg2 Nc6 O-O e6 d3 Bd6 Nbd2 Nge7 e4 O-O Re1 +Nf3 d5 b3 Nf6 Bb2 e6 e3 +Nf3 d5 b3 Bg4 Bb2 +Nf3 c5 g3 g6 Bg2 Bg7 O-O Nc6 d3 e6 e4 +Nf3 c5 g3 g6 Bg2 Bg7 O-O Nc6 d3 Nf6 +Nf3 c5 b3 +Nf3 Nf6 d4 d5 e3 e6 c3 c5 Bd3 diff --git a/Engines/Linux/cheng/src/pgimport/pgimport.cpp b/Engines/Linux/cheng/src/pgimport/pgimport.cpp new file mode 100644 index 0000000..e8c34d7 --- /dev/null +++ b/Engines/Linux/cheng/src/pgimport/pgimport.cpp @@ -0,0 +1,530 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2014-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "../cheng4/types.h" +#include "../cheng4/engine.h" +#include "../cheng4/book.h" +#include "../cheng4/movegen.h" +#include +#include "pgzobrist.h" +#include +#include +#include + +//#define USE_SEARCH + +namespace pgimport +{ + +struct BookBits +{ + u8 bits[65536]; + void clear() + { + memset( bits, 0, sizeof(bits) ); + } + inline u8 probe( u64 sig ) + { + u32 idx = (u32)sig & 0x7ffff; + return bits[ idx>>3 ] & (1u << (idx&7) ); + } + void set( u64 sig ) + { + u32 idx = (u32)sig & 0x7ffff; + bits[ idx>>3 ] |= (1u << (idx&7) ); + } +}; + +} + +template< typename T > static inline void byteSwap( T &v ) +{ + u8 *p = (u8 *)&v; + for ( u32 i=0; i o.count; + return move < o.move; + } +}; + +static inline u8 PGPiece( cheng4::Piece p ) +{ + // Polyglot has: + // bp, wp, bn, wn, bb, wb, br, wr, bq, wq, kb, wk + u8 res = (cheng4::PiecePack::type(p)-1) << 1; + res |= cheng4::PiecePack::color(p) == cheng4::ctWhite ? 1 : 0; + return res; +} + +static inline u8 PGSquare( cheng4::Square sq ) +{ + return (u8)sq ^ 0x38; +} + +static u64 PGHashPiece( cheng4::Piece p, cheng4::Square sq ) +{ + u64 res = polyglot::Zobrist[ polyglot::RandomPiece + PGPiece(p)*64 + PGSquare(sq) ]; + return res; +} + +static cheng4::Move PGMove( u16 m, const cheng4::Board &b ) +{ + cheng4::Square from = cheng4::SquarePack::flipV( (cheng4::Square)((m >> 6) & 63) ); + cheng4::Square to = cheng4::SquarePack::flipV( (cheng4::Square)(m & 63) ); + + // special case: convert king captures rook => castling (always king captures rook in polyglot!) + cheng4::Piece pf = b.piece( from ); + cheng4::Piece pt = b.piece( to ); + if ( cheng4::PiecePack::type( pf ) == cheng4::ptKing ) + { + if ( cheng4::PiecePack::type( pt ) == cheng4::ptRook && + cheng4::PiecePack::color( pf ) == cheng4::PiecePack::color( pt ) ) + { + cheng4::File kf = cheng4::SquarePack::file( to ) >= cheng4::SquarePack::file( from ) + ? cheng4::GFILE : cheng4::CFILE; + to = cheng4::SquarePack::setFile( to, kf ); + return cheng4::MovePack::initCastling( from, to ); + } + } + + u8 promo = (m >> 12) & 7; + if ( promo ) + promo += 1; + return cheng4::MovePack::initPromo( from, to, promo ); +} + +static u64 PGHash( const cheng4::Board &b ) +{ + u64 res = 0; + for ( cheng4::Square sq=0; sq<64; sq++ ) + { + cheng4::Piece p = b.piece(sq); + if ( cheng4::PiecePack::type(p) == cheng4::ptNone ) + continue; + res ^= PGHashPiece( p, sq ); + } + + // castling rights + // polyglot flags: + // bit 0: white KS + // bit 1: white QS + // bit 2: black KS + // bit 3: black QS + + u8 flags = 0; + for ( cheng4::Color c = cheng4::ctWhite; c <= cheng4::ctBlack; c++ ) + { + cheng4::CastRights cr = b.castRights( c ); + if ( cheng4::CastPack::allowedShort( cr ) ) + flags |= 1 << (c*2); + if ( cheng4::CastPack::allowedLong( cr ) ) + flags |= 2 << (c*2); + } + + // castling + for ( u8 i=0; i<4; i++) + { + if ( !(flags & (1<= entries ) + return 0; + fseek(f, (long)index*16, SEEK_SET ); + bool ok = fread( &ent, 16, 1, f ) == 1; + ent.byteSwap(); + // + // first sum all counts for all moves + // second, compute score as (double(score)/double(sum))*100.0, where score is count for current move + return ok; + } + + // find leftmost entry + u32 find( u64 sig ) + { + PGEntry ent; + i32 l = 0; + i32 h = (i32)entries-1; + while ( l processed; +std::vector< cheng4::Signature > stack; +std::set< u64 > bookHashes; + +bool convertBook( FILE *f2, PGBook &book, cheng4::Board &b, u32 &poscnt, u32 fulldepth = 0 ) +{ + for ( size_t i=0; i= book.entries && fulldepth <= 1 ) + { + bool res = 0; +#ifdef USE_SEARCH + cheng4::MoveGen *mg = new cheng4::MoveGen( b ); + cheng4::Move lm; + while ( (lm = mg->next()) != cheng4::mcNone ) + { + cheng4::UndoInfo ui; + b.doMove( lm, ui, b.isCheck( lm, mg->discovered() ) ); + if ( convertBook( f2, book, b, poscnt, fulldepth+1 ) ) + { + res = 1; + } + b.undoMove( ui ); + } + delete mg; +/* std::cout << "entry not found!!!\n"; + b.dump(); + sig = PGHash( b );*/ +#endif + return res; + } + bool res = 1; + bool firstTime = 1; + while ( book.readEntry( e, ent ) && ent.key == sig ) + { + fulldepth = 0; + if ( firstTime ) + { + processed.insert( b.sig() ); + firstTime = 0; + } + std::set< cheng4::Move > movesProcessed; + cheng4::Move m = PGMove( ent.move, b ); + cheng4::Move lm; + cheng4::MoveGen *mg = new cheng4::MoveGen( b ); + while ( (lm = mg->next()) != cheng4::mcNone ) + { + if ( cheng4::MovePack::equalBook( lm, m ) ) + break; + } + if ( lm == cheng4::mcNone ) + { + std::cout << "Error! illegal move in pg book!" << std::endl; + b.dump(); + std::cout << "move: " << cheng4::MovePack::toUCI( m ) << std::endl; + abort(); + } + movesProcessed.insert( lm ); + cheng4::BookEntry be; + convertEntry( ent, be, b ); + fwrite( &be, sizeof(be), 1, f2 ); + + if ( !(poscnt++ & 1023) ) + { + std::cout << poscnt << " "; + } + + cheng4::UndoInfo ui; + b.doMove( lm, ui, b.isCheck(lm, mg->discovered()) ); + convertBook( f2, book, b, poscnt, fulldepth+1 ); + b.undoMove( ui ); + + delete mg; + +#ifdef USE_SEARCH + // do the rest + { + cheng4::MoveGen *mg = new cheng4::MoveGen( b ); + cheng4::Move lm; + while ( (lm = mg->next()) != cheng4::mcNone ) + { + if ( movesProcessed.find(lm) != movesProcessed.end() ) + continue; + cheng4::UndoInfo ui; + b.doMove( lm, ui, b.isCheck( lm, mg->discovered() ) ); + convertBook( f2, book, b, poscnt, fulldepth+1 ); + b.undoMove(ui); + } + delete mg; + } +#endif + + e++; + } + stack.pop_back(); + return res; +} + +static bool entcmp( const cheng4::BookEntry &e1, const cheng4::BookEntry &e2 ) +{ + if ( e1.sig != e2.sig ) + return e1.sig < e2.sig; + if ( e1.count != e2.count ) + return e1.count > e2.count; + return e1.move < e2.move; +} + +void sortBook( const char *fnm ) +{ + std::cout << "sorting..." << std::endl; + FILE *f = fopen(fnm, "rb"); + fseek(f, 0, SEEK_END); + long fsz = ftell(f); + fseek(f, 0, SEEK_SET ); + u32 ent = (u32)(fsz/16); + cheng4::BookEntry *e = new cheng4::BookEntry[ ent ]; + fread( e, 16, ent, f ); + fclose(f); + + std::sort( e, e+ent, entcmp ); + f = fopen("test.cbs", "wb"); + fwrite( e, 16, ent, f ); + fclose(f); + + std::cout << "validating.." << std::endl; + for ( u32 i=1; i rook capture + CastRights cr = b.castRights( b.turn() ); + to = CastPack::rookSquare( to, cr ); + } + from = SquarePack::flipV( from ); + to = SquarePack::flipV( to ); + res = (from << 6) | to; + if ( MovePack::isPromo(m) ) + { + Piece promo = MovePack::promo( m ); + res |= (promo-1) << 12; + } + return res; +} + +void convertLine( const char *buf, std::set< PGEntry > &book ) +{ + Board b; + b.reset(); + for (;;) + { + while (isspace(*buf)) + buf++; + Move m = b.fromSAN(buf); + if ( m == mcNone ) + break; + PGEntry e; + e.n = e.sum = 0; + e.count = 2; + e.move = toPGMove( m, b ); + e.key = PGHash(b); + book.insert(e); + + UndoInfo ui; + bool isCheck = b.isCheck( m, b.discovered() ); + b.doMove( m, ui, isCheck ); + } +} + +void convertBookLines( const char *fnm, const char *ofnm ) +{ + std::set< PGEntry > book; + char buf[4096]; + FILE *f = fopen(fnm, "r"); + while ( fgets(buf, sizeof(buf), f) ) + convertLine( buf, book ); + fclose(f); + // now: write out! + FILE *f2 = fopen(ofnm, "wb"); + std::set< PGEntry >::const_iterator ci; + for ( ci=book.begin(); ci != book.end(); ci++ ) + { + PGEntry ent = *ci; + ent.byteSwap(); + fwrite( &ent, sizeof(ent), 1, f2 ); + } + fclose(f2); +} + +int main( int argc, char **argv ) +{ + cheng4::Engine::init(); + +/* // new: use generic book lines... + convertBookLines("booklines.txt", "booklines.bin"); + return 0;*/ + + PGBook book; + FILE *f2 = fopen("cheng2015.cb", "wb"); + FILE *f = fopen(argc > 1 ? argv[1] : "booklines.bin", "rb"); + if ( !f ) + { + std::cout << "unable to open input book" << std::endl; + fclose(f2); + return 1; + } + fseek(f, 0, SEEK_END); + long fsz = ftell(f); + book.init( fsz, f ); + std::cout << "PG Book: " << book.entries << " entries" << std::endl; + + cheng4::Board b; + b.reset(); + + for (u32 i=0; i entries(book.entries); + for (u32 i=0; i + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Engines/Linux/cheng/src/pgimport/pgzobrist.cpp b/Engines/Linux/cheng/src/pgimport/pgzobrist.cpp new file mode 100644 index 0000000..db4d90f --- /dev/null +++ b/Engines/Linux/cheng/src/pgimport/pgzobrist.cpp @@ -0,0 +1,232 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2014-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +// note that this file contains hashes from polyglot so the license may not hold here, I'm not a lawyer + +#include "pgzobrist.h" + +#define U64C(x) (u64)(x##ull) + +namespace polyglot +{ + +const u64 Zobrist[] = { + U64C(0x9D39247E33776D41), U64C(0x2AF7398005AAA5C7), U64C(0x44DB015024623547), U64C(0x9C15F73E62A76AE2), + U64C(0x75834465489C0C89), U64C(0x3290AC3A203001BF), U64C(0x0FBBAD1F61042279), U64C(0xE83A908FF2FB60CA), + U64C(0x0D7E765D58755C10), U64C(0x1A083822CEAFE02D), U64C(0x9605D5F0E25EC3B0), U64C(0xD021FF5CD13A2ED5), + U64C(0x40BDF15D4A672E32), U64C(0x011355146FD56395), U64C(0x5DB4832046F3D9E5), U64C(0x239F8B2D7FF719CC), + U64C(0x05D1A1AE85B49AA1), U64C(0x679F848F6E8FC971), U64C(0x7449BBFF801FED0B), U64C(0x7D11CDB1C3B7ADF0), + U64C(0x82C7709E781EB7CC), U64C(0xF3218F1C9510786C), U64C(0x331478F3AF51BBE6), U64C(0x4BB38DE5E7219443), + U64C(0xAA649C6EBCFD50FC), U64C(0x8DBD98A352AFD40B), U64C(0x87D2074B81D79217), U64C(0x19F3C751D3E92AE1), + U64C(0xB4AB30F062B19ABF), U64C(0x7B0500AC42047AC4), U64C(0xC9452CA81A09D85D), U64C(0x24AA6C514DA27500), + U64C(0x4C9F34427501B447), U64C(0x14A68FD73C910841), U64C(0xA71B9B83461CBD93), U64C(0x03488B95B0F1850F), + U64C(0x637B2B34FF93C040), U64C(0x09D1BC9A3DD90A94), U64C(0x3575668334A1DD3B), U64C(0x735E2B97A4C45A23), + U64C(0x18727070F1BD400B), U64C(0x1FCBACD259BF02E7), U64C(0xD310A7C2CE9B6555), U64C(0xBF983FE0FE5D8244), + U64C(0x9F74D14F7454A824), U64C(0x51EBDC4AB9BA3035), U64C(0x5C82C505DB9AB0FA), U64C(0xFCF7FE8A3430B241), + U64C(0x3253A729B9BA3DDE), U64C(0x8C74C368081B3075), U64C(0xB9BC6C87167C33E7), U64C(0x7EF48F2B83024E20), + U64C(0x11D505D4C351BD7F), U64C(0x6568FCA92C76A243), U64C(0x4DE0B0F40F32A7B8), U64C(0x96D693460CC37E5D), + U64C(0x42E240CB63689F2F), U64C(0x6D2BDCDAE2919661), U64C(0x42880B0236E4D951), U64C(0x5F0F4A5898171BB6), + U64C(0x39F890F579F92F88), U64C(0x93C5B5F47356388B), U64C(0x63DC359D8D231B78), U64C(0xEC16CA8AEA98AD76), + U64C(0x5355F900C2A82DC7), U64C(0x07FB9F855A997142), U64C(0x5093417AA8A7ED5E), U64C(0x7BCBC38DA25A7F3C), + U64C(0x19FC8A768CF4B6D4), U64C(0x637A7780DECFC0D9), U64C(0x8249A47AEE0E41F7), U64C(0x79AD695501E7D1E8), + U64C(0x14ACBAF4777D5776), U64C(0xF145B6BECCDEA195), U64C(0xDABF2AC8201752FC), U64C(0x24C3C94DF9C8D3F6), + U64C(0xBB6E2924F03912EA), U64C(0x0CE26C0B95C980D9), U64C(0xA49CD132BFBF7CC4), U64C(0xE99D662AF4243939), + U64C(0x27E6AD7891165C3F), U64C(0x8535F040B9744FF1), U64C(0x54B3F4FA5F40D873), U64C(0x72B12C32127FED2B), + U64C(0xEE954D3C7B411F47), U64C(0x9A85AC909A24EAA1), U64C(0x70AC4CD9F04F21F5), U64C(0xF9B89D3E99A075C2), + U64C(0x87B3E2B2B5C907B1), U64C(0xA366E5B8C54F48B8), U64C(0xAE4A9346CC3F7CF2), U64C(0x1920C04D47267BBD), + U64C(0x87BF02C6B49E2AE9), U64C(0x092237AC237F3859), U64C(0xFF07F64EF8ED14D0), U64C(0x8DE8DCA9F03CC54E), + U64C(0x9C1633264DB49C89), U64C(0xB3F22C3D0B0B38ED), U64C(0x390E5FB44D01144B), U64C(0x5BFEA5B4712768E9), + U64C(0x1E1032911FA78984), U64C(0x9A74ACB964E78CB3), U64C(0x4F80F7A035DAFB04), U64C(0x6304D09A0B3738C4), + U64C(0x2171E64683023A08), U64C(0x5B9B63EB9CEFF80C), U64C(0x506AACF489889342), U64C(0x1881AFC9A3A701D6), + U64C(0x6503080440750644), U64C(0xDFD395339CDBF4A7), U64C(0xEF927DBCF00C20F2), U64C(0x7B32F7D1E03680EC), + U64C(0xB9FD7620E7316243), U64C(0x05A7E8A57DB91B77), U64C(0xB5889C6E15630A75), U64C(0x4A750A09CE9573F7), + U64C(0xCF464CEC899A2F8A), U64C(0xF538639CE705B824), U64C(0x3C79A0FF5580EF7F), U64C(0xEDE6C87F8477609D), + U64C(0x799E81F05BC93F31), U64C(0x86536B8CF3428A8C), U64C(0x97D7374C60087B73), U64C(0xA246637CFF328532), + U64C(0x043FCAE60CC0EBA0), U64C(0x920E449535DD359E), U64C(0x70EB093B15B290CC), U64C(0x73A1921916591CBD), + U64C(0x56436C9FE1A1AA8D), U64C(0xEFAC4B70633B8F81), U64C(0xBB215798D45DF7AF), U64C(0x45F20042F24F1768), + U64C(0x930F80F4E8EB7462), U64C(0xFF6712FFCFD75EA1), U64C(0xAE623FD67468AA70), U64C(0xDD2C5BC84BC8D8FC), + U64C(0x7EED120D54CF2DD9), U64C(0x22FE545401165F1C), U64C(0xC91800E98FB99929), U64C(0x808BD68E6AC10365), + U64C(0xDEC468145B7605F6), U64C(0x1BEDE3A3AEF53302), U64C(0x43539603D6C55602), U64C(0xAA969B5C691CCB7A), + U64C(0xA87832D392EFEE56), U64C(0x65942C7B3C7E11AE), U64C(0xDED2D633CAD004F6), U64C(0x21F08570F420E565), + U64C(0xB415938D7DA94E3C), U64C(0x91B859E59ECB6350), U64C(0x10CFF333E0ED804A), U64C(0x28AED140BE0BB7DD), + U64C(0xC5CC1D89724FA456), U64C(0x5648F680F11A2741), U64C(0x2D255069F0B7DAB3), U64C(0x9BC5A38EF729ABD4), + U64C(0xEF2F054308F6A2BC), U64C(0xAF2042F5CC5C2858), U64C(0x480412BAB7F5BE2A), U64C(0xAEF3AF4A563DFE43), + U64C(0x19AFE59AE451497F), U64C(0x52593803DFF1E840), U64C(0xF4F076E65F2CE6F0), U64C(0x11379625747D5AF3), + U64C(0xBCE5D2248682C115), U64C(0x9DA4243DE836994F), U64C(0x066F70B33FE09017), U64C(0x4DC4DE189B671A1C), + U64C(0x51039AB7712457C3), U64C(0xC07A3F80C31FB4B4), U64C(0xB46EE9C5E64A6E7C), U64C(0xB3819A42ABE61C87), + U64C(0x21A007933A522A20), U64C(0x2DF16F761598AA4F), U64C(0x763C4A1371B368FD), U64C(0xF793C46702E086A0), + U64C(0xD7288E012AEB8D31), U64C(0xDE336A2A4BC1C44B), U64C(0x0BF692B38D079F23), U64C(0x2C604A7A177326B3), + U64C(0x4850E73E03EB6064), U64C(0xCFC447F1E53C8E1B), U64C(0xB05CA3F564268D99), U64C(0x9AE182C8BC9474E8), + U64C(0xA4FC4BD4FC5558CA), U64C(0xE755178D58FC4E76), U64C(0x69B97DB1A4C03DFE), U64C(0xF9B5B7C4ACC67C96), + U64C(0xFC6A82D64B8655FB), U64C(0x9C684CB6C4D24417), U64C(0x8EC97D2917456ED0), U64C(0x6703DF9D2924E97E), + U64C(0xC547F57E42A7444E), U64C(0x78E37644E7CAD29E), U64C(0xFE9A44E9362F05FA), U64C(0x08BD35CC38336615), + U64C(0x9315E5EB3A129ACE), U64C(0x94061B871E04DF75), U64C(0xDF1D9F9D784BA010), U64C(0x3BBA57B68871B59D), + U64C(0xD2B7ADEEDED1F73F), U64C(0xF7A255D83BC373F8), U64C(0xD7F4F2448C0CEB81), U64C(0xD95BE88CD210FFA7), + U64C(0x336F52F8FF4728E7), U64C(0xA74049DAC312AC71), U64C(0xA2F61BB6E437FDB5), U64C(0x4F2A5CB07F6A35B3), + U64C(0x87D380BDA5BF7859), U64C(0x16B9F7E06C453A21), U64C(0x7BA2484C8A0FD54E), U64C(0xF3A678CAD9A2E38C), + U64C(0x39B0BF7DDE437BA2), U64C(0xFCAF55C1BF8A4424), U64C(0x18FCF680573FA594), U64C(0x4C0563B89F495AC3), + U64C(0x40E087931A00930D), U64C(0x8CFFA9412EB642C1), U64C(0x68CA39053261169F), U64C(0x7A1EE967D27579E2), + U64C(0x9D1D60E5076F5B6F), U64C(0x3810E399B6F65BA2), U64C(0x32095B6D4AB5F9B1), U64C(0x35CAB62109DD038A), + U64C(0xA90B24499FCFAFB1), U64C(0x77A225A07CC2C6BD), U64C(0x513E5E634C70E331), U64C(0x4361C0CA3F692F12), + U64C(0xD941ACA44B20A45B), U64C(0x528F7C8602C5807B), U64C(0x52AB92BEB9613989), U64C(0x9D1DFA2EFC557F73), + U64C(0x722FF175F572C348), U64C(0x1D1260A51107FE97), U64C(0x7A249A57EC0C9BA2), U64C(0x04208FE9E8F7F2D6), + U64C(0x5A110C6058B920A0), U64C(0x0CD9A497658A5698), U64C(0x56FD23C8F9715A4C), U64C(0x284C847B9D887AAE), + U64C(0x04FEABFBBDB619CB), U64C(0x742E1E651C60BA83), U64C(0x9A9632E65904AD3C), U64C(0x881B82A13B51B9E2), + U64C(0x506E6744CD974924), U64C(0xB0183DB56FFC6A79), U64C(0x0ED9B915C66ED37E), U64C(0x5E11E86D5873D484), + U64C(0xF678647E3519AC6E), U64C(0x1B85D488D0F20CC5), U64C(0xDAB9FE6525D89021), U64C(0x0D151D86ADB73615), + U64C(0xA865A54EDCC0F019), U64C(0x93C42566AEF98FFB), U64C(0x99E7AFEABE000731), U64C(0x48CBFF086DDF285A), + U64C(0x7F9B6AF1EBF78BAF), U64C(0x58627E1A149BBA21), U64C(0x2CD16E2ABD791E33), U64C(0xD363EFF5F0977996), + U64C(0x0CE2A38C344A6EED), U64C(0x1A804AADB9CFA741), U64C(0x907F30421D78C5DE), U64C(0x501F65EDB3034D07), + U64C(0x37624AE5A48FA6E9), U64C(0x957BAF61700CFF4E), U64C(0x3A6C27934E31188A), U64C(0xD49503536ABCA345), + U64C(0x088E049589C432E0), U64C(0xF943AEE7FEBF21B8), U64C(0x6C3B8E3E336139D3), U64C(0x364F6FFA464EE52E), + U64C(0xD60F6DCEDC314222), U64C(0x56963B0DCA418FC0), U64C(0x16F50EDF91E513AF), U64C(0xEF1955914B609F93), + U64C(0x565601C0364E3228), U64C(0xECB53939887E8175), U64C(0xBAC7A9A18531294B), U64C(0xB344C470397BBA52), + U64C(0x65D34954DAF3CEBD), U64C(0xB4B81B3FA97511E2), U64C(0xB422061193D6F6A7), U64C(0x071582401C38434D), + U64C(0x7A13F18BBEDC4FF5), U64C(0xBC4097B116C524D2), U64C(0x59B97885E2F2EA28), U64C(0x99170A5DC3115544), + U64C(0x6F423357E7C6A9F9), U64C(0x325928EE6E6F8794), U64C(0xD0E4366228B03343), U64C(0x565C31F7DE89EA27), + U64C(0x30F5611484119414), U64C(0xD873DB391292ED4F), U64C(0x7BD94E1D8E17DEBC), U64C(0xC7D9F16864A76E94), + U64C(0x947AE053EE56E63C), U64C(0xC8C93882F9475F5F), U64C(0x3A9BF55BA91F81CA), U64C(0xD9A11FBB3D9808E4), + U64C(0x0FD22063EDC29FCA), U64C(0xB3F256D8ACA0B0B9), U64C(0xB03031A8B4516E84), U64C(0x35DD37D5871448AF), + U64C(0xE9F6082B05542E4E), U64C(0xEBFAFA33D7254B59), U64C(0x9255ABB50D532280), U64C(0xB9AB4CE57F2D34F3), + U64C(0x693501D628297551), U64C(0xC62C58F97DD949BF), U64C(0xCD454F8F19C5126A), U64C(0xBBE83F4ECC2BDECB), + U64C(0xDC842B7E2819E230), U64C(0xBA89142E007503B8), U64C(0xA3BC941D0A5061CB), U64C(0xE9F6760E32CD8021), + U64C(0x09C7E552BC76492F), U64C(0x852F54934DA55CC9), U64C(0x8107FCCF064FCF56), U64C(0x098954D51FFF6580), + U64C(0x23B70EDB1955C4BF), U64C(0xC330DE426430F69D), U64C(0x4715ED43E8A45C0A), U64C(0xA8D7E4DAB780A08D), + U64C(0x0572B974F03CE0BB), U64C(0xB57D2E985E1419C7), U64C(0xE8D9ECBE2CF3D73F), U64C(0x2FE4B17170E59750), + U64C(0x11317BA87905E790), U64C(0x7FBF21EC8A1F45EC), U64C(0x1725CABFCB045B00), U64C(0x964E915CD5E2B207), + U64C(0x3E2B8BCBF016D66D), U64C(0xBE7444E39328A0AC), U64C(0xF85B2B4FBCDE44B7), U64C(0x49353FEA39BA63B1), + U64C(0x1DD01AAFCD53486A), U64C(0x1FCA8A92FD719F85), U64C(0xFC7C95D827357AFA), U64C(0x18A6A990C8B35EBD), + U64C(0xCCCB7005C6B9C28D), U64C(0x3BDBB92C43B17F26), U64C(0xAA70B5B4F89695A2), U64C(0xE94C39A54A98307F), + U64C(0xB7A0B174CFF6F36E), U64C(0xD4DBA84729AF48AD), U64C(0x2E18BC1AD9704A68), U64C(0x2DE0966DAF2F8B1C), + U64C(0xB9C11D5B1E43A07E), U64C(0x64972D68DEE33360), U64C(0x94628D38D0C20584), U64C(0xDBC0D2B6AB90A559), + U64C(0xD2733C4335C6A72F), U64C(0x7E75D99D94A70F4D), U64C(0x6CED1983376FA72B), U64C(0x97FCAACBF030BC24), + U64C(0x7B77497B32503B12), U64C(0x8547EDDFB81CCB94), U64C(0x79999CDFF70902CB), U64C(0xCFFE1939438E9B24), + U64C(0x829626E3892D95D7), U64C(0x92FAE24291F2B3F1), U64C(0x63E22C147B9C3403), U64C(0xC678B6D860284A1C), + U64C(0x5873888850659AE7), U64C(0x0981DCD296A8736D), U64C(0x9F65789A6509A440), U64C(0x9FF38FED72E9052F), + U64C(0xE479EE5B9930578C), U64C(0xE7F28ECD2D49EECD), U64C(0x56C074A581EA17FE), U64C(0x5544F7D774B14AEF), + U64C(0x7B3F0195FC6F290F), U64C(0x12153635B2C0CF57), U64C(0x7F5126DBBA5E0CA7), U64C(0x7A76956C3EAFB413), + U64C(0x3D5774A11D31AB39), U64C(0x8A1B083821F40CB4), U64C(0x7B4A38E32537DF62), U64C(0x950113646D1D6E03), + U64C(0x4DA8979A0041E8A9), U64C(0x3BC36E078F7515D7), U64C(0x5D0A12F27AD310D1), U64C(0x7F9D1A2E1EBE1327), + U64C(0xDA3A361B1C5157B1), U64C(0xDCDD7D20903D0C25), U64C(0x36833336D068F707), U64C(0xCE68341F79893389), + U64C(0xAB9090168DD05F34), U64C(0x43954B3252DC25E5), U64C(0xB438C2B67F98E5E9), U64C(0x10DCD78E3851A492), + U64C(0xDBC27AB5447822BF), U64C(0x9B3CDB65F82CA382), U64C(0xB67B7896167B4C84), U64C(0xBFCED1B0048EAC50), + U64C(0xA9119B60369FFEBD), U64C(0x1FFF7AC80904BF45), U64C(0xAC12FB171817EEE7), U64C(0xAF08DA9177DDA93D), + U64C(0x1B0CAB936E65C744), U64C(0xB559EB1D04E5E932), U64C(0xC37B45B3F8D6F2BA), U64C(0xC3A9DC228CAAC9E9), + U64C(0xF3B8B6675A6507FF), U64C(0x9FC477DE4ED681DA), U64C(0x67378D8ECCEF96CB), U64C(0x6DD856D94D259236), + U64C(0xA319CE15B0B4DB31), U64C(0x073973751F12DD5E), U64C(0x8A8E849EB32781A5), U64C(0xE1925C71285279F5), + U64C(0x74C04BF1790C0EFE), U64C(0x4DDA48153C94938A), U64C(0x9D266D6A1CC0542C), U64C(0x7440FB816508C4FE), + U64C(0x13328503DF48229F), U64C(0xD6BF7BAEE43CAC40), U64C(0x4838D65F6EF6748F), U64C(0x1E152328F3318DEA), + U64C(0x8F8419A348F296BF), U64C(0x72C8834A5957B511), U64C(0xD7A023A73260B45C), U64C(0x94EBC8ABCFB56DAE), + U64C(0x9FC10D0F989993E0), U64C(0xDE68A2355B93CAE6), U64C(0xA44CFE79AE538BBE), U64C(0x9D1D84FCCE371425), + U64C(0x51D2B1AB2DDFB636), U64C(0x2FD7E4B9E72CD38C), U64C(0x65CA5B96B7552210), U64C(0xDD69A0D8AB3B546D), + U64C(0x604D51B25FBF70E2), U64C(0x73AA8A564FB7AC9E), U64C(0x1A8C1E992B941148), U64C(0xAAC40A2703D9BEA0), + U64C(0x764DBEAE7FA4F3A6), U64C(0x1E99B96E70A9BE8B), U64C(0x2C5E9DEB57EF4743), U64C(0x3A938FEE32D29981), + U64C(0x26E6DB8FFDF5ADFE), U64C(0x469356C504EC9F9D), U64C(0xC8763C5B08D1908C), U64C(0x3F6C6AF859D80055), + U64C(0x7F7CC39420A3A545), U64C(0x9BFB227EBDF4C5CE), U64C(0x89039D79D6FC5C5C), U64C(0x8FE88B57305E2AB6), + U64C(0xA09E8C8C35AB96DE), U64C(0xFA7E393983325753), U64C(0xD6B6D0ECC617C699), U64C(0xDFEA21EA9E7557E3), + U64C(0xB67C1FA481680AF8), U64C(0xCA1E3785A9E724E5), U64C(0x1CFC8BED0D681639), U64C(0xD18D8549D140CAEA), + U64C(0x4ED0FE7E9DC91335), U64C(0xE4DBF0634473F5D2), U64C(0x1761F93A44D5AEFE), U64C(0x53898E4C3910DA55), + U64C(0x734DE8181F6EC39A), U64C(0x2680B122BAA28D97), U64C(0x298AF231C85BAFAB), U64C(0x7983EED3740847D5), + U64C(0x66C1A2A1A60CD889), U64C(0x9E17E49642A3E4C1), U64C(0xEDB454E7BADC0805), U64C(0x50B704CAB602C329), + U64C(0x4CC317FB9CDDD023), U64C(0x66B4835D9EAFEA22), U64C(0x219B97E26FFC81BD), U64C(0x261E4E4C0A333A9D), + U64C(0x1FE2CCA76517DB90), U64C(0xD7504DFA8816EDBB), U64C(0xB9571FA04DC089C8), U64C(0x1DDC0325259B27DE), + U64C(0xCF3F4688801EB9AA), U64C(0xF4F5D05C10CAB243), U64C(0x38B6525C21A42B0E), U64C(0x36F60E2BA4FA6800), + U64C(0xEB3593803173E0CE), U64C(0x9C4CD6257C5A3603), U64C(0xAF0C317D32ADAA8A), U64C(0x258E5A80C7204C4B), + U64C(0x8B889D624D44885D), U64C(0xF4D14597E660F855), U64C(0xD4347F66EC8941C3), U64C(0xE699ED85B0DFB40D), + U64C(0x2472F6207C2D0484), U64C(0xC2A1E7B5B459AEB5), U64C(0xAB4F6451CC1D45EC), U64C(0x63767572AE3D6174), + U64C(0xA59E0BD101731A28), U64C(0x116D0016CB948F09), U64C(0x2CF9C8CA052F6E9F), U64C(0x0B090A7560A968E3), + U64C(0xABEEDDB2DDE06FF1), U64C(0x58EFC10B06A2068D), U64C(0xC6E57A78FBD986E0), U64C(0x2EAB8CA63CE802D7), + U64C(0x14A195640116F336), U64C(0x7C0828DD624EC390), U64C(0xD74BBE77E6116AC7), U64C(0x804456AF10F5FB53), + U64C(0xEBE9EA2ADF4321C7), U64C(0x03219A39EE587A30), U64C(0x49787FEF17AF9924), U64C(0xA1E9300CD8520548), + U64C(0x5B45E522E4B1B4EF), U64C(0xB49C3B3995091A36), U64C(0xD4490AD526F14431), U64C(0x12A8F216AF9418C2), + U64C(0x001F837CC7350524), U64C(0x1877B51E57A764D5), U64C(0xA2853B80F17F58EE), U64C(0x993E1DE72D36D310), + U64C(0xB3598080CE64A656), U64C(0x252F59CF0D9F04BB), U64C(0xD23C8E176D113600), U64C(0x1BDA0492E7E4586E), + U64C(0x21E0BD5026C619BF), U64C(0x3B097ADAF088F94E), U64C(0x8D14DEDB30BE846E), U64C(0xF95CFFA23AF5F6F4), + U64C(0x3871700761B3F743), U64C(0xCA672B91E9E4FA16), U64C(0x64C8E531BFF53B55), U64C(0x241260ED4AD1E87D), + U64C(0x106C09B972D2E822), U64C(0x7FBA195410E5CA30), U64C(0x7884D9BC6CB569D8), U64C(0x0647DFEDCD894A29), + U64C(0x63573FF03E224774), U64C(0x4FC8E9560F91B123), U64C(0x1DB956E450275779), U64C(0xB8D91274B9E9D4FB), + U64C(0xA2EBEE47E2FBFCE1), U64C(0xD9F1F30CCD97FB09), U64C(0xEFED53D75FD64E6B), U64C(0x2E6D02C36017F67F), + U64C(0xA9AA4D20DB084E9B), U64C(0xB64BE8D8B25396C1), U64C(0x70CB6AF7C2D5BCF0), U64C(0x98F076A4F7A2322E), + U64C(0xBF84470805E69B5F), U64C(0x94C3251F06F90CF3), U64C(0x3E003E616A6591E9), U64C(0xB925A6CD0421AFF3), + U64C(0x61BDD1307C66E300), U64C(0xBF8D5108E27E0D48), U64C(0x240AB57A8B888B20), U64C(0xFC87614BAF287E07), + U64C(0xEF02CDD06FFDB432), U64C(0xA1082C0466DF6C0A), U64C(0x8215E577001332C8), U64C(0xD39BB9C3A48DB6CF), + U64C(0x2738259634305C14), U64C(0x61CF4F94C97DF93D), U64C(0x1B6BACA2AE4E125B), U64C(0x758F450C88572E0B), + U64C(0x959F587D507A8359), U64C(0xB063E962E045F54D), U64C(0x60E8ED72C0DFF5D1), U64C(0x7B64978555326F9F), + U64C(0xFD080D236DA814BA), U64C(0x8C90FD9B083F4558), U64C(0x106F72FE81E2C590), U64C(0x7976033A39F7D952), + U64C(0xA4EC0132764CA04B), U64C(0x733EA705FAE4FA77), U64C(0xB4D8F77BC3E56167), U64C(0x9E21F4F903B33FD9), + U64C(0x9D765E419FB69F6D), U64C(0xD30C088BA61EA5EF), U64C(0x5D94337FBFAF7F5B), U64C(0x1A4E4822EB4D7A59), + U64C(0x6FFE73E81B637FB3), U64C(0xDDF957BC36D8B9CA), U64C(0x64D0E29EEA8838B3), U64C(0x08DD9BDFD96B9F63), + U64C(0x087E79E5A57D1D13), U64C(0xE328E230E3E2B3FB), U64C(0x1C2559E30F0946BE), U64C(0x720BF5F26F4D2EAA), + U64C(0xB0774D261CC609DB), U64C(0x443F64EC5A371195), U64C(0x4112CF68649A260E), U64C(0xD813F2FAB7F5C5CA), + U64C(0x660D3257380841EE), U64C(0x59AC2C7873F910A3), U64C(0xE846963877671A17), U64C(0x93B633ABFA3469F8), + U64C(0xC0C0F5A60EF4CDCF), U64C(0xCAF21ECD4377B28C), U64C(0x57277707199B8175), U64C(0x506C11B9D90E8B1D), + U64C(0xD83CC2687A19255F), U64C(0x4A29C6465A314CD1), U64C(0xED2DF21216235097), U64C(0xB5635C95FF7296E2), + U64C(0x22AF003AB672E811), U64C(0x52E762596BF68235), U64C(0x9AEBA33AC6ECC6B0), U64C(0x944F6DE09134DFB6), + U64C(0x6C47BEC883A7DE39), U64C(0x6AD047C430A12104), U64C(0xA5B1CFDBA0AB4067), U64C(0x7C45D833AFF07862), + U64C(0x5092EF950A16DA0B), U64C(0x9338E69C052B8E7B), U64C(0x455A4B4CFE30E3F5), U64C(0x6B02E63195AD0CF8), + U64C(0x6B17B224BAD6BF27), U64C(0xD1E0CCD25BB9C169), U64C(0xDE0C89A556B9AE70), U64C(0x50065E535A213CF6), + U64C(0x9C1169FA2777B874), U64C(0x78EDEFD694AF1EED), U64C(0x6DC93D9526A50E68), U64C(0xEE97F453F06791ED), + U64C(0x32AB0EDB696703D3), U64C(0x3A6853C7E70757A7), U64C(0x31865CED6120F37D), U64C(0x67FEF95D92607890), + U64C(0x1F2B1D1F15F6DC9C), U64C(0xB69E38A8965C6B65), U64C(0xAA9119FF184CCCF4), U64C(0xF43C732873F24C13), + U64C(0xFB4A3D794A9A80D2), U64C(0x3550C2321FD6109C), U64C(0x371F77E76BB8417E), U64C(0x6BFA9AAE5EC05779), + U64C(0xCD04F3FF001A4778), U64C(0xE3273522064480CA), U64C(0x9F91508BFFCFC14A), U64C(0x049A7F41061A9E60), + U64C(0xFCB6BE43A9F2FE9B), U64C(0x08DE8A1C7797DA9B), U64C(0x8F9887E6078735A1), U64C(0xB5B4071DBFC73A66), + U64C(0x230E343DFBA08D33), U64C(0x43ED7F5A0FAE657D), U64C(0x3A88A0FBBCB05C63), U64C(0x21874B8B4D2DBC4F), + U64C(0x1BDEA12E35F6A8C9), U64C(0x53C065C6C8E63528), U64C(0xE34A1D250E7A8D6B), U64C(0xD6B04D3B7651DD7E), + U64C(0x5E90277E7CB39E2D), U64C(0x2C046F22062DC67D), U64C(0xB10BB459132D0A26), U64C(0x3FA9DDFB67E2F199), + U64C(0x0E09B88E1914F7AF), U64C(0x10E8B35AF3EEAB37), U64C(0x9EEDECA8E272B933), U64C(0xD4C718BC4AE8AE5F), + U64C(0x81536D601170FC20), U64C(0x91B534F885818A06), U64C(0xEC8177F83F900978), U64C(0x190E714FADA5156E), + U64C(0xB592BF39B0364963), U64C(0x89C350C893AE7DC1), U64C(0xAC042E70F8B383F2), U64C(0xB49B52E587A1EE60), + U64C(0xFB152FE3FF26DA89), U64C(0x3E666E6F69AE2C15), U64C(0x3B544EBE544C19F9), U64C(0xE805A1E290CF2456), + U64C(0x24B33C9D7ED25117), U64C(0xE74733427B72F0C1), U64C(0x0A804D18B7097475), U64C(0x57E3306D881EDB4F), + U64C(0x4AE7D6A36EB5DBCB), U64C(0x2D8D5432157064C8), U64C(0xD1E649DE1E7F268B), U64C(0x8A328A1CEDFE552C), + U64C(0x07A3AEC79624C7DA), U64C(0x84547DDC3E203C94), U64C(0x990A98FD5071D263), U64C(0x1A4FF12616EEFC89), + U64C(0xF6F7FD1431714200), U64C(0x30C05B1BA332F41C), U64C(0x8D2636B81555A786), U64C(0x46C9FEB55D120902), + U64C(0xCCEC0A73B49C9921), U64C(0x4E9D2827355FC492), U64C(0x19EBB029435DCB0F), U64C(0x4659D2B743848A2C), + U64C(0x963EF2C96B33BE31), U64C(0x74F85198B05A2E7D), U64C(0x5A0F544DD2B1FB18), U64C(0x03727073C2E134B1), + U64C(0xC7F6AA2DE59AEA61), U64C(0x352787BAA0D7C22F), U64C(0x9853EAB63B5E0B35), U64C(0xABBDCDD7ED5C0860), + U64C(0xCF05DAF5AC8D77B0), U64C(0x49CAD48CEBF4A71E), U64C(0x7A4C10EC2158C4A6), U64C(0xD9E92AA246BF719E), + U64C(0x13AE978D09FE5557), U64C(0x730499AF921549FF), U64C(0x4E4B705B92903BA4), U64C(0xFF577222C14F0A3A), + U64C(0x55B6344CF97AAFAE), U64C(0xB862225B055B6960), U64C(0xCAC09AFBDDD2CDB4), U64C(0xDAF8E9829FE96B5F), + U64C(0xB5FDFC5D3132C498), U64C(0x310CB380DB6F7503), U64C(0xE87FBB46217A360E), U64C(0x2102AE466EBB1148), + U64C(0xF8549E1A3AA5E00D), U64C(0x07A69AFDCC42261A), U64C(0xC4C118BFE78FEAAE), U64C(0xF9F4892ED96BD438), + U64C(0x1AF3DBE25D8F45DA), U64C(0xF5B4B0B0D2DEEEB4), U64C(0x962ACEEFA82E1C84), U64C(0x046E3ECAAF453CE9), + U64C(0xF05D129681949A4C), U64C(0x964781CE734B3C84), U64C(0x9C2ED44081CE5FBD), U64C(0x522E23F3925E319E), + U64C(0x177E00F9FC32F791), U64C(0x2BC60A63A6F3B3F2), U64C(0x222BBFAE61725606), U64C(0x486289DDCC3D6780), + U64C(0x7DC7785B8EFDFC80), U64C(0x8AF38731C02BA980), U64C(0x1FAB64EA29A2DDF7), U64C(0xE4D9429322CD065A), + U64C(0x9DA058C67844F20C), U64C(0x24C0E332B70019B0), U64C(0x233003B5A6CFE6AD), U64C(0xD586BD01C5C217F6), + U64C(0x5E5637885F29BC2B), U64C(0x7EBA726D8C94094B), U64C(0x0A56A5F0BFE39272), U64C(0xD79476A84EE20D06), + U64C(0x9E4C1269BAA4BF37), U64C(0x17EFEE45B0DEE640), U64C(0x1D95B0A5FCF90BC6), U64C(0x93CBE0B699C2585D), + U64C(0x65FA4F227A2B6D79), U64C(0xD5F9E858292504D5), U64C(0xC2B5A03F71471A6F), U64C(0x59300222B4561E00), + U64C(0xCE2F8642CA0712DC), U64C(0x7CA9723FBB2E8988), U64C(0x2785338347F2BA08), U64C(0xC61BB3A141E50E8C), + U64C(0x150F361DAB9DEC26), U64C(0x9F6A419D382595F4), U64C(0x64A53DC924FE7AC9), U64C(0x142DE49FFF7A7C3D), + U64C(0x0C335248857FA9E7), U64C(0x0A9C32D5EAE45305), U64C(0xE6C42178C4BBB92E), U64C(0x71F1CE2490D20B07), + U64C(0xF1BCC3D275AFE51A), U64C(0xE728E8C83C334074), U64C(0x96FBF83A12884624), U64C(0x81A1549FD6573DA5), + U64C(0x5FA7867CAF35E149), U64C(0x56986E2EF3ED091B), U64C(0x917F1DD5F8886C61), U64C(0xD20D8C88C8FFE65F), + U64C(0x31D71DCE64B2C310), U64C(0xF165B587DF898190), U64C(0xA57E6339DD2CF3A0), U64C(0x1EF6E6DBB1961EC9), + U64C(0x70CC73D90BC26E24), U64C(0xE21A6B35DF0C3AD7), U64C(0x003A93D8B2806962), U64C(0x1C99DED33CB890A1), + U64C(0xCF3145DE0ADD4289), U64C(0xD0E4427A5514FB72), U64C(0x77C621CC9FB3A483), U64C(0x67A34DAC4356550B), + U64C(0xF8D626AAAF278509) +}; + +} diff --git a/Engines/Linux/cheng/src/pgimport/pgzobrist.h b/Engines/Linux/cheng/src/pgimport/pgzobrist.h new file mode 100644 index 0000000..a58b75b --- /dev/null +++ b/Engines/Linux/cheng/src/pgimport/pgzobrist.h @@ -0,0 +1,45 @@ +/* +You can use this program under the terms of either the following zlib-compatible license +or as public domain (where applicable) + + Copyright (C) 2014-2015 Martin Sedlak + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +// note that this file contains constants from polyglot so the license may not hold here, I'm not a lawyer + +#pragma once + +#include "../cheng4/types.h" + +using namespace cheng4; + +namespace polyglot +{ + +enum RandomConstants +{ + RandomPiece = 0, // 12 * 64 + RandomCastle = 768, // 4 + RandomEnPassant = 772, // 8 + RandomTurn = 780 // 1 +}; + +extern const u64 Zobrist[]; + +} diff --git a/Engines/Linux/cheng/src/pgimport/readme.txt b/Engines/Linux/cheng/src/pgimport/readme.txt new file mode 100644 index 0000000..5e848cf --- /dev/null +++ b/Engines/Linux/cheng/src/pgimport/readme.txt @@ -0,0 +1 @@ +book lines provided by Graham Banks (many thanks) diff --git a/Engines/Windows/irina/README.txt b/Engines/Windows/irina/README.txt index b6d7414..8199a7a 100644 --- a/Engines/Windows/irina/README.txt +++ b/Engines/Windows/irina/README.txt @@ -8,5 +8,5 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with Kenny. If not, see . +You should have received a copy of the GNU General Public License. +If not, see . diff --git a/Engines/Windows/irina/irina.exe b/Engines/Windows/irina/irina.exe index 9ff405b..30a816c 100644 Binary files a/Engines/Windows/irina/irina.exe and b/Engines/Windows/irina/irina.exe differ diff --git a/Engines/Windows/irina/logo.bmp b/Engines/Windows/irina/logo.bmp new file mode 100644 index 0000000..e02cb22 Binary files /dev/null and b/Engines/Windows/irina/logo.bmp differ diff --git a/Engines/Windows/irina/logo.info b/Engines/Windows/irina/logo.info new file mode 100644 index 0000000..7b2f264 --- /dev/null +++ b/Engines/Windows/irina/logo.info @@ -0,0 +1 @@ +URL: https://commons.wikimedia.org/wiki/File%3AFirst_matryoshka_museum_doll_open.jpg File: https://upload.wikimedia.org/wikipedia/commons/3/3d/First_matryoshka_museum_doll_open.jpg Attribution: By Photo: RK812, Doll carved by Zvezdochkin, painted by Malyutin (Sergiev Posad Museum of Toys, Russia) [Public domain], via Wikimedia Commons \ No newline at end of file diff --git a/Engines/Windows/irina/logo100x50.bmp b/Engines/Windows/irina/logo100x50.bmp new file mode 100644 index 0000000..f206a48 Binary files /dev/null and b/Engines/Windows/irina/logo100x50.bmp differ diff --git a/Engines/Windows/irina/src/Makefile b/Engines/Windows/irina/src/Makefile index 07d477b..046fc26 100644 --- a/Engines/Windows/irina/src/Makefile +++ b/Engines/Windows/irina/src/Makefile @@ -13,12 +13,7 @@ all : $(LINK_TARGET) $(LINK_TARGET) : $(OBJS) gcc -O3 -o $@ $^ -DNDEBUG - #~ clang -O2 -o $@ $^ - #~ profile mas -pg strip $(LINK_TARGET) %.o : %.c gcc -Wall -O3 -o $@ -c $< -DNDEBUG -DWIN32 - #~ mas rapida y menor tam = -O1 - #~ profile mas -pg - #~ clang -Wall -O2 -o $@ -c $< diff --git a/Engines/Windows/irina/src/util.c b/Engines/Windows/irina/src/util.c index 039d614..34da2a9 100644 --- a/Engines/Windows/irina/src/util.c +++ b/Engines/Windows/irina/src/util.c @@ -138,7 +138,7 @@ int bioskey() } else { - return kbhit(); + return _kbhit(); } } #endif diff --git a/Engines/Windows/irina/src/xmk_clang.bat b/Engines/Windows/irina/src/xmk_clang.bat new file mode 100644 index 0000000..d13df73 --- /dev/null +++ b/Engines/Windows/irina/src/xmk_clang.bat @@ -0,0 +1,4 @@ +@echo off +call "c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" +PATH=C:\MinGW\bin;C:\MinGW\msys\1.0\bin;D:\Program Files\LLVM\bin;%PATH% +clang -O2 -DWIN32 -D_CRT_SECURE_NO_WARNINGS main.c loop.c board.c data.c util.c movegen.c makemove.c perft.c eval.c evalst.c search.c person.c hash.c -o irina_clang.exe diff --git a/GM/Caruana.xgm b/GM/Caruana.xgm new file mode 100644 index 0000000..a9ba35b --- /dev/null +++ b/GM/Caruana.xgm @@ -0,0 +1,1630 @@ +FVxgV^g]EUmeDT]c^ele;Lph@wu=FZSN`xwFOum<;SJ\dkd[dml;kn]`WJLOL]LWlpUlewxdl|FSIM May|Chetverik,M|2005.05.14|B03|1-0|W +FVn^@Osd?Tw\DLxgEMjbTK\j>@me@we=aVg?>vwaFgXIQuYFOXg;LldLFgvNg_PFXFNFwp:>pgFnrvnvev>^veHPk[@HjZGOZRHGyxBJxp^>px>^xp^>px>^|9th EICC|Motylev, Alexander|2008.04.30|C43t|1/2-1/2|W +EUm]DTld;LxgFNnf@OjbT\kc\csm?Md\>@tkLR\TMDmce^W^gVDV]VRCuc:Jk]CTc[Te[MJZrZEZMKIQo_^gmgZSqiS\gm?wmw>PK=@I=aetwh\nxqnuf^uca`P`i`te^UcUhwIPwfUcqhPGhgcj|17th TCh-RUS Premier|Rublevsky, Sergei|2010.04.04|D45e|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBJvx;LtfL]dUOU^U]gngKfof=XutGWf^W_l\<`xy?O\TOQg`X`wgHXTMDMtD:@H>FH@F>@H>FH@|41st GM|Leko, Peter|2013.07.27|C84f|1/2-1/2|B +EUxgDTnf;Lm]T]f]<`smFNld?Mwe@Fmw=Dwf`YqaM_tmGOul>tm>nmenqUMqyWU:;ME|6. World Blitz|Savchenko, Boris|2010.11.17|D35|0-1|W +FVl\@Ome?[tm[msm>@xg=FphDLwiEUi@I>^I@^U@AU=AI=eI@e=@I=eI@XPvme\@A\Nmn`XnpXapoa`op`apoa`|Showdown Blitz 2015|Nakamura, Hikaru|2015.11.15|B52|1/2-1/2|W +EUm]DTld;Lxg@OnfHPsm?H]TBRwS>@vx=DunqiU]d]V]SL]enuDLtkLTrtTFg]:=]WPWmgW_wvO^kH^oxo_fox@Ht\FOxyemvn=egm>=\`H?uwfmwOmu2yqun`_nY_^eipi=mqhmehoYTovef^fTfvufcutc\tk\[kt[TtkIYiaTUks?@sk@IkrUyrkypkcpickiNOXNnkcngckCKX=gokdoTdmIHmuTxunx`no`_ox_O=DOaDKaZKkGOkCHQ|11th EICC Men|Sokolov, Ivan|2010.03.12|D43b|1-0|B +@OxgHPm]?HphDT]T;JwpJTl\O^vxEMg]=Knf>@ulGWsm]WPWuUDLC=LlpxGDUWlk=GA@GQ@AW?|76th Tata Steel Masters|Naiditsch, Arkadij|2014.01.25|A07|0-1|W +EUm]DTld@Oxg;LnfFNsm?M]TMTk[TMjbNVd\V^\UL[gX=Rtk[Uuc>@w\IQkOUOXGMDGQ@IQG<`rj`YvxDqxqYG\GRDqx?Gjl|53. Masters|Morozevich, Alexander|2010.12.31|D49|1/2-1/2|B +FVl\@OnfEU\UOUjb;Lul?Mph>@wpUOsd@k[RKw\BRrsO^d^EU\U=UmeGW^dULdnLMvx;Ll\R[b[L[gVMVs[:jtmVM[cW_e]_gcg?gpg@I>YI@Y>@I>YI@Y>|5th NH Chess Tournament|Svidler, Peter|2010.08.20|C78m|1/2-1/2|B +EUxgDTnfHPwS@ld?@wnU\u=?=n\d^TFyuRZtmGW^X>DrtIQXiCS\eHXgvFOmdOdtdDUdTZbumbkmkS[elUdnwdjo_X`iojdoudUlcLFvlEZcZ:ZuoZ:f^W^o^FWph:;kc@G^o=@xgEMmeDLjbBR\jIQvx?>tfTfof=KumNgaHPxy;EagMU^ULUe]V^gx:@wn?>k[RKvxIQtkEMwvO`vw`OwvDLnw;EqiE?m]V]g]?PumPVxyBJruFyq=>we:=vnE?gaFN_WPW`WNQaPV^qy?Td^Tbnfbjfe=ewe;D^XLTyxCLenQPn>|FSGM April|Vajda, Levente|2007.04.07|C88h|0-1|W +FVl\@Osd?[me>@tm?>xgDLjb[?mXIQXO=OnfEMwn;EvxO=gmEOm^OIe]GW^mV]f]HPk[?HmcvuvIXvmMU\ULUdnX^mkHOtD=Dcm^Xph@H|40th Olympiad Open|Adams, Michael|2012.09.03|B51u|1/2-1/2|B +EUxgDTph@OwpHPvx?Hl\;L\UOUul=Msd>@meCKdUMUgVL]pU]lU:@U:avnd`oyx?<:C@nfLFsmFP_hvxOYd\YhqhU\m\KDe^:;ru=F^UCS\mDKjZBJZSJSurFMUjELgXT\mgMOkcIQXGOGc\L^lnS\j\^U\UGUwuUGuMKTML;@qiYamwDLphQXh`WEkb?>wmE@kc?GtbFWsdIYruX`i`Y`gqNVbTV^\ULUq`Wa`qOWphaPo_JRqwHQvnQ_h_P_nqGHxy=Xlo_YqpXQpH@Hwq:JuxJPdnW_xPHPTM_gn_PGoaYhahQMhX@vx<`jbBRtf@ArtGWdSW_fTFTtT=Ful:=wt?OkcIQlk=>gm`nm^_g^OFOpwnwtwOWxyWeksV^SD>FDUFVTLCLUKVSKZScsteSwuSZt_Z]_?AI?WIAW?AI|FSIM May|Lengyel, Bela|2005.05.08|B70|1/2-1/2|B +@Om]HPld?HtX>@nfDTsmT]f]EMxgIQXaFV]VMVw\=Dvx;Lwv@IaOHOunOH\Sm^GW^TE=c]VLf\L]d]=]mn]\lc\]u]H]vu?=xyQYph]Kyp=unuW_ulDVh_V_lnKDpw^fclIQogDVkc_XleV_jZSZcZJRnkX=kn=EeSEMwxMVnl_Xl^VOSeX_xpQXpiOMipMOpiOMipYa^\MV\^aipyVM^\MO\tXYtxONxwYQwvQXvxXYxw_Me\NW\eWEeSENS\NVwiYXihXOhVOVypV]\S]dpwdmqiPX|Mitropa Cup|Jenni, Florian|2009.05.09|A07|1/2-1/2|B +GWm]@OxgHPph?Hwp>@vxEMkcDLtk;El\=DsdFV]U?>rtLTn^HQtlW_ktPXgvE?ve?Pc[CKjZQ?ZRIYtmYalj@dnO^n]MVbZ=OkcLEtk?>phBJgpOKrsKOun^dkd=UyHP]UDdvfdTsv@HfgiWg_OdmdTdh`WlvF=?_\d\c\?@xnGWndUOsmX`wndZBJZTNPvxIYbZOI[SJSZSL=e]V^]UIXn\@IkHPHldHFmcYa\n=Gc]aiphGV]NVgngXgxy?GN]gXwuCKTc@wn=F_XIQXOFOvx?=ulNVf^U]nSTBd]L]g]B]mg<`g]=]k[ZclcOKS\Kc\c`nwvnecU:BvuCSog@?xoGWumW^U^e^m]V]g^BZrsZbsSbfSV?GqaGOV>QYow]ewoem>=f^=MOVMm^amEa`EFVOFB`^ohHXBJOWJR^VRbYahiVvbRWPR:vfiqX`:APXA@X_@AfvAavrph_gaArjqxghxwjrwnhp|6. World Blitz|Aronian, Levon|2010.11.17|D18|1-0|B +FVl\@OnfEU\UOUxg;LsdU[wSBJSL[Lm]V]f]?Mqi>@vxwv=Efo>vrv:>vuWPp`CS_WPGd^EFuvFV^MVMv>G>ohMTxqTlgplpqp|WYb12|Jorczik, Julian|2004.11.11|B45|1/2-1/2|W +FVm]V]u];L]eHPxg?Hld@OtX>@nfIQXaLFsmEUelFWahWhqh=Fwe?>vxO^mc<`en`Wne^hwvh^g]WEruEZeSZS]SDLS]:=cRFDRcQY]g^Oc]O`lcBJut=MclMOlmYatuLT]cOWmlWgpgDqxw`fvf>fofql|III EUICC|Majer,C|2007.06.15|B01|1-0|W +FVl\@Onf;LjbEU\UOUme?Msm>@xg@Ak[GWtk=Fm\CS\MDMwn@wnDLvx<`l\U\n\=Mjb;Em]BR[SEK\eLSeS?vm>EmtEDqiDCscCJ^VMFngF[gn[Fp`PXo_X_t_\b_fblfo<\]UF=UMGOVO=OcKJBKSl]o]\]SRBKRY]MYI|I Patrimonio de la Humanidad Open|Gago Padreny,I|2006.10.08|A46|0-1|B +FVm]V]u];L]eEUxg@OphL[ec?Fld[Jwp>@vxDLcl<`t_==M>jZ>Gfe;mn]Vei>EiAVknuCSA?k]|7th Kings Tournament|Ponomariov, Ruslan|2013.10.09|C42m|1/2-1/2|W +FVnfEUm];El\@O\UOUsd?[tmUdmd[dkdDTw\T]d]=RumRmvmV]f]>@xgEK\cjZBRts:Jst@?tEDESZcZM\mlJOE=?F=>FM>n\KZcRZcjKUogONnNGNlkUfkbfpbZpag_agZ[g]j\]gqigx\wMUw\U^|It Open|Luther, Thomas|2005.10.28|C07|1-0|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LuvIQqa?=wnLFtfFWftWFtfFUru@ph:=f^U^o^NV_VOVunV]n\@Ad]L]\]W^rt^LgLCLmd?>]`MVdVDVtlLTloIQ`PT\xpVUpiUEP`E`i`=;ol>^w_^V_\AIqaBR\D;K`iVfDdKkdfklfblTi`IP`_PYbZTS_gYPh`POZ_ON_^NMaYSXg_XS^>S[_W[SW_S[_W[SW_MU|GCT Blitz Paris 2016|Nakamura,Hi|2016.06.12|D37|1/2-1/2|B +FVnfEUm];L]VLVxgVgpg@Osd?qaXawiCKTEWEiE:=E`VdvfU]f^HXbZXRc\=UyxOM|76th Tata Steel Masters|Rapport, Richard|2014.01.21|C10g|1-0|W +FVphEUwp;Lld@ZE=EnfJ[wo[eon?GDEU^gXOXog^e]UedfmdTmfTdfoipZ^|GM|Gelfand, Boris|2009.07.19|E36|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLm]V]g]O^d^>^ldEMne^>t_=OuYHPYQvrvR[b[O_M_K]d]:benE?[S?N_MbZSLCLnuZrogGOunrjnejmeJm]wxIYJUG>GPGbBGPBDPWDBYaBZV\f]ltxoLT]rtlox\fZJlpxyW_rOphOFhiyxihxyhgJOfWFT_`yx`iOJX`Jj`hjlWQltQ`tu`q|Zurich Chess Challenge 2014|Aronian, Levon|2014.02.03|C89i|1-0|W +@Om]HPtX?Hld>@xgEMsmIQXOHOn^FV]VMVw\OHvxBRjZ;Ek[=FusQYwuHQ\nEKm\K\n\<`\nCKqi`Esc?=n\E>u=:=[RKRru=ucuFMuc@H\UQtcstbgmbTslMOmgPXxyX`i`Y`gqToln`hn`H?qgOQgaQt|Ultimate Blitz Challenge|So,W|2016.04.28|A07|1-0|W +EUxg@Oph@vxDTmeIQsmWInfOEwv;Lf^FOut:@vxBRld?>kcTBjbIQrs=bkVgngLVgn]dkdVeneMede=este]^V][tD[\DC\TC;@I;>IPVNGN>NPWNKW^xo^eqaedogS[KC[cCHckHCQYp`Y`g`T\`X\[CDdeDEel|17.ETCC 2009|Hautot, Stephane|2009.10.26|C41|1-0|W +FVnfEUm];LwSV^kcBJSw?[ld[RjZLFc[RKsbDLo_^gpgFWunJR[S@Ono>@xn?>nhLTwnT]d]=FhWfrt:>xoIYmwfbwhWPnubjvn>nhnPet<@IF@IFO]UJSULELIaOGZSLUaIGOh`UG`XOFn\=?IH;MruMDHOF>SK|3rd NH|Jussupow,Ar|2008.08.20|D12|0-1|B +EUme@OxgDTphHPwp?Hvx>@t_;LgVL]ld]N_mCKn^U@pUEU\UDV>=AHwgemgeVvxpvn|FIDE World Blitz 2014|Cheparinov, Ivan|2014.06.20|E60|1-0|B +DTn^HPsd?Hw\;LmeFNxn@Fvx>@jbIQ\j@ItfL]fmCKn]T]dnEUn_@vxLR\nEUme?=uvRLld@xgCKvx@\ULUvxO^]u;LsmFOmcwv>nvnenrvS\c\=>UD>FDUFNUDNFDUFNUDNF|Makedonia Palace GP|Svidler, Peter|2013.05.24|D70|1/2-1/2|B +FVl\@OnfEU\UOUjbDTxg;LwS=MulBJSLMLvx?Mme>@f^UDtfGW^W^_O=gV|71st ch-ITA 2011|Codenotti,M|2011.12.05|B41|0-1|B +FVn^@Osd?[jb[Rxg>@k[RKw\BRrsDLmeEU\cRZcjIQvx?>qi=rs=MsSMJqp^F]TFET]J:gVPV]V:?pgEeg^eu^gueg^eu^g|74th Tata Steel GMA|Gashimov, Vugar|2012.01.21|C78m|1/2-1/2|B +FVn^?TxgEMld@Om]TKwe;Ltf<`elMU^UOUvx=Fqi`YlZ>@p`V]`YUfof]fun:=xpLVZlVgwg=MjZBRkc?=rj@AlWHPYPIPW`GW`WPWgWMPpqFMqyMhnwhxwxPxyxfnxqnv2jpvsWYsIYIAIc[=eplIP|FSGM April|Fodor,T jr|2007.04.11|C24|1-0|W +FVnfEUm];LwSV^l\BJSLCLuZ@qaIYn_E`utFORZPFZRsrHOrs>;srEsrOHrsC:_gJBeu:;v[IHuvBZg_ZJ_g;>vu^Oum>:ksO^mkJ@meBR\j<`qi`Yp`YPdnMUgVO^vx^owoToxoGW`XW_VPIPnx=Xu`X`i`;ExgEOgqPXtm?>rx@GqgGPl\>F\ULUjcCKmd:>cZFnow>FZunfdmfNg]NV]LU]ugOExpF>LVEVpnPOwp>AmvVevoeopoA@n^DT]UEMxgFNweNU\U<`qi`gug;Eel=RvxCSt_RKrs?>jb:Vb[T[gcO^leSCstJRt@kc?=vxEWtkO^gaWEagT]d]^dkdDdrtd[gv[MveCKo_GOms;LsdFNngLFum:wtPXjZBJZRKReTX_f_<;dn>SxyOWmfSEgY;[ld=;qi@AYG[Knx;?GYE>Y>?>xgFPgVPV]VM=fo>@yq=>T^>;^XIQXGAIoaIPGQHQdhPIh@I@aQU]tu;?QX@Iu]|1st GRENKE Chess Classic|Adams, Michael|2013.02.16|E11g|0-1|W +EUphDTwp;Ll\U]pLCLo_IYxg@QgV=DuZ@fmOEmd?>yvGOZlE?iaCDgmDGm^MFlZ>=ZJG>ts@A_WNVJZ?IZl>Gln=@h`Y`n`HPWPGP`NP>^XI?NW@HX^>EWoHGdV?PVd|Wch U10|Bregadze, Levan|2002.11.18|A40v|0-1|B +FVldEUm]V^t_@Onf?Fsm>@_h;ExiEKi_DLwnHX_YOYnYGWo_^gugKEgoEOYnyv?GmwDF_XF?X_NEtu?F_XFNX_GF_XYOstFGX_M?olOYlmLT]T?TesELsjGEts@AsrNO_XOHjsHPmlEGsjIQX_PNloGFumY_o_AHvu>=jsFGsjN^_o^VmeGFomVOmoFVo_ON_o=>js>Fo_L>sjFEjs>PemTfwfVfaYPImUEUuUNU_fI@f_@N_DNGD_GN_DNG|19th TCh-RUS 2012|Sjugirov, Sanan|2012.04.09|B12r|1/2-1/2|W +FVl\DLuZ?TsdGWk[TK\TKD[SLSdS@Oxg;Ltk>@nfBJSM=FMWF>WMDMTM:;wnCSZc@AvxO^ce^OeWHPWiO^m]V]g]L]k]A@iQ>Gngw_G?Qa?MWP|Cardiff WLS, 8. South Wales Open|Eggleston, David J|2011.07.09|B22|0-1|W +FVl\@OsdEU\UOUphDTxg;LdU=Ume@jbOWm\FOrsEDo_L]Zu<=_VOVfXVOXO?Onf]Lk[N\t\LV\dT\e]KSuvVGbZBJZSJSdbDFsrHPbB=EB:@HvdGM]UHQd]O?:?F?qa?FrRFH]_PXaXHX_VXFV]FH]aQPRJHVf^IY^WPQxyEHpgHhaYQHJBHOgphXYaMWaAXHA?OXBHVH?THryqrVqy\dT@gVEUVe[dmdU^e_=uvuIQuv;LtfHX_nOUfm?>qa^fofUfmf>fvmfFaXQXnh<`weLVyqVeleGWry:>d\BRjbFHqQ>Vk[R[b[W_h^`W^O@?p`_hyxHFOUVnmd?HQYHPYAFfUfnfd]fe]VefV]f^]U^`UV`^VUDLUTWNxh^\TMNGhiX`iQPXQI\]MDGUDC][CDX_IH_gAQ[\QPghDMUgH@\tPHh_@?_f?@t\HFfoFHohHPgU@HUgH@\lPHltHPLTPXT\MTgnXVngT]\d]ehoVWopWTpoTdtueluw@?oplmwomfonf_n^_XphdT|6th London Classic 2014|Nakamura, Hikaru|2014.12.14|C67w|1/2-1/2|W +@OmeEUphFVwp?Tjb>@nf?>xnDLvxTKsm;Ek[BRtk=FrsR[b[IYl\YandahqhU]f]K]\TE?d^=^VOUpULU\M?NugCKgUKT[T:RsC=E|46th TCh-ITA 2014|Georgiev, Vladimir|2014.05.04|B06k|0-1|B +FVl\@OmeEU\UOUxg;LjbIQn^UFqaHPtf?Hk[>@sm@tXIQXa=F]VEVqiuE::hDKSu=:=D=S[d[T[n^jl^[l\[\N\=D\eD=e\=D\eD=|3rd Norway Chess 2015|Anand, Viswanathan|2015.06.16|C65j|1/2-1/2|B +EUxgDTph;Lm]T]g]FV]LCLwp@Ol\:;vx?F\ULUuZ=EZE@h`?=_WTbkbEZux^frsBRtk@mc:;bTOETBLBrBFVvxCS\S;SgmEOur<`cR`nRL=Km\nw\Kweo_SKLF@ABCKCpCV^r]O@]E@OEMe\MT\N_WPWFWNWTW?>CJ^fJnA@WSIQqa>^h`O`ngfngn`OS;^>;S>^xpH?Se?Feh@?ng^[hVQYgY[aV;O>Yga[;<[]gY]UYnU=M@wn=FgmYnun:=vx=Umg?=kcO^nlIQtkUmlt^ogmoixqFamg|74. Tata Steel GMA|Ivanchuk, Vassily|2012.01.22|C11|1/2-1/2|W +EUxgDTph;Lm]FNwpT]g]L]u]@FvxFL]e?Fld>@smLVelcTahqh>PleFT]T?@wn?>k[RKmeDLvxIQtkEUwvBRnw<`dZR[ZK=Kb[:rur`gpg;ErRKR[RU]ldLTd]T]g_OYvtY_tD>=DCETCSTekb=:bM@Iwe_eMVeVSV:ue^vxq>?h`vwqhwxhixpem?>Sc>^cgp`gG`aiha`hg^]mn`Pn>;BGD]e>fefgfBKDlPNf_NFogKSlqHP_XFGg_S\qiCSid\]d@wn?>k[RKvxBR[SEUmeU^d^O^e^=Fn\NruETwvTZXfGOuE:@xhW_hxL[tsJRm\RZgmZcjcCS\M=Rm^[jnvS[M\RJogGP^MP>M>?>vo:BuvJLxy>:yxLDxyBJyxjdstdUtmUfonFavrDBrJBJxsahsyJBysBJ\MJLsr:rkrLUM\U=mt=atsairkiysjhv|Mitropa Cup Men|Erdos, Viktor|2006.09.07|A40|1-0|B +@OxgCKph@tXO^d^CUutGW^dUpxp;LdnFVogW_h`T\wuENtmIQXaPXaoV^e^Hkrs:=mvkOsS=uvu?=SU=U^UNMum@GqaLFndMVd^VUmnFL^OGOovOGaXQXvdLFjZUNnmFUd]BJldG>ml>ElIELpoUdIldUl\LCZRKR\TNLTRLlovltvot\RT\T]TUDonCLTFDNneLUedJRFORZOFZbFbN]bF]gdegVenVGngUVFbVOg^G=bM=NMVOPVMPQMFQPFMPG^W_gMhNTWXgohoT^X_^o_go`|Showdown Rapid 2015|Nakamura, Hikaru|2015.11.14|E60|1/2-1/2|B +FVldEUm]V^t_@Onf?FxnDLsm>@nt;EwnO>_h>Md\MW\UWhqhLUucEOjbHPtjIYrt:;jd@HdSBJSdn`O`yi`q|TCh-ITA 2012|Genov,Peta|2012.04.30|B12|1-0|W +FVl\@OnfDLm]V]u]EUxg;JsdJ[]uU\w\=uvurvGOqi<;kcLTvt==[lMTvR;Cu=<=c\S\Rd=elveEslCLvgKUtsECsCLCgmT[d][mlmBJf^U_^VOV]V_pmdCLd\HPVhpv\]vg]fgXiaXGf]GQ]VJRVOQWaYWhYPhYOXIPXPY_PW_eo_LUWXUN_WNGWORZXWe[W^[j^]jt]dtc|FSIM May|Werner,Di|2005.05.13|B22|1-0|W +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBRtmDLdZKDl\MUus<`qi`Ymf;EvxIQwtYP\ULUgaPIaWR[b[IW^WDMZT=Fr:?:ng:@tkV\|Mitropa Cup|Bosiocic,Mari|2010.05.30|D45|0-1|B +EUm]DTld@Oxg;LphT]d]@rt:@meVde^dltbL]^WFMh`l\ru]lfi@Abk\_umT\ml\cjc@vx=O[TJTe]V]^VONtk]enfMFrt:=tTFTfTN`qi`nTSBJScemwunvpw=]U@AUGuwxwmu2wp|FSIM May|Niemi,K|2005.05.19|B33|0-1|B +FVn^@Osd?[jb[dmd>@xnO^uU=apha`wp^Mo_V^d\CKUX`X_XM\kc\Mt_Fwt:=mcZcsc=mnJ?oJwDTcdFMtsT\stMVd\lf\TV_tvYaTRmkRTkmTRmkRT|11th EICC Men|Potkin, Vladimir|2010.03.09|B46l|1/2-1/2|W +FVn^@Osd?[xgEMw\DLvx>@meIQdn[RnhMU\c?>ldRDwv;EclU^e^E?qi=uvuNfKBKjZN>kcP_xw_Nc[N_ZRKR[R:Bgm_Nm\NTogHPhnB:rs@?wo?FofOEntGOum>=tjE?m=F=j[=DphPXfn?N[lTZscZTcsTZscZT|GCT Blitz YourNextMove|Anand,V|2016.06.20|C65|1/2-1/2|B +FVm]V]u];L]^?FldEU^l@Ot_O^sm@xgFOwnCSZuLRvxR\ucHX_hX`g]DTog^P]L=>L;:;h;>fwo?;g`\m|25th ECC|Koerholz,L|2009.10.06|B01|1-0|W +EUxgDTph@OwpHPld?Hm]T]d]O^gV;LVLCLvx>@sd^dkd=RucFVcbRS]VHVtfrtVHbTSJd\H?T]?H]TH?T]?H|FIDE World Cup 2011|Svidler, Peter|2011.09.03|D73|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBRtmDLdZKBl\<`vxR[b[;JusJDqi`Y\TDSmf?>skMUfXB;ZK:rwr;BgVYnVEBKEOHOXOneO=K=^ULUkmePmU=OUE>=E=O=r:@H:=P^og^LxoSDp`IQohDJ=]HOg_OP_WPHh_GOia|4th Sinquefield Cup 2016|Topalov, Veselin|2016.08.06|C84f|1/2-1/2|W +EUxgDTph;Lm]@OwpT]g]<`]LCLl\:FrjOW^XLDwxjrvorjovjr|Vugar Gashimov Mem 2016|Harikrishna, Pendyala|2016.05.26|B48c|1/2-1/2|W +FVn^@Osd;LxgEU^UOUwSUdkd?Mvx>@m]V]d]IQtfLFSeFUl\UfofDTul<`e^=Fqi`Yxy:>^UYgwgT]f^FVph]elu@ArsGW^W?WueWgeg>?geCKypVOUgOVgUMTUgTM|6th Kings Tournament|Nisipeanu, Liviu-Dieter|2012.11.13|C47u|1/2-1/2|B +@Om]EUxgDTld;L]TBRt_O^sm^TulHPn^U^m^@ts?@k[RKUKBKtk<`nf?>qi`YwnV^gxYPiaLVxiPWi_=EaYIQya:=ldW`n`O`d]EW[SDT]d`OdcMU\UOUkV>VruWXphXOclU_a_ONh`=ebZVXogT\_^NMl\XU^_efmfUuvoMm\nmt_\tr\<@InlHPYPIHldHP=tmN`mfDLog`Eap=F_eVefeIYefFOf_EN^VOFpaBR_fA@f_@A_fA:ys:=g_=@agNUgXGOVOFOX^OW^MWNMC@hf]YasvNWvFW_FIh`]T_hCR`XTKaiRCX`CM`Xc[iqIqhqjZUgMCguCTXTZRTSKLS[|ETCC|Atlas,V|2007.11.04|B81|1-0|W +EUxgDTnf@OkcHPtk?Hwn>@vx?>m]T]f];Lsm=Ug]Het=;tnMFjJ;kpiF>ipAIJeQYpo>NefNEftEetDkcDLefopckL\IQ|68th ch-ITA|Brunello,S|2008.12.06|E17|1-0|W +EUnf@Ol\FNxgHPm]?Hsd>@\UNUweDT]T;EdZO^vxETZT^TelCKrsvn>^gvlumu^[vekde[d[phRZUVOV>VHOV>|67th ch-ITA|Garcia Palermo,C|2007.12.03|D02|0-1|B +EUxg@OnfDTsdBJme;LphU]dnFVwp<`qi`Yvx]ftf?Fnd>@wv?>ut:=kl=ed[O]h`em|I Patrimonio de la Humanidad Open|Moradiabadi, Elshan|2006.10.10|A50|1-0|B +CKph@vxEMtm;En^Q`rsFNun`VgXVLo_L]noIQXgBJxyKSkcS[dn]gpgJRe]T]n]ETofNV]SV_f_PX_MT^M=:=mf=esvGWgpHdSd[dft?>yx@HwW^hv>hWxoCpopeutbumpgmjbtW]g`]ctfdl\Tlt2ftct|GCT Blitz Paris 2016|Fressinet,L|2016.06.12|A01|1-0|W +FVl\@OnfEU\UOUjb?Mw\UK\n=XphXFmeBRxg@ulGWtXFMsm;E^WMUm^?WXfT]yw:?gmUNrvKUf]V]l\EV\]WYqaYa^O?O]aOQvVNVa=@G=EUFm^VYwvYqpgqYgpYqpgqYgp|It Open|Epishin, Vladimir|2006.04.06|B42|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQwvEUtk;EnwBJqiKDdsCKsm=e]V]d]U[vu=EagJnumngbgD=tu=Og`O=iaQY`^H?^n|20th Sigeman & Co|Leko, Peter|2012.05.11|C92p|1/2-1/2|B +@OxgDTnfHPkc?Htk>@wn;Lvx?>m]T]f]EUsb=wvGWjZ:@tkCSsmS\c\:;kdF[d[;[rs[sus=Rwt`gmg?;slIQgmRbts;smsb[smU\m\[vpwO`n^`qxqvw\fwSjZSYqpLT]UNU^UYVZRVMlcMJf\EOUMJLpxLUc;@I\fUg;sHPsjT\f\guxpuUpxO^jn^M\MUMngIHgdMOdTBJTKQYo_ONxoN\KkH@k;@I;KYaha\_on_^nw^NwoIQKTQHTKN\oh\ehoH?KT?>TDe]oh]fhpfNphNfhpfnph>?D=?H=]HI]KnwKfIHf]GO]fw\fF\GFMGCMKC@gVEUVe[dmdU^e_=uvu;LuvIQqaLFkc<`tk:=wn`nvnFWd\O`yiDLog^gngWfihGW_N=mh`f`N?@?rtHXaXQXkdmogh?Gd]om]BGPjZ`VB;W_hiVE;DEODVO^i`^o`gPWV_X_ph_hghmutuouhgLTgnudned^c[WVldCKelVMZRKRlcMLcZLK|31st ECC Open 2015|Grischuk, Alexander|2015.10.22|C67w|1-0|B +@Om]DTnfCKl\FNsdT]f]?[xg>@we@ukCKk\JCt_IQ_h@Io_GW^W?WrvEU\m@k[RKtkEMwn;LvxBJdUKBUO=Ome<`umLFgV`nV\B]k]O]mnMU^UFUwvDTnV?=V]T]v^UO^V:<[SOUSJCJrs=EphHPxp@HscIYqa<=bZEDZRH?V^Ud^_dS_ODBOK=>cs>nst?FpwnNtvNvwvF?vnSdngdUK;?Fg^UO^]O`og`Q\fBEfU|GCT Rapid Paris 2016|Carlsen,M|2016.06.09|C78|0-1|W +@OxgHPph?Hwp>@vxDTm]EU]T;JldJTtf=DsbBJd\O^f]FV]T^T\UV^g]DV]cTcucVkrskcscGWb\CS\K:;K@b\V^ph=Uru?=u]WNiaFOjbCSTKBKbZLV\VOVhiPWipV]f]W`yxGWphUEd\`n]Un`|38th Olympiad|Aronian, Levon|2008.11.13|D43l|1-0|B +FVl\@OmeEU\U=Ujb@vxRZulIQwu?=qiTBrsUjlZBfZaf]nwNcmcjsc]V]uv=>tfskfQ>vgvkbQH@HaXH?XO:>vgbMOWLVgXMPW_CSiaDTX^VE_DT\DE\e^XemE]>v]mPsmUvwxqwyqhsPo_?HUSyuhqPMS\MU\dU]d]u]qhHPXg]eh`GW`hPYhoebphY`g]bj]njbn]bh]Whgong_Wf`Yfp_`|120. NY Masters|Yudasin, Leonid|2004.10.05|B53|1/2-1/2|W +@OxgHPk[?Htk>@nfEMwnFVmeO>utGWl\PXqiIYsmBRjbX`i`Y`ga?OphOQ[SHOtlOahaQavt>Hogmc=Fc]NEyaFanePFf^W^e^>O^C:?dfaI]NENfNIGuvFPNWG\ts@HC^\G^UPaWXGPU^|70th ch-ITA|Rombaldoni,D|2010.12.04|A05|0-1|B +FVl\@Ome?[sm>@jb[mtmEU\U=Un^UMqiDTxg;LwnCKrtBRvxFaKk]S^ea`GW`u>fofkq|XXIII Open|Wang, Hao|2008.03.09|D17h|1-0|B +FVl\@OmeEU\UOUxg;Ljb@aW=EwSNW^WEWSLCLun@Aru:=kd=eutOUdR?:m\U_h_V_vxeiRD:@tuWXDViYwvIQuE`hoh_hVH@Hn>H@>VXV\Vhqxy@xvxqx2yxYVECVvxovrbZQYofA@feYaC[ryed@G[^ai^niqd[GOZROWnjWNRJLT[RysjqNUJBsrRKrbqi|Aeroflot Open|Kotanjian, Tigran|2008.02.20|B80e|0-1|W +FVl\CS\SBJnfJSwSDLSnEUme?Mxg@Fsd>@vx;Ef^GWtXU]dsW_smIQXF=FrtETm\MDulTZnu@me@AsmGWwn=Fm\\MFMk[BJtkMQlTUKbZV^gm^eneEN[SKETdJSeSNUdeQNrvEVedNPog>=xyU@mc?OcTCKTeVeSeLFf^DTvsPQZRW^e^FWdVWMktMGVDQaRK=MKCM=t_|12th ch-EUR|Zawadzka,J|2011.03.24|B43|0-1|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQuv;Lkc?=tkgpLVvf>=yuV`fn`VnfV`fn`V|7th London Classic 2015|Vachier-Lagrave, Maxime|2015.12.10|C67w|1/2-1/2|B +DTnf;Lm]EUwn@tfM[dZU\c\CSuc=Rjb[M\SOUSK:;c\UfofRmwgW^rumRgoRXZT^U\eXaqiahng;KgUNUTEKLE?hqxwMheI@?IWhowoLO|Ultimate Blitz Challenge|Nakamura,Hi|2016.04.29|D31|1-0|B +@OxgCKph@tkOYumFVnfDT[TKTh`YOgVCpxp;Ef]T]VE=Eog?>qi>fsb:>rvHQmuQHblfvwvEZv>O>un>Dk]DN]fZjl]jn]nBRe]RZ]UZbUNGNnt|FSIM June|Brustkern,J|2004.06.09|A49|0-1|B +EUxgDTnf;LwS=Dl\U\vxBJS\@OkcFNtk?M\nDFme>@smCSrt=jbA>xgBRkcTFtkFOkOEOvx=DsmUdn\F^XLEiaRjqijraYNV_WV^X^rw^oE>YQFVf^>GQI|It Open|Khamrakulov, Ibragim S|2006.04.03|C03|0-1|B +EUnfFVm];Ewn?Ml\U\xg=Fvx@OjZ>@sbV^gmDLb\MDkc?>tbFNogCSg^O^m^S\n\N^\G@AG>^fxyf>]UGME=RvFG@`nLTbk:?F>R=wOHO>=|XXIII Open|Kristjansson,St|2008.03.07|C03|0-1|B +FVl\@OnfCKjbDTm]T]f]V]xg@g]EU]WU\ngCgug;EtQHPWF=FQ?:?smKSwvFTruTKkc?@phEU\U=Uwp;Lme?=smulHdld>DrtDSdkUgpgYWg^WNnfBR^p=MqaIYxqNEpiFNiwSBvuBLumL[tuEFjb[Uf^UOc[M][RKRutFMmlT\l\<\t\]\e\O^wp^TkdRZd[M]qx@H[vTEpwEVvtVgxpgmtlmcwn]TldH@ngTMdkMe\Tcmk;@I;_I@TLewpqmg_gw\LD\Dg:@H:ZDTqxNVZcTtxptLcgLZgfHOfKOHK[ZLpwLtwntlnfltf^tl^fltfntlnwltwptLpqLl[KlZKkH@k[Zl[;@I;BljBTV^TfjlqpI@f]lj]djUpqUjqxjsxpsud<@H@\UNUwn<`vx=EtmO^rt:=g]`ndnT]n]L]f]ESog^MucRZcSMSmf=fmU]rtLUqaSBTLBLtTUMm_MNjb>=TS=E_hHPSKNWKSWNh_NGSTGNTSIQSKNGKSPXaXQX_hGPSTLFTRFWhoEDRZDtZBtwenwrp`rjnwWMBRjrwnM\RUrjnwjbU]\Vg_V`_XbrwpPXohrb]ECKhD`fpof\EUXPU]bdD=PW]EWNEFNUFEU^EF^UFEU^EF^_=D_WF>dc>?\V?;VE;=WN=>NU>FEVDKc[KBOWBf[kowV`wvUMfX`VvwkswpskpwMUXOkswpVPpgPFOFUVFTscgoV^|17th TCh-RUS Premier|Chadaev,N|2010.04.02|D16|1-0|W +DTldEUm]@OxgFNt_;LnfOY_VGOVh=Kul<]T?TjbYhqh<;k[TFsmLVgVOVf^ELneIYmgFOlnHXgmX`bZKD[SL>d\U\m\=]rt>PtdDFnlA=vnFIytP^e^I^l^]^nwOX\MXtM^tkdlk]wn]Kl\=?og`gpgK]\t?A^OBRSJCJtL;CLNYahaAaneayOUyrg_rZ_W]TWOV^ed^fOGZaN>ayUfyIG?2T?>?JRd\RZfUCL?OLEOJIyJZya\S|Champions Showdown Rapid|Topalov,V|2016.11.13|D12|1/2-1/2|B +EUxg;Lm]@l\?>enIQsdPXrt=EjbU\c\:=uZF<\T=_YHQYO@HfeE]k]=]ec]\c\LV\dVgpgXgxpNVOEQXTLCSue<>su>AegAipx`gdgGYgUYuUVHPV>PH>?HI?GIAE?|77th Tata Steel GpA|Jobava, Baadur|2015.01.21|D00o|0-1|B +EUxg@Ome;LsmFVn^?Twn>@vx?>jbBRkc<`qi`gngL]tk]gugU^m^O^g^DLrvT]k]=]bZ]^v^GOwv@Gp`HXxpLTiaIQvy>FaXQX^fGNyQ:=pgCKf^F>^v=]QI>FIA]_ghNUA=UL=ALUA=UL=A|Zurich CC Blitz 2014|Aronian, Levon|2014.01.29|C41|1/2-1/2|B +EUxgDTnf@OwS@qiBJSLELgV:t_GOnmPX_hE?ZR?PiaX`gvIYveNVuvV^etOWtn@Ih_P_n_=adULU_U>=phHQm[aX[CXHCHQHU_@k[RKtkEMwnBRvx?>me;EdZKBl\E?qi?PwvVvf=a]mCKrvENxqaQZd:>dUNU\UVFfdHXph_PwpPVvt>djIYj[@FcTNU[UFUTcYanfahqhOWvnUOf]V^]UOUl\UOt_;:u=>=ru=>nm?Fc]L]m]><_fCK]dA=u=<=dVHPf_FTpiT]VN=ENEOEh`]k`W|Zuerich Chess Challenge|Gelfand, Boris|2013.02.24|D70|1/2-1/2|B +FVnfEUm];LwSV^l\BJSLCLxn=Xvx?MsdXanh@OulFdUNULUGOf^DLULeugwu]xyA=t_M_w_]kLT=MrwkSTb:=_WSK^VOVWGFNbgM]GOHOgONUOK=MKCUTCDTUwvV^yqIQDRUNvw]URD|Mitropa Cup Men|Petrik, Tomas|2006.09.13|C18|0-1|W +EUxgDTnfHPm]@OwS@ld=DsmEWkc?=tkO^gaWEagT]d]^dkdDdusdDc[DM[SE>sc;EjZ:GphK\`f\VCpdcvrIQrBOWBZHOh`csxqVeo_sc`XQX_XOHf\ek\kckZRkcRVH?aYPYXPG@pi?H|Zuerich Chess Challenge|Gelfand, Boris|2013.03.01|E08j|1-0|W +FVn^@Osd?[jb[Rxg>@k[RKw\BRtkDLmeEU\c<`qi`gugK]vx;J^ULUwsJD[R:RbZ?>dn]kskDNru=DksNTcUOUgUTZsCRUCDHPurZKndUEDLKUdUEUrBV^e^>^LOUWOWPWBD@HDLW_xwGOl\HPLDIY\T^\wn\lnvPXTL_gphXWD@vx^eue?>qiTKnfDT]n;Lwu=l]VekrK]f]=>jZGPxq^fofe_n\@Isv_pqpO^\D^Mf^>^v^P^po^lofMWf_lo_^Wh^UoWDVWiUMi@gVEUVe[dmdU^e_=uvu;LuvIQqan\^ftfUfif>fofIlvnHXrwXawyCS\S=;jZBJSJ;kyalZne@HJ?rvPXld]dcdONv^?Ho_X_^_@?_`HA`\?=\D=ED@]TMTjb?=k[T?ulNVf^LFtk<`^U:@bl?>msEKsd?um?Grw:?mvDFw_PX_oWCF>DlcRZcZhfFMPWMVWPVMPWMDf]ZS]\SK\]KC][DK[dLDdHKSW_SUHFCLF>UE|38th Olympiad|Adams,Mi|2008.11.17|C03|0-1|B +FVl\@OsdEU\UOUxg;Lme?Fph>@dU=UwprtENuZBJgmUpxp:=Z\N\t\FMwtGOm^OW^TMTfT=ETfIQqa>Npw@Gk[G>\T>=og=UEJLEH>=gfLK]=<=f]KJ]UJKVNKSU]SRHE=;C>^DL|USA Ch 2016|Akobian, Varuzhan|2016.04.14|B01s|1-0|W +EUxg@OphFNwp;Em]?Mvx>@kcNV]VEVtk=FsdDLwv?>um@IaX=>v>DE>nE`nF`upwI@FCumkbmRbMRjc[BR[SLS\SjUCEUNE=@ISKNU=E|FSIM December|Werner,Di|2005.12.03|D04|0-1|B +FVl\@OmeEU\UOUxg;LjbIQn^UFqaHPtf?HsmBRwn>@rt[M>Vng|77th Tata Steel GpA|Vachier-Lagrave, Maxime|2015.01.25|B90e|0-1|W +FVl\@Osd?[ph[dmdEMwpIQkcBJjZ>@n^wv=;tf:JfTM\g_\kumke_VO^p^U^T]^fmfDT[TevrvJRn_;:VNRr]Hrvfv:gH]GNvsNVsS>:SsV]d]@AsvQY]UYaUMgLvVA@VX@AXaA@aX@AXVAI_NLCVWI@WP@APOA@qaCsxq:jqisyi`jZN_|Aeroflot Open|Safarli, Eltaj|2008.02.18|B31f|0-1|W +FVnfEUm];El\@OsdV]f]?[jb[dkd>@weU\e\EK\e=Uog@jbBRclRZtmGWdSTFe]V^gVLV]VDLS]LT]nf^W^|68. Ch|Genocchio, Daniele|2008.12.09|B57|1-0|B +FVn^@Osd?[xg>@gV?>VeO^wn[?e_^OvxEUm];L_YOYnYFtm:>rvIQvfFfofWEl\Pa\ULUce>^wtEFewHPtTFNTDaWDCWfmf^fw_@HCGNG_fBRk[R[b[GCfVHGVMCSMTSC[SGNSKNExoCLTLELogPXg`LK`WKSWVS\p`|Showdown Blitz 2015|Nakamura, Hikaru|2015.11.15|C67|0-1|W +FVn^@OsdEU^UOUxgUdkdV^gV=Uo_^gVg?Mwn>@vx;Lm]LRgXIQd\R\ngURX^aYPJ`XJ\wxVkx`\UXQHAgpUYyxk]xwYS|FIDE World Rapid 2014|Sokolov, Ivan|2014.06.16|C45|1-0|W +EUm]DTld@OxgFNtX;LnfIQXO=Owe?MsmT]d]>@rtNV]VLVgVMVkcU]f^V_tl?=vxOXph@jbBRnf<`qi`Ywu:;ml@Aum;\M>FRZPY`YgmM\m\Z\FV\L^fof_fpwVYLNYywpyvpgHPNVIHVNHQNVPXV>vwgpwvpgfngpQY|5th Final Masters|Anand, Viswanathan|2012.09.26|B52k|1/2-1/2|W +@Om]HPld?HtXCKsm@nfEMweIQXOHOqaOHaYPXm^FNel;E^hGWf^W_hwDTueT]g]ETenMUwm:@meDLqi;Evx?>\cE?dn?PnhIQwvMUld=KulNgmV]d]KDh^O^m^=>^dDhf^P_xyNPuxLTrwT]wghadS]elDPOSM_NDEOgE>@Iyqa_qygw|Narciso Yepes Memorial|Claros Egea, Christian|2005|C54h|1-0|W +FVn^@Osd?[jb[Rxg>@k[RKw\BRrsDLmeEU\c;JvxR[b[J[tXKD^U[UdULUXOHOga@Aug@wv<;vn?MuIYno>OuMN\om?FML@jZO^XaIQsmPXahFVuc@AcS^mgmGWSTETo_X_f_V^hoTNphU]d]N]o]H]xp]krskOm\CKwu@vx;LkcGWtbhaFPDGNGaYPatD:<[FHV_VI@Fa<\pw\SaX@?YQ|FIDE World Blitz 2014|Bartel, Mateusz|2014.06.19|B20|0-1|B +FVl\@Onf;LjbEU\UOUme?Fk[FOtkV^kO=Oe]OPxn<`qi`nunGWph>@cC=>\UNUdUOUwSU[SZ:;CD;Kxn[evwekZcF=DSwxRcjcKLlu=Rqa?@wvOEsm=Dm^CKtXFXgXcTKTgmV^e^W_k[LVmcC@sddUO=n_LFUdM_h_F=jtc\xuWgkl;FxnCKrtFMZddUNUm]UL]ELEkc=FmeFMem@sm=DmcBRjZ;Jg]JT]SDKcTKTtfTLS]L^]S:Jue^LS]LU]SUcftEUrbc\e\U\n^O^w\?=tfFVbrJLkcH?vnL\c\@sd@gq=EaYPAo_AGtm@AunV_h_GQrv:>ngQWgoCKxyL=wx=GpiGMop?@qgM^v^WhphNi^]E@]TFTjb?=k[TFulLVgVDVf^VM^UMUenUWlWNWngOUgU=UmgFOg]O]d]U]tf]UwuUuru@k[RKw\DLmeEU\ctmKDusBJbZDMsjM[^ULUdU[mgmOUcU:NZREOrs@SLCLvxT\wgO>c\:;utGOV`MF\ULUsd>Mkb@wv;Ejb[dmdETtXIQXa<`k[TZum`gpgZK\cLTd\HXah=Fru:=vfK2r]MF]V`NVHNGHVGNVHNG|Champions Showdown 60m|Nakamura,Hi|2016.11.10|C65|1/2-1/2|W +EUm]DTld@Oxg=Knf<`wnFNvx;Lqi`Yjb:=smKDwvBJk[T\f^U^gXYPn\IQX^O^m^L]\e]crsctst?Fug>@tuJRewCK[RKRbZ=uvuDVu]?CU\mYahaXaop@?>SDhS\ULmchvcT?F\cL>TN>Z|FIDE World Cup 2013|Vachier-Lagrave, Maxime|2013.08.24|D11h|1/2-1/2|W +FVn^;LxgGWm]W^gV@Osd?[wS>@vxLFtX[dkd@AV`EMog<`g`DLSn=RXmOEd\?wnwRKm_LTrsKL]ULDuvFP_h:>`XIQvfQXfXE?wnCKnYD=X=>=svPFha=EY`|20th Sigeman & Co|Hector,J|2012.05.16|C29|0-1|B +DTl\HPph?HwpFNnfEU\UNUxnU]f]T]me;Lsm@Ovx>@qiIYm\?>tX;rseT\ROXwu]eiaXQc[TZueZdscdSRL;K|FIDE Candidates 2016|Nakamura, Hikaru|2016.03.11|A30a|1/2-1/2|B +FVnfEUm]V^l\DLsd@Ouc;JxiJD\ULUi_?Mwn>@tmHX_iIQvt:;tsCSixclEZkcDSsrSblkZSaXQXmt;@jZ?>f\OEo_EV_VLU\bUNxy=]t_]Zb\ZLrBCS\m<:B:>:m^T\nfNU_hGWVOFOwx:>xv>NfBIQB;@IvxU^e^N^ld^n;BnkhoS[xvLUvFU@d[k[BD[coxPXqiIPyqH?D=ck=>PW>PW><|FSGM February|Paschall, William M|2006.02.10|E11|1/2-1/2|B +@OxgDTl\;Lm]T]g]FNnf=DwnBJvxCKkc@rt:;umEMwu?=mdOEum=<]cYaxp;KtuFPd]KL]dLKd]EOmlKL]mOYmRDBf`NVR[BFcRLTRcahqhYhcTMT[vhYpy<=u=F=lm=XmqY_`f_NfWN]vsP?WQHQqp?NpXQXs;@H;VHPjZJRVUPYg_N_UT]nTfYa\Tnhyx_ixpi_po_iovi_fg|Makedonia Palace GP|Morozevich, Alexander|2013.05.29|A34|0-1|B +FVn^?TxgEMw\@OsdDLjb>@\j?>me;EvxE?dZ?PZTMTxy=ml]B\j=]lkSRjcCScdLTkcT\e\S\c;B;dR;kqi\dRTdlT<@I@xnDLd\U\m\OUjb@rtCS\n@vxd\U\f\MN\f@A]UNPruWE[SFWfW?WmfPMn`WX`EMESJCJUMKSZSJSu]XVwtVNtuNVqi>NumN>mlVNlDE=fh=O]u>=MENFuMOrxqFGD@sm;EnhEKjZBRiaIQaYOIog?>g^U^w\K\m\IO\VFMvx?kc=Ud\U=\TD;vR;V]VO`om=eme^eRd?=wu=Uc[F=um=:me:Ze]ZjdvjkhnHXYPGP_h`fh_U]_f]^nd^VvuNUu`kp`pUp|AAI GM|Sasikiran,K|2011.06.23|B12|1-0|W +EUm]DTnf;Lwn@Oxg@gW?=`gHPWXMFXQDLgnPXQYGWne=?YgFGrsLKphahqh@HxwKQwnCKsyX`gpQypy?AyxAQxpHOpxOHnuGYxvQLutHOtsYqvwOXsjLOwvqpvdpodEC^PGyw:;^lGYd\FWm^Wfof?wvwYiwnipne;klpkpryMqywIYwWHPWGENGONF]UYa\TaiOgqVgipjiIF=^XjZXG|LIII TCh-ESP CECLUB Gp2|Inglan Bielsa,F|2009.09.16|B62|0-1|B +EUme@OxgDTph;Lt_U]n^]f_fOUfmHPwp?Hsd>@vxUDrsDNwvN]g]T]d^@tk@sdmEGPEW|Reykjavik Open|Cheparinov,I|2012.03.11|D85|0-1|B +EUxgDTph;Lm]T]g]FV]LCLwpFn]An>E>s[`oyqo`qyiq[s`oypqy2syoyBS>ES]GO]gYAh`A>`X>npyno|FSIM April|Jakab, Attila|2005.04.07|D91|1-0|B +@OxgDTkcHPl\?Htk>@phEU\U=Uwp;Lme?=sm@sdOYwnYhqh@kc<`tk:=ulO^wu@A\n=>qi`Yg]YPneFV]gVYgm^oxo>fm\feueYWon?>nmM[kdW_\fPele>f|38th Olympiad|Berg,E|2008.11.20|C10|1-0|W +EUxg@OphDTwpHPl\U]k[T[jb[bme;LvxFVsb?FtQO`ut`QtQF?Qt?FtQF?QmIYwsBJml?TgmGWlZ=DmcTbZbYacRahqhL=bZ>G\TDTZ\=NRCT\CMGOM\:BrRV^e^W^p^AYsKYR\RBDRcOV^PDCo_VOKCLMd^MD^dVNbj\jd^OG>FDL^XjcXILUI?UV?PVWPaWXagXQg]QI]WclW]I@]NlWN?@H|TCh-ITA 2012|Brunello,S|2012.04.28|E60|0-1|B +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBRtmDLvxKD[S?>wv;EnwRZphDKmfKRfmE?qi?PSLCLwpIQe]V]g]PVdsRKmf=>pg>vypeS[^vt^ftlpxlTia@HxoT\aX\lovlTvmTXg^LT^lHOfgONgfNMfgMNgfNMfgX`gG`hGOMDO_hbmtDM_aT\tkbhlZSZa\ZS\dSektMUdcU]ckhxtme\mlxhlmhimlidlm\cmvcUvmdemt]ftlebk[b:ld:GaXGPp`OXryLZyYZuQXRZXFZbYSbjSKPGFO:bOrbgovgcKcucvoGPohPXrkcl^VlcktXPtkcNh_CSkrS[rkN\kr\Nrk[ckrIQrkPGkrGFrkFE|42nd TCh-ITA Masters|Shirov,A|2010.04.30|D43|1-0|W +@OxgHPm]?Hld>@tXDTnfEM]TMTsm;LulIQXaOYwn@smBRgXIQX^O`unGW^TFVTZ=D\TUf>Vh`btfW?>jZ>EghtXqaXthgELW]LT]Wtm\@T[@G[dG@dl@\lu\euve\V>\S>VS\vu\emte\ulW]lk]Wkd\@d[@G[TG@TL@\LE\GtmG\E>|World Cup|Alekseev, Evgeny|2009.11.29|A63|1/2-1/2|W +FVl\@OnfEU\UOUjb?Mxg>@ulDTsdUOkc;LtkCKweuUCFaWFNog|HZ Open|Leenhouts,K|2007.08.06|B42|0-1|B +FVl\@OnfDTjb;Lsd?FdU>@phEMwpOU\UL;xnGWvx;EmeCKo_^WeW_wEGkVMVunWNUNOwrwGNp^>?w?@?ne?F^INMeMFMIWMUW`U]xoKSonT\c\]\`N\dNEBJE@vxUNtf:=uZGWrtV^e^W^gm`nwvngmg^gpwN@tkd\T]f]F?\TBReSOESLDLc[CJrt=FVvGOtu<>mgJ\gm\SmgQ_kd_DlkPXktIQqaS\phFHaXQXgq@Gq`>AtfNVogKT[TLNusV^`oHIskIio`N`|41st TCh-ITA|Olszewski, Michal|2009.05.01|D45s|1-0|B +FVn^@Osd?[xgEMw\[dmd;EtfEK\eKZut@fXIQXaHXahZTogOYmwY_tmTNwfNHd\FOewOPk[QY[SLE\TENSKBKTKDKmMYaho?=MV=mru:=um=mvumufuNjV;@I;CX`CKHNxyaiph_pKBjsg_sl_WPOWNl^yxONBTIPTKNKoKpvwn^gudgndnvgxyGOK=PWndWNd^NW^OgmOUW^=XmgUd^eXOgmdUe^U_^gyxgf_Uf^Ud^gOXm\dS\VSMVeM\g^\m^WXfeVxwVewneV|Champions Showdown Blitz|Nakamura,Hi|2016.11.14|C65|1/2-1/2|W +EUxg<`gV`Wm]FNl\?M\UNUsdMV]V@Fn^U^u=>=p`W`yxIYqi`gxH=>tXFWdUWHXOA@UD>ED:HNrt;Lvm@:mfBJw\:@\UEDU^g^f^@po_pn^gN]gh]WhgnfgpDEiaENpofiopiekcempimjtxL]xX]nipn_pg_PXYPVOVNVYAjqaYVOg_qa_gaig`icA@unGOd\LBSZU\sd@AgaZ>?>wvA@ru:FEFGFK\FEagELqaLUaYSM\M[Mxp@GpxM[xpGFYQHPnJFGJB[FBDRZDlUEgqECqgZbkbFbh`bM_WC[WNGFpi[_lLFNL>NU>SUNS>NU>SUNS>|4th Ruy Lopez Masters|Sargissian, Gabriel|2010.06.17|D17d|1/2-1/2|B +EUxgDTph;Lm]T]g]FV]LCLwp?Tl\@Fsd@ul:VT>VT>FqaHPrJEDT]FE]fEFf]D\]=F>=RW_JB_hoh>nR=@H=Unvxq\UpUvwqpwWUGWG|World Cup|Dominguez Perez, Leinier|2009.11.26|D87m|1/2-1/2|W +FVl\@OsdEU\UOUxg;Ln^U[meL]g]V]dnDLnhIYwnYahYHPY_?Mjb[Jk[JD_iFst?=UW=@WU|Madrid ESP, Sity Ch 2005|Roa Alonso, Santiago|2005.03.03|B33|1/2-1/2|B +FVl\@OnfHPsd?Hm]V]f]EUxg>@wnumUdkdLRm_NWnSM_X_DLSZH?ZuCKgVIYug:NQ_R\n\|Reykjavik Open|Jones, Gawain C. B.|2012.03.10|B40e|1/2-1/2|B +@Om]HPsdEUt_?HdS;Jnf>@xgvx>MrtCSbsBRjZ=KZSLSgVM\Ve?OL|6. London CC Elite Blitz 2014|Kramnik, Vladimir|2014.12.08|D02|0-1|W +FVnfEUm];L]VLVsm@OxgVgmg?Ml\U\w\=Fvx>@kc@uZ=Dmc?=gmwsDGt_;S[RL[ZX`gaL]Z]H]nf]Os[>Lf^W^p^L^[^NElj@HjnQYe]KSneS[^fOahaM]fFEFe]HP]ePOe]OW]eWVefVM|11th Aeroflot Open A|Korobov, Anton|2012.02.10|A58q|1-0|B +FVnfEUm];LwSV^l\BJSLCLxn@Osd?Mtm>@ul?>dZO`nh>N\TMFZdFadn=XmR:Bn_N>vt`OtsIYuwXQhnQIqiaXp`Ya_pOEo_^glI@IwgXOywE?n_OXRvX_p_?N_NFslC;_o;AoqPGlcHPcZGNh_NEvt`YqmA;tdF>dc;cZc>;clEc[>;oh;>ho>:bc:;ohCbc>;jZCVO>F[SJSZSFNOGNFGOFNOGNFG@F>@ILScS>fHVfV]VW_IHENSCU]CD]eTLemDEmu2EuYuaYPYXP_gLDNEVNEDNFuZ|5th Final Masters|Carlsen,M|2012.09.24|C19|1-0|W +FVnfEUm];El\@O\UOUsdUdkd?Mul>@weIQxgDT]UEKf^T\enGWtfW^gmon>DjZDJZRJTqaEUulmu2luUunuIHulHOldOVd\VM\STERJMDJBDCB:4C:SLEVLUVgUNPXaXQXNW|Aeroflot Open|Hou, Yifan|2008.02.14|C07h|1/2-1/2|W +EUxgDTnf@Om]HPwn?Hvx>@]T=DjbBRtmDTmdwuBJtsEGf^UNkrQ?\m=E[SJSsSLBSs?blZEepwGEZJecmcEuJB;BsuNcuebTec`oxp>=wn=MrkMKcKTKn\o^\GPXGYXahaKfYP^TkdTNaYN_pwBKdmfmgmKTPG_YGYT]wnCSYPDTm^T\nmS[^O]TO^T]^h]ThWV^PG\dmlTLG@LSlcST@GTKGU^fWfKTU\T]fl]T\@TM@IMTIPTMPYMTY`TM`iMTipTMpyMTygTMgnMTnwTMweMTe^TM^WMVWEVME>MT>GTMG\MT\JTKJ@n^@sm;Ln^FNwvCKld@ulTKtfOYphNiwv=EgXYOsmi`XgBRrsEFfKDKk[R[b[`gmg?=vtO>[SL]g]=]scHPnwFNck>Mts:@vx<`dnOYld[Te]TKueGWSLCL]VW^e^`gpgMVnhY_^L=N]PYrvK]d]>=vVYiwx=ML^MQxpQPpPIPyxiEVFEMFNM[NP[k^N@IPX|6. World Blitz|Aronian, Levon|2010.11.18|C49|0-1|W +EUxg<`m]FNl\`gpgU\sdDLnfCSjZ=Kg_@OwpS[ds;Evx:@sdLTdnT]\]KJ]k@^MDMS\L]t_CS\ewvGOVeMUqiU\vu:=xy\GumIY`uHX_q>Fev=>vl]Nl[N?[UF^uY^vrv>vqxGNmuvuYu?Puc@HcSWaSCHQUfOWCBN^BGP_GOQYogagOG|VIII Open|Aloma Vidal,R|2006.06.12|E32|0-1|B +FVl\@OmeEU\UOUxg;LjbIQn^UFqaHPsm<`wnBRm\?HtfRZk[ZcucCKvx>@bZ=Ewt?=ZRKRfTRZcu`gngEeue=e\keErZ:;k\L]guQYZJFLtrE=uZL[JBHOph]nxpnd\R[eTf;kBDd^R\knpw^d\KV^ZcnkcG@HG\HArB|4th Zurich CC Classical|Nakamura, Hikaru|2015.02.14|B90e|0-1|W +EUm]DTld@OxgFNtX;LnfIQXa=KulOYsm@vwBRjZNV]VLVya?>gVMVneKOcRVhayE`|11. Aeroflot Open A|Bartel, Mateusz|2012.02.13|D11|1-0|B +EUxgDTph;Lm]T]g]FV]LCLwp=Rsm@Ovx@rt=Ewu?=t@tkMF>ZFMZ>MF>Z|30th ECC Open 2014|Svidler, Peter|2014.09.16|A16|1/2-1/2|B +FVn^@Osd?[xgEMw\DLvx>@me;EdnMU^ULU\c?>tXIQXa=Ke]V^gmK=og^fmsEKueHXahOYsd[ded@kV@wn?>k[RKmeDLvxEUtXvO=@H=]H@]elne=@H=XH?XT?@TX@?XT?@TX|Vugar Gashimov Mem 2015|Mamedov, Rauf|2015.04.25|C91d|1/2-1/2|B +@Om]HPtX?HldDTnfT]XOHOd]>@xgEMsd;Lwn=RvxumRZcr;EdjETj[GW[L=En\FOmnPXrl>Po_<>_VOVl]V]L]>V]g:>gV>V\jW_tdT^dL^TLKPenYewYQwSKMEHQYHGYQ_fM=S>UMTc|52nd It|Vocaturo, Daniele|2009.12.30|A11|1-0|B +EUxgDTnf@OwS@jZFVf^U]dsO>qa>DaYDNYPIPga?>tmCKph=DvwBJwpKSsbDLrv:NtQH@bsSZsmZclcM?mg?QyQ@HvyN>nmO@QALOgX>FyIH?IaOKXI?HmXFNI?H?A@?@XQ|FSGM March|Ilincic,Z|2007.03.08|E11|0-1|B +EUm]DTld@OxgFNtXIQXaT]d];LaO=Onf@vx:@vxDT]d=Dsm?=ulT\o_GOrvKEmgFTxyCS^VS[d]TFneE?e^:J_WNGvt[bkcGYldF[drYgwgDEt\OV]xEFrwJM\[R[xTbjw\@AgwMuTFjr2qiuwyqwyqhrvh`=]\Gv^`YHPYQ^fFX]a|New York State-ch|Agaian,Sarkis|2002.09.01|B90|1-0|W +FVn^@Osd?[jb[Rme>@tmDLxnEUnh?>wnIQvx;EutRDk[E?hY?IYh=wuU]dsI?o_V_m_D_t_?P_oO`n`N`uvPVolQYvwYahWailo`W^WGOohipxpKSsmS\e\]ew_LT[TECTLCLpoLKhfKkrx=>_^@Gf_>AxsAq_qkmohmXho:>sCG@qhXQCE>;EeVeheQqogqign;k|Capo d'Orso|Locci,D|2007.05.23|C75|1-0|W +@OxgHPkc?HtkDTl\>@nf;Lwn?>meFVjbEU\UOUul=Fvx=>suWic[HVugVh|6. London CC Elite Blitz 2014|Adams, Michael|2014.12.08|A30|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;E\ULUZdBJ^UEKgmKUm^@jbO^xnFOsd?>vxCKTKBKtf<`ul`ndn=ErtIQnh^hqhE`eW`Yh`Yaphai`X|59. NY Masters|Tate, Emory|2003.06.03|B22|0-1|W +FVl\@OnfEU\UOUjb;Lmert<;wnHXgmX`mcOW^TMTcTEMulN<[SLFe]V]k]CKTeFPvxW_f_U_e_P_]f_pxpfwofFtuCUngMNon|68th ch-ITA|Piscopo,P|2008.12.03|B80|0-1|B +FVnfEUm]V^l\DLsd@wOHOVEMEZu@AugENd\:=rwOW\UNUgU=US\UEwWGO\NEDWTDFNUL=TUg=L<>F>xoAHoh>@xg?>smFMph<`wpUOul=Eqi`NgXNWh`WPX^O^m^@AlnENnl:J^mGW`WPWp^>?l\NO^WOWm^LF\lJLlnWGnuLKkdKcdRGUvnFLRdMbulb[dk[FkdUGysGgnmcsrsCKlZLRdVF=Z]gG]kRLVdLFsxFPo_?@x`GWmnWY^o=FkcFacGaonoYi|Champions Showdown Blitz|Anand,V|2016.11.14|B43|1/2-1/2|B +@Om]HPphDT]T=RsdRTwp?Hn^>@xnEMvx;LqiTRtmRJn_jZCKrtJCdUOU^ULVl\BJunKSZSJS\T\SvsEC>?SLstL^PXaXOXCEXO^e?GEUGNUSNMSKMDKJtvJBDKBJKTJZOXZ\TU\QYePYahaXaPeaOePUMPWOXW^vr>:rv:JMFJBF=BRX_RBvu^lumlW=>WP>?P^_XBImkg`XOogOH`WkKIH?HWVK[^e[ZVUHOe\OWU]W_]T_gTUgf\cZaUVaYVOf_cGYQOHQKGj_Wj@KCHAWO@ICHI@OP@jHCj@Ck@IPOI@k;AI;@ld=Dsm?=kcEWtkO^gaWEagT]d]^dkdDdrtd[gv[MveCKmg;LumGOe_FNwuLFml:JePXel>PlPIPvedluwHGwvlnvwnlwvNV]VOVf^U^srjrvr^eruV^phMTu`lo`EG?xyemE=?H=EHQE=QH=EHOE=OV=>V]>A]eArenrknvkdog|FIDE World Cup 2013|Yu, Yangyi|2013.08.14|E11i|1-0|W +FVn^@Osd?[xg>@gV?>VeO^wn[?d^>^vx;LevL]ne^>ld]NenDTvlEUm]T]l]N]d]^wv^vuv=Kvd?[dcK]jb[Mtf]VphU]f_VF_MFMcC:>ru]eumHPCg>=g^MJbZGW^FJ@wp?>xgV^g]DT]lEU\U=UlfUYme;Le^O^ue^OqiAvNPGrvSdNOG>F[dnvnenON>ENFE=FnA>nlKSUC<;CL>flm=D[MDLM;fi;VS[xpibVH\dmnLUpobBHOU\n^\SOFBjofjkfeIQF[k[^VSL|Ultimate Blitz Challenge|Kasparov,G|2016.04.28|B31|1/2-1/2|W +FVl\@OmeEU\UOUxg;LjbIQnfHXsd?HgmsmIQXa?TulT]^WPWrtKUng]Km\U_ah_P\RKRlZRKwvQYqiN@xyNi|Corus C|Carlsson,P|2008.01.19|B90|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxEMmeBR[S;EdZKBl\DLrsETZdIQqiTNtfBTfTNTwv=kn:]n>NnhNVuMENM]QYiaXahWNW^WVWox?H]a<=SLCLdnWXn]O`g`=]aY]`YX`XwnXPngPMfVTc\TM]gL]\VF\txqcTLUtwFDTcU\wrDGHPGBrb\cbcBZ|FIDE GP Tashkent|Kasimdzhanov, Rustam|2012.12.03|C88g|1/2-1/2|W +FVl\@OnfEU\UOUjb?Mxg>@ul=FmeGWphUOwp@AsdDTvx;Lkc@jbTKsd;L\UNUwn<`vx=Etm?>rt:=dZU]ZKBKqi`ipi]expEWmdenunOUnlWYtv=MgxMPpyPxyxYio_UflqiqxqfwvwGOqh@GwyGPh`LFyvIY`gPGvuFWuUGPUS>fgofNogNMbZYag`MuSKue|TCh-SUI 2010|Istratescu,A|2010.06.27|D27|1-0|W +FVn^@OxgO^me^OgV;LVLELwnaX>VW_;BhaV>qiRjXPGPOG>?aXjpXOPX_WpkOF?;uMkHM=;=F=H?=EX`i`Y`WP?[PM|7th Kings Tournament|Wang, Hao|2013.10.15|C42m|0-1|W +FVl\@Okc;Ltk?Tnf>@jbBRxgV^m]^g]Tgpwp=FyxLVu]?>sdEMTMFM]MDMvtFpC:;xXVeuePekOFCMC;CXU|FSIM June|Werner, Dimo|2004.06.12|B27|0-1|W +@Ol\DTsd;Ln^FNxgEU\UNU^VO^wS?FuZ>@d^U^Z^dejr]UrJeW>?W^JM^vHPqaOHvRBJRZHOZbOFbZM;ZE;>EBPXaX>PBFP^UM?gpigoF>@H>FHPF>PX>@XQ|74th Tata Steel GMA|Aronian, Levon|2012.01.24|A35i|1-0|B +EUxgDTnfHPm]@O]T?Hjb>@sdFNtm;Lg]OE]c=FdZ?=wSEOvxke>vuv<>vtO^t_D_g_HQ_aQXai>ne\Ve]>N]UVE[dIYaZBJSJCJZ[|Biel ACCENTUS GM|Morozevich, Alexander|2011.07.23|E04j|0-1|W +FVn^@OxgO^me^OgV;LVLELwnl\U=wv=aoh>f|52nd It|Landa,K|2010.01.06|C42|1-0|W +FVl\@OnfHPsd?HxgEMm]=Fwn>@k[V]f]MU\TvwW]sI@?`QFOne?FuvFETLEAIeAQyx;CeJC;|Millionaire TB A 2015|McShane, Luke J|2015.10.11|B40|1-0|B +FVl\;LnfHPsd?Hxg@Fjb>@k[EMtk@g]=adnN`og`EuvaOvdL]n]:|53. Masters|Gashimov, Vugar|2011.01.02|E42|1/2-1/2|W +FVl\@Osd?[nf>@xnDLjb[Rk[RDtk?>nhEU\ULUwn;LvxHPrtIYdZYahyaiphU]o_OU_VDV[SLFngVHucCKk]H]f]@ZRCSRKBKtbTbrbKSbR=;wsHPf^VenfU^c\S\s;?;m^;sxqO^p^skR:@Hf]NO]OHO^e\eqpkl:@wv=Rc\U\tkRZgX_D|19th TCh-RUS 2012|Romanov,E|2012.04.14|A29|0-1|B +DTxg;Ln^@OsdHPdU?HUOHOwS>@vxEMldOHqi@weHPun=Krs?=gVT]f]LVhVGOVhFMvxd\KDwvM[vuELnlDGlkCKjb[MstU\c\:=uvLgpgG?kcNV]VMVxp?TvnVMn>=>bZ>FtuMVcSV]ST]Tg_OWpgHOelFDlcIQu=TF=UQYcjFTjcDIUmYagpahohIFcuFfugfbgLPX_XOXLEX`pqbgE@^U=UmcTKvxBRjZIQgmkHvrbr>nrse]su]UH]MDKS|FIDE World Blitz 2014|Gundavaa, Bayarsaikhan|2014.06.19|C41|1-0|B +FVldEUm]V^t_@Onf?Fsm>@xn;EqiDLulEKp`O>vt>MnhXO?OgVWQxpMGVGQGYIHXIy>ftmfgyq@?eng_nYGMYnM^ml?HneOQqQHQpqQPqAX`A@PG|71st ch-ITA 2011|Rombaldoni,D|2011.12.07|B12|1-0|W +FVl\@OnfEU\UOUsd;Lullc\ecle\lcMbrb\JZRLMbZW_c\_gs[J\[\MU\U=UqaIYxqPXpg^gqhUWaX>^tv^`hiWXf^`pZjvwUWwp`hf^WE]OhoxuE`pw`xwn=m|Trophee CCAS GpA|Vachier Lagrave,M|2008.10.27|B80|1-0|W +EUxgDTsd@OnfBJme;LphFVwp?Fvx>@wvU]ds=Dsm<`qi`Yh`YPga]fof:=aPIPvwOUunCSm^UKjZSZ`XL[iaT\e\D\n\K\rZ\KZRK\RZ\KZr[lrJKUJBGWXOHOxoOW^XFXaXU[on?GBG@GtmGNwyV^yQ=@nuNUpwUTQI@@jZIQXOEOgmnfD=aCEq`|8. Tal Mem Blitz|Mamedyarov, Shakhriyar|2013.06.12|A57|1-0|B +@Om]DTld=KxgHPph?Hwp>@vxEMwvXOHOqiMU^VOXc]g^l[^Wo_XQ]WPW[U:RvuQ?jZ>@tkw_aXesUN_gN`nlXYgh`NtwHPlo=usluwow>Hf^?=le=EkdIQqiPXxqYPeSEDwO@IheT\ef\cjcNcO=DTSncN=;X`iaN\n\T\;BKSBCPLCL\LqhQYd[HN[FL\hoIPfb\^FM^ZbcZjohN]c[]Wh_jZ|Mitropa Cup|Gustafsson,J|2009.05.17|D45|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtkEUwvO`vw`Owv;EnwKDphU]dsLTldCKwiBR[S]dkdE?i<:vrv?N]fDMvt\dtlM[mc<;xwNDwnDUf];=ne[be\bklnGOnN@GNLQY]KUKLKdlKL=]\T]ZTK|Corus B|Navara,D|2009.01.20|C92|1-0|W +FVl\@OmeEU\U=Usd?[tm[dkdDTxgV^e^O^nf>@wn;Lvx?=mv@k[RKw\BRtkDLmeEU\c<`qi`gugK]vx;J^ULUwsJD[R:RbZDNdS]kskNTgf=Fe]TclcV^fXRJrtJLklF[XfLltl?>lD>Ffd[dDd@?SMHPd@xgOYwnGW[SL=vxYOmc=GulPXrvX`gm@AxyBRog`hqiW_f_OY_WY_nuc]WEyx>VlkH@uc?>wv@?]nDLSLCLndRZcZGXk[LT[KX^e^EZKM?HdZaOMOHOZKVNKUOVUD>;DNVNvr;kbZkKZRKJxwNVwnV]nm]\ml\]rb]\bj\]jZT\Zr]TldTSrsSTsu|19th Moratalaz Open|Coleto Calderon,J|2006.09.20|B40|0-1|B +FVl\@OnfEU\UOUjb?Mw\UK\nDTme;Lxg>@kcGWsd=OtkngM;m\@AulOQruK=vxW`d]=]nfVgpg`gmd]=^mg`dTIQwv?WTBWUmg`gfgUege=eB:AIv>PW>AIP:>WG>^GW^>WG>^|Corus B|Hou, Yifan|2009.01.28|B42f|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb@vxK@ucBJrtGdURLUD=DuUG?U^HXtk|HZ Open|Stange,W|2007.08.05|E42|0-1|B +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDLdn]gpgJDg_V_t_DN_f=avx?Mnh>@umM_f_a_m_N_wu?=e]=EumBRrsR[b[:b[SLSsSbrhwEMScMLcgrw|82. NY Masters|Pruess, David|2003.11.18|B33|1-0|B +FVl\@OsdEU\UOUn^U[me;Ljb[JwnJTxg<`dU`gngL]rsDLk[TcUfctstBRtsR[b[:bgnbjn`?[vw=O`gOFqa>@yi?:wxjmuw:jsrmowsjrsromr:F?:C[Txq]gigmef\egpg?=qh=OC;T?hpOa\VaXpwXtwntlnwluwpumpwmuwpGOV`um`omXpwXS;SLSwn@Gne?T|FSGM March|Potapov,P|2007.03.10|B33|1-0|W +FVl\@Osd?[nf>@xnEU\UOUucUdkd[MnhDTwn;Lvx:;cle]T]dh@G\mYahX?QmgNFrwTLYa]ewgemghFH|FIDE GP Paris|Gelfand, Boris|2013.09.30|B30s|1-0|W +@Ol\FVnf;LjbHPk[?HtkEMme>@xg?>sm?m]?OjlEV\TVgpgPYxq:?wxHASKB;TMDMlDNV]e?Ge\MU\U;>UC>ZD<|52nd It|Safarli,E|2010.01.03|B40|0-1|B +FVmeEUph;LwpGWxg@OvxywO`wvNclm>vmvcNvmMKmtNEqa`otlKP]nCSlmPMe]<[SLFm\FPSK<;\MDMKB;:vxW_wt_gnwNUdDESf^gpwpUNbZSckb=@weEKxnKUvxIQwvDLjb[MdUOUndUOel<`ue`YeiMDtfYPlPGPru=MphPXo_:>_XQXfoX`iwDRv>?>k[RKweOUdUMUeP>^bZBJ[SJSZSK]SLCLo]^]u]U]xp]EPlEUpxLTlnT\n`UTxw\d`uTWwx@Iu]Wg]aIPa\PX\]XQ]aQPa\gfxpPO\LOVLDVUDHdlHEU\EZ\eZJemJRmnRjfm|53rd Masters|Short,N|2010.12.30|C09|1-0|W +FVn^@Osd?[xgEMw\;Evx[dmdETgm@wvOEmw=atfIQwhHPum@Io_V_f_EVvw:>rvNEhnTN_haXmuV`wgQYn]XTxyN]d]T]^VI@VMDMqi`VgfELew]Kkc>Nw\NO\U?>l\OWULKLu]LK\TKLTMGOhVOVfV>VvVWGVN@I]VLtyqGWNFIQVHQXiaXaHP|KM FIDE GP 2015|Jakovenko, Dmitry|2015.05.22|C65j|0-1|W +FVl\@Osd?[nf>@xnEU\UOUnh[Fw\UK\cDTme;Ljb@Af^L]cjFXvxXtrt]U|6. LCC Super Rapidplay Open 2014|Nakamura, Hikaru|2014.12.07|B30|0-1|W +FVnfEUm];LwSV^l\BJSLCLxnIYul@OkcYaqiJRtb?bsbRZcZ>@vx=FbsU\smOUl^F[mg[kn_Ud^L:Z_UkSLSdSwt2L>f>\e>=|FSIM June|Galyas, Miklos|2005.06.04|C18|0-1|W +HPxg?HphFVmeEUwp@Fsm>@vxIQn^;LldBRkcGuckcS\A=]T;L\U=UtlcbvnbcyrGNrJNEJZIYqacsog^gpgHPf^W^g^U]ljsymvBRvo][Z[R[jmED^V[cVNyrohD@wnGWvxZdFExy>NdSO^SMDMwtNPLDESDH^oyxoixyioyxoi|4th NH Chess Tournament|Van Wely, Loek|2010.08.12|B85|1/2-1/2|W +FVl\@OnfEU\UOUjb?Mw\UK\n=XphXFmeBRsd>@d^RZxg;LvxLR^MDMf^RcrsMUtfU]fmcmumKEwtFMmlCKlDMDtDGOgm:;k[KSst?>n`EK`=mg|Millionaire Chess Op 2015|Sheng, Joshua|2015.10.09|B42|1-0|B +FVl\@OnfEU\UOUjb?Mw\UK\n=XphXFme>@sm;Lultk@AxgEinwFEwiEiyxGWvtiYtsBRuvYGf^W^v^KExvGUl\U\c\>F^aIQh`A@ai?_`XQXgX_om^opvwCKiYL]k]V]XgMbg]ET^XHP|4. Young Stars of the World|Sjugirov, Sanan|2006.05.10|B42|1-0|B +FVl\@OmeEU\UOUxg;Lsd<`nf=Ejb>vnHPbZFWdvCKipMTvo?OysWM\l>GohMWhoWMoxPXaXOWxoWXpyMWl\GYswYqg_Whnvhy_Xyowoqx|FSGM March|Boros,De|2007.03.12|B67|1-0|W +DTn^;Lxg@OsdHPwS?Hvx>@^VO`SLCLwvGOVO`Om]EU]T=DqiVL==qV^Tvf=uxqG@fg@gVEUVe[dmdU^e_=uvuIQuv;Lqa?=wnLF_YOYnY@xyVPph?>ne=Eo_O`ug`fwvEigo:=mgMTtmTKonIQk[PFl\LT[SKDmf]fruDRvwRdnfFWfoW]^ViNga=EapGOpfOV_WNGe^dRop@ApiEM^UGEipV^w_R=qa>?_^]Wf`=D`VE=aY=Xh`Wf^fXfVPMPYPDVUCV]uw?OCwo>fW@_MBJS\CS\c?>ugG\VGNVLCLvm:;sc;Sd\SRjbW_iaIY\TX`f_NUmfRSysA;cSJSsc;:ph:Z_WZ]WOUVOG]=c[=efnegbZSZ[ZgGZ:VU:@GW@XUNnfWgf^goXYogYQNEQIE=IHgh^_hdaY=>YQ>?HDdTD<|8. Tal Mem Blitz|Andreikin, Dmitry|2013.06.12|B45|0-1|W +@Om]DTnfCKxg@vxEU\UOUun;EtX[Fn^HP^aFXgXEOd^@HahU[^MCUe\=E\UNUjb[Lrt:=MWEWtLO^X^U^wu=EhdWUqi?=bZIYk[HI[SUXLDXODE=EdLEML^MN^eNM]UO_e]_]u]IHo_YaxoHOp`ahohOWhgGOiaM=UMWNg`=E]uOW`XNGaYPYXWYaWVE=uy=AVUaiULA@ewDTphCKwpmeFLumN]v>?>rv]gpg>vmvL]guHPdZIYk]O]ZdYadn]On_U]vwOXwiE>_p>LxwahqhKSpvC@gVEUk[RKm]U^tf=Fwn?=vxDT[TKTn\@sdDT]c^eleU]f]T]XOFOd^OFwnBRvxRZcm;Ljb@sdDLm]EU\ULUxi;Li_FNvxCKwvrt>Mkc=FjbLR_etrDLrRLKpUNUdUF=RBK;UF@IFPGPBHIAHP>PeP=FPYAH]U;[TNH@f^M>YP@A^VFIPIAIUM>MVM[CNXIPvVPOVNOWxp<@NfCkME@=fgWPXG|GCT Blitz YourNextMove|Vachier Lagrave,M|2016.06.19|A04|0-1|W +DTxg;Ln^@OsdFNwS=DvxBJSLDLwvEMjZCKkc@umLDdnKSn_NV_nOEnhHPl\S\c\?;kdE?hw?NwfN]d]T]fUCU\U;cvu:@sd=DgV;Lo_@gVEUk[RKm]U^tfDLw\;Evx=Ff_F=wvEV_Vnf>V\n?FqaWEphIQl\LT[SGOaYE>um:=m=F=ry>EyaEWa_=DnuWNunNWnuWI_`VX`aXVa`VFunFE`aDMayMVyrE=rjIWjrWI|Corus B|Motylev, Alexander|2009.01.19|C82k|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBR[SEMmeRZtf;ErsETutIQqiFdf@Af^HX[dB:vw:>xyVPwvF^v^>^p^P_yqOV|Corus B|Werle,J|2009.01.24|C88|1-0|W +EUm]rtKRmgOYnmRmgm>?\UL[es[Um\M=_WYhwvNWvVW_se?>VXU[ew]etu[jue=ewejt\V>=e\=u|YGM playoff|Vachier-Lagrave, Maxime|2010.07.29|D00|1-0|B +EUxgDTph;Lm]@Owp=K]TKTvxFVjbV^k[TKgm?Fl\^fofKfxyU\m^f]u]L]^OFOtk]lkOHOrjlfwO>FOgfpyp@w\[dkdO^vx;LmeLRuv^MgVR\V\M\e\feL^emELh`GFmoFNia>F`hIQh`AIaYLUonUXqx^LnNFNxoL>`WXW_WNJWUJbp`bjU=jlof>STLSL=rsOW^TMTlTCKTlV^st^glLELtLU_pg_ewe=eLdeMmtNUf^W^dfU\f^>=^\Muvnuyia;C|Corus B|Vallejo Pons, Francisco|2009.01.25|B66l|1-0|B +FVn^@Osd?[xnDLm]O^]V=FtfEUVM^Mnh>@we;EvxEVwv<`og`Njb[dkdVeleCKbZ:=utLTZR?>RKBKrsFDf_DLtkMWh^=ekKLKsKT\xoIQvt>:Kk:b_meUtvWMmQM^g^UYQ_bdvuYa_Vdbu]aYVMbrqiYRklRj]m\dljrjmjNj^VdlMb@Ip`jUiaGOVOHOohUNh_NEaYEN`XOX_XNG|Reykjavik Open|Sokolov, Ivan|2012.03.12|C60r|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBJdZKBl\;LtfOY\TY_f_V_vxMTZTBT[T<`rs:;gm`nunL]nu=Xs[XTmc]cucCSe]TKcd?>]UJR[]IYwsKOog>=dTOMst;C]eS[ec=:qa:JT]JK^VM=tu[bcbK[]eRZUMDMVMCEbd[KelK;lZEMut=aZ^;=d@sd;EmeEK\c=EjZKUtXIQXOUOwu?>ZR:=gmLpxpELogMTcZLNZ\N\m\T]ut=ErsBJk[OUdUEUtl>N\mDLm\GWsc@GpwHXnf]BwnGOltNFtwW_f^UEckB]klE=nuFEun=?\m?=mc]BldONwsNOcTBT[TONs[NOdc=;[KE=KC;@uZ:DH|KM FIDE GP 2015|Grischuk, Alexander|2015.05.20|D53d|0-1|B +FVl\@OmeEU\UOUxg;LjbGOn^UKtf;BFL|8th Tal Memorial|Gelfand, Boris|2013.06.14|B90r|0-1|W +FVn^@Osd?[jb[RxgEMw\RdmdIQgm@vxETenCKk[ZclcNEc[TNdSLFn`GW^WFWbZELSdN]dU=a`W]Wue:ZrZLZ[SWfUfa]eb?:ws:Rb[MU[F]^svU\og^eFN@IfWZlWFR:NV:>v^eE^fEmqalsfvsev^>?^`?O`HIHFUH@UO@GOUmtxqtbVOG>UD>EOLE=LK=@gVEUVe<`wn`nun[dmdU^eV;EV\IQvxEKwu=F\KBKd\?=tmOEjZETkc=Emf:=uEFEZRGWRKDKph@Ic[TZnY=?YuEuru?GuMZkM]GD\TKS]UDGf]k\U=HXxwW_h_X_wnIPqiPX=>XW>AWXldQYA>XW>@_gnwW_ia^fof|Zuerich Chess Challenge Blitz|Anand, Viswanathan|2013.02.22|C67|1-0|W +FVl\@OmeEU\U=Ujb@`gVdvu;LweHPqaIYgUdVUgEMg^MT^VLVfTVele?=ul@kc?=tkNPlnLRsmFOkOPOvgUdnv=ert:=msdsvRsdtld^c[eu[T^XgvOPltIQqaX^vguURDUED_PNg]NUTLCLtLJRwt=>]WUV_`EmWQ@?o_VkQWHPW]kb`gbFL<>@m]=RxnEU^UOUtmV]dULUjb[mumRmvm;LruuvCKpU=Uj=>vx@?xw>VwG?>GIVYjG|New York State-ch|Townsend,William T|2002.09.02|C60|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQwvEUtk;EnwKDqiBJdsJRsmDMldCKph=Dga@ogEUtXDLunU^g^?>xg;Evt=FnfIQXaE?w\?PywFwuONEMNjfTFNMNjNphNjgmjNT[CK[\NMmwMDwfP?fUD=\L:;qa?Nk[=?LEBJuw;=ECKSUF@IFL=GE>?tkJREG?>LR|Gibraltar Masters|Ivanchuk, Vassily|2011.02.02|C69c|0-1|W +FVldEUm]V^t_@Onf?Fd\@cC=>\UNUdUOUwSU[SZ:;CD;ZvxMFVNG?wtZ>\];Cog>Pg^W^tw?wrwPNio[L|2nd Sinquefield Cup 2014|Vachier-Lagrave, Maxime|2014.08.28|B12u|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDe]EU]VO^l\;E\UEVUL=OtkCSkVDVgVOVo_V;LD;CZT^T[TCDrtNtDNMDBHP|9th EICC|Aveskulov, Valeriy|2008.04.23|C96b|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tfruBR[SLSnS>@H>FlpxypqyxqlFGHPGHPOEGOVGFV]FvRZHIS[IE]\v^\c^[cb[kbkECkdCBdcBCcdCBdc|GCT Rapid Paris 2016|Giri,A|2016.06.09|C80|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@w\DLk[RDm]BR]VR[tX[dVOHOXf:ZueOW^VEUVM=MvxMe\e?=fX=UXODRwv@sdCKgVph>FwukOxoOXqaXQog?>uvF^go^Vog>FvnPXaXQXULV^LUXOem^`f^OVnpHO^WOWmeV]pqWXgpXPpw]fwpIYqaf]Ug`ahaFveuvfuefveuvFumPWgYFIY>Iamn]V>EWOESa]pgOWn^]m^amegnebaIBRIiVhiIW^IEh_SL^VEUVNUebjng_Vecjk|13th EICC|Radulski, Julian|2012.03.23|E06|1/2-1/2|W +FVl\@OsdEU\UOUxg;Ln^U[meL]g]V]dsDTwn?Fvx>@sm=Djb[Lo_GWuc@AphHPng:;clDEgpENwvNGmcT\e\@gVEUVe[dmdU^e_=uvuIQqi?=uv;L_n@mc:jc>?me?>em>?uw?>wu|Aeroflot Open|Bindrich, Falko|2008.02.17|D11t|1/2-1/2|B +EUme@OxgDTphHPwp?Hvx>@t_OY_VGOVd;Ln^U]dmFVgvHAo_V_h_OW^V@me;Evx?>smBJqiE?gq?PmcTKq`DLtXMUut=M`OHOXfU]fQOW^WFwv:>vF>FieLTd\UE]UE`UMFVcm`nedVNMENMmgnNdlNEl^MuruEuxquEjZ@?qxK=^l?>l^=F^l>=gmIYmg=DxqDKgmKBmgF=ga=RogRvaWEmlsvoWFohqyYaFUB;sxaipimnUOhox@;BO^nwyqoh|Biel ACCENTUS GM|Shirov, Alexei|2011.07.20|C24|1-0|B +EUxg<`nf;Eqi`Yl\FVm]V^p`YPgmIY`XU\ia?[sd@Fm\>@jb[dkdDTbZFUuc=D\mDMtbUfofMhvuhfwn?=]UT\m\forj:@weDTld;LvxT]VLCLd]=apha]ul@vx?>tT>N[SJSZSHXSLCLmuXau`Y`haGOwtUFts@GahGPTlFUst:Jl\JKxqUF\lFUljPWj:KC:CETREURBUYqxPG>;GPBJPG;CGPCDYSJ:SY:>PG>=YU=AGPAaOWh_POaIUSxqSRqhRSha|27th ECC|Eljanov, Pavel|2011.10.01|B12l|0-1|W +EUm]DTld@Oxg;Lnf<`qi`gugFNph?Mwp>@vxNVgu?>d\V]\U]ftfLFue=EsdFWfXMVXOVOd^O]rtCKk[:<[TKTtlWM^MEMxqHPpg<;qp;[wt>;l\BR\[R[tlMKe^KOg`T\lm[cjc\cm]O]^]ckUMks2ME;=]OsCpqCD`NGNON|3rd Sinquefield Cup 2015|Anand, Viswanathan|2015.08.26|D43s|1/2-1/2|W +@Om]DT]UCSogFNn^T\jZ=RtmS[w\?TmXTxsmRKunxTZRKDvt>@XOHOmcEMg_NV_W@Aue?@ei;EywE?ts@ucUOcl?>w\V^o_N[SL;xn;En]N>vxETsdM?bZOUkbUdbT?Tmd=UlnBJwuJSnS>=xoCKZRIQRJ=M]cTf|VI World Blitz|Andreikin,D|2010.11.16|B43|1-0|W +DTl\@OxgHPsd?HphEU\UOUwp;Lvx>@uZUKZaFVme=agaL]jZ:;ZRKEag?>g]V]dSBJSM>=piGWipEVM<=@wnBRsdkH@HulEOsk>DwsDNme=ESd?BTGPTf>EfoPOoBE@tkBR[SLFne`WeWFWuc@VLCLSe?>vx=MsmO^e^U^mcMPcTf\_f^_;@Iha`ivhiwrwP`;B^nBGnpxyph|Champions Showdown 60m|Topalov,V|2016.11.10|D37|1-0|B +EUxg@Om]DTld;L]TBRt_O^sm^TmcT^jZGOgm^Mn^U^m\FV_fF\NfmvnFNnmBTucNOruA>mMOXcCLFCET@qi;EsmEKp`wnTMmw=D_h:MhY?>Y_>VyxM\clD=kc\MlmIQvw@Iruwp>Oc[TL[RK\n\U\bSD;tuIHm]LT]M;:u]VXpy:xsE`i`O`]mTRBS>?tXU]XO=ROX]dk[RS[TSTxg;Lvx<`qi`Yp`YPrsTUXf:=unUjgVLVfT?@nVCKT[jlwuIYstlc[dGOV_cUog@Idr=EumA>xpEFtDPephYahoFnoxnvxo>nmnvnoxnvxoUj|Open A|Colpe,H|2005.10.08|C53|1-0|W +FVn^@Osd?[jb[Rxg>@k[RKw\DLmeEU\ctkKDdsU^e^NclcLT[SE?sm=Em\ESgV:=ul?NbZSJru=ulu>=ul|FIDE World Cup 2011|Svidler, Peter|2011.09.04|C78|1/2-1/2|B +FVm]V]u];L]eEUxg@OjbHPtXIQXa?Hsd>@vtnf:;CDO^we;ktk^dktW^e^U^g]L]f]dntmn]hM]SDT>Emv?@sdDL_hox>NmwMwm>:xoLCoxCJnJ:JxoK=ox=OxoM>lT>DTlDNmsJKlmN=ml=LlmLFmlFmw>NwmKBvnM@tXDTnfT]XOHOd];LsdEUwnFNvxCKuZ@dUNUw\U\l\LR\lDTme=KtmRcru:=l\cmumKLvxCS\lLUwtGOf^UNmu?GbZBJgmGEZSJSmwEBwf=:fUNGlnBjqaGNaYOWUdjR^WNWd^M?^TRjT^WNtDjBDB:ButIQph?[xp[?^mNWtLBEm^E=LKS[KSWESVEen`e]VW]k^O@AOE?MWGkdEOM?`P|TCh-SUI 2011|Olivier,JC|2011.10.23|B48|0-1|B +EUxgDTphHPld?Hm]T]d]@Owp;LvxO^nf>@gm^OmgGDEU^gXOXog^e]UedfmdTmfTdfm|GM|Gelfand, Boris|2009.07.19|E36|1/2-1/2|B +FVl\@OmeEU\UOUxg;LjbIQnfHXwn?Hgm@n^EMxnDTvx;L]ULVo_V\kc\Ksd<`tk:ia>DrsR[b[EOon=EpiE=n\IYwvO`i`Y`^VMV_V=E\^FNUMDSdu?Fd]O]u]A@vxFVsm=Frt:nf>Mwu?=srGOkdE?rs?NdkpiMGipGMuv>EpiMGbTOWTKDtvt=;f^GXipW^e^HQtuELKB;=gVLdV`QHBfIYqaY`aXN]mw=Eum]gpgEmwm`gmgd[gmHd^V@HsedmeEHAE=AI=DI@D;[?;CmfCU@Iof?WUCI@C;@I;DI@D=@I=FI@FOWsxosjogjcOP@APQA@XPcUg_UEQyJRy:@H:RHPRKPYVNEUKDUX_^XP^UPeULe\LE\UDMUCE>S[NFC<>G@ZuKDphBJjZ:;neCSZSJSmcS[d\U\e\;:r:?:ug:=tXMFwtL]c]=]\NDVt<]=<=F=g:GN:=@GXOVvxpv^og^npiHO=EG?EkcneC[eg[\>E\]EL]\LM\]ML]\LM|40th TCh-GRE 2012|Kamsky, Gata|2012.07.04|D11h|1/2-1/2|W +EUm]DTld@Oxg;Lnf<`qi`Y]TFVp`YPk[?Ftk>@smO^wS^mgmGWunFayqV^vtLVo_^gmgVgngW`g`=FSeFftl?_`E:=EC_oqofolcogelgnlPnuPlugTLU]CS]dS\gGkdG\c\aOdOHOlW=u\TutTMtuMFutWEOWF=W_LD|68th ch-ITA|Rombaldoni,D|2008.12.11|D43|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLm]V]g]O^d^>^ldEUne^>uYHPYQ=FtXF?Qa;ErvGOv>?>XOEOaO=O_KD_Q=OphEiwv:?QfCKewiEwp@A[SLSpUDMvnMbnjS[]g?>fQBRgX>vxqvFX^OWQmbtmu[cucF^U^W^cKRZK=^>=OA@aYZbYQ>?OVtkqxE>V;>Gjkbk;k?Qk;Q?;V?>VO>^og^WOL@Hg_Wexoe\LgGUgf\^|Corus C|Negi,P|2008.01.27|C89|1-0|W +@Om]EUxgDTnfHP]T?Hl\>@sdU\u=?=w\;ETLCLvxEK\nLTtm@sm[SL=e]V^gV=Gm\@AvtKUnYi`Y`W`l^UO^CGXywO^o_`gqaMV\V^MCLX^Vg^hwvh^gV?oaY>?YQoktk?okrMSQHAHvxHAueSMeco?ckMWL^FbrsWMVPIPkq|GCT Blitz Paris 2016|Fressinet,L|2016.06.11|B43|0-1|B +FVnfEMm];Exg@OsdDLweHPvx?Hf^V]g]>@qi?>wvET]cTeueOYp`YOt_IYogOI_M=MW?U_aipiM_f_Eitfi`qi?@]U`gyxAivmO`RT:;ml=Mf]M_rv^fof_qle`V]VqVT]V]e];k]eiqxhqme\gnvnmndnknjZ@?\enjh`jbem?F`HbZmeZ[H@GW@PJRPLFELORZOWZbWwbjwr[ZedZbd[bfrjEMjmf^[c^amuMVutaIc\VMtuIAuxAa\Sa]xPMUPL|66. ch-ITA|Vocaturo, Daniele|2006.12.03|C18|1/2-1/2|B +EUxgDTl\U]k[T[jbFNtk;LuZ@bl?=weE>vxGOwv>GewFW\TKRkdCKwSWFdRLRlfHXrZ:;qiIYvtRLZJG>S\>G\SG>SLFL]UNUfWX`i`Y`gq>Eq`@?TKEWKB;:tLW`LO?FOQ=?og`@k[RKw\DLmeBRrsEU\cR[b[;JvxJ[tXKD^U[UdULUXOHOga@Aug@gVEUVe[dmdU^e_=uvu;LqiIQtmCKut]V>VuE?GEGPGtmW_rbCLbeLZe=Z>=@ldEMjZBJZSJSr:C:sbDLwv;En^FVbl=Dk[?>gmEKmcKZue:CqiCFsu@HUcd]xpIYiaTVut]Bt\VM\_GW_\BT\tF^tu^]gCHQc@|3. Norway Blitz 2015|Topalov, Veselin|2015.06.15|A05|0-1|B +FVl\@OmeEU\UOUxg;Lsd<`nf=Ewn>og`gpgLVxoVeonetrt>NneNQtyQPyqPxg_HP^XIQXgxhe^PX_WqmhimeX`V`>GeUia|52nd It|Jobava, Baadur|2010.01.04|B65e|1/2-1/2|W +EUo_HPxg?Hme;Le]@Onf>@wnagGOvu>FkcKRtmM^mv=eT^W`fR=ngCKTZWewxe^vo=DrvFGiaLFZkNVd\V]fUFU\UOWm[BRvtDE[mGFxv^gpgM^op^mpmEUypHOk\]evF>FtvOavFaF\KU]K\F[mo]opoIY\kemku[TowT]jb@Gc[R[b[GNwnYa|FIDE World Cup 2013|Vachier-Lagrave, Maxime|2013.08.25|A81|1-0|B +EUxg@OphFNwp?Mvx>@me;EsmDLl\?>kc=KtkBRulNVnfV^e^U^gXMVX^VklkLT^OEOms=ZKEutu=upwNiTt:=klumlsiNK\|Pan American Ch U10|Luna, Jose Manuel|2002.05.25|A48c|0-1|B +FVn^@Osd;LxgIQwS?Mvx>@me?>dnLFe]FP]VPVnhVgugDLSeMVt_EM_VMVe\=Fqi=ueHPWh@Hru=eueYahnNjeMO>ME>OEMO>ME>O|6. LCC Super Rapidplay Open 2014|Giri, Anish|2014.12.07|C47|1/2-1/2|B +DTl\@OxgEU\UOUsd;LnfBJw\UK\cT\clHPvx?Hkc>@l^JRc\K\m]FV^UV]f]\KULCLtXGOXfKUdU=UuZ@xg;Lvx=Ega:=o_V_h_Nitm?>rvi`neEFehFNqi`Ykc@IxyOEaWNOWf=@k[RKw\DLmeEU\cBRrs=Mvx<`^ULUqi`Yp`YP`XV^gaKDo_^gagMhxyhiyxihxyPYun?>|Mitropa Cup m|Lenic,L|2008.05.28|C78|1-0|W +DTxg;Ln^@OsdEMm]T]g]FV]gIQw\?Ftf>@unLR\U@nfEMweDTxgCK]TMUTK=KucKRcbRKsm;Lvx:;k[vf>NfgOFhM|6. LCC Super Rapidplay Open 2014|Mortazavi, Ali|2014.12.06|A07|0-1|B +@Om]EUxgDTldT]d];Lsd@mdwfNV]UL]f`]crscTUMTZkrZdrdDE`OHOqaIYbZ>NZSJSd[\duUNU^UPs[sdlstS[g^[cxq@H^Wcktklt2kt@rsIQk[BJvx:;tm<`jZJR[RLRd^FLmdCKwv=EulL]g]V]dRKRsS;:vs?>\T:JTMDMSCENCDJ:qi`ipiNisC:;lc|YGM|Negi,P|2010.07.21|B23|0-1|B +FVl\@OnfEU\UOUjb?Mw\UK\n>@me=XphXPsmDTqaIQaYPNxg;LgaMFh`FayaNFaq@tX:;JBU]sm;kwtENm\knpgN\t\nkjZIQXOFOZROXBD]eRJ=D\DX=DL=KLKkKJBGWB:2?:r:@G:rV^guGOxwHXrZKSh`OV`WVWZJSswvQYvmX`JQWXQNX_N>skmvkj>=jk=UYaU=_V|4th Ruy Lopez Masters|Cramling, Pia|2010.06.15|D85s|1/2-1/2|B +FVnfEUm];Lxg<`]VLVsm@OqiVgmg`Ng]?MweNE]WEWeW=FugHPWe>@smU^e^=DmcTFwvNVgXFXtXGW^U@AuYLFXFDFruV^YnUNFNo_>=phPFfTFUu]UOTD=EcTEDTND@xgEMmeDLjbBR\j;EvxIQwv?>tfTfvfCSe]=DqiE?]US[dnLUjUOUuU=b[R[gv:;kcMU^U=UmtPFuUFUf^GW^\Ud\d[dtf;?du?@wxWOvw@IudYHtsPXxyENntOPjb=EtcHWmtWFdjGWj[W_sr_gpgNig^iwywU^cmPNm\QHwxaiRZJRxyX`[jFUZlEGyqGWtmNPmv:?jtHOtnOalmPO\VRZnxONmn?@qyaOV\IH\m@AmwOayqNOwmOPmwA?nm`hwhahohWwxi?A|71st ch-ITA 2011|Bruno,Fabi|2011.11.30|C19|1-0|W +FVn^@Osd?[ph>@wpDLm]EMxn;Evx?>jb[Rk[RDqiE?xq?Po_V]n]MU^VOE[SLT]cU]d^=FbZ:;tbCKc]FuUP?bk=DULD=ru@A_WIQWOHOVOFnpg=>M>;>uE>fg`QY`YfhEG?NG?N?OGhHLQ|Wch U10|Thavandiran, Shiyam|2002.11.17|C60k|0-1|B +FVnfEUm];Ewn@OxgV^gm?Ml\DLkc=FjZLTsdT]f]>@mwU\c\?=wfE?fUOUdUFNtX=>XaNQahMhoh>=vxQMul@n_NEjZBR`XO>ia>MucMG_UKUcU=@vxIQXgO^\U^XgXQXU^EU^e@\U?>m\EK\fM_vx_fofOUuvUdkdFZR=ESJE@wvOEsbNVbl?>kc]flfE?fUGOgaFMp^?tv=>nV;VvVNXaX>VXQHQmQ?>QXVNg_NPxpGHXaHVUO@G_V>VOEVnpgPNaXnj[Sjbg_NMEVGNXQM=og=@h`W`g`@>_^brVLrx^]x`]d>:d[`xQ_NE_;E<;Vxs[dsye]yid[ia\TKT[Tay]UT\>F\]tsVLFEd[:ALVE>VLAa]T>E[mskLVEG^UKUm\=F\VOVTELEuUGNn\ELxPNGPLCLUVG>oTAIV^_gTFIF^_Fvtlvr\G>FGYgo_orZoGFNGD:JYnJKDBZ^ne^_ls_oelKSBINMIHSVHPMDlZVn|Vugar Gashimov Mem 2014|Mamedyarov, Shakriyar|2014.04.29|D11t|1-0|W +FVl\@Osd?[nf[dkdCKxnIYm]EM]VMVu=>=jZ@k[RKw\DLmeBRrsEU\cRZcjIQvxwvE?^ULUvV?PVn=Euw>@t_O>uc>DwsDN_tIQgmLRc[RL[c=EblCKtbEUOHmRK;RD;:DVHVUVFNVT>FTDFOD\NV\LOWLTGOqi:jh`Y`i`WNTLNG_VOV`XjRg^Rj^VjnV]npLTGN]^p`^g`xe]xvg_vw_fwvfmv^me^vTRvuefuvfmv^me^vRTvue\uv\SNMTLMULPvsSJU]P@]VXPVO@=n_O>we>MTMC;ZTET]TQHf^;BelBT_eT\^VA>g_HQywLTtsclml\lsl:;ldCkUR;CwuGOd\OV_Vkl\UlnU]EN]\nVMECD\cVfcjDljslkstfnRJNGJLHQumkm|FIDE World Blitz 2014|Polgar, Judit|2014.06.20|C02|1-0|B +EUxgDTphHPwp?Hl\U]vx;Lnf@Of]T]me>@wvBRgVLVvVOEVS:BjZCKk[R[smEVun=DS[<`mgDM[kMNqi`gpgNWg^WikKV\K[\M^piEZREDRJBJrJDtxqHOJLtX[KIYo_XRKJR=pi@Hng?AgU=;JK;BLMFMKC|2nd Norway Chess 2014|Grischuk, Alexander|2014.06.03|A62|0-1|B +FVnfEUm]V^l\DLsd@OucBJog?Mg^U^\TMDxi>@phCKTKDKwpLT]Tip:=lnTBd^O^ng>FkcIQtk=mrt^Xg:m=t<=<:<@I@t\BRbZSM\TFOfmR[m[=Ee]CKTt?@mwOEwhETtfLFumTeleGW^WFWhW?Wkc=ae]MU\TCKmd:?vtKTdTWofo?oumomtmV]phaXmlXflkfnTlnVlm]ekbNWyt@ItTWPTtVMbkDTmdMKkrBRtvRZrkT\ktZcjcU]d\KRvNRrtmrkmvemvuPYNnkt|Zurich Chess Challenge 2014|Carlsen, Magnus|2014.02.02|C65j|1-0|B +FVl\@OmeEU\UOUxg;Lsd?FphUKwp>@vx?>tfF?rt<`d^L]f]V]umDLwv`NjbNU^T?TtTKETtEVm_VgpgUg_gBRg_=K_m>Vt\:>k[R[b[>=vrLT[TVT\]TtmtK]rs]UtD=>DCUYnfYnCE@?EM?@s;nuxpuZMVZLf^@?V>L>;>?>|FSIMA Feb|Boros, Denes|2003.02.05|B70|0-1|W +FVn^@Osd?[meEUtm;L^UOUd^[FxgGW^d@sdEU\ULUe]V^gVIQXa^fof;LVLCLue?>aOFOphOXduQYwp=FrtFCB:BRBOagoPXBRX`pyHIR=aQf^U^nfFHop`hqaQYpmM[udENd^W^y^NW^WYWmnWenl|FSIM May|Katsuhara,O|2005.05.09|B50|1-0|W +FVl\@OnfEU\UOUjb?Mw\UK\nDTme;Lxg>@smGWulvxKUph@AwvUOnwV^gaMVapVklkLVe]T]f]VGo_ELpfGMm\OUfULU\fFGc[IQrtCKwn>=td=Evt?=bZUCZRM>RJC:d<>MnSE]d<]MS>G>fWMO<=>=k]=?]E:LtLOLEL?WxoWGL:AI:^IA^nGU[SUTopTUpoUTogTYgfYTf^TF^gFEnVEugpulpiAI_WloV^owiawSWOIA^PS[aiHOPQA@QP@?PO?>OL>GLCGPCLPXLUXOU=OP=@PO@AOPA@PO@U[RULOXLtXPt\Rm\NPXNFXPF^POh`mo^LOHLEHOEMOGMUGOU=OG=eGOehowiawJ`XOHhVH@V>@H>FH@FN@HNQH@QP@AP>AH>VH@aYJbVU@?U=?G=EG?YPbFE<|II Ruy Lopez Masters|Hou Yifan|2008.04.05|B42|0-1|B +FVld;Lm]@OtXIQXO=OnfEMxgBJweHPsm?H]UL;qa;EaYETelf^W^g^O_ogDLd\LU\UT\aWH?ru?Tph_XvnT]um=NME<=^UNFWFOFU\=E\eFXeWXF`XEMXQMQml;BjbV^g^QNYQNVWgV^nu^flnFMnf]fulMPlcPNclNPlcPNclNP|Ch Madrid (final)|Almagro Llamas, Pablo|2006.03.17|B11|1/2-1/2|W +FVnfEUm];LwSV^um=Xo_XPkc@Qtb?bsbQWSwBJldLFblCKvtDTxn>@yxJRmvPQqiRZvoZcjcrkIQ[UFUgU>nkbQY`_nf_gfgU:@I:gPXgGYaGNXhb[HX]UX`UMh_[S_XSJ`iNiXRJCRUCDUTDETSENS>NO>POFPXFNX@NV@AV_A=iNIHMEai_W=?W`?:NF|25. ECC|Stupak, Kirill|2009.10.07|C16|0-1|W +@OxgDTld;Lm]FNnfCKsm@tkEUrt:=d\U\m\D;unO`gV`V]V=Ees?=n`HP`_F?\M?HM^L[^MEMVMHktu[U_hkHumH?wu?MhaUd|6. World Blitz|Kramnik, Vladimir|2010.11.17|A11|1-0|B +@Ol\CKmeFNn^@xgDTwnEU\UNU^VO`e];Lvx`QsdQW]TU]d^WfwtLV_VC^m]=]g]:=tdfp]cp_n\^U\SUcjc=UrBKTdf_PVNUuxoGNonusS\skneP_edkqBDqYfhHPdk?GDLYVhdIY\SGWLDYadlaiS>WYlmVUmqUX>LXp|8. Tal Mem Blitz|Kramnik, Vladimir|2013.06.12|A04|1-0|B +FVn^?TxgEMw\@OsdDLjbTK\j;Evx=Fm]IQwvE?qiHXdZ?PZKBK]VMVtfX`i`<`fKA@k[`gugPagiapxyp_igOE|6. World Blitz|Mamedov, Rauf|2010.11.18|C54|1-0|B +FVn^@Osd?[jb[Rxg>@wnEMmeDLvx?>k[RDe];E]VMVtf=Fn\CS\jBRgaE?fTF=ug<`gh?NjN`Nru=@wnGWdUNUmd=MvxMPphFOk[:=[SLBgVP>e]BSdRCKRvDTrsSbsKT]f]OV]V>Vv[V^ng|3. NH|Ljubojevic, Ljubomir|2008.08.23|B80|1/2-1/2|W +FVnfEUm];Ewn@Oxg?Ml\V]u]U\]\>@vx=FsmBJ\aOUm\FagaMFaWFOwuEKWhK\n\UK\n@hw^gpgGWsd:>ueW_f^U^d^MFrv`Wwm@Ae\FEld?G^T>vyvE=vy=>m^GFyxQ`g`Y`\w>Y|Gibtelecom Masters|Bellin,R|2007.01.29|C16|1-0|W +@OxgDTldEUm];Lnf<`qi`Y]TFVp`YPk[?FtkV^g]>@smBRjbL]d]O>wnGW`WPWucRZcdWPyq=DqpFavt?oux>OpoaoxpoadlPWn`O`i`WNluaXun:?[SDRSKNEpoRSo?@?no?>oh>GhVXfVUG?UM?GMUG?kdSeUM?>MV>G]UfTVHG>HA>FAIFMm^MU^OU\Ie\eOETbdkbFEVe^V\^gkbFXtlg`bT`W\MWNMCNECRX_lk_mKCm_TB_DkbENbZNUZSUMRLMEL;EM;J|8. Tal Mem Blitz|Morozevich, Alexander|2013.06.12|D43|0-1|B +FVn^@OmeEU^UOUxg;LwnHPe]V^gX?HvxGWldIQXiPXn\@qiF[m\N\e\EDuc[TcZ]ene:=ZlBJenHPwuT]\T@HrZOWng?GxyDFZ\FaTLCL\LW^l^aoLlohk[]fuwf_yx=]^LV^Ld_V|Champions Showdown Blitz|Topalov,V|2016.11.14|B54|1-0|W +DTl\HPph?Hwp;LsdEMmeBJnf@Oxn:;kc>@tk=EjZCKvxdUE=rsLRf^>DkdDNUfRL]UL]UN]nunHdfUd]piGOi`CLqaKSZSJSaYPX`W@AYQS[su?@xp]VurVrwr;:r:L:nY@?Yy:Lyr?>rk>@krLU^U=:rsX`WI@XIeXYQI:?srAHrk?>krYVry>YyYVYog`gpgYq|Zurich SUI, 4. CC Rapid|Nakamura, Hikaru|2015.02.19|A36|1-0|B +FVl\@OnfEU\UOUsd;LulG>=>tdCKTKBKme?TktP?tf?Nvm>=ys;bZ=MZR>=gvL]Ss]lfmlvmvTevwKRsSe[nhMuwn=mng[lhWHPWF@[SLFn`N`ul`ntk:=rwnwywonw?=?ZB?oBfnf\foqjZCKleMTd\FPkdP_h_qidVifelIYVDYaZRKRSKTKDKaiKfiq_Wqy2f]RZ]kyikdifd[Zb[dbjdkfv\Tjr2krvrlerbe]bk]ek[TL[MefMLmgLM^VMUf_U\|38th Olympiad|Khouseinov,R|2008.11.25|B07|1-0|W +FVl\@OnfEU\UOUsd;LmeHXxn@f^<`qi`gugU_ph_Nw\;LmeL]gu@AsdNXvxXgxpDLtfGWf]g]^W?Wu`=?d^:=rvMDiaDK^XHPvVWVXG?G\GAHG\IY`_VF_X=>h`FVX_>F`Y]W_`HAe]K]YPLT`YAHYIHOIAOPaY|74th Tata Steel GMA|Topalov,V|2012.01.25|B42|0-1|B +FVl\@Onf;LjbEU\UOUmeHXk[?HtkBJxnX`ndUKsmIYqi=XiaXPph>@unGWwp@umFP_hGWru=OwnLVvxumPGxy@AjZIQZRKBmu=EnlV\ltGYuvEG]l>=qi\VhVOVl]B;phHXcT=@wn=Fvx:=ucOUg]YPngDLtmUOmdO^ruTMgn@A]gGWwvPGclGUnwFNg]NPo_LT]cMFdVFavnCKctULte=UVd?=eVUuVPIPlcuscG^d|TCh-SUI National A 2012|Milov,V|2012.03.18|C10|1-0|W +FVnfEUm];LxgV^gmGWl\@OsdGueA>g_ECog>AgiO`ypLRen`OdjRLtm=>ne>NecCEceECecGHjtO^mvCEteN>ZRPX_XQXiA>Ae_X_w_ENqaA@pw^OceLFvhHGhqO`qxNPenPYngYaTL`qxqaq_WFWgWGFWVqV]VF=wn@`|41st GM|Fridman, Daniel|2013.08.04|C11i|1-0|W +EUxg@Oph;Lm]@[SEOSLCLrs:;s;?;ws;sesPY\TMDnoNV]VDVdnHXopipxpYPn]V]f]W_sPIPh_X`mv@Gva`gpgO^_WPWg_GNav^OqaO`aY`Q_XQGXPW_voGAPHAGYQGXHPXGQIGAPH_goaBJjbAGbZGAZRAGIA2GAHANWAHW^ao^eHOenoagoaonoONofNMf]ML]VLCU]TL]eLDemD<2mu2<>VO>LOFCJueJCecC:cjRJF=JBjm:C|FSGM April|Kosic,D|2007.04.10|D02|0-1|B +@Om]DTnfEUxg;L]TFVwS?TgV>@Vg<`vx=Fqi`YSn:=smO^mcTMg]YPtmLVmR=phFXvnXUkc^f`gUWh`W_xp_Dn\D\c\P_pxfo|78th Tata Steel GpA|Eljanov, Pavel|2016.01.16|D24b|1-0|W +FVl\@OnfEU\UOUsd;Lul@wnGWme@Avx=>tm>Pk[V^gvFMphLVrt:=e^W^vpVgng^glPIPp_M_f_NiwvU[b[=md^mn^X?>XgnvtvDLvtA@gVPXogX_h_iWxo>=of=UqaUSt\BR[RSR\[RbfobB[K@?aY?FohFMhaMDKkCSaXWI_WBrklrJlmS[mED@^U=Uvxv>=>cTUdkdOdrjL[jlWltl>vmw[lhDl]Sevue\d[Tc]c\cuecjebjUbZphZrUCRZxprtD_tTwf[m_MTdM[dc[mcCmdZbfWCDdrDtr]tu]duedreurdGOqiQYW]bj]Nutdktskdstdkjr2krtrN_rRpg@IiaIQ_pRWgnWSngScpfQPgpPGfUHXaXOXUfGNf\cepwNU\fU^wnecf\cd\fdTog^]no]eh`YafWTloxaixyloWHefHNfgNXg`X^on|20th TCh-RUS 2013|Sutovsky, Emil|2013.04.08|C41t|1-0|B +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tf;EwnDLV\KD]UEKUMD;\KBKf_ME>F_;:;dUOUn`HPl\U_]M_eMhIY`YFEYnE]og^fg_=Mhfe_ruMNfN_Nu]N]nuGWxo@HwvHOvfPXfe;=qiW_ph_hopOVu`V^ed=?dh]l`nlfpx?WiaXahHaiHCWXxyfWyqXpqipnCKW]K;^e\Tnj;:e\i`\c:=]S=@ngGWqi=KrsLVgpX`un`ipiVPvlNVk[RZip:>nY@Asv?@[S@Hl[F[b[P_YgKQmsCKsb_pxpW_wyQPyaEW\TWeTL_hohV^g_HG_QPQaQ>=vt^f|40th Olympiad Open|Papaioannou,I|2012.09.09|A61|1-0|W +FVnfEUm];LxgV^gmGWl\@Osd@rsksusW_st_gpgEWtT^gyxL]f]?>vuWsmtsjtfUcutjrtmrkmecjxH@HTXHAXOA@OX@AXO|USA Ch 2016|Robson, Ray|2016.04.22|C11m|1/2-1/2|W +FVl\@OmeEU\U=UjbDTsdUEphCKxg;Lwp@wvFMdSM;_V;Ve]T]t_V_h_ETru?=S]=E]LTephBRvfeTuETEfFETk[R[b[TZFC:>LF@?FU>NCBZkB:N>:J>;UK?FKUFE_WkeJBEMUfeVo_VEf\ML\VEV_VLUBGUVGHVWH`;<`a@k[RKw\BRrsDLmeEU\cR[b[;JvxJ[tXKD^U[UdULUXOHOga@Augnx>@pq@`xnaXnhX_qp`@pw@hoh_h|76th Tata Steel Masters|Harikrishna, Pendyala|2014.01.18|C78m|1/2-1/2|B +FVn^@Osd?[xg>@w\DLvxEU\c<`qi`Yme=Mp`YPga;J^ULUo_V_t_MTxy[dkdTdugJT`XTcjcOY_M?>aPIPgG@IGgdlrZ:@woo]nvhpvmphmvhpvmphYah`mn`anvaYvnYanvaYvNWGNiYXihXYhiYXiQX`>:]VCSe]:@V_Qy_Vy^`X^pXap^aX^fX`fn`anva`vu`auya`y^|3rd NH Chess Tournament|Nielsen, Peter Heine|2009.08.29|C65p|1/2-1/2|W +FVnfEUm];ExgV^gmDLl\?Msd@OphIYqiMDwpE?k[?PjZ>@\ULUuc@tXU\e\=Ful?=vt;EwnBJgaHPueFNyuMFeh=>aWF?qaETWQ?QXQCSQfTCfXCM\TMCheIQXQCTeMNFQfTNMm=`XO>aYLTYPN]PGFGls>MXPGNo_S[dUCU^UNUkc@H_VUVf]T]neMSeSJSse:Jmn|FSIM June|Paridar,S|2005.06.07|B22|0-1|B +@OxgHPm]?Hnf>@wnDTvxCKl\FN]UNU\UEMsd=Fgm;Ef^EVwvBJjZ:;qiPXmwX`i`V`t_T\whKSZSJSum?>nwFDk[DKrbIY_X>VX_V>_X>Vdupoq`n`W`be>^em^[mM[caOHIOVQ?M=?TopS[_WIQVO|GCT Rapid Paris 2016|Nakamura,Hi|2016.06.10|A14|0-1|W +@OxgDTnf;LwS=DvxBJSLDLkcEMme<`smHPtk?Hqi`El\>@e]CSrtLC]TMTgVEWugCgmg:tlHQld>;deK[ur;:rZQ?m^@G^XG>XN[ZcZ:;ND>FDSFNeUIQg_?Ff^NG^VQY_WY`i`PW`W;AWOF?SDAaUEGPVN?QNFaYng|FSGM February|Radziewicz,I|2006.02.08|A17|0-1|B +EUxgDTnf@OsdBJme;LphFVwpIQvx<`qi`Nwv?MgmMFo_U]f]V_]UOUm\>@h_FavwGWxq:;tmCS\fUfmfL]um?>foaOrv=MqyNGoxGUduUNufHPmo]LldLFjZOHog;=vuNcxoMNumS[gCT\d[=Ee]E]CS]_mn|Capo d'Orso|Steingrimsson, Hedinn|2007.05.22|A50f|1-0|B +FVl\@Ome?[tm[mum>@xg=FsdDLnfEMwn?=vx;EgXMU\ULUe]V^XiEKi_QaphW`haCsxpGo|20th Sigeman & Co|Grandelius,N|2012.05.15|B52|1-0|W +@OxgDTl\;LsdEU\UOUnfBJw\UK\nFVvx?Fkc>@tb@vx;Lld:;jZU]n^]ftfCKsb@sd`gpgEVgn[expT[wu[dkdetrt=RmkCKu]IQnS|Madrid ESP, Sity Ch 2005|Ballesteros Gonzalez, David|2005.03.02|D93|0-1|B +FVl\DLxgV^g]@Osd?T]cTK\TKDul=Fp`IQwp>@d^O`m]BRcmEUTMDMqi`O^MFMm\M]tf]a\K:JKu]aYpgYPlPGPyuJ:]M@Gjb;JfK>VM=:=u=JTtsT^KfVF=]PX]ZQYZRX`i`Y`g^F^fT^Vk[O^RB^T|42nd TCh-ITA Masters|Pavasovic, Dusko|2010.04.29|B22p|1/2-1/2|B +DTnf;Lm]EUwSBJSLCLxgFNldJRvx@OkcT]f]?Mtb>@d\O^wvRZbM^MsdZcjc:rurU\c\M\d^\M^TMWqi=UvVU\V^GOrB\UBRIYR[HXgmWM^f@HmcMWf^Wa[;NV]VOW^aXa;DHADF?@FO@HphahO?AI?@sm;LwvWIn^U]jZCKm\=Dkt:=t_Do_GOVg[Lpi>DgaOWuYW^e^]eldFaYa@AvfBJaYiN>OVG?GYGC:NWI@GDRcsc@cDKcZKTZLd\O^W^L^xo=ETV^yV>:>f>AIofyp>NpwNJEFf]Fn]dnq\TwpTLpiLDqpJRigvLSnoKfwf=moh>fh_fFrt<;tlmu_`uvyvFvlovfo?;B?GBK|9th EICC|Bologan, Viktor|2008.05.01|B43n|1-0|B +FVn^@Osd?[phEU^U<`wn`nun[dmd=UngUgxg;Lvx>ga>NaWO>ru=uvuLFWFNFfTFNxpCKT?GWpgDTk[T\[S>DjZHXuMNM?MV^gfDNh`W`|Pan American Ch U10|Iermito, Sebastian|2002.05.28|C60l|0-1|B +EUxgDTnf@OkcHPtb=Ksd@vx:=g_FV_aO>h^>M^dEKf^GWjZBRme=>kbDLrvKEdUEOUOHOaiW_n`LDphMGbtGXipOHqaXN`N>Nh_V_p`H]xpNOwgIQvw]Vpo@IonDMtmCKmtMDtmDMmtMDtm|19th TCh-RUS 2012|Karjakin, Sergey|2012.04.11|E15d|1/2-1/2|W +EUm]DTld@OxgFNtX=KulO^nf^XgX?FXg;Lsm@f^U^m^TKru?=lnE>^h=Mk[<=qaKDaYGWe\>GuMDMwvFO\NMNnNGNvN=uxqLFd\urNMrbM=@G=ECKECG>hn>=C;F<;ChPLUPK>MK;^]ev]aqhaYveYyhgys;=HXgnW_nmsxevUNmnM^=;QY;KNWKSW`SV^hnmxwvewrevYaVSrjmejnvgnfemh^mtfgpg`g|FIDE World Cup 2011|Svidler, Peter|2011.09.05|D11t|1-0|B +FVl\@OmeEU\UOUxg;LjbhwW_f_XO]ULU_WPGkcU]ge>vxoOaoxaOxovrbZrjoxjrxorjoxjkwmOXm\G\c\XfxqCKqhkjpL
DMecMF>LFOhgOWcSWOg^HP\TKTSTfoLSjbTLOXSebZ^gofLPXaP`aY|World Cup|Gashimov, Vugar|2009.12.01|B90h|1/2-1/2|W +EUxg@Oph@tkWIsmBRjbDLwv=Kn^;JgVFTvnT]ut?=Vg]ktkJT^VOEk]TJ]_JDbZDJmwK[e]CSh`SZrZ[SwhEKZrRZcZKZ`XQYpwJ[hYIPYOHOXO@?nfSKfb[lbZlr_Q?>Z:=:QA>EA:rlwJK=:B=DBTE>JSl[T[LS[S>=STDCT?=D?FDKFCKCqaCKxpKSphS\h`\eaYP^|VI World Blitz|Grachev,B|2010.11.17|A48|0-1|B +FVn^@Osd?[jb[dmd>@ogEUtXU^u=?=g^=Mwe;ExgETvxO^XFMNFT^Te\N>rvNvVNVgVGOVeTNbZ:=wv@Gv^=UxoOW^aIQofGOk[DLZRU=a\BJp`HX`WOW\^QYqaXa^a=Ad\AQfoWXa^YaopXW^VWOV^aipqOW^VW`eo`_oe_g[SLS|Corus A|Karjakin, Sergey|2010.01.19|C69g|1/2-1/2|B +FVn^@Osd?Txg;Lw\>@jbEMk[TKmeL]tXIQXaaO=OgOHOphOW[S:;scd]wpW^e^BJSJCJys]BcC;CsCBTjG@?G>?>bZMUCDU]DLT[LJ[mJN>ENVELo_|Pan American Ch U10|Perez Ponsa, Federico|2001.05.29|C50m|0-1|B +EUm]DT]TFNxg?Tnf@Ol\>@jbU\u=?=w\TFsm;EkcBJtkCS\nETvx@k[RKw\BRrsDLmeEU\cR[b[=Mvx<`^ULUqi`Yp`YPga?@m]V]n]NEcU:>]SFVYVMVtbLFU\BJS]CS\eFUb?@?]cUdwvJRxwRZcTEV|Biel ACCENTUS GM|Carlsen, Magnus|2011.07.22|C45r|1-0|B +FVn^@Osd?[xgEMw\>@meDLvx;EdnMU^ULU\cCKe]V^gV[Mt_=Fndkcowyq>V_G@GgVGHV\wr\fTMqiIYphrynqyxqpUpiqxvfpvNqiBRiqHQqiMDiqPXaXQXqiNFeSF^pa^f|40th GM|Kramnik,V|2012.07.21|C65|1-0|W +FVl\@Osd;LxgEU\UOUn^U[me<`jb[Jk[L]wn`gngDT[SJDvxHPg`IY`i?Qtf>?uZ?HZ\=MbZA?rjCKf]M]wu?=\c][cl[Rph=MdUDU^UR[l\GWip[\e\BRjnHOuv:>o_V^qaQHxwOGnfH]wnM=vwGOpi=Mnm>FmnM=|13th EICC|Popov, Ivan|2012.03.22|B33m|1/2-1/2|B +EUxgDTph@OwpHPvx?Hme>@sm;Ln^FVjbBRrsIQ^UOUwvgVLV\VHVnVNEV>:>v>E>pUDVU^>Lt_VN^LCLstNOtsPX_mRZmdOgsvGWvN@INFIPFNPINFI@FNgYxpW_NOT\qi_hoh\eleYnOoneh`QY`Y@Io?eU|20th Sigeman & Co|Berg, Emanuel|2012.05.13|E68i|1/2-1/2|W +FVl\@OmeEU\UOUxg;Lph@nfEUjb[TwSvtLEn_DLqiCS_eTMogJRuvS[dsEWb[WeleR[m[:Z|4th Young Stars of the World|Kulikov,Alex RUS|2006.05.20|B01|1-0|W +FVl\@OmeEU\UOUxg;Lsd<`nf=Ejb>|IX EICC|Jianu,V|2008.04.25|B67|1-0|W +FVl\@OsdEU\UOUphDTxg;LmeGOdU=Uwp@d\S[pg@ARc<=xyEeue=ecTe]TNGNWNOFgY?_w_V_ru]uYuAHypHOpgOV\TFTucTM|2nd Sinquefield Cup 2014|Carlsen, Magnus|2014.09.04|B36g|1/2-1/2|W +@Om]HPtX?Hld>@xgEMnf;EwnIQXaFVvx=>jZOI]VMVf^ETgmBRsbIXogXNbS;ao?=rj=MZSLSc[R[j:;:d[TJmsJ[lcMucuN]sd:LdS]SusQ?srS]qa?TrR@Hw\LKR:]gpgToxyKO|GCT Blitz Paris 2016|So,W|2016.06.11|A07|1-0|W +DTl\@Oxg;Lm]T]g]HPsd?H]lBJph>@wpEMvx@xgEMmeDLjbBRqi;EvxIQ\j?>dnE?nhTBwv?PtfBfvfMUumk[Zclc<=M=>=xo=DofTNteGOc[F@vxOUdUNU\j<`tf:@sdEUtmCKrs@hWFXgXUOue=Ewv@AjsHPei:;iQ?@v^;?QiPWXIOI^a?HsWHpip@pxpLFW^FPa`IO^CO`CJEUpg`OtuAHkcPVg_VEbZSZcZETJ\TN_gUWgnN_nw_iwpi_pw_iwpiou]o^\eWXpg^dqaXReldUlcH?gn?FneFMenMV]\O^aY^hnghY\^VM^>YO>=MF=;RT;CFNgnO^neNVZRTRCG^Te\T^|GCT Blitz YourNextMove|So,W|2016.06.19|A35|1-0|B +EUxgDTph;Lm]@Owp=RtmRK]TKTvx@]OFOd^W^p^:=^gNFnfHPgU@Hue=Ewu?=f^OVZcFTxpGW^WPWjZIQumVOU@TDeE=EmlDVcNV^N^W^@NEFN`O]`WHOh`QYqiY`i`OXl\^fof]fpgfT\dFVdeVveEvFEFTFg^F[^U[RUL|Gashimov Mem TB 2016|Mamedyarov,S|2016.06.04|D90|1/2-1/2|B +HPm]?Hl\DT]UEMsdFVn^@FwnGWqaIQaYPXp`W`n`>@og;ExnEKue?Onh=?vxBJtfKEjbO_rv@Ak[T[b[EOf_V_hWOEelEVdZ@wn=KdZKRldT]f]RXumXPqa;LvtL]m]@gVEUVe[dmdU^e_=uvu;LuvIQqanSHXaX`fifQX_n@HSLCLn]WEk[GWvmW_fv>Vph=?h_?_ogHOv^V^g^_^jZX`rwOH]n^VnhHPw_EWhWPX_`X`W]LT]ST[d[DTSBT[BLVTL[|5th Final Masters|Karjakin, Sergey|2012.10.09|C67w|1/2-1/2|W +@Om]EUxgDTnf;Lwn@t_LFgm=KucKD_hWIwvFWneWheI@IqhHPcuIHh`?AunCSjZS[d\QY`XO`rtMV]VDKph@vxO^wuFVph:>mvDLe^V^g^>^kcMTrtCSxpIQtl?>vm>:ur:>rs@Id\S\c\U]sCGOf]T]md]d|3rd EUICC|Luther, Thomas|2007.06.20|C11q|1/2-1/2|W +FVmeEUxg;Ln^@Osm?Twn>@vxBRjbRZ^U=UgXL]m^O^X^TKtfv>S>CK]m[JmlKC>GJDGcD>lkCHPW>MWVMScUHFVWS]WPg_kphip`_WPQ]NUpiqp^FG^WGOWPqi`xN_x`_P`PO_PJihQPhgJRgfR:fe:BedB:d[:B[SBCSZCsZRsxRSx`_\PWbZ`xZRxs\[srRJrjSK|6. World Blitz|Vachier-Lagrave, Maxime|2010.11.17|C41|0-1|W +FVnfEUm];LwSV^l\BJSLCLxnIYtmJRuZ@yw?>g_;Cqi>;nhWImv@AwoYahw[dvdO@wm@FmcIWcRCBk[E>okW^klW]sk]lvdl]|FSIM April|Khadempour,F|2005.04.08|C19|1-0|W +EUmeFVxg;Lph@\UNUn^UNe]N\wvF[cmGMtb\Gb[R[]UOWgXW^m^GP^TEFog`OTN?>rt:@n^EMxnFVvxV]n];L]nBRsdRZrsOEkcZclc?>tkETjbLVn_DLqiCKul;ts;cscT\c[:b[\LS\<@HmlbBpgIYxpFGn_V_h_SEldNV<=G_d[Eipi_giqgoqiogiqBj|3. Norway Blitz 2015|Vachier-Lagrave, Maxime|2015.06.15|A07|1-0|B +FVn^@Osd?Tw\DL\c>@meIQugEMxn@d\?>bkFXhdGOkt^fofYnf^L^diXtutOWTKBKc]n\ic^Uc\U\wv\jv><>tr>:l\:Z]g@?\TKSg]Z]rj?FjB]EB:ED:AFN|Makedonia Palace GP|Bacrot, Etienne|2013.05.28|C45k|1-0|W +EUxg@OnfHPk[?Htk>@l\;Ljb<`qi`gugU][SLVgCDTSL:;LD=MD;2?;C;M;k]VL]dO^we^dsdHdmdLVru;kvxkdendbuUbkUSkdSsdbwuBRstVEtrbdrtdbtrbdutdknwETtsklstlkrskmtumlutlmtvRZvnmdnj@HwnTcjZdlsvldvwFVZBV^wuctnwPXuEdvEGHPp`teGWIQBG|38th Olympiad|Mateo,Ra|2008.11.22|A46|0-1|B +@OxgDTl\;Lm]T]g]EU]LCLphFVwp:;vx?F\ULUuZ@tX;kXOFOpUESwu=@]LCL^VO>weGOo_OV_VEUtf:;dZHPum;[ZT[kTcLTmdT\dk\eleF[fm>Hvt?ok][btsop]BbFmRHNut=>RDFXtdN_VN_nDVndVd>FB]@sdyvGOM]X_^V_V]^aipwOoeo>GvnVhmvGg^g?gwxP_|GM|Morozevich,A|2009.07.23|D87|1-0|W +EUxgDTphHPld@Owp?Hm]T]d];LvxO^t_@wuLRc[CKd^U^gVECkcNU[S?=t<=@ucU\n\N\m\EG\mBJvnGcmcLFtmCKogFUdUOUg^W^qi@GywGNw?:?mvMqvoUdnvqMrtdScmNUmsSbsdU\vn\[d^[covJRne?G^MDMvhMUf^U^e^KS]US[UMbS^USdUNGONFdUF>OPhVPN>?NVMEU_tLVU?>RZph_e|Showdown Rapid 2015|Nakamura, Hikaru|2015.11.14|C11|1-0|W +FVldEUm]V^t_IYqaDTnf;LwnHP]T?TsmTFuc@O_X>@xi@wp?>meV^e^O^ulEU\U=Uxg;LtfU\rtng]:=urLp]npgn]gYrvS[d[=][RYgDTgLvt\mTLCLtLHX_m]mLQmjQJX`J:@HxwHORJOW:BWPwvPOB:OWvujo:?oj?GWPGBjbB:PHJBbrulrjlcjrc[rs[TstTMtuMNurNWrZWXHIXOZJ|USA Ch 2016|Kamsky, Gata|2016.04.24|B31c|1/2-1/2|W +FVn^@Osd?[phDLwpEU^ULUxn<`qi`Ym];Lh`YP]VLVu]V\tX=Kvt[TdUT]UK]ktsBKpC:RCL>FuEFNn_NVyvO^_PVNv^RVP_|Pan American Ch U10|Salazar, Ezequiel|2001.06.04|C60m|0-1|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LwnIQ_YOYnYHXYnEsrXfvf]fyxE<^Vfngnmn|3rd Ruy Lopez|Cheparinov, Ivan|2009.06.13|D97l|1-0|B +FVnfEUm];Lxg<`]VLVsmVgmg@Oqi`Yl\DL\UOUjb?Mwn>@vx=FulMDg]FMphYPneDK]WMNxp:=f^UOtXPWXOWi|Capo d'Orso|Diotallevi,M|2007.05.24|C10|1-0|W +FVn^@Osd?FxgEMm];Ew\DLjZ=RvxCS\e>@k[R[ZSV]dZLStm[ZrZSZg]EVurMU^UVeleOUrZFOwsBRZLPQ>LQILy_aysIQsW]_W<\wbfQI@meBJjZEMxn:;vxtf>De]T]n]DN]NENdU@Iul;KC=;^VMUuUNUpULD[ZDFZ\FVwGIA\_|71st ch-ITA 2011|Mogranzini,R|2011.12.09|A37|0-1|B +EUxgDTl\U]k[T[jb[bph;LtbHPme?Hsm@Owp:;vx>@uZ^XN@vx=Dk[R\m\U\jZBJtmOUdUNUZSJSr:?:lkDBmdB;o_^gng;=wr:rkrFXdmIQrv=EvoENgUNUogUgpg@GxoGN|FIDE GP Paris|Ivanchuk, Vassily|2013.09.28|C11i|1-0|W +FVn^@Osd?[xgEMw\DLvx[dkdO^m]MU\c>@gV^dugdStf;El\U\c\EV]VS]g^nfRVtbKfbkf]k]V]lI]`wv>AI^`^v^=mqaHXaXOX^VA?rwmjVXjl\T<\U=UmcDTtmO^ru?FmRUWgnWXxyIYcmAQm^N^og^ZRdQPwoZjf^PMuMFMg_Xh^VMDnljUyqhelZBJZ>D=_WYaonUE>E@gVEUVe[dmdU^e_=uvu;LuvIQqa<`tfCKwn:=aYLVjZBRkc`Wd\V`n`O`_U`fUfWvnDLry>Va_@l\DLjbBRuc=KcKEKkcKEtkIQwv?>gVEV]VOEqi`Wh`WIk]LT]kEKbZ>=nf=ErtIekbU\m\e\c\KZtsEesCebCF:?vsZdsKRZKJbrxqZbFCbjCBrtJb?;BJHPpL;sbjdjJjt\j:@H:Bs;qp\tBDT\pg\dLZ;kgptrD\rjZLkophdlL^om\djb|Halkidiki GRE, WYCC 2003|Dimitrov, Pavel|2003.10.27|D03|1-0|B +FVnfEUm]V^l\DLsd@OucBJxiCS\ULUi_@SL:@wn?>k[RKmeDLvxIQtfEUfKBK^ULUe]V^gV;Lo_^gngLV]V>Vu]VWwu@kcBRvxDLgqRZc[K@dUFXfXNXtTX^UF@ATV^O|11th EICC Men|Hracek, Zbynek|2010.03.15|B33o|1/2-1/2|B +FVnfEUm];LwSV^l\BJSLCLxn=X\UXpyxpqul@FsdGWULqM]UFUdUMUtmA@n_UGld?Md]:;md;KvtKLtsHX_U@P]AM?kcF]EFNktP@O@NE@OELOI?FA:LE:AGPI?F?A?PN?HNFHFEFVDRZcZFEDh|40th GM|Leko, Peter|2012.07.16|C18t|1/2-1/2|B +FVn^@Osd?[jb[dmd>@ue;Jtf=Fog?=fXDLefJDweDNXOFOxnEUvx^gGW_]ENqaTVgoLT]_:=wvVMoh@HaYNEvw>V_aMFYPIPyxT\e\EZhqHOkcZSaIFTxyV^IGOXwWPWGHXOqQOVQNV_NQ_V|YGM|Vachier-Lagrave, Maxime|2010.07.19|C68u|1/2-1/2|B +EUm]DT]T@OjbBRxgFNnf?Tkc>@tk=Fsm?=wSxpECpx>MxpMWpxWf@IYaI@aixPfWHOCK@IKCI@CB@AWhO]BE]kipPHEMAIpgHGhYkVMNVHg^Hk^gkHNLHkg`kH_WHkY_kV_NQY`gVOg_YaLJGCNTC[T^IH_g[cg`c[JNO=NPH?PN[ZWO?G`WZRNVRVWV=O^OaiO`iq`q|7th Mikhail Tal Memorial|Nakamura, Hikaru|2012.06.09|D21v|1/2-1/2|W +@OxgHPl\?Hm]>@phEU\UOUwp;JsdUdkdDTvx=Dt_DRucRKcKBKrsT]d]@kOHOl^?>^]YVweLT]VOVt\:=vn@GZRBJp`W_ngGFf_V_`XF?yvMFvV=eg`edcTFTVT;kTW?FW_dlogk;_^F?LUlj^_?F_GFMGOMVg_V]OJ;sJQsx`WjRQIxtW`RJiaJ:|16th TCh-RUS Premier|Deviatkin,A|2009.04.04|B22|0-1|B +FVn^@OsdEU^UOUxgUdkdV^un=Fg]DT]c;LnfFVwS@ru:h`Yald@vxBRsd@AkcGWtkF@ru=Fm]V^gm@Om\L=bZ=LkbL[lmCK]U@xg@sbBJblCKphmgNEnoELwvU]d\KStmS\e\DCrsMDgVDVvVLpopCpxpFLVW>npg]emfelstnqWTL[TRIY\T=uRbqybdutftytgntyjbyqng[jTLlt2dtjtk[ql[SlTbZtj|3rd NH|Agdestein,S|2008.08.30|B03|1-0|W +FVnfEUm];LxgV^gmGWl\@Osd@k[BJtk@AulU\m\E>ogN\n\FMg_LF]UCS\cJRlnR[b[:;rBF;wt[TdZTBtdO`cu;SktSUqi`OdDMSZdSdDdURtm?=d@wuFO]\DLsdOdkd=OpUNU\]ONtf:>rsCKskHXd\U\]E\UEN>NjZW_f]U\nfLT|WYb12|So,Wesley|2004.11.06|B21|1-0|B +FVl\@OnfHPsd?Hm]V]f]>@xgEUwnqi;EneDLtm=Kjb:=ulE?vnKDrvU_m_D_lZ_;Z[CKe\;M\N>N[ZMEvtH]g]E]nN]ZNP?PdZLTtl=uxqPVZduwqh@HdSVLlmwsh_LRmlRL|Corus A|Short, Nigel D.|2010.01.29|B40e|1/2-1/2|B +EUxg<`l\U]uc`@p`DL`XO>d^BJweCS^TEDclHPiaFT]T>HldS\e\@n^EMwnOEtmETogGWk[TN^W?WvxN]ne]lelWGrsBRjbR[b[@gVEUk[RKm]U^tf;EV\DLwnKD]UEKUMD;\KBKf_?>vxKSumIQwuHX_h:\^YhqhKfofEM[S:<^Wwghvxqvagia^iQ^fTf>fQLfcLTcKTX|3rd Norway Chess 2015|Giri, Anish|2015.06.25|C83|1/2-1/2|W +FVl\DLxgV^g]@OnfEU\ULUme?Me^U^]SMVu=>=smkc;LVL>LZROEtkGOk]=?[S?@SJ:JZcIYjZ@IZRA=ckFEywKTklJMlTMmTYI@RJCLvoHPYRE`rv`goxgfwofBRdLSxw^fopSJ_WJCWPCpwpBCpxCgPG@IvwgnG?5=?dDI@w?@?DT?GTDGNDLNVLTV^TF^eFbe\bZ\TZbTKbcnScNKR|Cup Mitropa|Braun, Arik|2006.09|C18e|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLm]V]g]O^d^>^ldEMne^>t_=Oug;EghK=_MEVMVOVhV>VwvVvrv@?e^@ls_Z|III Ruy Lopez|Koneru,H|2009.06.16|D12|0-1|B +FVnfEUm];ExgV^gm?Ml\DLsd@Own>@jZ?>\ULUdSM;mcE?tm?PqaPFrtBJSdFWp`Whyxhnun=M`XMqnwO`xyqMZR`qwpqgvuM[cT[ktlkrmtrRdU@AUdR=d^gV^mVLtkL[TC=Kp^<`^`[l`E;DulKCys:?GNpoNVRdcd<>VToaf^?oTVaYVho?^VYPlu?Wmg>?unPGdfGjnejcenclnv?;gmltvn;kfeWwVNtunfwv|HZ Open|Barua,D|2007.08.10|C06|1-0|W +DTph;LwpEUo_IYxgYameahqhAypy<`tfFNld?Msm=EfoGWul`Yn^@QvtQ`oxW^e^><^UNUgX`Ouv=>v>E>lW<;WN>=ygYgXG=DNMgYMD;DGXDMjbCKk[LF[TKTmcOExoFWtmWQoxQGXGYGctEOteO^mlGYlkYneVMNh`HXVPNOPVX_VEOXETX`TNBRkcnuck_gNDgoxo^oDUoeks`gd\ucUDgfDUfmUKmd\TeTstcjK@n^EMxnFVvxV]n]?>sd;L]LCLrs:;kcOEtkIYdnHkskLTum=Oks<^V@HldMV_V<>o_LFUO>=suCpxpFWpgBROE;Sd\W]g^=E\SGW^fHGutEUvuPX_XUVfe]St\VUenS]noGP\ZUVumPXZRX_RZVfZ\fgovgfvofgovgfvw_`wpaipwW_\T]gmEgqwoqgEH`aHIa`IH`aT\iq\_aYHIYX|Ultimate Blitz Challenge|So,W|2016.04.28|A07|0-1|W +@OxgHPph?Hwp>@vxEMmeDTsm;LldFVe]T]d]V^gvMUmcBRtXIQXOHOnfOHrtQYcTLFogCKTZFWuc:;g^U^xyveU[jb[L]UL]go]WogWMe_M\k[R[b[H?_e\Myp?He_><_n<\g_\dndHdpgPX_`GOgfKS|FSIMA Feb|Brustkern, Juergen|2003.02.08|A05|1-0|B +FVl\@OnfEU\UOUjb?Mxg>@ul=FmeGWwnDTsm;Lkc@Atkwx>YxHFH]HAHuw_h\fYgyxhqxog^|38th Olympiad|Kveinys,A|2008.11.23|B42|1-0|W +FVl\@OphEUwpU\uZDLZ\@n^MFtf;JfxJDruIQgaHP]UO>UMFaMDE`w_|FSIMA February|Jakab, Attila|2005.02.08|B27|0-1|W +EUm]DT]TFVn^@OwS;L^UOUxn@wv?>b\PltmFOv>;>rtlPkcIY\fYahnP^ndUdmdOXtv^Pphaio_X=_WPYxw>^h`=avtY`f`^`dm`pt\aOm_pj\LO]_hjRL<@I<\RWwn]O\ZWSc[O]ngGWh_]d_MSUZJd]M;U=;M]KMTKDgnD_JB=mnwmqT]qm|70th ch-ITA|Godena,M|2010.12.03|D20|1-0|W +FVn^@Osd?[jb[dmd>@tfO^uU^OUVO`V_`fofEMxg;EvtETf^=F^VMVgV@IqaXO>=O=Z^I@kcDL^V<`tkHP_p=mpf`NbZJRh`mvaYPXV]CSZSLSfUNU]UvnU=@H=]H@d\S\c\@?\T?>kcnNcZGW]A>EAIE=IWNW`WX`WO`hOG=FTLhpG?2F?LDpx2D<2?FYaMEHOLDKf>=fKEFOPF^PG^UGO=EKBUMOWE>B:>F|26th European Club Cup|Nisipeanu,LD|2010.10.19|C69|0-1|B +FVl\@OmeEU\U=UjbZ[BR[RfoxoO]oh]VhoV]oh|FSIMA February|Stupavski, Zdenko|2005.02.14|B53|1/2-1/2|W +FVn^@Osd?[jb[RxgEMk[RKwn>@meDLvx?>dZKDl\;EwvE?ph?PnwMU\ULU^UOUwpCKe]V^gXGWXIP_t_D_uY_QYP@AZdUdIO=OP>AI>VQm|Corus C|Van der Werf,M|2008.01.13|C90|1-0|W +@OxgHPm]?HtXDTldO^XfT]d]EUph;Lwp=KucKcjcL[sbFnfBJblLBl[BSdZJR[ek[GO[SLFbZKUdUFUgmPXm^<;ZRX`^TNFe]U_u`=]T^>?`W_NRJ]Ul\U=^dN]W^DLSLCLrs;:dSOW^a?>aF>FvVFES]E]xw]\VW\ZWGIYGIYastZJIaJja_BRp`:C`XRZXPZb_GCKGOjktLKCLJbjwp=mJbmePHebH@2jr2@UCBOGBJU:JSGWS[:^[c^UclU^beWTlm^_mu_\km\`mn`\rH|FIDE World Cup 2013|Malakhov, Vladimir|2013.08.19|C45p|1-0|W +EUm]DTld@Oxg;Lnf<`qi`gug=D]TFNk[BRtkR[d[L[wS[Lvx?Fsm>@wtOEmcFOgnOknkNVjZEOcm?=mgOErs:BtlIQsuE;lmV^g]LF]n;JSJBJndDTkCTBCcJRm]=;cb@Ibj;@vxBRld?>^UOUm^TBwvIQtmGW^h?|TCh-RUS Premier|Bocharov,D|2011.04.12|C41|1-0|W +FVn^@Osd?[jb[Rxg>@w\DLk[RDmeEU\jBR^UR[b[LUtXvx<;ul`gngUele=egLCLwueMd[MUxw>=wnUuru=unuOU[TBJum;@qi`utEUyw>EoqE@t_EK]TMTsdTM_hBJSe?>o_=Dxy@wn?>k[RKmeDLvxIQdZKDl\EUul;E\ULUZdBJdUOU^UEOtk=>tLBKxw@GbZ>NL\GF[SJSZSFEkbUDh`DSb?HP`YPY]UNV?HVUHOUWOXWowvSM\ZoWvnWRZ[K=|Corus B|Mecking,H|2009.01.18|C99|1-0|W +EUm]DTld;LxgFNnf@Osm?M]TMTk[TFtk>@jbNVd\V^g]BR[SLVul?>qiF?wnCK]LVLSL@k[RKtkEMwn?>vx;EmeDLwvE?qi?PnwMUdZKDZTCKTcDMphU]ldLTgm:r:C:h`:jqhL[unEZgvjshpsunuZupoMDwnuZ`XOXmX@?iaDM|XXIII Open|Stefansson, Hannes|2008.03.08|C78q|1/2-1/2|W +FVl\@Osd?[ph[dmdEMwpIQkc>@n^BRjZ;JulJTtfCKxgT^gm^mp:<`:p`gpgmgvnV^qi=EnuEWutOElnEVtl?>ruVeue^eneWOyu>NlkgVe^OF^:@I:^VP^lI@u]PV]uVElWEOWgO^u]F>ia^T]UTEU]EVguVL]_LV_]>:]UVEUmEOf]:=ug=F]ONOg`ONklNV`gHPmUVNUmQYleNOg^ON^g@HelNVgeFNegN>geVvmu>numneleHOelOWc[GO[RKR\TWNTMDMlcv^d\PXmUXaUYahoh^fclOWYXNOX@fbh`W`@`bZlcZ[cd[;`]ON]U|40th Olympiad Open|Leko, Peter|2012.09.06|B31f|1/2-1/2|B +EUxgDTphGOm]T]g]FV]c;Lwp@c]L]d]O^og^XxpXNue:=wuN]f]?OkcOMrtU]e]M]u]=]tD]mpxmjDCjkCBkcg_csxpskpxksxpskpx|FIDE GP Tashkent|Svidler, Peter|2012.11.22|D70|1/2-1/2|W +EUxgDTph;Lm]T]g]FV]LCLwp?Tl\@Fsd@ul:f^IQuwRZo_V_t_Zcjc=FnYP_e_FVYV>V_eVF^VHPp^GW^U@HwoPXaXQXojE>sw>PVNHOeoOHoeHOeoOHoe|World Cup|Dominguez Perez, Leinier|2009.11.26|D87m|1/2-1/2|W +FVl\@OmeEU\UOUxg;LjbIQph@gmLFuZGWZS:;dUFUm\BJST=E\fUFtmW_fuFLmdQYp^?Grt;>ogH?ToGHxy?Mwx>Fk[L]d]V]o]FGuoX`h_G_nf_Gg_Ya^U`ho^@?UNENxpMF]\N\t\DLqhahphHIypGW^XFX_XIG\aWopi?@XPGFf^owipwupoFEonurhiEMaA@HiIHPIQPHQMHAMECS^VA@EDrbDL@GnfbZe]Z[LJ[sJKS[f^[cKCG>^UckUN>=]U=YQFPuE[LQILFEB>?c[?H[SHISKIQKCFLBJPFJL|GCT Blitz Paris 2016|Vachier Lagrave,M|2016.06.11|A00|0-1|W +@Om]HPxg?Hl\>@sdEUnfDTwnT]g]U\n\;EvxEK\c<`og`EunFV]lV^g^=FdUKU^UO^l]^Tc\BJk[T^ne^M\cES]SHrSd:e^>^d]MW]TCKTK^[KR[SRmWMmvSKvRKCxo<>ogCFueFVRDVWgnWODRPXRdOQqiQPjZX`ia`hd[>^[b^aedaqngMWd<@HbkHQf^Wag_ap_VpaktPXtXQXUMaPV]qm]fmMcGPVGUMO<@Xaf]V`^VO_U^hp|2. Norway Blitz 2014|Agdestein, Simen|2014.06.02|A08|1-0|W +FVn^@Osd?Tw\DLxgEMmeTKjb>@vxIQqi?>\j;EwvE?tfKDe]=F]VMVk[OIdn>=utFOgqIXnh?NvuN_u=O=tu=>iaXIhWEf_V_v^=>^eEele>nqgIOj\nlgvldbZO`ZR`VruCSRKDKxw@?vgVgpgdl\JlowvogutgitL_gWOiyvm?@e]K]L<@IJeHP@vxLFd\R[b[M[kVOErs[bVh?=e]DT\UT]m\bJ\K]fu]|70th ch-ITA|Garcia Palermo,C|2010.12.02|A46|0-1|B +FVl\@OnfDLxgV^g]?TmeEU\ULUsd>@wn=Fvx?>dZTM]S^eueMVo_VMSMFMkc;LtkU]ru<`ng:=f]L[kb[ebM`gpg=MueOUZdU_euGWwv>vuvM]vF]edZeuxoumoxmpxwpqFCIYC[qy|66. ch-ITA|Godena, Michele|2006.11.24|B22|1-0|B +FVldEUm]V^t_DTnf;LxnBJ]T?Tsm@FmcTKc]>@_hFPum=Fqa<`n_P_h_L]f]KDwn`nvnFE_DEDo_:>nfGWaY>NjZ@Ayi?@phCSZSJSiyHXyxNL_XS[d[W_h_D<_WLlr:lm:i_A@dSDSkOMOZS?MruQYwgHPleOVeUVU_U@HgO>NuwNOwOMDf^D=OMGWmeW^e^=DMOD=O?=DphDVxpVM?OMDUDCDpgEMg_PX_WHFWXF^OGD;XY^fh`fiYPiq`XRZcZqaPW|Corus C|Ruijgrok,D|2008.01.14|B40|0-1|B +EUxgDTph;Lm]T]g]FV]LCLwp?Tl\@Fsd@ul:@\UNU]TMTkc<`tk:@wpEMvxIQsdTN=E\TBRjZ;[_W>;U\[c\c;cN]ce]SeU^\ELSBLDxpUWTLOFBSD<\^WGLDHX^\|FSIM June|Lettieri, Giuseppe|2005.06.11|B50|0-1|W +EUxgDTphGOm]T]g]FV]c;Lwpd^?FnfNclcOW^m]fvf@Ofv>YpgO`mwFTxpYPg`W`tfL]f]T]umIYrtBJvuPGwf;BunA?c[=MtlB;bZHXZRMOneOge\GP[SJS\D;:RJCJm]V]fUgoloP^pw^swp?oposkovksvmsjmejUD<:B@nfIQXaO^aF=FwnDT]g?=vx;LjZ@H>;WNo_^gqgVgYgiqxyNi|11th EICC Men|Salgado Lopez,I|2010.03.11|B04|1-0|W +EMxgHPph?Hm]DT]T=RtmRTmd@Osm>@wpFVn^;Lvx?=unCSjbBRmcTKdm@]TMTjbwu=a[S>=|YGM|Tomashevsky, Evgeny|2010.07.22|D46|1/2-1/2|B +FVldEUm]V^t_@Onf?Fd\@XOUOul:lnI^g^Mhvm>@blN`rs=Nph`gyx^fofg^[dOPskFWvoWQl[Q`ovNDwnIY[eDSkSJSeVPNV`Y`d[^WvoN^tmGO[c?;m[;>xp:BpqHX[mBH_XOXaYHGov^FcuFDqpW^px>?mdDFvmGoxwownw?omvogwngfdmfh|66th ch-ITA|Contin,D|2006.11.27|C16|1-0|W +FVl\@OmeEU\U=Usd?[tm[dmd;Lxg<`nf>ulUTvtL[d[T[jb[Kts=MqiMLlm`NgVLTe]O^m[K[b[TV]V^oywounuDLslNUugUgwg>Fle@xgNif^ipyxpgngJTg`TNdnBRtm?=ulKEvwRZwpETmdTcxw:JsuDT`NFNdmc]n]V]usNclcZcwvGOo_CS^VOV_VMFqa@GmXIQVNG>XF>FvVJNVTNnpinfTSfesvFMvV=?SUMLUTLMTU|75th Tata Steel GpA|Hou, Yifan|2013.01.19|B42f|1/2-1/2|B +EUme@OphFVxg;Lwp?Fvx>@jb?>sd<`qi`Yh`YPgaU]dsOUaPIPldU_t_V_sm]dkdLRpgDLxp=Dul:=wyFag^>NmgDFg]NVrsao]gV^e^oKyu=>s[FTleTopyohgq>=el=uluhdqgdbumRcmMKTM;T?[CbtypcTCkT^;ctTnf_fclGWlT?TgV@IVGI@GV@IVGTKklLTGVKRV\Rmpg^XgnXi\fmfnfW`l\PX\`IP|41st GM|Khenkin, Igor|2013.08.01|B08n|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQwvEUtk;EnwU]dsE?smOIbZBR[SLSZS<`wnKTm\`gngT[vw?EkbEKb[K\[v\MusCKg`I?ldMCo_]dvdV_e]?NskCMrv=X`NGNdmXSkrHXrbM\beNVvt:NeiS>m_X_u]\V|77th Tata Steel GpA|Saric, Ivan|2015.01.11|C92n|1-0|W +FVnfEUm];LxgV^gmGWl\@Osdwr>NrtG>tl>=JrN>rt=Odb>=bJUCJbONxy_gpg^gtxX`qi=@lt`h|42nd GM 2014|Meier, Georg|2014.07.16|C11n|1-0|W +FVl\@OnfEU\UOUjb;Lk[?MucUOcl>@tk?>wnV^o_:o^:?neHP^O@HWiIQOYHAxy[]eP|71st ch-ITA 2011|Caprio,G|2011.12.11|B43|0-1|B +EUnfDTwS;Exg@OkcBJSE=EtkFNme?Fsm>@vxCSunneM?ed>@smmwHQwf=MnwL]k]V]f\N\l\QtrtDLbZMNZRKR[RNV\]@H][VS[\SRe]<=tdRS]ULU\D=EwSJShYHQdOFPOX|GCT Blitz YourNextMove|Topalov,V|2016.06.19|B90|0-1|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQtm?=wn;LutHX_YOYnYruWPYPHPogGWvfE=g^>^feW_ZRPWc[CKRJWV[SQYem=EmoX`i`Y`uyVWyAEGA@]ndA`hog^\ge\[kbn]A][]e]T]bc_gpgW_c\_g\]hpl\G_|42nd GM 2014|Adams, Michael|2014.07.19|C67r|1-0|W +FVl\@OsdEU\UOUucUKxg;Lnf?Mjb@[SFbtl^MwsM\R\<\n`HP`XbT]O?@vx=Kjb[dmdKJgm?=kcEKbZ:<\UEUucUEog^gmg?Mtm=>vx>^rtA>tlIQwtHXcSLFSR<;m[FLRSBJSZM[b[^flLfgpgCLZJE]xw>fJL]_tdfdLS;BSRBCRS|3rd NH Chess Tournament|Ljubojevic, Ljubomir|2009.08.31|C11j|1/2-1/2|W +EUxgDTph;Lm]T]g]FV]LCLwp@Ol\:;vx?F\ULUuZ@tXENsdU]d^;kjZknZR?>RJO^XF>FBF=FJBNUB:2U:r:F?:?@?pg^dgndnxpndwtHXqiV^pwGWtr?FrBFMBIW_h_X_IA^fof_fA=MViaV^aY]ewvem=mfmvm^V|Renova FIDE GP Zug|Giri, Anish|2013.04.25|D85s|1/2-1/2|B +DTl\@Oxg;LsdFNnfEUm]BJjbU\w\CS\j@rtLCmdV;dRFMqi;:nwHXjsX`i`O`og`Vuo:;wn?@gmETwv@AjZBR\SunHPSE>Ed\OYmsGWtQ?G^WGWsdTNdUYOUOWOQfCKld:?ogPXc[N_f_O_\TR[d[_[TMDMnm[]mX]ZrZEZXFZ]xyA@qi?GF=G?=F?GF=G?=X@AXF]_FM?>MK_WKLWGg_>NLdA@vVNPd<@H@HnFHQF?QY>V|Millionaire TB A 2015|So, Wesley|2015.10.11|C65|0-1|W +DTxg;Ln^HPwS@Oun?Hvx>@ldFVmeEMjb=KS\LR\jRcjcKcd\O>tXGOXf<`smcZqi`Ems>DsdZLk[DNdU:>rsL<[TMTnm?GwvELbZ<=ZRH?sr?Mxy@AmkIYvwAIkm>?rvBJvr=EUKE=KU?@rv=?mu?=umN]f]T]vt@>trM?mn?M|54th Reggio Emilia|Nakamura, Hikaru|2011.12.28|A22|1/2-1/2|B +FVldEUm]V^t_@Onf?Fd\ulohls>VsxhgxqVRMNRJNGJKqxKCGPCFx`|Mitropa Cup|Cossin,S|2009.05.10|B12|1-0|W +FVn^@Osd?[o_EM_VMVxg=Mw\;Lme<`vx>@we[RjbRdmdBRbZIQf^OEtfCKgmETfTKTmwLFwfFPph|42nd TCh-ITA Masters|Lenic,L|2010.04.29|B30|1-0|W +EUm]DTnf@Oxg;Lwn<`qi`YvxFNgVYnunT]VLCLf]?Ml\>@sd?>wuNV]VMVngU]dnLTtX=KXOVOn_Kk_ekdutdbph:;tubdutdbtu>NgUOFe_NK_e;=UgbZuvF?vtHPg_ZEiaKJtvJbeVEW_WPWrsbjVejbe_bdvV]esuemxwd\VW?Q_U\twnT\h`=>UfQfof\d|Champions Showdown 60m|Nakamura,Hi|2016.11.12|D57|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQwvEUtk;EnwU]dsE?smOIm\KDldCS\m]dkd<`ul`gmgIXgXQXwnDKn`=Ovw?N`N>NdmX`mfOaln:=phaYqaNOxpOgrt=MfTMOnmYQmXgeXVONVWQPTKBKwuebWPNPu=@I=@wvFNjbCSrsl\]djdL]f]ZdrdCpxp?_^U]^PI@V`@AvN]mtwmXPXQXNJ=]qi][wv?GJPGCPX[ZXYA@`QHQYQS[v>@H>A|33. Annual Eastern Open|Ehlvest, Jaan|2006.12.29|A50|1/2-1/2|B +DTn^HPxg?HldEUwS@smFUwu:=mgNVum=EruV^g]LC]S?=fXGOXaBJS]HQmlU_n\CU\U_Uln=>]LOWL[UduEdnxwn_a=>NphJRh_R[=DQHkcHOD=Ok=XNLE=@G=EGNEILtwptlXak]IFNMF>MD>FDLFNLUN>^f>=U^=>^_>NPXah_`|5th NH Chess Tournament|Van Wely, Loek|2010.08.18|A20|1-0|B +EUxgDTph;Lm]@Owp=K]TKTvxFVjb?Fk[TKl\U\tfKDsm@ue=@tm?>xgDLjb[Rk[RDmXEMnf;EwnIQXaE?vx?PahOYe]V]u]Yhqh=FwuBJrt=\TMU^dPX]m=>g]NEdZ:=ZKENbZDV[SJSZSV]m]NGtr>FSLCL]ZG>Z:=:r:@IxqX`KPqxPe:benxqIPbZQYqxneog`gpgPQZ:HXxoYah`aiohew:@jbBRnfV^e^O^sm<`qi`Yl\^mtmU\mdRZrtCStl=uwuYPlmP^ga^pxpHPmU?=f^GOo_=U^U:=_WPXagIYh`YaumL;UM=MmMDMg]MUpg@G]S;LSDU]dm\dkdFbDSbkd]ZbSbkbmdGFg^bMdkFEkrL[]UEFrdMTdk[lktlvtmvp^gp_m_X_g_Tb_^bt^]FM]\tk|40th Olympiad Open|Wang, Hao|2012.08.29|B08n|1-0|B +FVnfEUm];Lxg<`]VLVwn`gng@Ovx?Tsm=Fjb>ne`oxoX`g]Ffowf_]g`g\_M_t\_qpg>@woYael=uluaig_qxowiqugxK|IX EICC|Berczes,D|2008.04.21|C13|1-0|W +EUnfDTxgHPl\U]f]T]me;Lph?Hwp@Ovx>@jbBRwv=^fXWnwBR[RURwpRUuyWEyuLTVNGNutELf^U]^LCLtT=Ehd@:|Lorca ESP, Narciso Yepes Mem 05|Huerga, M.|2005|B33|1/2-1/2|B +@OxgCKl\@wnEMvxFVmeO>sdGWgmPXng;Lc[X`gU@A[SLRmcCUdURCe]IYog=Xg_V_f_X=wvBJjZJRueCT]THkrjkHTLHOjn>Hc]:<]NHNnN?GUO|III Open|Habibi,Al|2006.10.21|A05|0-1|B +FVnfEUm];LwSV^l\BJSLCLxn=Xvx?Msd@Oo_^gwg<`f^XPgOHO\TMFuZ`nZL>?L:?H:UngphA=U\OWt_W^_DFXD=XfxwPY=aYWwvWidUfQ\JiqJOH@UF|4th Young Stars of the World|Onischuk,V|2006.05.19|C18|0-1|B +DTnf;Lm]EUwnT]f]@ZRFLePGPcZEFZbFGog`Wh_=<_Xvr>SfWPWxoS[ohmlGDlmvxjkxr_frRkK>GfoRrmkG@km@GmkJRKCDCkCGPXfrdCKRZKNPI|Renova FIDE GP Zug|Kasimdzhanov, Rustam|2013.04.23|D31g|1-0|W +EUxgDTph@OwpHPvx?Hl\;L\UOUulCKm]U[lZ@jb[JsdJDtf:;rtDNdZHkZk;kfQ?>nf=DuU>;wuE>gXNXQXDRXQ;=UXGOu=L=XU=GpwRmUmkmw\>S\SGQqiQGS\mM\G@GtTMJTdGNxwIYiaNUwnFVnmV^dcJZcdZRdcUVmnVWnwWVwnPXaXOXnwRZcSVOScOWwpZRcdWVdcBJc;Rb;AJRAYVWYAX`A?WX?@XW@?WX?@|76th Tata Steel Masters|Nakamura, Hikaru|2014.01.23|E60k|1/2-1/2|B +FVl\@Ome?[smDLxg=Fjb[Rn^>@wnEUk[RDvx?=ulBRrsR[b[;JtbU]lkCSnuDMsr<`\TMDga`uwuOYphFNkcNcmcHPagYHgv:Bbt=:tmJ;rB:BurBrcr;Erc|3rd Sinquefield Cup 2015|Vachier-Lagrave, Maxime|2015.08.30|B51b|1/2-1/2|W +@Om]DTnfCKxg@tkFN]TKTl\=Fsd;LulO>jbGWdj:;kH>Hc[W_[SL=ruPXjd=Gqi;=d^_f^hGQofQWhWHWxoEUneU]eW]fofNWfoX`wvFOu=?=gx=]xn`in]O]oh]`hqipld`aqxC^v^ay|GCT Blitz YourNextMove|Aronian,L|2016.06.20|A13|1-0|W +DTl\@OxgFNnfEUm]T]f]?[tm[msmU\m\>@wn;LvxCK\VLFuZMNcZNE>OELKSg]S[LKO^o_^m]N[cNTZ[Te[deTd\TZ\[|3rd Norway Chess 2015|Aronian, Levon|2015.06.21|D30h|1-0|B +EUxg@OphHPwp?Hvx>@m];Lt_OY_f?>ldFDKR\Kc^MwmFfm\|41st TCh-ITA|Salvador,R|2009.04.30|D02|0-1|B +FVldEUm]V^t_@Onf?Fsm>@_h;ExiEKi_vx>f_fXfxy=Xmc:?cTE@H>VHIVYaY_YGwxwXF>FGoHPrwA>ZuEUk[<;umYan`JRwvR[d[UMon^UnF>FvFMF`gFGgUGUqiCKmoU^jb;Cxq^eoaebavbkv^k[ia[MqiKSp`S[aYPY`Y[c^sMbseb[]UckULCBefB:|74th Tata Steel GMA|Gelfand,B|2012.01.29|C42|1-0|W +@Om]HPld?HtX>@smEMnf;EweFVxnMUvx?>elDLXa=KrsKJk[CKlcKSjZEKsrJC]V>Vn]ZRK\clE`utOYhaC=rsHVphJLN\^VIYqil[L<>ED<>EDF>=FC[LofS[f^\Nh`Y`i`N`CG`NGH[c^eL[ed[UdcU_cdNWHB_Nd\N_BZ=E\T_eTUWNU]NWZBE=VNWN]eNWe]=>]U>=BGWlGFlcUVclFHlWHGWlGBlWVUWlUTlWBGWlGFluFBulTUlWBHWlUTlWTKWlHFluFGulKTlWTUWlUVlWGBWeBHeWHGWlME=DVNlZGHZSHPSENUEZUTDEPKEFTUFGUVGHKOZlOoleoge\gd\nVWnSdDH@WO@AOGAIDlIQGOQIOGIQl@tXIQqaEMug;ExnETXO=OgOHOnh?=we@?d\BRbZDLvn@mgXPstFO]m`gpgOXnfPOvn?>tu>Vm];>ueOFc[XO]`BRjbR[b[FBnwBjemIY`EjsmuslyYVNwpHPYq>=EDNfuy=?D_fg_gOHyvlmvs?;[S;SsSLSqyS[TLHVyumdgd[duUVMUMdlM=@HLDlt2D<2|FSIM April|Kahn,E|2005.04.09|D91|0-1|B +FVn^@Osd?[jb[Rme>@tmEU^UOUk[UdmdRKxg?>wnDTvx;Lwv?rsKTvV=MuYN`YXGOX`OVL^TbsrRZ`YIQY`bkm[M[`PkrPI@GIPGFPHF=|18th European Teams|Williams,AH|2011.11.04|C72|1-0|W +FVl\@OphEU\UOUwpDTxg;Lvx@tmUDrtGOdZDJmfL]g]T]pC]fCJNiofiwuw=RJ\@AZdFTwgRKdUKktw:>h`V^e^kl\eljgi>VwtjbtsIQU_AIigTKqa?@wnEMk[RKmeBRtXDLvxIQXO=O[SRZSLCLrs;EgmKTm\OXn`:BxyEK\K<`uv?=dZT]ld]KZKBbK\bjskjk\kMUqi`N^UNUog=:ku:rd\UNvnQYuorwnwXfyxNWwu@IxwIPunftnvtvwvPXvnX_ou_hufWP\TGOiahap`Y`f`ai`fihf\PY\mh_noOWopHPpoPXop_fm\f]poYG\MGN|Mitropa Cup|Ragger,M|2010.05.29|C84|1-0|W +FVnfEUm];L]VLVsm@OxgVgmg?Ml\@kcU\w\N\l\F^\^O^vnBRtk:JbZGWph?>yuHPrsJKkrKLstLtut@Ggm^mnmIYqaGNt\NErdCKmeDLdm>V\]EN]\MTc[VUelR[m[T[\[KSZSLSf^W^[^UV^[VWo_WU[^NW^fW`ldUufN`hNPha_WuwWOw_dcaicdYadciqcdaidcqycdiqdc_wc[ws[dS[dlsxOGxw|Biel ACCENTUS GM|Pelletier, Yannick|2011.07.19|C10o|1/2-1/2|W +FVn^@Osd?[xgEMme>@tm?>phMUwpU]dn[mgm@gV?>VeO^wn[?d^>^vx;LevEUng^>m]LFveDLwv=>phWie_P_t_>Eum:>rv>vmvGOgpipxpHX_mEWv>Wlmflk>N@HNEH@EN@HNEH@|42nd GM 2014|Leko, Peter|2014.07.20|C67d|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxEMmeBJdZKBl\;LZdL]dUOU\UGWtf]nunB;^WFufWErbB:bd:@xg?>w\BR[SDLul;EmeEKSLCLsm<`\j`Em^=Fvx:;rsIQgm@I^TE=mnKZnl=qiKCtsC:bZ>@meIQdnMU\c?>ld[Mnh=rt=Eel:=uE=EtuQYhwEunuOEutDRleETfT?Tc[R=enTKwf=XxwX_ngPXwvX`i`Y`|20th Sigeman & Co|Giri,A|2012.05.09|C65|1-0|W +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDLdnJDtfBRf]V][RDNvx:RbZ?Mph>@gpMDo_=:_WNTWODVOH?>n_V_w_:F_ONcOQT^YRcewv@HQIHIp^F^RWIHv^|Panamericano de Ajedrez Sub12|Castillo Ricardo|2003.06.09|B33n|0-1|B +EUxgDTphGOm]T]g]FV]c;Lwp?>QOj\OM\Skc>An]L]M]SW]=A=u=:C=FCLd\BRFVWPVSLD\TKTSTDETRPNRSE=S\NF\]=?tk@OYaCSmwO`ah`V]V?GvuUCwfHPflA=l]CKrt:P_haf^aX_YXYd]YP]VPG|FSIM May|Fodor, T jr|2005.05.17|E38|1/2-1/2|B +EUxgDTphGOwpFVme;Lvx@Fjb<`ld=Ek[IYqa>@p`KUaYP^l^UOkVO^VD=ED_?=rjLRjlRcme^OgVEMlkcRV\R\e\MEngCS`XO>\SJSkST\vxFb_VbFgLEeV]ecSV@?L^IQ^lcCo_>MwsCsls=;sIMS|Vugar Gashimov Mem 2016|Safarli, Eltaj|2016.06.01|E12i|1/2-1/2|B +EUxg<`nf;El\FNsd@OkcDLwn?Mtk>@vx?>g]`nunNV]WM?\ULUm]V^og?[jb^gpg[dkdE?Wh:V]Vdcv^@GVNG>xTcdT[dLNFYH^aIYa]HN]^JR[R>F^[LtypNT[KtlphTZKCFNR=ZTCHNWHGWVGFTN=RPXqiYahgVOFBlqg`qp`YN_YQ_iR=OWBRW_RZ_h=XiXQXaiZbhoX_iqbjowjrwnrjnujrum_g|Mitropa Cup Men|Hoang, Thanh Trang|2007.05.10|A45|1/2-1/2|B +FVn^@Osd?[xgEMw\;Evx>@wvDLjb[dmdETtXIQXaCS\j<`k[TZum`gpgHXah=FjcZKru:=mnOYd\BJ\SJSl\S\c\=:ur:B\c?:nfFDvt@HcUKU^ULT[TYhqhBRTLRUrs:JsCD@jZf_;Pn`NV`P=MPYV_h_FV_VHVqy|Vugar Gashimov Mem 2014|Carlsen, Magnus|2014.04.30|A49|1-0|B +FVl\@OmeEUxg;L\UOUjb@wn:;vxBJclEU\UOUkcU[lsV>G>^TJRxoS[b[RZonZbnmbjTcELph>EmdEMdkMVkjV^jk^fkdfoc]LE[SES]Sopdepqh`qh`X|GCT Blitz Paris 2016|Carlsen,M|2016.06.11|B40|1/2-1/2|B +FVn^@Osd?[xgEMw\>@dUOU\UDLUc;Jld[RmeRKjZJTcl<`qi`Yp`YPiaGOtfTNaYPGe]?>vwIQlc=DgaMU^ULUaWNXZRKR]V>Vf_:=wpRKulXN_hNTyv@AcjT^hVOVv^U^jGDGruG>u=>=l^=m^gV^ghAIkc^fWfmd|4th Zurich CC Classical|Karjakin, Sergey|2015.02.15|C65j|1/2-1/2|B +EUxgDTnf;LwS=Dvx@Ol\U\sb@ulOUjb?=wuRSkV:lk>?VdKEknm\CSRKEKrJKUJL>Ldm<:us:jnuL:stIQphU[m[T[qaGWVOFOu`:LtuLUe]QY`_j:_mUgmv@A\VOV]VgcvnA@uEcdnY:rxqryqydLyqLEY`[caYEGqpGW`[WlYQHQ[;@H;CHPCgckgOPIOGIA|Tashkent FIDE GP 2014|Nakamura, Hikaru|2014.10.27|E39f|1/2-1/2|B +@OxgHPphEUm]DTld?Hwp=Kvx;Luc>@wuLRcKBKsbRLt_bsFNsdOYVLCL_VHV]VKSjbLTnf:;djYHh`>LrtT\f^U^jdH>p^@?^LO^OFO:?OH?:HO:?OH?:|3rd Norway Chess 2015|Grischuk, Alexander|2015.06.24|D73|1/2-1/2|B +FVn^@Osd?[jb[RmeDLphEUtm>@wpIQqikc\JdjRmumETmfTNj[Jnvn=R[eRdrt:=xq=EevdkveEelekbtlN]ljb[nkBRo_OEpg[vgnLTfxvdxuCKumdmkm]cmkctjbtnkn>NqpNMnk@?bc?FpgF=gf=DiaGOfgDLcbM]g`RZ`WKSWPEKPHS[br]eHOZbkpK\_V[cVNeg|Makedonia Palace GP|Ivanchuk, Vassily|2013.05.23|C76|1-0|W +DTxg;LnfFVm]V^]U^gULCLugEUsd@Of^<`ghU]dsIYqiYahe`Nsm=Rld:=wn?Mel>@vx?>d]T]neOYmgLTkcM_ga_tltRDo_NN_WN>eh]eWOemvuHPhf@Ifn=UVN>NnNGNonUMOGQ_uw_wnwM=wuIHxoHGofGFia=]p`FOugOVgu]^fe^]edV_aYPY`Y_XjbNVdlXQum]mlmQYmfYPf^POc[T[b[ON[SNM^WMU|Ultimate Blitz Challenge|Nakamura,Hi|2016.04.28|A18|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQwvEUtk;EnwU]dsE?smOIm\KDldCS\m]dkd<`qi`gmgIXbZXgug?NZSLSe]V]dm=;ph]eruBRweR[^VDVgWN?m[HPWgVHv>;>[?>?eS:rurHrSe@HxprOew?FgnFnwn|1st GRENKE Chess Classic|Anand, Viswanathan|2013.02.08|C92n|1/2-1/2|B +FVl\@Oxg;Lm]V]g]L]u]CKsd?nfTMV]=Fw\IYvx:>qiYawuMT]_TM_]MV]eAYtmO^enHPmvVMrsFVo_VFngM[UM[Mk[^hscF^g^h^\nYIngGWce>Nut^hjZIFvm?HZRPX_XHPRKBKxoPXeUh^g^N^U]^]f]XOogF^mdONtrNU|Millionaire Chess Op 2015|Inants, Aghasi|2015.10.08|B29|1-0|W +FVld;Lm]@OtXV]d]IQXO=OxgEUnf<`wn?[sd>@vxLFuc[dkd:;rsDLcbCSsk;CbJCDjZSZJZ`gngFWd\U\Z\LTklWM\jT\wtONjZ?@weCKun@m[RCrJ=;[mC=sdO>c[>DJj=NntW_tcG>cR;=RC=aph_hohaOmtN]f]O]jb?gdjgbtb]fwnfbvxbfxp>E[S:?w?@?j[H]lufopyEi|TCh-ESP Div Honor CECLUB|Graf,A|2009.11.08|C11|1-0|W +FVl\@Osd?[ph[dmd>@wpEMn^\c>:csOUSCEMs^Ud^\:rpwLV\dMudrurC;@I;SVgxpr:phgvSsvlsc:rwprxfmQY`Yl]cg]n|FSIM June|Martini,B|2004.06.08|B31|1-0|W +FVl\@OnfEU\UOUsd;Lul@d^UOgXO^XN=aphaOl^GNogOg^g?gwpgOk[L=rs:@vxEU\UOUjbUdkd[FulIQln;Ed\FOtk=Drt?>wv:=e^C^n^ET^lTC\TDLTKLKkdCMd[MW[TKClZ=EtsCDvt>Gi`Y`ypT]f]LTtfT]f]?MwyAypyNVdS<\UOUtX?FXFUFsdBJSZV^rt<;k[F@wnkd:=lk|39. Olympiad Men|Mamedyarov, Shakhriyar|2010.10.01|B47|1/2-1/2|W +DTn^;Lsd@OphEU^UOUwpUdkdHPxn?Hvx>@rs=Dm]?=]ULVt_DRwvV\_XGOXmFVnt\Mo_T\_VOVmX=>um?xq:>mfCKjbWlsklWtjWeh`Y`i`V^qxHVXQDIfi?O`XO_ksMWiy_apiIFskFTxp^fpxfn|Open A|Wendt, Jan-Dietrich|2005.10.07|A27|1-0|B +EUm]DTld;LxgFNnf@Osm?M]TMTk[TMwe>@jbNVf^LFd\U]\TMDvxFPwvOYm\Y_ew=Oqi@uv:@vx<`nhFM_MDMws:<\wCKjZ?HDLDUDW_f_IYDU<`Uf`grt?FfWFEWag`vmA@mf`Nf^Njag@;tuEFumjs^f;cfns^gVFNog^:noYaVeNWof:LfoJRopLSeTc[kcW_mU_fUMSnMNfmponuNJ[ST^mlJLlc^dugogS[|FSIMA February|Fodor, T jr|2005.02.06|C18|1/2-1/2|W +EUxgDTnfHPwS@tbEWSnCKme^dsdHdbkdkjk;Le]T]g]L]u]:@jb?>xgV^e^O^vx<`qi`Yl\=O\U;Esm^owoTfmwfoxoEVh`YPtXVeoxOkwmkKxqKMqxMUXae_pwPeah_nxqnhqh>fwefeunIQm^:=rtUVhpV_tded^dDLd^@A^h_MnkCShWMOklBRiaS[b[R[l\=;g][c]LckL;ks2;EOkpgsy|6. London CC Elite Blitz 2014|Kramnik, Vladimir|2014.12.08|B06|1-0|B +FVn^@Osd?[xgEMw\[dmd;Etf>@\eMUgmU^m^O^e^GW^U@Ao_=aphaFvxEOUgV^gn?=uvOUvoUfof@vxDTmeCKn^wv>Dqa=EaYCJkc?=_X=YPGPpi:;xp;K_aIQgqPXOXQXaXE=XP=Fq`@Auy[epxS\iwA@`Q@?we\e^_>O_O|Ultimate Blitz Challenge|Kasparov,G|2016.04.29|A05|0-1|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBRtkEMme;EdZKBl\E?[R?NkdOYdmY_rs=OxyOPgaPXphXOZdDLaW_nunN]W]B]ogOPscGW^W@f^EMwnFNxgNU\U?>gm;JvxJDjZ:;wvBJogKSZSJSmcS[dsOYsmE>d[|GCT Blitz Paris 2016|Topalov,V|2016.06.12|A13|0-1|B +FVl\@OnfEMsdHPph<`og`Nm]V]f]MUtX?FxnU\n_N@um;LvtLR\e=]yvF=mn]TXQDLtsCSQ?T?qaRCaYCTYPIPelS[dZ[cjcTZcZ:;nV;[lPOUPI|Zuerich Chess Challenge Blitz|Gelfand, Boris|2013.02.22|B30|0-1|B +FVl\@Osd?[xg;Ln^>@meEMwn<`vx`gngL]tf[TphDLgpBJxyCSo_:;kc]NfmT]rt=K_WNTunOEh`GO`XOXmXEOpg;CduJRufRZc[TEjbIQXOEOf`LT`O?O\SKSt\SJgYC;nlT[\D[bwgJSlpSsgwswpwbjDtMUwp;kt@vxDTt_;LgVeS>e^>ueOHegVO^e>Vg_VXcjXT_gTXj\Xx\Uxue\um\SmlSKlkKRknRSnkSLklLMldgW]eUgemgYdiYnieWUeUMUOao_|Gashimov Mem TB 2016|Mamedyarov,S|2016.06.04|A41|1/2-1/2|B +FVl\@OnfEU\UOUsd;Lul?Fjb@sdDTphEU\UOUwptT@k[BRldCKTLE;tk=D[R:Rd\;LjZLBkVD=smBS\SVH>H][HWZRKRcR=Kg]WMRL?>r:C:wt:LtL>@f^<`qi`gugU_ph_Nw\N]guCS\jBRmeRZtfMTvx=MsdDLdn;Ert:@SLCLue`geg=Ejb[MtXO>wvGOXmHPmQ>Hqi@GQHGHvn?>rv>ngnEWnmHGduW_m_M_ph_Mud:;dZIYxpPXvf;SpgSRZdLTfeT\euMburb[rR[RdUGNUf\dkcOWgnR[neW_h_X_fpNWpaWXagXWgV[MVgM[gxBRxgDLgVWXVL[MLRXaR\M;\VaiVPi`e^YaPa`ac[ai^giq[Sqxgnxp]U_gnf;B|Ch Madrid (final)|Gonzalez Somoza, Oliver|2006.03.03|C10|1-0|B +DTphHPwp?Hxg;LvxEMldFVm]T]d]V]sb@FblFWrs>@k[wv:;pU\UuUMKCK;Kk]KNUEZ:xp:?h`PXph?GE=@HqaIQaXQXo_X_h_|2. Norway Blitz 2014|Kramnik, Vladimir|2014.06.02|A16|1/2-1/2|B +EUme@OphDTo_;LxgHPwp?Hvx>@ldCSn^U^e^FVtfV_h_O^u=?=gm^msmNM>?MN?>NMjbBR[eK;>;L;k[R[b[MUeTU\T^;EqaOW^M\dMSd[SMEOMG[dGXdeaYPYXNO^NH^mgpe^HYIQpomsohsdYO^fO@d^haf_|Zurich Chess Challenge 2014|Gelfand, Boris|2014.01.31|A88|1/2-1/2|B +EUxgDTph;Lm]T]g]@tbTbsb\dm\R\b\ELpLCLrtOU\fUfof=Rul:=jZHPldRdtd?>wo=Eol@Gxo>;lkEMonPXdTGPc[;CT\BRkmMmnmR[\LPYL\[cmtCFZRFf\Zf^Z^W^RJ^fJBfntmckB:2nv2mvks2voslox|7th Kings Tournament|Wang, Hao|2013.10.10|D85b|1/2-1/2|B +FVl\@Osd?[me>@tm?>xgDLjb[?mXIQXO=OphEMwpFuZ:@wv<;dZT]Xf]fvfNjurjUpUOUfVUOVFBRFV?@g]IQ]LGtf:<`ZGHwtCKjbBRgmUpxpOWmgFOrsA>tuPXqiIYuy=UZ\U\e\W_ftV^gv_hohL]yw]ntfHPwon]kc<=vl]lol=elnO]sv]fnfefvfPWpoWV|18th European Teams|Rodshtein,M|2011.11.07|E81|1-0|W +EUxgDTnf;LwSHPm]?Hvx@O]T>@sdBJSnFVdZ?]ULVxXVPd[;[b[PVldMFT^VgUMFEMDQLXWEWu=?GdL|XXII Open|Bruned,B|2005.08.22|C18|0-1|B +@OxgHPm]?HphDTwpT]g]>@sd;L]cEMvxnl<[SJRUeRZcZlkemksmuskumksml<>gmsul<>d\U\`\>=k[=uruA=utBJ\aFaga=m[SLSZSJSagmkg]S[]SDVtTVHTUklU=l<=<;@vxCK]TKTd\d\KEcb>NtsNJbcJKclGWmc:;suCLlmH?f_;:og^gngK[cREKRLwv[\_mL|77th Tata Steel GpA|Ding, Liren|2015.01.10|D78o|0-1|B +FVl\@OnfEU\UOUjb?Mw\UK\j=Fsd@xnDTvx;Lf^?=tf:@HoGHQGD]gxwgVM^cswoskofkcfmVgmtL]>FgXia|XXXII Open|Almeida Quintana, Omar|2006.07.08|B42|0-1|W +@OxgEUnfHPk[?Htk<`l\DLwn>@sb;Evx=KkdO^dH@HrsBR[SKTut:@sdEKxgKUw\UdmdO^dc=FvxTMg]FVo_VFclMT\e^OtmT]f]loEUkcLSeSUSVD>vwv=>v>S>DVOUWOHOVO>fofUfxofUOXGOXm@Gp`GNiaUFogFUjZBJZRUDg^DUmvUFvhFU^eNEhqUFe\ELaYFU\eLEqhCKRKUKe^ENhvKUvmUFmtFU^eNMtbMEb?UK?QKUQmEM`XOXmXMEe^ENXaUd^edUe\NMahML\eLEhVUFe^EN^_FU_XNGXQG@VHU_HO_UOVUfQX@GV_IQXQfWQXW]_V]LVO|Biel ACCENTUS GM|Shirov, Alexei|2011.07.27|C07m|0-1|W +FVl\@OnfEU\UOUjb;Lul?Mxg>@w\UK\j=Osd@wnBJvxCSwvEMnwZRL[umC:dZETZTMTru=mum[LcTLRTJ;kJD>?mkHkfXGOXmRLw\@A\UFNDN?@nhOEh^EV]VDLwe=RuZRKelKkrskbdUNUZbFbsC?;C;:;vmBR^dUpysb[le;=mlpie^iNo_HP^eLTsrRZf^T\ew=]rvZbvf@HwpNEfhIYqaH?hf[FdU]efe\eleFaedaFUF?Fd[Ya[baipwiqwpPX_XFNb[NV[dV_^V_VdmV_|40th GM|Fridman,D|2012.07.15|B12|1-0|W +@OxgDTl\;LsdEU\UOUnfBJw\UK\nFVvx?Fkc>@tbgmCSbk:sr>Xa>DahUTnvDUugUK\KNKg:@Go_KN_VHV:^GOhVNV^_ONvtTMtwNE_`EDwGDK`gVF|Vugar Gashimov Mem 2014|Nakamura, Hikaru|2014.04.20|A33f|1/2-1/2|B +FVl\@Oph?TsdDLwp>@meEU\ULUxgU]ds;LtXIQXO=OsmOFvx@ld=DsmEWkc?=tk;L]TOEg]ET]WPWulFNru:;d\U]f]H]mg]klkBRu=;=wu=unuDMulNVphV^gaL]luW_km_gxwCKulMVls]NmuN]um]NmuIYqiN]um]Nmu@AutAHtvHOvmOFwxVXmuGWjbW_uv_hohN]xo]nagXhonhgnmTcmlc]lm]cmlgelkemvmcmsjFMkdmg|5th NH Chess Tournament|Nielsen,PH|2010.08.19|E00|1-0|W +EUxgDTnfHPm]@Own?Hvx>@]T=RjbRTk[TDtk@w\VU^UBJvtCS\cM_tsEMphSZcZ_Vo_VOh`F>E>uv;JvF@?Ff>Eia:>fh>vktJTskTZlZEZaYvu_WPW|Pan American Ch U10|Iermito, Sebastian|2001.06.03|C58|1-0|W +FVnfEUm];LxgV^gmGWl\@Osd@kc=Eog^gmg@Atk:>xyF[jb[dkdO`umBJru>=neEFuv=>mlFGqiGYyx`Odk|39. Olympiad Men|Kazhgaleyev, Murtas|2010.09.22|C11|1/2-1/2|W +EUxgDTnfHPm]@Own?Hvx>@]T=DjbDTk[TDtksm`Of^E`^UOUwv;El\U_ewCKvfGOrv:=m^`WgmDLqa_NmcE?^hW`\TKTkl=<[TN_vt?Eog`Nh^<;w\NWtu>=ph_YfeYh\ULZ^hWeueZaxpE?TL;kdFOTE?EhYPYehHQdmOaLEV_hia`po`im_QPE<2><_MPXMFX_F[_V[FV]FBn^UdkdV]g]?TtfLVulN\wu>YlZ\JqiV\f_TKh`YGZcHX_h=E]l\VcGEGl[JnusDLskn\jZKDZRBJ[l\elfGEiaA>aXOXk[VPf\e\[\DhohPV\]>?ru@tmU[p`=Oo_WPVEO]ET]T_W@Ad^TKmdrldm:=jblfmfKfb[f^ul^`WPGPwv=>vh`nlc?oysnl|Nassau CC Ch|Capolongo, John J|2000.10.23|C50i|1-0|W +FVn^@Osd?[jb[Rxg>@k[RKw\BRrsDLmeEU\cRZcjIQvxtk;E^ULUdSN`qi`YSM>NMWV^e^U^jNGNWh^ghYOYugYOl\=D\TKBru:>wvNVuMCKvuE?MLD;uMKTMOHOLO>FOQ;>[TB;TLFNg`?Pia@H`XNLaYLKYP|52nd It|Bologan,V|2009.12.28|C78|0-1|B +@Ol\HPph?Hwp>@sdDTme;LxiEMi_wu=Fnf>DdnHkmkS\e\?=ndGWumE>tuPX_nLVkb>YxyYguwX`nxD>bt>Opg`gtuO^d^W^ulFCwuCLxiIQi_@Gut=Elu;AuwQYwiAQiaLFmg:@vxE>gVQYVgM^_X^XgX@XlvFMvgXHgaLFw_MDpgDKxoKRovF@vm@Orx>ExpELpxLExpA>pxO`xp`OpxH@xp>FpxO`xpNV]VFVg`Y`|13th EICC|Balogh, Csaba|2012.03.30|D11t|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@k[RKw\DLmeEU\cIQvxtm=;dZKDl\U]\TCSTKBKcN>NZkKSgaDMaWM?vwLT[T?TbZSZkZ;SZT:rurETr:N>:BOEwt>NBD@IWMSkM\kc\MTetweTMGc;D;E;m[;J[bT^wv]ebk^oxoNOofJ[vsOGkVGFs[FVfeIPe]|Reykjavik Open|Hou, Yifan|2012.03.13|C78k|1/2-1/2|B +FVl\@OsdEU\UOUxg;Lme<`nf=Ejb>bZCKyxHPvnMTiN?OxX>?rwFWNWOWZRKRmR?MRdTKX`V^`^WT^]MF\cTY]^FMdHYUe]ME^VU]f]E]cl]_woKol^=mnwmu|FIDE Candidates 2016|Karjakin, Sergey|2016.03.28|B67i|1-0|B +@OxgDTl\;Lm]T]g]EU]LCLph@uZ=D\ULUn^WP^UOUmcDlpUNUt_M_Z_lkwu?=umkb_VP^rwIQog^PwoGOV_:fo>V]NPGN_ZEnfVfofU]feI@mkE>_n\Zn]>=kmZjmjGjh`BRebjUbT=:TDRZ]WUGWF@IFW:?WMGUDEU@EWIAWT?:TD@NqiZbDF:@FBbjMS@=S]=EB:N@|76th Tata Steel Masters|Aronian, Levon|2014.01.12|A34|1-0|B +FVnfEUm];Ewn@OxgV^gm?Ml\DLsd>@jZ?>\ULUucE;dUOUcU;LUc=Xph@kc?>d\DLtkXQ\TMVkV>VldVYyxp`WVmgV^]m^_mkP^gm_ono^fopfnpy>fxpfiyxnfpoihxwO`mg`orvfeknhgwpe^ng^vghIQ|FSGM April|Prohaszka,P2|2007.04.14|B17|1-0|W +FVnfEUm];Ewn?Ml\U\xg=Fsd@Ovx>@dSEKjZV]g]MVZRKUn\?=ucDLSdBJ]gVdkdO^g]^dtkdSru<`umSM\ULUkbFDbM=McbMQqi`ipiQPxyDEf^U^wuIQbf:>]nEWmU>VUVWVnhPNu]VRh^RWfe|4. Young Stars of the World|Nepomniachtchi, Ian|2006.05.11|C03|1/2-1/2|W +FVm];L]ULFl\DLsdEMn^GWweW_xgFPvx@Oul<`en?Fqi`EwuLTjb>@k[CKrsIQ[TKTbZOItbPaxqagngIXln=@p`BJ\ULUucCS`XO>cUEKU^:;^pM[vx[dkdMtb?>rsM^gV=Ub[;VS\_Sc>Ntv_gc\go\N|VI World Blitz|Nakamura,Hi|2010.11.17|C03|1-0|W +EUme@OphHPwp?Hl\>@\UOUuc@vx?>k[V]f]MUtXIQXaU\n\EK\cBR[R:Rwv<`v>=>qi`NahDLhDRJrsOUcUKUdUNUsC@IDVJjVHIHgV>:Cs:ZuZjZstZ]VLULtL|2. Norway Blitz 2014|Topalov, Veselin|2014.06.02|A08|1/2-1/2|B +DTphHPwpEUld?Hm]@Oxg>@vx;EjZCKZRRJU\Jr>Gg_BJ_XOXofGPTE\SETS\rt\UtrU\DVPGrt\UtrU\fm\SrbGPbg:?g?F?mfPGVD?FDVF?|Champions Showdown Blitz|Topalov,V|2016.11.14|D78|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wnEMk[RKvx;LmeBJdZKBtfCSfB:BZd<`gm`Nmg=;e]N`]U`gULg^d^O^ue^XbZXNldJRZSR[d[N]ws]nen;Kqa?:rBKBn\:;suIQphBKuU;>\j@?xp?FaY>=jZ=;ZbF?be;:e\:;\j?Fh`;@jm@:mn:bnlbrlWr:`XQXWXFNUeKSX`NFegSL`HLUYQUNHXFEXHEFHXFEQI:AXHNPHPGPgGELpgMUg`U]`gPXg^X`[SLSGDS[^e[Se^S[|FIDE Candidates 2016|Aronian, Levon|2016.03.25|C84f|1/2-1/2|W +FVl\@OmeEU\UOUxg;LjbGOn^UKtfvxHXYP>@^WNWm^KUl\WN[SLR\ZCKfm<;^MDMgaEFph=?mRKRZRUKR[?_h_KU[^UdaWNW^Wdnxqn_qh_nhqn_qh@?W`QY`gFXhqXaqx_i|Magistral|Vallejo Pons,F|2008.12.24|B90|1-0|W +FVn^@Osd?[xg>@gV?>VeO^wn[?d^>^vx;LevL]ne^>ld]Nen=Fn`N_m]_nxyntrtEU`<:vtv<>yx>vgvHPvg@HxwENgXNOXgO_euCSph_^iaIQwxGWgm^euvHOxpPXaXQXk[X`vfelfQOFmwldwfdejbe^pxW_QXFEX`EDfW^vxpv^px^vxpv^|41st Olympiad Open 2014|Shirov, Alexei|2014.08.10|C67d|1/2-1/2|B +FVl\@OsdCKn^?[xn>@ph[Twp;LvxL]n]T]dnDTn]T]meEMo_OE_WGOjZBRh`HXWPIPqaET`X:BXO?OwO=OtXONaYPYuYBIYgIGgYN`Y`<`pwGHX=`ixoiwowTe=KekKRk\R[HC[v]erjCswo@GZRstvmtljlelon\RneRcelcmlmGPmfPX|FSIM June|Kahn, Evarth Dr|2004.06.07|B30|1-0|B +FVn^@Osd?[jb[Rxg>@k[RKw\BRrsDLmeEU\cRZcjIQvxwvU^d^O^e^E?un=OtmNjrj?Njr:=ruN]g]K]mf]fnf=uvu>=ue=efeONl\GOiaQYph@G\TGPxpNceEcbECbcCLc[L>PQ>AQPA>PQ>AQP|13th EICC|Kobalia, Mikhail|2012.03.27|C78m|1/2-1/2|B +EUm]DTldFNxg?Mn^;L^VMDweGOvxOVgVDV]VLVeSGNv@OtfCKsmA>ogOEf_BRmwRZwf>NfWE?_D:JDVHPWQGFg_?EVHZbkcJ:p`FMc[T\_WLZ|6. World Blitz|Karjakin, Sergey|2010.11.16|D10|0-1|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBR[SEMme;EdZKBl\DLrsMUulU^e^ETwu=FSKTZlZB;\TFTskTFkmIQme=mlN\S\F>xw>L|7th Mikhail Tal Memorial|Tomashevsky,E|2012.06.12|C88|1-0|W +FVm]V]u];L]Z?TxgEMld@wv;Ejb[Rk[RDm]IQ]VMVqiCS\cBRrs?>gaE?aW=uvu=stRDtL:bfXDMuM=MLMNXMOXNg_V_n_N_O_bc_O@HOKYa^VPXxoS[oncsngskVNGNKN[cNKHGphahghkshpGFKSFOpoOPopPYpqskqhksSKskhgkqghqkhgksg^|2. Norway Blitz 2014|Aronian, Levon|2014.06.02|C65|1/2-1/2|W +FVl\@OnfEU\UOUjb?Mw\UK\n=XphXFme@un?>yxiNh`MTvtTfnfE?ga?PaPGP`XQYo_V_f_>?_hDTxwNEts:=w?=?hfKZdZEZuvZ]f]T]^V?WVN@?NF?>qaWgslgolcomc\mk\]kcvNcbNP>FPHFM]^CSHIbZe]ZrIQMFQYS[YIFMXPBRICMLC;rxaYLD;SDLSR[cRT|Mitropa Cup|Petr,Ma|2009.05.11|B42|0-1|B +DTn^;LwS=Ksd@OmeFNjZBJS\?Fo_EMxg>@vx@ld[Tme;EwnEOucBRjZDLULCLvxgaMUxp:=rsT?aWJ?mvMNn`NGlnE`x`GYqp=EvmEGsx@A|Ch Madrid (final)|Pastor Alonso De Prado Albert|2006.03.02|C65f|1-0|W +FVl\@OmeEU\UOUxgGOsd;Ln^UKwn?uv:>^VG\m\LV\VFMWPMVva?HPIAI`YVqxyqVwWHAa^>@p`DL^LCLyp@;Wo;crbICbcCcYGceogeugwuewgeugwuwpw]eG\emwnV_\NAHNEHG|4th Sinquefield Cup 2016|Vachier-Lagrave, Maxime|2016.08.09|B56n|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQtkEMmeBJum;EwvE?du?Pph?np:>qa?GaYP?^WGWh`W_w_V_m_>vk]B]_]?N]UE=yq=axivf|Makedonia Palace GP|Kamsky, Gata|2013.06.03|C88i|1-0|W +EUxgDTnf;LwS=Dl\U\vxBJS\@Okc@rtO^d^W^me^Pul=UwuDKkd?=umGOtuNVlkPGusJRmuGPklPGgmKDstGNm^CKdrUElsD<^dNWd^@AslWNngF?qiED^mDEm\@[SLFm[?=utV^piU]wuFPtXN\jb\SiWSnumn\WPIP[F^fFOfmO=\lXU@IU]ltxptLpxLtxptLpx|FSIMA February|Pap, Gyula|2005.02.15|D85|1/2-1/2|B +EUxgDTph;Lm]T]g]FV]LCLwp<`vx:@nfV^sdFPru<=mnEFnYGWqyPVdZNGYnVPl\FX\ULUnSXYZTW_f_M_h_P_T^G>SC?G^hGChY>Yu]_pypYGwtGNtL=>LMNG]`GPph>n`_IQk]PGMJnFhpFE_`GY`aY>]fEGa]>SJRSLc[CSRJSKJbKCbdGOpwLSwvS\|FSIM April|Fodor, I2.|2005.04.05|D85|1/2-1/2|B +FVl\@OsdEU\UOUucUKxg;Lnf=FwSdULU\eULelGOwt>EgvIYmeLSlcYatdaiphOWvg?MrvW_gm_hohMF|Millionaire Chess Op 2015|Azarov, Sergei|2015.10.10|B33b|1-0|W +FVnfEUm];L]VLVsm@OxgVgmg?Ml\@vxTele:>tm?gen>?f^U^rvgemf?WvtaOwuWUuvOVphM[f_VWvw[m_memnfUefB^fB;e=;C@ACFfoxqWeFTmkwokoToe^op^pqp=mpgmjtLIQ|4th NH Chess Tournament|Ljubojevic, Ljubomir|2010.08.16|C10o|1/2-1/2|W +EUm]DTld;LxgFNph@Owp?Mvx>@tXIQXO=Onf?=smCKwvxqJCpw>VgyCUyUEFo_Vn|8th Tal Memorial|Mamedyarov, Shakriyar|2013.06.18|D94|1/2-1/2|B +EUxgDTnf@Om];LwnHPsm?H]TOEmcETvxT^l\U\u=L=n\>@g]CKjZBR\e@ntW_f^_gZlBJpgGgyxIQlm?GmfgYwnYqfhqhoh:?TlX`nuHOloOXxwGowoXfo?@?tcCKvnfXbZXOkdQYcm?Gm\GPnoN\e\JR[SL;\T;ETLETulPGdkGPkdTNlcN]c\OF\ePOdkFTow]NelN]le]gktYaenainugv|LIII TCh-ESP CECLUB Gp2|Ubilava,E|2009.09.18|B54|1-0|W +FVnfEUm];Lxg<`wSV^qi`ESLCLgV=Xph?MVE>El\@QsdM[\U[dkdLUd\A;uZDL\UXUvxQWtb;SrsSRsCE@gVEUk[RKm]U^tf;EV\DLwnKD]UEKUMD;\KBKf_?>vxKSumIQ_h<`n`O`bZ^fof`fwvf\me;Mv>=>rv>=ZSLShM=MeM\Mvu:JuUJKdnM\ldKNn]Nf]SfnUe\fS]npxyfleupoyxopxypoyxopxy|Vugar Gashimov Mem 2014|Nakamura, Hikaru|2014.04.26|C83|1/2-1/2|W +DTxg;Ln^@OsdBJphEMwpHPdUOU^UL[m]@l\FNsdU=L=cRCKR\V^t_OWbZ@OZRKS\KBKRJ>Lnf=NJBL:pwN_h_S[ld[dut?TtdOUdt@sm:@kc?=tkwuT]f]>Muvo_FMngDFvn;DtwGWwvDEh`>O`WNWnFMFeSEDvVRCmwCMSeM^wfFMfUD@sdF[jb[dndU_f_GWuZ@Aw\NEZl;L]ULFvxE>ru=MlcBJc[M[b[?O[SJS\S>GwvF@wnDTvxCKkc@_WBR[R:RngS]go=MruRTktTloaGOxyCStfPXaYldqa]lftdeaXeuwuMFXPIQtQHQYQFHQtHAyxl]ueAaeiaXtT?>TBXt`u]nxot_ov|FSIMA February|Toth,E|2005.02.11|B33|0-1|B +FVl\@Onf;LsdEU\UOUxgUdkdV^g]L]d]?Mwn=Xph>@me^eueM[tm@vxDLo_VHrsJDbZBJxy=Fum:=^VGOdUDUf]FE[SJSZSOVSLCL_V?wswENmnHQn^=>wgQHgo>;]kUFe];c^lc;p^FUkbH?bT?TlTUfTbfUqiUFyq;?o?@?b:?H:>NG>GHGqhGNh_IQ^gFU_^NEg`EF`@wvDTl\:<\UOUm\MDn^U[uc`gpgCS\bBJtm[L]TETcuTevwekuvL]guDMvfMbfbk\|FSIM June|Jakab, Attila|2004.06.11|D03|1-0|B +@OxgDTl\HPnf?Hm]CKsd>@wnFNf^EU^UT]g]NUngne>=en=>|66. ch-ITA|Bruno, Fabio|2006.11.22|A13|1/2-1/2|B +FVn^?TxgEMld@Own>@meDLvxTKtX;EsmIQXa?>m\KD\fE?gm?PaO=OphV]V=uvuOgVNKfNG@GuEGNlPNEPeENefgfofNVqaXgxogqopq`pgVW|Madrid Ch|De la Fuente Gonzalez, Francisco|2005.03.16|C24|1-0|W +FVl\@Ome?[sm>@jb[MxgDLphMDwpEUulBRvxU]kcLTnf;Lf]T]wvIQrs=Fm^O^v^srFOmlOPgmGWtk@AmgMTgaPOrs<=sr=Ec[R[lZV^e^EF^VLVb[HXvVFVagVn[TKTypipxpW_h`ONqiNfrwnkZLAHLT]eTM>NM=N>=E>FEMkn\TemTLfdMUdlUMmu2wunopxopxypniaXa`XQXM]HP]UlWUWPWg]WOLDnvypaipovuD<2umogmegoemogX`g`m]@vxDLm]V]g]?>ng;E]cIQcTETwvTNtf=DumCKru>=k[KSjZBJZRDFfK=Evfg`FXmXQX`NGN^VMUeh@IhXEGKfGWXWNWdn>Dn]HPo_:>ueDN]N>NfmIHxoH@ofPXf]X`]T@GqiGPi`W`TKNFVNPWphWOmdOWefWPfVC<_WPIKLWO|Wch U10|Lo, Dominic|2002.11.15|C55h|0-1|B +FVl\@OmeEU\UOUxg;LjbIQnfHXwn?Hgm@vxGWdU=Uk[UEtkX`rtLFtTCKTlFPurW_wt:xoGMDBM^og^mgom^og^mgom^|Corus A|Ivanchuk, Vassily|2010.01.16|B90e|1/2-1/2|W +FVl\@OnfEU\UOUsd;Lul?Fjb>@xg@Ak[UdmdGW[SV^SL^gpgW_LCwnCLbZ>Ptk:;qaPpywFakb?>bTaOvtpXT]L^g^O]u]_gtuDT]UgnlnXOulOKn\>?\TKkluksuns^|Masters|Elias,L|2007.09.01|B47|1-0|W +FVl\@OnfEU\UOUjb?Fxg;Lul>@w\<`sdUdkd@Am]FM\nGWtk=>qi`YvxV^gvYnlnLFd\DLbZF@kbMbrbLTvlCKZR@Owr:;RKBKbB?GnmGBrBIQlb;:B:>:bS:rxqrwSMW_f_wemje]MW]EWfAIjkEMphI@qp@GkrMDr:DE:;ELpxO>f`LD;:>M`VGN:@NO@IM>I^OF^PDMPGF=GCMDCU=FiaDMU^F?^W?FxpMNW^>M^IM\IHF>V`QY`O>=HX=D_WNnX_DLO^n`_`Y`aY\V^XLU|Zurich CC Rapid 2014|Anand, Viswanathan|2014.02.04|B43|0-1|B +EUnfDTxg@OsdHPwS@qiBJSLELgV:@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?PphBRmcRZcmCSwpU]usDKmw:Bld]dkdBEvuEMumO`sl?h_?_rs_ovoP_|30th ECC Open 2014|Roiz, Michael|2014.09.17|C95m|1-0|W +EUxg<`nf;Eqi`Yl\FVm]V^p`YPgmIY`XU\ia@FsdFWm^EKtmDLug?[jb[RwiWM^M=Mvx>@iW:=ruMFd^RmumKU^h\dkdUdf^dSwuFbmeb[]ULUeU=UuUS]ge]LxpBR^VPWhW[`pwL[WF@A|7. Tal Mem Blitz|Nakamura, Hikaru|2012.06.07|A45|1-0|B +@OxgDTl\;LsdHPm]T]g]?Hph>@wpL]u]EMvxBJ>FJBFOBEom[dm]dcV^cd]udlue|3rd Norway Chess 2015|Nakamura, Hikaru|2015.06.18|A35l|1-0|B +FVnfEUm];Lxg<`wSV^qi`NgV=XphBJSLCLl\?MVLU\uZ@OLVOEZL:=VE=EL:E=:L>?sdGWkc\cjcXFrJIYiaAQLS?@vxQPdUFaJMDMU_aX_PXP]UNGSK=:KC:>tbW_f_^fCKYa_WP`KMfoxq`n|67th ch-ITA|Manca,F|2007.12.02|C12|1-0|W +FVl\@OmeEU\UOUxg;LjbGOnfLC^dB:>S:rSerbe^CJdsbZsdZRdU]Z^eJCe^CJUDJB^UZ]ULB;DS][Sd[\LU\]U@KSd^T\lk;D@IS[k[RjnvjpI@pl[S\d@clqSVqYVYPY^d]edSDKc\|2nd Norway Chess 2014|Topalov, Veselin|2014.06.10|B80k|1/2-1/2|W +FVl\@OnfEU\UOUjb?Mxg>@me=Fph;LwpUOsdcSO=KfGW^WPWe]V]g]|Magistral|Salgado Lopez, Ivan|2008.12.23|B42i|1/2-1/2|B +FVl\@Ome?[sd[dkd>@tXIQXaV^nfEMe];Lxn?>nt=FtcCKwn=us;ETKDKc]:K;?b=>@IqabZ>AIP;hPYhHZuxq|13th EICC|Kabanov,N|2012.03.20|B51|0-1|B +FVl\@OphEU\UOUwpDTsd@ZBEBSB<:BLFO_VOXV_XO_VOVLV:jwojkxwkco_?:tl:rwocsofQYqaNcldcNV\s[_orxdbxhf_h`_VN\e\GOVN`^|68th ch-ITA|Shytaj,L|2008.12.10|B38|1-0|W +FVl\@OjbDLm]V]u]EUxg?Fnf>@wnLT]eCK\U@I>GelgX|FSIMA February|Ignacz, Maria|2005.02.12|B28|1/2-1/2|W +FVnfEUm];LwSV^l\BJSLCLxnIYsdYauZ@g^U^xnOUyx?>nhU[hYHPts@Iuw>?d^PYZuE`i`=U^dU\un[eqi:;sr\J`Y|Mitropa Cup Men|Cvek, Robert|2006.09.10|C18|0-1|W +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBR[S;EdZKBtfBfofDLSLCLvx?>gmMUngVEWHPW^J@]T=RjbRTk[TDtk@gVEUVe[dmdU^e_=uvuIQqi?=uv;L_nwfLFd\U_aYDTkc>=ya_NtkN]n`GOru@GkdFW`W]WuM=Ma_WfofG>jZMNvo>EohEL_oNMomMmdmI@ha@NmvCKvhBRh_NE_hENh_|KM FIDE GP 2015|Dominguez Perez, Leinier|2015.05.14|C67r|1/2-1/2|W +CKphfWQYWf?TqiKSZSJSljYahaVPaYP_ng_YjRSLf\>?g^YO^eToRW?=eno]mfO^ng]f\f^MWO=Ag`LEiaA@`iM^Og^XaX@Xf`ENihXRgcRZhgZJc[NU`fUV[SVNflJZgfNMl]Zr]lrZSYZ\fe\ZlfZre]rZf\MNYTZrTLNW\fWX]VrRfURrLdrvUfvnV^XOdLOFLJFE^]nvf\vu]TEFJMuM\M|Showdown Rapid 2015|Nakamura, Hikaru|2015.11.14|A01|1/2-1/2|B +EUxg<`l\`gpgU]uc=@^vCKpLEqaGWVO?O_W>DWNONnYNQYQHQvF@AL^<`FIA@og`aux@?tsaqxP=MPHDNHG?@ktqxGONXOMX^g^@IMQIHslxvtmvrQKrbKJRZ^VbcltZbmQHIVNbjNFcdtujr2Jrdrunr:Q?IPnm:>mlPGlc>@sd=XxgXPme@Af^;LgaPOuYHPYXOXtXL]rtAHXfKEagETj\]gpgDLqaIYdnTNe]V]n]N_yxMVtu?>um=clLTxXHOf_V_XTBJTL=MLM_MvwMVkcJRc[R[b[|40th GM|Karjakin, Sergey|2012.07.20|B42g|1/2-1/2|B +FVl\@OsdEU\UOUxg;Ln^U[meBRwn?FvxHXjb[JdUX`gvIYk[R[b[F[U[L[tk[Lo_`gvgA@e]V]n\<]V=Eph`XlTYarJCJTBEIwu|FSIMA February|Farago,S|2005.02.13|B33|0-1|B +EUxgDTph;Lm]T]g]FV]LCLwp?Tl\@Fsd@dZTMkc=En^Ni^UipxpLU\U:@wn?>k[RKmeBR[SEUvxU^e^;En\RZqiKTtkDLue=FruE?dn?Pnh;gm;Sxq:;d\?b\Zb?Z\N\m\?T\MSRhWO>M>;>uET?wsRSsrSkrBPAl\klBZAPEDLTph>;qplkZBPAfT?TDTknTS;=SU=;Wf;kfuklpgGWU=@I^WV^g`l\uf\L=E|USA Ch 2016|Chandra, Akshat|2016.04.25|C88c|0-1|B +DTxg@OldHPm]?HtXO^X_T]d];Lsd^dkdEMnfFV_h=Rum>@wnCKvxrs:^ZSU]SJ<=JC^NhaGOf]L]tv@HvN]Nah=mjZN]h;]nxyndsrBRCLduogT]rsuoyxo^xy^dsv]V;VOVyxHOxwmjvfjrfvrbvfONfebrwodZecNMLZrZcKMTKCZjohIYCHRZHPjng_V_hgnkPXTKXYZbYAKBAYBJYAJBAYkKYIBJIAJRA:KJ:>RS>vJQg_Qqp`bj`Xqo_`okvrSZXPZc`WkoWNopNG|World Cup|Bruzon Batista, Lazaro|2009.11.21|A11|1/2-1/2|B +EUxgDTnf@OwS@jZFVf^U]dsO>qa>OsmOYm\=Dp`Y_t_V_aY?>YPIP`XCKyaBJnmKS\bT\m_D_a_\eleETvnTZkcZTgmTN_`HVmgVMbl>UM>ENP:bf_k[_hHV|FSGM February|Ilincic, Zlatko|2006.02.14|E11|1-0|B +EUxgDTl\U]k[=D[SFVmeBJSJ:Jph;LwpIQvx?Fsb<`uc@OrsLRbSD;cl>@nf?>f]T]wvRLtmOEjb`Wm[ET[TFTgm;=m^T?\TW^p^=RSM?MTM>=vt=MsCL=C;RblDbRDRJRt@^UNUe];LsmO^]T^TmcT^tf?>gmLRcR=Rf]F?wv:NnS=EldCJpiJCfWD=|3. Open|Bartel, Mateusz|2006.10.27|A50|1/2-1/2|B +DTxg;Ln^@OsdHPdU?HUOHOwS>@vxOHldEMqirtFaFENFT]cTfH?[d?Hd[cr[TQYphrcT[NUbZH?[_?M_OSZO=@If_Zb=MUM_MbjMVJRwSjr2VrcrSZPXxwIPwnYahaXanfPWo_WNf^NM^]MN]^NM_WMTWOTM^WMUZ>UM>GrlGjl]W`RZ`aZbaY]Nia|17th TCh-Eur|Cheparinov,I|2009.10.22|A29|0-1|B +FVl\@OmeEU\U=Ujbkj>?jk?@IY@HkjHPYAPWA?W^?A^]jk]\Aa\Tkjyt|WYCC 2003 - B12|Chen Xiang|2003.11.01|B53f|1-0|W +EUxg@Onf@gm^dkdBRjZ=FmgEOdkM[ut:<\TOEkdNVd[R[gVEV]V?>wu<:u]:R][RTtuTl[_FVrtln_WVktsnmuvklstleW_mkc[HX_g>^[S^ZSLCLqiZ\trkCvRedR=@Ir:dH=@ugEU^U<`geOUwn`NxgGOvx;Ed\ETeuUFuvNWk[TN\T@AvdFUdcU_n\=>ph_ixpHXtkX`gaW^og`gagNX\U^UcU:=UCXgCgiXgW=mwo>Lpxmoxo?=rwAHktIQoxV^W`LUtkHIkOXgxp=@`_IPOdQYwoUNongXqaNipxXgxoiqofqxf^@>^U|1st GRENKE Chess Classic|Naiditsch, Arkadij|2013.02.15|C68j|0-1|B +@OxgDTkcHPl\?Htk>@phEU\U=Uwp;LmeEsdAt_IQqaOY_tFTdUWlumNUmUYhUV>?p:T]t_]V_Vhnxw<:VM?@wn:>nglPrtPYgp>NMhYPtTGOh_Nn_fnkTRk[phP>RB[Z|77th Tata Steel GpA|Ivanchuk, Vassily|2015.01.24|D91d|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tfOH;cbZcbx`>H`_IQ_\HWg_Wfof@GiaJRf^br^VGN\LNULMUT_WrZMQZrQARZaYZbA:bjWNT[YQ[c:;cd;:dc|78th Tata Steel GpA|Giri, Anish|2016.01.19|C83|1/2-1/2|B +EUxgDTnf;LwSFNkc@Fl\BJSZ:;sbFPtkGOvx?Mm]>@\UL[]TMTrt=Fk]T]u]NV]B<`tT;=UMFMT\`NBCN\b\MFCFPFjb[ec[FUZc@Ap`UdxpHPqa?>\R=MR\ME\KEDK\AH\R>=`X=MR\M=\RIQXOHOgqV^c\=MogOH\c^gqgdUcUMUg]UVwuekumkZmeDdedZdR\V^\M^`pi`x]NHONTdSM^OFbZSD^mxtihtlmgldhoJRg]R[T^db]LF?|78th Tata Steel GpA|Tomashevsky, Evgeny|2016.01.31|E44|1-0|B +FVl\@OmeEU\UOUxg;Lphvn@wuLSZS@d^TKtmOW^X@AXNFNl\:=phNFvtW_f^UOh_O`_W=Mts`oaYoyuyFG\SL]g]K]mRMJYQDLS[CKnYKR[MHP|USA Ch 2016|Nakamura, Hikaru|2016.04.17|B80g|1-0|W +@Om]DTldEUxgFNtX;LnfIQXaHXahT]g]O^wS@gVEUVe[dmdU^e_=uvu;LuvIQwSLFtfFWf]W]d]HX_nOUS\?=qa@H\U=Ul\UM]UCS\SMUndU]aXQXru]uvu<`ulGWk[:=jb=]yvHOvyOHyv`YdZYGZTHOphGU|74th Tata Steel GMA|Carlsen, Magnus|2012.01.17|C67w|1/2-1/2|W +FVl\@OnfEU\UOUjb;LmeBRxn?FndUKkc@tkGWwnFOul?Grs@AvxGEwu=FdZKZcZEUmc:=ngUMcTN@kcTMd\MVrs=RmgVd\UOUf^UOwuIQjb?@smO`qi`VmcTKelphDK]gELfKLKg]N@kcPFxpHPluFL]lK=ug=Ovu>Fwv?>vF>FlfU]d]O]e]L]u]Ff]ZfdZBdlpwCSgnS[wo@UofU^n\ldf]dh]VPX_XhXBDXpDBpPiaPQBEQKaYIQ\N^gNGg`GPA@EBKSV_STBCTRC[Rj[Cjq_V`YPWYgCDqmWN@AVOmMOVMKDdgudeunefnuV]AH]TKNfNucNKcuT]u`]V`@wn?>k[RKmeDLvxIQdsEUsm;EtkBRl\KDulE?wtU^e^<`\TR[b[:rtr?Nnw`Yrb=;qiYPbfCKTK;KgVOUfcU[ldDVdVLTm\K;ogGOV;>;kdN]ck[Lk;L;\M@?MC]Nxo;Eof?Fg_N=CRPGwSGjdkEKp`jN_WNESnKZkb=LRCL[fmF>nu[JucELCRLSR\>F^VOV\VJ[mfZKbkT\cu\dkd[Uf]Ud]dSwiaKUd]UOVPFMP_wS_NHPNHO>H>S>WOPXuc>EaXQXOGMF]VE`V^|TCh-FRA Top 12 2011|Sokolov, Andrei1|2011.06.04|C95f|1/2-1/2|B +FVnfEUm];Ewn@OxgV^gm?Ml\DLsd>@p`BJ\ULUucCS`XO>cUEKU^:;^pM[vx[dkdMtb?>rsM^gV=Ub[;VS\_Sc>Ntv_gc\go\Nowypi_pw_NwxN_btGUt_X_xoUMogMeg_edvnYa_`ainoRZogd\`i\ji`Zb|VI World Blitz|Nakamura,Hi|2010.11.17|C03|1-0|W +FVnfEUkcDTtk?Msd@OdS>@ph;LSM=MwpU]xg<`qi`Yh`YPga:=aPGPvx@AmeOUunIQjb?GrtUOtuMDldBRd]T]ktDKf^PXiaOIaXQXxqLFwyFPqhP_nlGDljKNt_X_hq=@vxCKl\gvO^d^>^og^>f^GW^WPWn\=OrsCJ\JO]u]H]xy;Jvl]Hlf>?tmW_f\?W\MWUm_J[p`[e_hHksukAum:?mne_h_?_MWUVwvVnvn@?WMAdyp_]n>?HMWHG>FGOFI]mpwOVWhEU`Xd]XPV_IG_XPH]HGHX_HG_fGBmqBbfmbcT\ck|5th Classic GpD 2013|Howell, David W. L.|2013.12.13|A14|0-1|B +EUxgDTphGOl\U\nf?sd@Fw\FUunL[vwBJdU[UwpCS\UGUf^UcnfcNm]=Kys?FfbKMbfMKfbKMbfV]g]FGsuMTf_A>rtN\]WG@uE:BWHBEH>EG>O@H^VGFtvJR_WHAvuTLogLDuMRZO>F>MEDEWE>Ng_A@EBN>_WZbVN\Uph>:BG@AGOA@OX|Baku FIDE Grand Prix 2014|Grischuk, Alexander|2014.10.12|E60d|0-1|W +FVl\GWm]V]xg?[tm[mumDTnf@Of]O^m_>@we;LvxHX_fX`]U`gULgpwv^XLD=Oo_XNsdNDfTDNToCKdUO]vfen]kUdCLuskmsumkuskmsu|70. ch-ITA|Genocchio, Daniele|2010.11.25|B21|1/2-1/2|B +EUxgDTph;Lm]=K]TKTtfTRfmRKl\U]k[L[m[K[smHPrs[Rwp?Hvx@QmcRjg]>@utjJ]SJKSdGvtA=g_MD_WDKogJDtlLT[TKTlc:@mX?>XOHOTUEN[SLVu]VgngBJSK:NEC@rsGWwnDTuc?GaYJLtmCKmQHQgV=>VL>LcKLKsKQt^VtbnuT\e\GHphHPKPFPYX@Io_PFXYIHulbtvutfun\T>LyrL^rBH?BE^LEMLZeJfxJexfe\?>MK>EKCE=\SZSCS=DSKFLVNfxKcLFcb]ebexTngTMh`W`g`FPedD=_WP?dc?I`Y=>YPI?PO?IOHI?cfMTf^Tb^ZbkH@?NZ^|43rd GM 2015|So, Wesley|2015.06.28|B90e|0-1|W +FVn^@Osd?[xgEMw\[dmd;Etf=F\eO`fXGOXaETgmIYqi`QunHXahYahq@jZ?;\bDLqxCSd\SZlZFDe]QGxo;[Zl:;]UNEov[CULCklk;ktkELkjLEvoG=um=LytD;oTMTmE;[Ee@GtsGFjr[ZsCF>rkL]kj>=CS=FSCF=CS=DST]LecDMTUMDUTDMTSL]SUMDUTDMTUMLckZubluelbRZ\TedkKLDU]dT][X`[\DK\TKTi`|GCT Rapid YourNextMove|Aronian,L|2016.06.18|C65|0-1|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBR[SEUmeU^e^;En\=FtXIQXaDLdZHXahKDSLCLg]E;]W@ZdDhnpH?vfh_p@?@fn=]xp_VbZ@Hpi]=npH?dn?FpX=AipAqpw^fXpqYnxYWwnV_xgOYg]WOneYhcUhW]WOWl\WVpkGWenFOkKOXKNVNUNXONE_MnfMTfgTMgfMTfgTMgf|Makedonia Palace GP|Grischuk, Alexander|2013.05.30|C88k|1/2-1/2|B +FVl\@OnfCKkc@rt;LSD=DwnDEvxLFkb?nSGOSEHGENGNF?;DbBCLBD>DjZYahnPXndNEphDN?bOWc[ahohW_xo_g[SLCh`N=dj=Gb?E>?H>Fj[GMHVM\Vh\kovkZiaXahaFNa=Zk`XNW[LWPLVPH=KCGhaX`unQWqiWai`apxpAymwJKcmKk`XOXpqyqwqFOnYOPYPGPZRN@qaIQt_gVLV]VOFogEZrZ^dZrF[_fBRg_>EpgU]fo:@k[RKun@AtfJR]UK=UMFXf]R[d[EKWNK\n\GN\N?>NGI@Go=Eoh:bwg>:rvbghg:jqi@Ng^E>]TNU^WUNW^NU^Wjpxw>:[S|3rd Sinquefield Cup 2015|Grischuk, Alexander|2015.08.29|D37j|1-0|B +@OxgCKphDTwp@tkT]f]KSsmOEjZBJc[EKZRKt_E?Te?P_M=MaYP?cT?EumETeTM=vnOFxpIQTeFMpx:BgpLCo_C=`uMT]TU]d]FEulE]eI@?IA?FAH]mvnDElPE>_W>?HI?@WOFOIQGPfgOFnm|Showdown Blitz 2015|Nakamura, Hikaru|2015.11.15|E60|0-1|B +FVn^@Osd?[jb[dmd>@ugEU^U<`geOUtm;LxnUKe=:=nh`NkcGWvtBJogKUweHPqaUOmQ?GaYGEQX@GYPIPyQLFuvF@QaNcvVcUd\ULhnEFVF@Fn_=>aQ>@tkLEkcDTcdEL_iGHQa@>dkFFXiF>p`W`g`O^m_|Corus B|Volokitin, Andrei|2009.01.17|C68j|1/2-1/2|B +EUxgDTnf@OkcHPtbCKwS@wvBJl\U\c\O^bkEWsm^TmcTZkbKS\SJSnSZdSLdubF=KL:?:ru:jcTIQFaW`ah`gpgPXxpKL]ULTUMX`ME`gpyHOhV@IV]TXvxO=xXQXqi|FIDE Candidates 2016|Karjakin, Sergey|2016.03.17|E15o|1/2-1/2|W +EUm]DTld@Oxg=D]TDTtX;EsmHPnf?Hwn>@XaCSmcTKu]:;ah;C]KCKg]BJhDKCDR?>vxH?]LFNL[EK[JK\R[?[d[CKJT\kwtNVtlk\jZJ[EN[LFOnJNDJC@sm;LulGWxgtkV^g]LVe^W^vxVG]SEiwtGXSMDMnYHPYnFGtwGWld>VdDiwrwXgng^gkVWVDCKUCBUdxyVWB]Wiwxdn]U?GmgnxgX|XXIII Open|Hermansson,E|2008.03.05|B42|0-1|B +DTn^;LwSHPSLCLsd?HmeFVxnEUvx@Okc>@oge\U\aoBRwuH?fT;=nd=uru:=u=>=T?=?oT?QTVQtxotldnOEVRljc[jmqi@HZdLT[TEVRDVeohmXhqXTDhIQn_TV_eVde_dV_nVkhvHIndPXvfk;qx;VxoVqowqyfxyxwxIPxoPOofOVp`NEdnEZndZLdnLZndZldnGOn]lu]SuZSdZLdnLZndZcdncZndZLdnL>n]QY`Y>YiaXag_VM]WMTWa\dfeT[elY`^VOV_V[\ap`Wlt\]p_]V_ndlndV]dS]eSbedblWl|17th TCh-RUS Premier|Novikov, Stanislav|2010.04.10|A21|1/2-1/2|B +EUxg@Oph<`wp;Em]FNt_?Fvx>@gVEV_VOEV_DLumGOqi`Ymd=KpgYgngNV_fV]f]LT]fEVf_U]dbVP_tKLwv?>smCSbeFMv>:>kcLExpOWtbBJldPVel]dmwS[btVgtfEL|FSIMA Feb|Alfred, Nathan S W|2003.02.10|D03|1-0|B +FVn^@Osd?[xgEMw\[dmd;EtfEK\c@vtGWyvCK^W?WmsW_sd:?um@AkcPYqiYXtkBRjZ_OdULUmUO_UmXhnf?OvnhXfe_]ed]mdm|Champions Showdown Blitz|Anand,V|2016.11.14|C65|1/2-1/2|W +FVldEUm];E]VEVt_VP_h@OsmIYqiYahq?MqM=MxglnGWelFOu]ZclcDL]Z<;yu=Egm^TZ]EFclP?mcTcjc?N][HXng>?phahghW_f_N_ts;:sjFnlsO=[Z=KhXKo|Open A|Schulze,J|2005.10.01|B19|1-0|W +FVn^@OsdEU^UOUxgUdkdV^un=Fg]DT]c;LnfFVwS@wn?>k[RKmeDLvxIQdZKDl\EUul;EtmE?ZT?PwsP_m_V_^ULUsvBRruR[b[DMe]CK\U<`lc:Bqi`YTe=:eVBbcs:ZsWM[vwYPW_OU_h[MutUdnuduwuPlumlch`GOVebrphcN`PrtetNUgV>EM<;ve[c]ndr|TCh-SUI NatLigaA|Renet,O|2010.02.14|C97|1-0|W +EUxgDTnf;LwSFNvx@FkcBJSnNVtkFPm]T]f]V^gV?Mo_GOl\OV_VM[\ULFUMFUn\?m^?@^TKT]T@uvU]sb:;tmCSld]dkdBJxy@phDTwp;LxnO>me>DtfDNvxN]rsEMjb<`og`Ek[:;[SLRfoBJbZJSZSCKn]T]dURCsrCTulFNU[;:g_=DlkTZkm:R[JD=wvE@tmNVf^ULwtDFmfOYphHPslYHfTHNTM=MgVL^e^N]leFVnw?=c[VOxp]LefMmw\OVrjmutu=u\G@HGcuEjlVrcULFlmCSia|3rd GRENKE Chess Classic|Aronian, Levon|2015.02.04|E32e|0-1|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQqi?=uv;LtmvwlPp`PY`YLVwp@HyuDLiaGOmtU_t_X_u]LT]_>=_Z=mngVgpgBJZ\mk\TkjTDH?DCJRCIjlIQldgpdLQA?HA:LTphTYh`YSo_HP:@PG@:GP:@PG@:|FIDE GP Paris|Ponomariov, Ruslan|2013.09.27|C67r|1/2-1/2|W +FVl\@OnfEU\UOUjb?Mw\UK\n@vxBJSMDMtm:EKZ]KU]UDHUeg_eb`XbgXQ>?WO|Zuerich Chess Challenge Blitz|Anand, Viswanathan|2013.02.22|B42|0-1|B +DTl\@Oxg;LsdHPkcEU\UOUdU=UtkFVph?Hwp>@me<`vxUEgXIQqi`Wn^WNXNENkt?=tfCKun=Mwu:=iaQYxq@IpiNFrtHQtdIHjbMOqpBRnkOMkt=ApqL]tkPXaXQXf]V]d\Yah`FVqxMOxpXf|41st Olympiad Open 2014|Banikas, Hristos|2014.08.11|A35j|1-0|W +FVn^@Osd?[jb[Rxg>@k[RKw\BRtkDLmeEU\c<`qi`gugK]rsU^e^;J[R=RvxJTwvCSph:=xpIQia=Mvu?=cjRDumDFsvQYdu]kmM=MukMmjsFMkeTeleMbgWbMvtHPW<@H@ph=RuZRZdZT]g]EU\UOUwp?=]c;LtmUKpLCLcT=]Zd]\Te@m]EU]VO^p^[dkdU^u=?=t_LTog^gxg;LvotvLR`XQXaX>Ng_RLnfLFXFNFfeEeleFNe]T]d]NQ_`QL]UL\`W\ZUM?>vxZaxHaYW^KS^UYiH@>E@?ieU^eu?GE=^WuyVN=>ME|Pan American Ch U10|Vera, Deivy|2002.05.28|C60m|0-1|B +FVl\@OnfDLxgV^g]?TmeEU\ULUsd>@wn=Fvx?=dZTM]S^eueMVo_VMSMFMkc;LtkO^_WLVe]GOruCKw_VG_^U^]^LB^xwDLog^fS]fd]WA=h`dlqaXaWaT]rs]djZdvwv=>|Bundesliga 2009-10|Fruebing,S|2010.02.07|B76|1-0|W +FVl\;Lnf@OjbEU\UOUul?Mw\UK\n>@meGWsm=Fxg@qi`Yh`YPga:=nfU]unOUjbMFaPIPrvFDngCSiaT\e\]fofLVghS\m^D;aY;kvsklhVUfVhfwswlehaPY`Ye]xyGWwxW^p^]Oa`=]xh]^`^Ow|GCT Blitz YourNextMove|Kramnik,V|2016.06.19|A04|1-0|B +FVl\@OnfEU\UOUjb?Mxg>@f^<`qi`gugU_ph_Nw\CS\j;JmeJTsd=EguDLk[TCvxBRrsR[b[N]xp@Ask:btmC=u`=NwtEFmvNXdnXgn]gvtvV]vsbekneb^V]enfbjVMFf|11th Aeroflot Open A|Bocharov,D|2012.02.07|B42|1-0|W +EUxg@OnfFruHXkbX_f_T]bMFMu]MFdZG>wfCSZkEOvuOYux>L\TJRjb<=]=F=ku=Dud@=xu=@dnRZc[@PuMLEh`W`f`E>`VPQV`QPofYO`OPOn]>E_WOQ]NENWNQif^ibNFbrMN|Ch Italy (juniors) (under 20)|Vocaturo, Daniele|2006.08.24|D02p|0-1|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LuvLFkc?=tkCKrt@_WBR[R:Rvx=Fpg?:xyD>tXGOXfRbrt:R`YM;tsRSsSLSfTFTY>T?>S;BSCB]wtbrtr]rgY@Aypr]YGHPWPIPGP?@CG@GPGAHGN]dogdmqaHPpimfi`fmaYPH`WmtNctmcumtg_tkYQHQWOV_^VkdugQIONIPg^PXNUX`e]_g^g`gVNd[UVg`]U`XUMXPVUPONFOGUL[MLMG>MN|42nd TCh-ITA Masters|Vallejo Pons, Francisco|2010.04.30|B33v|1/2-1/2|B +FVl\@OnfEU\UOUjbDTxg;LwS?MsdUFulBJSn@tkCSmeW^e^FPvx=FbZ<;kb?n`=u=HXjNZdxoQY=EDENEIHovdsvnH?ne?FEZFMelsblcbsZSX`Sn`ipiMTiasmcdmsdesbg_TMnYMFYPF?aY?HP>HQedbsdlsbleQH>ZHQZuQHedbsdlsblcbsc\sm\Umw_VOVUVwfunfpVWpfWXflYQHA^Vl]n`A@XP@A`WA@PO@AW^A@QI@A^e]LVNL[e^|Masters|Borisek,J|2007.09.07|B41|0-1|B +@OxgDTsdEUnfBJph;LmeFVwpIQvx<`qi`Nf^U]dUOU^UNUgVUpwv?Fxp=UugUgpgLVvVGOVn>Gt_A=rvF?nN=Evn:=h`EFNKFngn=EiaHXaXQX_h?FngF=KMGFMEFEg^ENh;CS;B=Fk[T\BT\eleF=T]|Mitropa Cup|Ragger,M|2009.05.14|E10|0-1|B +FVn^@Osd?Tw\DLxgEMme>@vxIQqi;Ejb?>\jTKtfE?wvKfvf?Pe]=FumP_ru=u=@I=uHXgqCSqwBRumS[b[R[duX`iaO>wh>MkcMShWLTm=NO=ES]EM_Nuk]W^WOWk\GO\mN]m^IHMOWO^OHOfvONvrNUaY]lrJT\c\UTJQ[cQAl[A=T\=u[UYQUOxq\dqhdluvV^h_ckphks2vsls_WOIW`sl`Wleh`|Madrid ESP, Sity Ch 2005|Moreno Ruiz, Javier|2005.03.04|C54|0-1|W +@Om]HPph?HwpEUxgDTldT]d];LgV=KVLCLsdOEnf@rtFVmdJSkc?>]VEVZTCKumU]d]:=vuV`pgH]f]`Vgp=]m]>=]=K=ul=]|GCT Blitz Paris 2016|Topalov,V|2016.06.11|D73|1-0|W +EUxgDTph;Lm]<`gV`YVLCLwpFNl\T]u]@Osd?Fvx>@t_=K]m?=rtKJjbU\mlOU_mFOwv:;dZUKZdKUn^UdmdOdld;cd\J\t\ck\LIQ^V=mp^HXvw@HqikSLMmjh`YP^PHPMJSVJBVUxpUebZebZRbRBRjRphQYwvRJvfY`i`GW`WNWfdX`og`g|FSIM April|Brustkern, Juergen|2005.04.02|D80|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb<`nfGWqi`YucBJsm?Tp`YGcl=FmcTK`W>yxHPWPGPf^U_t_V_xp<;vtPGumGclcKotsoKml=Mp`>?iaIQ`@?@c@;B@`FOaYMNl\LVgVNVngVS`pOMpmSc\dcSmlM]sjSXlt]Ve]V]t_DL_G]o^VXpGcpHVN|Biel ACCENTUS GM|Vachier-Lagrave, Maxime|2011.07.18|B96b|1/2-1/2|W +FVn^@Osd?[ph>@wpDLm]V]u]EU][U^tXOUX=U[vt<`um?>jb[Jd^JTog`gxgT^yv@?m]GWgaHPp^W^v^LT^>?>]m;L=OIQOdLFmMPXMQF@QP>GPXCKag:?XWGFW?F?tm?Gmf@OdOGOh`OHqaHQaYQI`XT\f]KS]TBJTKJRKSIHS\RZ\UHIl\IH\THGTLGHLDHID<2|Pan American Ch U10|Thaler, Michael|2001.05.31|C60k|0-1|B +EUxgDTph;Lm]T]g]LRn^U^sdBJd^FV]c=uvu<`wn>@tmDLxg?>jb[?mXEMnf;Ee]V]g]=RXaO^]cRVd^V^ahEVrt<`u]^PwnLT]d`nvnIYcmYahVMVdlV^nwPNmsaiyx?MlnMqxyipwpNPpwqVsdVdkd>VtuPNyYHPYVNVn`:>`EVFwn@HEU>@qi;E_qEKn_FMqhO>iaHPd\M;_nK\m\U\h;:;uZ=KZbKDbB>MnddZKSZdIQvmFEyiHIiy>;usS[b[;[yt?;tlEF_h[ch_QYph;:mvMSvwFCstCEduSMudMSduceud|TCh-FRA Top 12 2011|Miton, Kamil|2011.06.03|B12q|1/2-1/2|W +FVl\@Osd?[nf>@xnEU\UOUnh@ph<`wp[dkd?>qi`Yn^YgpgUKmf=Mul:=ruMbvx=Mus>=gnMEwubMn`EFfXGOXt@AscL;tbDTe]ML]T=uluKEuMF>MLCLcC>=CBHPb[OW^WEOWPIP[R=>B:O`i`>@RD;E:@A@DM@GjZG>ZR>=RJ=<`X|Reykjavik Open|Andersson,C|2012.03.06|B51|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQwvO`vw`OwvO`vwEUtk`Owv;EnwU]dsE?smOIm\KDldCS\m]dkd<`ul=MrtDKlk?Pqi`gmgIXgXQXphMOkn:=wp=Mdm>=tdK]dl]KldK]dl]K|13th EICC|Zhigalko, Sergei|2012.03.24|C92n|1/2-1/2|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQtm?=utHX_nO`mvGWkcW_d\;Eqi`Ovd@GtkCKph_gn]SDNDVD^fweC^eS>@f^XP^UPYMDOUd^YP^XUDlPGPt_DUrw?WX^:?_M?=MVUfwvWo^oflvtl]t\]nxw`N\LNELTESjZ|Halkidiki GRE, WYCC 2003|Lilov, Valeri|2003.10.28|C18|0-1|W +EUxgDTphGOmeFVwp@Fvx=qi=DagIYmvY`i`HPgaA@skPW`WGYZRY`^h@:utF?aP?Mv[L[tQ`WhWEWrwWEwOJRpiRrxoryiEyQEWQqohqIW^:rh`MFOorxopxwphFMhgIGgGwGksDK^UGO`XOoUgKD|3rd GRENKE Chess Classic|Bacrot, Etienne|2015.02.03|E60d|1/2-1/2|W +@Om]HPph?HwpEUld>@xgCKvx[]>=BJNE]KE`JB=Epg`\BELEK]ENwu<;um;[xo\S]d[cd]c[]d[cdDckmkSkgUNUD=@H=UFNU]kC]_Cy_OH@O=@H=OH@|43rd GM 2015|Nepomniachtchi, Ian|2015.06.27|A07|1/2-1/2|B +FVl\@Osd?[nf[dkdEMxn>@nh;Lf^@vxBRjZ?>ldIQmcT?gmFYgFE\b@AgUEUS\NPe]V]mgLVvVHVuvPHd]V]bS=@gaU=\L]TaWHP|TCh-AUT 1st Bundesliga 2008-9|Bezold,M|2009.03.21|C41|1-0|W +FVn^@OxgO^me^OgVEUe]?Msd>@wn;EVEne=XmXQXwvMhqh>MogX`xo?AvyCSrvBRduS[ufAyvyRZonZbkc:>nmEFayGMyvHOvwOHwvHOvwOH|44th GM 2016|Dominguez Perez,L|2016.07.13|C42|1/2-1/2|W +EUm]<`qi`Yld@OucCKt_FNnf?M_M=Msm>@wnYnxnDTvx;Lru?^gYaxqHhgu>@p_EWulWXopL=l^DLkoXH_YhpopHp^p@pqpOXYH^V|3. Ruy Lopez|Larino Nieto, David|2009.06.17|C11|0-1|W +FVn^@Osd?Tw\DLxgEMmeIQqi>@vx]WMU^ULUtf>VfTVWT]=Dc[CK[RKRun:;kc;[nmW_]OEOdUOUv>@ImeHPeUDlrwlWU=WO=R[c|122. NY Masters|Kamsky, Gata|2004.10.19|C54|1/2-1/2|W +FVn^?TxgEMsd@Own>@me?>dZ;LldIQvxBJZTMTul=FgvCKph?fUFMg_IOng=>tm@ArvMEjbO`onV_U_`VgYi`Y>?>noVgog`g_PAIPaW^e^LVm_g`_V>VloENofJRag`gfgKSxoS[vn[bkbNcbZcZg_Z>og>NnmRZm=HX_mX`goV^mEIPEN^N=:N^:R^\on\dRZQYnmdgZBgomfoqBDqlDLPWfeltemt\me\]ef]^fo^V|XXII Open|Pastor Alonso de Prado,A|2005.08.25|C55|1-0|W +EUm]DTld@OxgFNt_;LnfOY_VGOVh=Kul@wn?>k[RKmeDLvxIQdsEUsm;EtkBRl\KDulU]\TCSTKEKlLdT|39th Olympiad Men|Vallejo Pons, Francisco|2010.09.27|C95f|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tf;EV\DLwnKD]UEKUMD;\KBKf_KSvx?>umIQ_h;Bxy:hVZ\m]\]V]GO]T:Zld@GyxGNtlNUT[HXlmULxoQYphYahaXaovaim]OWvnZj]mj:d\S\[d:@dV@pnuLTulpxldxtmltvdmvxlkEZkCxumnueCDZLnoeUMETKohLEhiW_ip_g|Corus A|Shirov, Alexei|2010.01.17|C83|1-0|B +FVmeEUxg;Lph@n^Ni^UOUZ^ipxpENm\GW^n:>\MDMd\UOe]NG]ULFjZHXpyW_h_V_wxFWnwGYrb@Ik[X`gv`hohWhbh_hxhO^we?whxwxyx>@vpY`ew^Xwe@PqaXi|TCh-SUI 2010|Flueckiger,C|2010.11.07|B07|1-0|W +EUm]DTnf@OldFNxgCKgV?Mwe>@un;Eo_O^vxGOVgrtCJl^W^gXRZnuZbkb[dvdIQXiJSwo:bokSJuvOEVE>Etl?;k;M;vs;DixEZxnJSyxS>qi>YnhY>hn@Ixo>Yp`Y>opZJlkDRklRDskDMpoJBd[M[k[be[?B;iaeuaY;=`XQXYQIQ?AQPnhPOhYOPYH=O_WNWlkW_A>PHkCHQCG_fopumpymuypumpyfn>NQYNiYP|Mitropa Cup|Pavasovic, Dusko|2009.05.15|D30s|1/2-1/2|W +EUm]DTld@Oxg;L]TBRt_FNnf?TwS>@vxOYunGOwu=K_hYhqhLBSZ:;jbKDsmCSZlRZf^U^m^TFh`;Kg]HPleD;esNVsj@A]lOW^hV^l];VuvFMnmVOmQBL]LKLruMT`WmUGUuU>@xn;EsmEKp`BRjZlcKZnhT\clIQog^gmgCSgVENhWOIrv>=f^NW`WZKV`U^l^FX_X=XWOIO`OHOwWXP^g?>v><>WOPsxqK@wnU]dsBRvxRZcZLTsbgpGWcmD=kt>H^WLpxpPWwv=Opx:>mgN=tXOXgX=LSbE=XgV^gaL[e^W^u`=Ovw>VsvOFvn]enf[LbSL]Sd?>dUFN`N>Nog^gfeVnagnlg]T]e]NnUO@G]aGPa`PQO@QY`aYX@QXPa`PQwOQY`HnpxwpqHIYXIqlqOKX`KcqjcdjZ\T|FSGM March|Hoang, Thanh Trang|2007.03.03|B00|0-1|W +FVn^@Osd?Tw\DLxgEMqiCS\c=KvxBRjb>@me;Eunnm>FgaMUfXIQXOEOrv?=aWFNxyOYWfTfmfKfvfU]cN]fN`YOofO`i`C@vx=KutE;^UNUms;LsdgvNGvlM?ngKBh`CSphBExpS[dnGNlf?Qn_Q_h_OW`XEMrt=fofPX_XMFpoFM=SLA>wu=NdHNLi_P_h_|30th ECC Open 2014|Swinkels, Robin|2014.09.19|B06l|0-1|B +FVl\@OnfHPsd?Hxg=Ff^>@wnDLvxEU\ULUm]V]dUOU^UF^UM;Lwv@I>=[v=]g^]^_oxyvm\noWngWEk[mXqaX=aY=X^vPYgYIHYnXOvuEWngWXphXVg`H?jZQY`_VduwdLyq|7th Kings Tournament|Ponomariov, Ruslan|2013.10.14|B40e|0-1|B +FVn^@OxgO^me^OgVDTwnEUt_?M_h>@vx?>VgMhqh=Kkc;Lwv<`smKDld:=rtU]d]T]gX`WnwDEm^O^e^WPweLVXgVgpgGOe\PGueGN\SEGS>G>tDIY^VOWDCYaC[>P[]=]e]ah]=@G=a|4. Young Stars of the World|Hovhannisyan, Robert|2006.05.13|C42|0-1|W +FVn^@Osd?[jb[RphEU^U<`wn`nxnRdndOUugDLvx>@kc=OgOUOwv;Eme?>tk>Nvn:>rvE?bZIQZROEd^LTxwGOqaNJo_JR^M>NkdRjMCNKCRV_h_?PnoPavFE?_WKMR\MEF>BR>|USA Ch 2016|Xiong, Jeffery|2016.04.21|C70|1/2-1/2|B +FVl\@OnfEU\UOUjb;Lul?Mxg>@w\UK\j=Fme@AsdGWvxgm>Pk[W_xy_fofV^U_M_f_^elT:>mgKZTXPXgXIQXgZdj\EWtmd^ru^M\U>nwvW^UL^LvnenuvLgpg?>ypM\mtA@po@Gvn>nonGNneNUbZ\MtkHPk]BJZRQY]oMWoBWaB;DLenaWneW]qi]g;BgvenvlBTU^|It Open|Delchev, Aleksander|2006.07.12|B43|1-0|B +FVn^@Osd?[jb[Rxg>@wnEMk[RKvx;LmeBJdsJR[SL]g]K]ld]KsmMUbZU^e^=Ful@vlBRlbGWbSJBDC]U>EUME@wp?>n^[dmdEMun;gvCS\SJSvl:Rl[LF[UNU^US[d[;[nmRSjZS;ZR[cmlcCwsFVU>=U^=:^e:bembf]lf>lvpwve>nmunjONjretrsNvwpvnsKuvKPnopytnh`n_PXvw`YogXxwo|FSGM February|Muir,A|2006.02.11|B31|1-0|W +FVnfEUm];EwnDLl\U\n\EK\cV]f]=Fxn@hW?>tXF=wv>NqaHPvNENWf@HruOUdUKUfUNU|Mitropa Cup Men|Borisek, Jure|2006.09.14|C03|1/2-1/2|B +EUxgDTph;Lm]T]g]FV]LCLwp@Ol\:;vx?F\ULUuZ@tXENsd;krsklwtltstIQXmF[jZ=:B:?:tr[RnfOEdURmUF@?p:?FZRmdrbd[br[drbd[br[TrsN\|76th Tata Steel Masters|So, Wesley|2014.01.26|D85s|1/2-1/2|B +FVnfEMm];Exg@OsdDLwe?Fvx>@jZ?>f^V]g]ETwvF?tXIQXaHP]cTclc?Hc[BR[SVphPXxwQYvVOVtvVMvfUNwp;[luYafeMTedT]dfNUpwGWulW_fe]Ved[;wvahoh;AvoV]de]Th_X_lu_gugAignieneT[ofUcfmLTmtcZtkZSeWT\kj\djsRZsjZbjrS\Ws[TslT]lu]fulfmlZ\n|5th Final Masters|Carlsen, Magnus|2012.10.08|C00v|1-0|B +FVl\@Ome?[tm[msmDTph;Lwp>@uZ=Krs?=xgEU\UOUvxGOjb@tk?>sdUdldBR[SL]xg@dZ?=qi@wnEMqi;Evx=D_qO^m^C^neDCjZEOe^O^ueBJ]UGWgm^memKSwvS[d\[cvn:;f^C[mtW^n^H]q_[C^nCE_fFVUNENtm?>rt]HnvNOtdOGdeG\eM\lmlclvt;kMmT\mlkltl\dxw>^ZR^Z|19th TCh-RUS 2012|Svidler, Peter|2012.04.15|A12|1/2-1/2|B +DTnf;Lm]EUwnT]f]?Z[K[d[:?vxBJSZCSZb=KgV@OtX[eXOeVk[TowoHOnfVeon@ul=FmeDTph;LwpUOsd@kc;@\UOUw\UdkdDTvx;Lm]=DtbCK]T?=unLR\JKTJ<:@vxDTld=DsbBJo_;LblCSxyT\enO^lfLFngphF<`oOWo^U^gp;`WZbd[bknk;[kd[ZwsZbdtbesKGYKMeutuYuowunMUnfi`\dWO?OU=@G=EGPwxPQEUHPxhftyptm|Masters|Barletta,M|2007.09.02|C42|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLm]V]g]O^d^>^ldEMne^>t_=OuYHPYQ:>xwO_M_EV_V>VrsR[b[V>]c>=enKDcTCSsuDVTeUcutVMevM_tscNvgNUg]_Vsu=:ngUgpgV]u]:b]eH?efGWg_brwprtpg?HghHQhpQHphHOhptlpgIQialtgpOGpqGHfeHGefGOqptlpglmfVmeVfeUf>OG>fLT[TUTghTDogDTfVTd|3rd GRENKE Chess Classic|Naiditsch, Arkadij|2015.02.07|C89i|1/2-1/2|B +@OmeEUo_@nfWIsd;EunDLkcCSjZ=KtkBJqiLTduT\ZSJSuoOYxq\eleETk]KCgVYOnkS[wt:rtr?:r:C:klOEVETEf^FO]OEOlT:?TS@Ao`O`i`U^e^GO^VOVSV?@wnIQXOHOvxLFsmOHf^DLru=KelU^m^f>=>c]BJltKSuv>vtvLT]lDMv>@I>n<`nfQYphMUjbHQo_UjftjUew`glfU^xoT\tl^LwpgpfpQ?_W?TovPXlnI@qaLMngX`g_MeWOesvnsenvTM_X@?XH?>H@>E@GE=G@=D@GDKGNKRNnMhvwespvsWwxhavlaOl[`hbZYaZSai|Corus A|Tiviakov,S|2010.01.24|B01|1-0|W +FVn^@Osd?[jb[Rxg>@k[RKw\DLmeEU\c^ULUdS=Fl\BJSdU]dnIQwvKDnhCKcZ:;ZL><[SJRbZDMqiF=kbMDrj@IjnHXgVEVnVDVvV=Dun<@VNGNnN;?bFD_FM_mL^IAMVmvhw|5th Final Masters|Karjakin,Sergey|2012.09.25|C78|0-1|B +FVn^@OxgO^me^OgV;LVLELwn@]TMTjb?=k[TMtkO`qi`VenBJbZ:;gVLV[SV\n\U\SKDKm\Mqxy=u\KuwrwqDK<;@k[RKw\DLmeEU\ctmKDrs:Nl\]dmdI@whOEhWM?dmT\vu=>ndEOe]V]W]N^d^>^mvKZg^O^]nBJst^MndZkuUketu<>vmHXmf>NxwCSdn?HntetftM^uvNMUM^MvF|Zuerich Chess Challenge|Anand, Viswanathan|2013.02.27|C78k|0-1|B +EUxgDTph;Lm]@Owp<`gV`WVLCLl\T]u]FN\ULUvx?F]Z=EZE>EsdA@ldEMxg;EvxFVtXIQXO=OjZBRsbOF]VMVb\ETgmV^ul?>nf=WF@IFU_Uumdm^UIQwum_uvQXvN_MypXWNQ=@pw@hwnMFUMFXQAhiA?WVMEiqnvqivniqnvqivniq|FIDE World Blitz 2014|Anand, Viswanathan|2014.06.19|A07|1/2-1/2|W +EUxgDTl\U]ph;Lwp@OvxHPnf?Hf]T]me>@wvt_OY_tL>ag_hgXI@mv>L[d]diaQXaXD_pLJLv>@I|Zurich CC Rapid 2014|Nakamura, Hikaru|2014.02.04|A62|1-0|W +FVl\@OnfEU\UOUsd;Ljb@wnGWn\U_\N_Nme@AvxHXk[X`gm=adUW_l\?Wf_L]wvDLmwLU\UV_UC:=tkMVC^aOxyNX^C_gphXiwfioyxoe|4th Young Stars of the World|Popov,Iv RUS|2006.05.16|B48|1-0|W +FVl\@OsdEU\UOUn^U[me;Ljb[JwnJTxg@[SL]gVBJnuJSdSDLS]=]sCFbVL]etfefofbtLF@AFU:rCc?NE>AEN|Tromso NOR, FIDE World Cup 2013|Akash, G1|2013.08.12|B32|1/2-1/2|W +@OxgHPk[?HtkEUnf>@wn;El\U\n\EK\nOUkH@H[S=MvxFVjZ<`meBJSJ:Je]`gng?:smV]m^M[rs[ZueJRstKEf]DLts:B^MZbebRbgULUMSCKSBbBsSEOSKBZwuO^Kc^MphMWcSW]SU]nxpndu]dU]ZIYZRUFpgHOg_OHogHORSOHqaHOh`Y`g`OHSRFLRULFUMF@_X@QaYQ@YPGOXY|FSGM April|Kahn,E|2007.04.12|A46|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQmeDLdsEUsm<`tk;El\BRwv=FucU^e^`gngR[b[LTr:>:[SE?mwFDvr:rkr|4. Young Stars of the World|Safarli, Eltaj|2006.05.09|C95|1/2-1/2|W +EUm]DTldFNxg?MjbCKtX@Fnf;Lsm>@we=DXaFPahJeLVgVDV^TVvrv>vxq]dedvuog=>dluvleU:bZvneE:gqigpian^T^>^h`GWah^`hop^ZR`pof@IENphf_hg_VgbNKPXRJX`KMbeMT`hJBeUTU^UVUhpB:2px2UVx`:yIPyLPXLC`^|VI World Blitz|Eljanov,P|2010.11.16|D10|1-0|W +FVl\@OnfEU\UOUjb;Lme?Mxn>@ndLFwnDLkcGWtk@SLFLmeEU^VGOVO=OtmCKrsvhO=dnNV_VLVgV>Vw?=?sw?>ndU]duVnwoIQkcPXxwnVukKSwx>Yqi@IjZBJZSJSc[T[m[Y>kuQYow>LhoYawvIPvVHVonV;ld;BxyL@xgDTldCKgVEUvxH@>DJ\D:\U:DU\owkswpskfoksD>sk>M\Jn^k[^V[cM^JC^MCUM>UC>MCUM^UCpqCL^XLCqiC@wnEMk[RKmeBJvx;Ltfv>E>kcKTgnGOngTSgu>GugCKckSZguZSugSZgu[clcZ[ugKSgnGUnuULunLpnupUunUcngcGgLGYLEYGEW[RkbS[bkRKklKDlkGUWPUNP^DKklKRlkRS^PSTP^TK^PKDP^DE^PEFPYF?YP?HPYNGYgGNgYNGYgQYklHQlkYahaGYgUYnU^nuktu`tkQYkc`Nc[OW^CYa[Sa`SL`_LMN@C<@I|76th Tata Steel Masters|Dominguez Perez, Leinier|2014.01.15|C84f|1-0|B +EUxg@\RLRSR;:R[ENtmCKwtFT[\NF\l:Bk[TMbZDTZRKR[TMDTL?:lTFNrsDMT\BDsCRZm[NF[MFM\TMTtTZbCDbjTtjr2tr:rpwWigmOUDCrtLD@ICstsmsiNsmUDwpGOp^I@xpHX^L@Gm^OW^TNULU|6. World Blitz|Ponomariov, Ruslan|2010.11.18|A45|1/2-1/2|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQtm?=utHX_nO`mvGWo_^gpg`fvmfwywW_qa@Gwx=@kc;EtkEVrwndELdULU\UGOl\OWaXQXkl@AwoAixv>?vwVPmdPad]?>]B>:B]:j]kigogagwgX`gw`h\Thpwu_gUMDMTMgoMEj:E=2:=u=ow2k]W^]Bpx2Bxwx=>^]>=]V=>V]>=]T=rjldjs>VCS|6. LCC Super Rapidplay Open 2014|McShane, Luke J|2014.12.07|C67|1-0|W +FVnfEUm];Lsd@Oxg?MdS<`SMDMwn>@vxV^gm`nun?>kcL[jb=Rms[LbZLFtmRDl\:^dO^`xy`XOXGOX_HX_hIYtx@GqaEihqiarjBRjmCKxha^hx^axh<>m]>^]mX`hxOW|TCh-SUI 2010|Hug,W|2010.08.29|C10|1-0|W +FVnfEUm];EwnDLl\U\n\?Mxg=F]VEVgVMVsm@Ovx>@qit_GOulHPePIP_VOVlP@APQA@QP@A|Trophee CCAS GpA|Ivanchuk, Vassily|2008.10.28|C03|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBRtmDLvx;EdZKDl\?>wvE?qi?NnwIQZdOI[SIXgXQXwnDKmfK]rtN_n`]TfTMTvf<`u`>NtuNMxqMQus=Ffh_Ndn:=bZQa`gN_SLCLscHPqx@Hgf=AcKFOh`aIn_V_^VOWfnA>KL>VnkHQogVNLKNKkKWV|12th Karpov Int|Jakovenko,D|2011.10.04|C84|1-0|W +FVn^?TxgEMld@Own>@meDLvxTKtXIQXa;Esm?>m\KD\fE?gm?PaO=On`P_`<:=u=@G=;BE;K^fxwEmagmowvTevufn|Madrid Ch|Barez Menendez, Hector|2005.03.11|C24|1-0|W +FVn^@Osd?[jb[Rxg>@k[RKw\BRrsDLmeEU\cR[b[=Mvx<`^ULUqi`Yp`YPga;LtXL]XO]cOH@HscGWe]V^dSMFaWPW`WHAch?Wxy:?wxWgumFamnK=l\=X\Ugon`a`h`X_xv^fSdIY`pogd^giyxia^X?WXN_QUMWUvwUMwOQHpHMNONAHNfHOfVa`xq`XVTX`TS`]|1st GRENKE Chess Classic|Adams, Michael|2013.02.10|C78m|1/2-1/2|B +FVn^@Osd?[xgEMme>@tmDLph?>wp;Evx[RgaE?qiIQxqRDug?NaWNXgnMUrv=hwOIqhuMiaI?ld?Pn\P_wfMefWemWf=e`XKfofefXPmp|Mitropa Cup Men|Jenni,F|2007.05.08|C66|1-0|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tf;EV\DLwnKD]UEKUMD;\KBKf_KSvxmtOEbZSZrZ:ZdZGWo_^gng;BZTBT[TX`tQ=OhaOGaF`gpgGHQf@Iux>:xhHVfVEVFOVGME:jhiPYE=2G=O=IPyxW_=DjlDMl\iaYga_\_|42nd Olympiad 2016|Harikrishna, Pendyala|2016.09.09|C83|1/2-1/2|B +FVl\@Osd;LnfEU\UOUul@sdF[jb[dkdDTum;L]TLRn]U_f_:qa>DaYPYlIfgIPghPYDNd\NTZRKR\T|42nd Olympiad 2016|Navara, David|2016.09.05|B12u|1/2-1/2|W +EUxgDTnf;LwS@OkcFNtk?Mvx>@m]T]f]O^smGWl\LF\TM_ph=Rh_RSgVBRog^OmsS>sd=wx=akt?OmvaivoCSdnOQxXYOtm@GmvQPnxiQvmS[VvO@jZ[bvr@FrbESypFLqaG@xiPObrOGpqQOmdGCaYSJrx@Adr:@ofC[XpJPhYapn>GnpaOxuGYue@;eJY>JnHPioCchicbnvAHvt;c|78th Tata Steel GpA|Adams, Michael|2016.01.18|E52|1-0|W +DTxgFNph@Owp?Fvx>@m]T]g]BJkc=Dl\;LtkEMsddnOE]d;Dn]EOdbD;og>EpwE>xp;DtlDF]cNVlmMU\UF[b[?[mo>ZueOEg_GOwn[vow@n^OIh`LFmwFPwhBJvxCS\SJShYGOo_V_Y_P_t_:bunIX^VMVwuE>_fbJfT?GiaXIpCJRn^I?^[R:C:>:T?G?ue:BxpBCpq?:jb:<[FCKrxKoxpo_qx_txqt_qxN`eE_fxqfiqxifxq|Showdown Basque 2015|Nakamura, Hikaru|2015.11.12|B30m|1/2-1/2|W +@Om]HPxg?HldEMtX;EsmIQXaFVnf>@w\=FvxCKjZBJ\U:BULE;aOHOLUDL]VMVU^OHucBC^e?=clKSZSJSk[@wn?>k[RKmeDLvxIQwvEUtk;EnwBRqiKD^ULUdSD;l\U]gm:J\TR[b[OUm^JrurU[vt>Nkb[L^M;MSMEOrkNFwnOUngU_kKFDtu@vx:;jZBJmeCSZSJSdnU]h`t_;VnoX=WOHPrt=?pi<=o_=UipL=_h=Nqa?=woIQolPXxq@Ih`VWaXNX^hWOlD=;qyU=DC;Vh^O_^XQX`h_w|3rd NH|Agdestein, Simen|2008.08.24|A27|1/2-1/2|B +EUxgDTnfHPm]@O]T?Hl\>@sdU\u=?=w\;ETLCLtmEK\nLTvx@me<`un;Eqi`Ytm?>jb[R\jE?wv?NjN>NruIQxyN>yxRDp`O`i`Y`xy=Oyp>NvxOPpwNOxhMUwpOghgU]dU`gpgPY|Masters|Stock,L|2007.09.03|C65|1-0|W +EUxgDTph;Lm]@Owp?M<=@ld=DsmEWkc?=tkO^gaWEagT]d]^dkdDdrtd[gv[MveCKmg;LumGOe_FNqaLFwu:nwIQwi>GmlNVXOHO]VOVgVMV_nVYn]YalDaiDFi`xqBRF=@H=K`aqxa`xq`aqxa`xq|7th Kings Tournament|Nisipeanu, Liviu-Dieter|2013.10.12|E08j|1/2-1/2|W +FVl\@Osd?[ph>@wp?>xgV^g];L]l[dmdLVkcVgvwgVtXEMp^O^X=^d=DVl]:=nf\dogdlut=]f]Vnc[ip|Open A|Solodovnichenko, Yuri|2005.10.04|B31|1-0|B +FVnfEUm]V]f]DTxg;Lwn?Mvx@FsdT]g]>@tXIQXf?>ngL]f]FWphNjbNVb[R[ueBJrZ[Kwu:>Z_Vvuv>vxpKLegW]gL]L_\HXd^LV\<@H^MX`MWHOWfQYqivskcOP<@PI@>GO>FIPFCOWCKPIfWVgi`Y`KQI@QP@GP`gvpivl`ZscZJcgWMGHM^|10th EICC|Pap,M|2009.03.11|C01|0-1|B +EUxgDTnf;LwS=Dm]T]f]<`qi`gugFNvxBJt_?MSLCL_MDMl\@Fsm>@gdJRwt?;tlRZrtIQmgFPdfU\gVPV]VMef_:Rl\;k\ZRZ_ZkoZLojxyjotvHXyqemvsm_qxojLC_VswV]xqjo|Tashkent FIDE GP 2014|Gelfand, Boris|2014.10.28|E35|1-0|W +FVn^@Osd?[jb[Rxg>@k[RKw\BRrsDLmeR[b[EMqi?>vxIQ\c;EdnE?nhOIe]=OtfKD]U?PhYOFl\IXgXQXogP_Y_X_foHPwv@HueGWULCLsr:;[SDKoK;Kr:W^e^FX^nLSnoKC\SE>omX=xqCScZSKZ>=>m_V_v>HO>nMUqxKNnmOVxoU]onVUnuPXmj]ejRU]RXNnia]faYnjXVfoYQopQIjrumrymepgVFgoe^_gFGyaG_aI|World Cup|Dominguez Perez,L|2009.11.26|C78|0-1|B +FVl\@Ome?[sm>@xg?>jb[?k[BR[SEU\U=Un^USm\<`tm;Lwn:=mX`gpg?FrsSJucCK\VLVe]J:]VO^XF^mcf>FsuFEyx:Lg_Ll_Wm\xH@HfXH?X=E=u=?F|Open A|Ftacnik,L|2005.10.03|B51|1-0|W +FVn^@OxgO^me^OgV;LVLELwnxo=Uld]KogUefeX`ghYah`aitv>@`i@AihKkvwA@hgkSp`|World Cup|Gashimov, Vugar|2009.12.02|C42m|0-1|W +FVnfEUkc?Mtk@Om]V^l\DLxn>@um=Fnd?=jZBRkb;JbMFM\ULUdSMKsdtkNclWIYstCKnwcUtuUgwngnmnGcnmV\kO\mum>?WP=Ef^cSOXMT|40th TCh-GRE 2012|Macieja,B|2012.07.03|B48|1-0|W +FVl\@OmeEU\UOUxg;Lsd<`nf=Ejb>`X>YfpYGp_^fR[LK[dKSdeS[XPG@_Yfnen[dYO@NPHd]nmCSH@4N@O@S[@F[cFU]UmdUVdc|Corus A|Nakamura, Hikaru|2010.01.30|B67e|1/2-1/2|W +EUnfDTwS@vx^VGWVO>nvn?Op^JRnpEGwgO_^PGOP^]fg_f_p`_VypOX`XQXqiAH|75th Tata Steel GpA|Carlsen, Magnus|2013.01.12|A10|1/2-1/2|B +FVl\@OnfDLm]V]u]EUxg;J]u<`smJTul`YwnYPldO^dV?F\ULUm^U^nS>?g]:@rtCKun:BwuBEqa@SMDMkc?WtbWgyxEOvaNO>=ON=>NO>=U[]UOF=@[j@HF>H@>E@HE>H@>G@HG?HXKck]cSXVj[UMSV]V[UV]?>ml>E]TgnlknSkcELT]LMclMNlmNWmvW`vo`i]TUOTKO`ovipvmpgKBSJBK`qmdqwd]wfKTfW]VWQTKQ`VU^fKf`fUVJwV]f`]UgfUNf^NM^]MNweNMe^MN]TNFTLFN^PNFLUFE`OEFOIFEPWEFWNF=UM=>NU>=IO=@un;Em\KD\fETelCKvx@vxIQldTKnh?>wv;Ee]E?]VO`vn`VgVMVtf:;nm=Dhw?NcN=rt=mum;=mv[dvdK]dLDLtL]kwmkbm\N\L\b[xq=efTecT[c[\[R[ZR[cRJckJBks2B:2|3rd GRENKE Chess Classic|Anand, Viswanathan|2015.02.02|C54f|1/2-1/2|W +FVl\;Lsd?[dU@Onf>@jb[MUd?>meM?xgEU\UOUulUdkdLRd\=trOkrk^gpgQMihGOvwCKwxMVkSVrxpLV\TrbTKBKaYbFSsFEs^EL^a=mnJLlai@GimMqiEF>PIA`hKSpwMLwpLMpwDLheMDPhD_`T\e]Vvwp>fhafo|HZ Open|Tiviakov, Sergei|2007.08.09|B23m|1-0|B +FVnfEUm];LwSV^xnBJSLCLl\IYuZ@U^aitmEW^gOPn_M_g_:;p`WNmd?>vtNj_WPW`W;SWOHPyxSWumjUxhUp]U>=f^p^hiWUif^WmU|TCh-RUS Premier|Savchenko, Boris|2011.04.14|C18g|1/2-1/2|W +EUxgDTph;Lm]@Owp^]>NahNJhVJ:]^:>iqnvqjvw^_wvjqvuqA>AVA|Vugar Gashimov Mem 2015|Mamedyarov, Shakriyar|2015.04.17|D92|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBR[SEMme;EtfKfofEKuvMUgmU]du]fuf=]voKZl\=wo:B\TZkctBCtcCSf\kele=ecRQ`onV^vtPGnlSTxpGUqi`ORCT\l\U\t\OYh`empwYhwvmnvuW_CM_g\Lnj|20th TCh-RUS 2013|Ivanchuk, Vassily|2013.04.11|C88k|1-0|W +FVl\@OnfEU\UOUjb;Lk[?MucUOcl>@meBR[SLBsd@xiBR[SLVvxDTtXVGX_M_i_HX_iCKo_X`iXGMd\IQqaQX_XOY\UYhumRZ|4. Zurich CC Rapid|Anand, Viswanathan|2015.02.19|B06|1-0|B +FVn^@Osd?Tw\CS\SDLSZEUme=KumU^ZcBRdZKBZTBTxn@wv^ele?=md;EtfTdndJerueSuMRZclE?M=:=dZOUZTUfvf=mfd?PphPFjZFUZSUdSKmlTe|43rd GM 2015|Nisipeanu, Liviu-Dieter|2015.07.05|C52|0-1|B +FVnfEUm]V^l\DLsd@Ouc?F\ULUxiFMtmMDp`IQi_D_f_>@`XQX_X;LXOL]OH?>cU<`wp]lvwlrd^`nwx>^p^=U^U:=UG|6. World Blitz|Movsesian, Sergei|2010.11.17|C02|1-0|B +EUxgDTl\U]k[T[jb[bph;Ltb@OmeFVb?>?smHPwp?HvxIQuZA>wsV^e^O^m^>^sk=FZcBRxw:Jgv^NpiNfof@smBRgXOEo_IQX^GW^oFVmgV_t_ETqaTNoiN_i_@Iwv?>um@m];EsmDLkcNV]VEVtk?>wv=kOHOvuMFu=F=\@wn?>k[RKvxBRtkEMme;LdZKB[SLFl\Fwx:>QHFH`Y|Gibtelecom Masters|Adams, Michael|2007.01.24|C88o|0-1|W +EUnfDTwS;Em]=RsdFNxg@OvxBJSeT\enCSjb@kd^dtmO^md^dwr:LcTLSemDLTeSeme?:r:L:_W:rxorjWNGNohj\em\DhiHPmeD\em@Hmo\@jZFVf^U]dsO>qa>OsmCKm\=DaYBJYPGPldKSZSJSr:?:\bS[b\[dkdIQnlPXvxO>ph>M\MDMlc@IxpIPwy:?cuEOd]T]uZ?@bS?>wnEKgm;tsJSnSLdvx;@wp;Lvx?>dS<`og`NSM=MwoN\t_M]pwOUn^U_e_]uru\jwS>=u=L=_eDLSZ=Ne[j\ol\SZSLSxo@?[UBJof:=g_=E_WN=l@vxBRf^UK\jETtf=Fsd<`qi`Yp`YPdnKEnh?>iaIQaYPI`X@AXQHQfQ>@xpTNjNFNgXNOug@XgOEOQXOYhY:@YO@XpgXPOIAIwyIHrxMTxPGPbZ|Zurich CC Blitz 2014|Carlsen, Magnus|2014.01.29|B42|0-1|B +FVm]V]u];L]eEUxg@OldO^sm^TelBRmcT^nf?Mcm@vtRZd\ZbkcL[m[M[\U:RtsRTln=Ug]Tde^W^utDTtd[d]Sd[ytIQnlUWSMWoM^of^T[TlTf^Tl^VphCSc[@AtuVFlTF^st^gumgOtuOrunrw|III Ruy Lopez|Granda Zuniga,J|2009.06.15|B01|1-0|W +FVn^@Osd?Tw\DLxgEMjbTKvx;Eme>@wv?>tfE?e]<`]VMVu=:=fKBKgX>Fqi`Yp`YPXgKS\jIQgaPIog=mvnFExoO>ovmndn>DaW?Nia@?ruEuvuIW`WNTum?Fk[TEntD>l\>M\TM>tcCKTKEKcR>MRLFOmeHPg_KE_VEVLVOVWPGPjUPXaXQXULX`bZSZLZM^ef^dZcdUcUVUf_U\_`\[|Zurich SUI, 4. CC Rapid|Aronian, Levon|2015.02.19|C54|1/2-1/2|W +FVkcEUtk?Mxg;Enf@Om]V^gm>@l\DLkbMbsbO>wnGWvxEOc[>D[S=FucVh?GwvIYogYahoX`g_`hqhGHmwiWvnW^oqahwhE`xo|33rd Annual Eastern Open|Ivanov,AV USA|2006.12.28|C05|1-0|W +EUm]DTld@Oxg;Lnf<`qi`Y]TFVp`YPk[O^iaIY`X?F[SLRgV>@wpPWuY=DXPGPVPFOvxDEsm^dtb?>P_>VmgV^gX^_f_HPYQdnxyn_XIOrQ_rHIXR\wu\bpU@ATLCLSLEFLD:@gVEUk[RKm]U^tf;EV\DL]UKf\fLUdUEVwnGrsGPmvNE[SJSZSA;ndFNSKE@wn?>k[RKvxIQtkEMm]V]g];EogDLxyKDumEKbZBR[R:RdSRZSD=D]cZrwrKEp`OIruMU^ULUnS>FmUE?U\D\S\FD\eIXyprv>=NE=EvFE=FHLUTF=>FO?FIlph_U^_^|8th Tal Memorial|Anand, Viswanathan|2013.06.13|C88h|0-1|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQqi?=uv;L_nCKt_OU_q@sm;EjbEKrtBR_qO>d\K\m\U\t\Mvx=Kog^gng:>wvK=mo=XdsM^g^W^on?gxygOsmcUvw>?wO?OtwOwmwIQnoU\wh\UhnCSo_X_n_@GyxHX_nQYphYaxoU\nd\edje\j[\NopNE[jEWjdGNpqNMqpWIh`MDpoDKonLTnmKL]ULKUMKLdSIPSdLMdZPGZdMVmvG\dZVMZd\eduMVuoeSvmVUmdSwk[T[d[wnbZnw[RULR[LU[dwndmnwmdwJd[Jw[RULR[LU|Millionaire TB A 2015|Shimanov, Aleksandr|2015.10.11|B12|1/2-1/2|W +FVl\@Osd?[nf[dkdCKmeV^e]EMxn>@nhDTwn;Lvx?>ogVtmJw_>MrwGWmv=FhY@tm?>phDLwp;Evx[RgaE?xyIQo_V_h_MU^VO`agU]d^Rmum`f^M>Ng]NMVMfwrw=Mld]gaPgxENmfNGfhGjd\jcpiMOxg>fhofeoBc\BC\Uip@IC;ec;DckgvkpvpPawxap|GCT Blitz Paris 2016|Kramnik,V|2016.06.11|C65|1-0|W +FVn^@Osd?[xgEMw\[dmd;Evx=FwvETgm@f^IQSE=Edn;Lld:=ulCKnhGWwvW_hwPXqiU]vuFPtmPVwqEFZRQYgVLVd]T]RKBKlcFOrJX`JK=>og@Ai`Y`KS`hq`V`g`NVutOa|FIDE World Blitz 2014|Eljanov, Pavel|2014.06.20|A40|1-0|B +EUxgDTph;Lm]@OwpT]g]LRvxFV]c@dVU[ldGOV]Jnwvn`sb`]d]E]vNFTNn]EpiOWb\HPjZE]\V?=iw]uru=uxp@HVgHOnmumgm[lw\T[mglvgv[vpwv[wp[vpwv[wpOV|FIDE GP Paris|Wang, Hao|2013.09.23|D90|1/2-1/2|B +FVl\@OnfEU\UOUsd;LxgU[me@us=Mnu:=km@IbZHQucGWfQIQ^WPWc\DNxyW_svNXd^MPog]WmnX^n^?>wxWfphPOh`Y`g`QH`XOP^f_fvfV^f_^e_DHAx`=]|19th TCh-RUS 2012|Tregubov,P|2012.04.13|B33|1-0|W +EUxgDTl\@O\UOUnf;LjbBJul<`wn:@sm`YvxYPrtGOls=Em^L;wu?=um^h;Eun==nwCStuDLst=DtmNVutDKwnPGmvF?gmGNngLDg^HPts?HvnUFstKM^gMKh^FUqaIYnvUFe]T]lD@tm?>vtE?g^U^xi=DuwMqclFtsBRjZS[duOI]UIXmd[dlqXgqlLUldH@cU?Hdl:@w\CS\SNUvxjZT\]LELcCO`sc`Vdn\`nhIYqi`XmdYadVHVhnXOvu:;n];CcC>;CB;kBRV]f]klRvl\ZR\]u]O]RJ]Zv>@H>VHIVDZJDGIQG?QI?GIQG?|3rd Norway Chess 2015|Hammer, Jon Ludvig|2015.06.22|A13s|1/2-1/2|W +FVl\@OnfEU\UOUjbDTxg?MsdUdmd;Lf^=Fw\<`qi`YtXGOXf>ZcHXgmENUELrs|VI World Blitz|Savchenko,B|2010.11.16|B41|0-1|B +EUxgDTph;Lm]<`gVIYwpFNl\T]VLCLu]=O]O@Osd:;dZ?[tm>Frt[mvm;[kcU\t\[\c\A=mfNVpL`NLgYaytaiZTNWTC=]\T]ZCMWNtsOUfmFEskHXnfGOguZRMCRbucUDCMNcjcX`MWDNmdNXd[brklXgTLEDWFru[TgmFUDnw>vtvU_lTCKTSDLvt=Mc]WE]c<;S\EN\lOWtvYavf;DldNcdcMOck_NfVWPV^PW^`aipiOGkmN_mf|44th GM 2016|Vachier Lagrave,M|2016.07.09|B90|0-1|W +@OxgHPph?Hwp>@vxDTmeCKn^ldKSe]T]d]BJmcEMtm>=VNGWrtDKqaIYxq=U]po]eofck>=knf_no_fogf]em=MOF]Vge|FIDE World Blitz 2014|Fier, Alexandr|2014.06.19|A05|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBR[SEUmeU^e^;En\RZunK]tkEK\j<`qi`gng=MwvMTrsIQdUKU^U]kskCKgfTMl\OEjsV^fdGWkn>FogMhvw:>dvhMg^W^vdFVnfETslMPfhVXhXPXd]^fwvfnxoT^l^X_ox>^]e^fem_VxofbmnV_oxbdnN@Ivwdtwt_txqt_qyZbNn_tyqts|19th European Teams|Nyback, Tomi|2013.11.08|C88k|1-0|W +EUxgDTsd@OnfBJme;LphHPwp?Hvx>@wvU]f]T]dsE>v>@G>nCSruGOp^d\^C\ZueS[nmOVxp_omo]opoZjovJRvuRZqi[cutV_ts_XCLXae]aiLZPXZcjpcNX`]UiaNGpqstahtuhgGYg_uv|5. Open|Illescas Cordoba, Miguel|2006.04.04|A50|1/2-1/2|B +EUxgDTnf@Om];Lwn@p`WeVe?>ZROEf^NVg_GO]VOVrZV_e_MTxpU]wvEV_UFaUDV`t_>?ug`fvf?_gh]fha_aDUfnZra^rv^VU_Tf_efmeVmvpgvh|3rd Sinquefield Cup 2015|Aronian, Levon|2015.08.23|D37j|1-0|B +FVn^@Osd?[jb[Rxg>@wnEMk[RKvx;LmeBJdZKBtfBfofCSZdueLBgm=F]U>;mcBnwIQphaYenYPwpKZdZO^Zk^hnuV^g_GWl\hY_aYOxqPXa_OYqyY_o_XhunHX_wW_nvhvwv_gpwgovn?gRcEicm>?\SJSwigiypia|2nd Sinquefield Cup 2014|Aronian, Levon|2014.08.30|C84f|1-0|W +@OphFVmeDTtXEUXO=On^U]sm;Lqa?Mxg>@aYMDwnDRvwCSjZSZrZRmumBRwp:;kc;[ZbU[|Tashkent FIDE GP 2014|Jakovenko, Dmitry|2014.11.02|A04|0-1|B +FVldEUm]V^t_;EnfEKsm@Ojb?Fd\U\w\K\m\OUxn>@vxsdU\wgMUqiJNxqCStvXaqxaFmoFMomMFmoFMomMF|12th Karpov Int|Motylev, Alexander|2011.10.12|B12l|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tf;EV\DLwnKD]ULUdUOUuUEOU=?=vxO`qiDqxy`f\fqVru@xgEKsdKUdUOUjbDLelTKweIQvx<`eW`gpg=akcUFxy:=tkKDg_FWlW=mkVDV_VHPW_a_f_?=rv=]_WPWc[@?VN]^v^W^NG?Gwvmev^ebypBR[RbRpgRU|Masters|Tiviakov, Sergei|2007.09.04|C07s|1-0|B +FVnfEUm];LwSV^xnBJSLCLl\=Xvx?Mo_^gwg<`goXapha=sd@Ouw>@\TMFqi`n_F=olO^d^>^ld=XdbJ@k[RKtkEMwnBRvx?>me;EdZKBl\DLulE?\T?PwvP_nw<`gmOEm\MTZTBT[T>Nvf=Fe]V]k]NPfhIY\f:>f`Y`rvEVldFXdRPQRdXYqi>NdfNO|7. Tal Mem Blitz|Tomashevsky, Evgeny|2012.06.07|C88|0-1|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?Pld?gvDRmcRvrvEKcmBJSJCJvs=EwtPAkrELscAGtsLZpwGMst<;we;Cts?;skZ>ls>LmgKEgmEKmgKEgmCckc;cscEKo_JR_WNGh`RZclL>rk>FqiQYxpY`i`FXenXfnefXenGYlu]engK\m\M\ue\kenY`g`T\pikeihX_hp_tnjek`n@IphIQn\t\jr\ehqemqhm_hi_giqgoqikeWOe_i`op|IX EICC|Stevic,H|2008.04.27|C95|1-0|W +FVn^@Osd?[jb[Rxg>@k[RKw\BRrsDLmeEU\cR[b[IQvx?>tk;J^ULUdZKD[SJ;wv;ESKD;um=FqiFMsuU]urE?ldVT^V^e^MqxwOYwn|Gibraltar Masters|Kulaots, Kaido|2011.01.29|C78m|1/2-1/2|B +EUxg@Om]DTldFNtXIQXO=Onf?Msm>@we;LvxO=uneh@?hgUOg_=Umn>=]NGNVP?@nNDGPF@?FP?@PF@?NG?GsPG?FU|Aeroflot Open|Pavlovic,Milos|2008.02.15|D11|0-1|B +FVl\@OnfEU\UOUjb?Fxg;Lul>@wS=Msd@AdUMUS\UEqiGWmeE>tm>P\UFOlTvtOFT\FMp`POyxLR`XOF\aELULRLa\V^gmLVdVMVe]VMts>;utCS\UF>mcS[b[;[tl>Zcm?;UjZSm\Mqxt[Z\bSesr;cldZbkbcdtsDL|54th Reggio Emilia|Vitiugov,N|2012.01.05|B41|1-0|W +EUm]DTnf@OxgHPwn?Hvx>@]T=DjbDTk[TDtkV];LgVL]f]O`V`<`ldR[b[:@nhHPogIYg^Ya^VahVOFOugD<|VIII Open|Tscharotschkin,M|2006.06.08|C02|0-1|B +EUm]DTld;Lxg@Onf<`qi`Y]TFVp`YPk[O^tkIY`X^XgX=XuU:=UpXWsb?Fwn>@b\V^ph=Uru?=uU=U\MWEiaFMTMUM[SL=d\=NkdMeh;@Id[BRSJCJvxEZjbZlwvl\;VGOVMPWMhWPhMeMn\ML\ULKvtPWtLKLULHXaXNXLCYaCJWEJnEZxpIP[MPWM;Zl;_XN_MNXM;lZ;_XN|Magistral|Nepomniachtchi, Ian|2008.12.22|D43l|1/2-1/2|W +EUxgDTnf;LwS@Ol\HPgV=DuZDVSLGsc<\u]AnpipxpBJqi`Vtf]EruV\ftEuwuFMue|YGM|Howell, David W. L.|2010.07.28|E60d|1/2-1/2|W +@OxgDTnf;Ll\HPkc?Htk>@wnCKmeVH>H\UNUlkHNrtCJnwU]f^IYphYao_ahqh@Hmg=AkmAYwp@_h;ExiEKi_BRrtRZqaHPwn@l\DT]UFNsdNU\UEMgm?>jZ;Em\EV\V>Vt_V>umCJwvO`qi`Vkc=ErtKSZSJSd^GOmR:;^mOWm\S\c\;[_VHVnf>;tlEZljZRjR[\RB\lBDT\pw;[DL@Hvnlto_Vkxp\dLMtuMLuUpo[ZwpUEf^EmnmdmonZ]nuW^LN]ep^ehumhimnkOnoOaonaONLO]^gia_WPWL\HOneOVenaqneqienIY\ZYaZRVORZOVZRV_gLifnwaiRZ_VZRVOLEfgwniq|GCT Blitz YourNextMove|Anand,V|2016.06.19|A01|1-0|W +@Om]HPtX?Hld>@nfEUsm;Exg?>wnFVvxDLrt=KulLTwuV^gvE?]TKTmcTLlm=clOYlnYO]cTFcR<:Rc=ZRK\]U\RSE|Mitropa Cup|Fargere,Fr|2010.06.04|A07|0-1|B +FVldEUm];E]VEVsm@OxgVPnf?Md\>@\UOUw\UOvxBJ\nCSkcruIQg]PFngFUg^>^]SUfSMDMwgfugh@IhHIAH`AI`HIAH`AI`^?<^`?vtLFuxFWXWNWaOHOlW?FxHDm^MFXV>=n`U^VS=DS\D;HG?=\NA>|Baku FIDE Grand Prix 2014|Mamedyarov, Shakriyar|2014.10.05|D11t|1-0|W +EUxgDTnfHPm]@Own?Hvx>@]T=RjbRTk[TDtk@wpDLvxOPlPIPwuMFtfRZd\U\pLZbkbTZLZ:Z]S@rue\Z\G\ut\StD?GDG@GyiSLid:=phV^`YG?dLCLWOHAh_=U_WAOkOUWYPWOP^LTaYOJ|HZ Open|Stellwagen,D|2007.08.08|B54|1-0|W +FVnfEMm];Exg@OkcV^gmMUl\DLsd?Mwn>@p`M[tkEKjb[F\TKEc[O>ucFamwEOqi=D[SDSLDNLCGCmt<;nJCGJnNXpXQXxXO>Zu;qtlWNXxGoktqYtmYGmvoqvhqih_NWxXHPn`W`u`iITL>OXPIHPHGH`NHGNW=?LDG>_V>YD<2|Ch Madrid (final)|Perez Marco, Ricardo|2006.03.01|C00t|0-1|B +FVldEUm];E]VEVt_VP_hIYqi@OsmYahq?MqM=Mnf@vxEMwvunGWsuV^ogKZg^W^xqIYp^ZTnpT^v^>^p^<>^gEMqp@ILB>:BSMKjZ:ZUMZjMEjkpwKNE=2NiwvkS=ESVvoiqowqlEHIHuEHQg?|GCT Rapid YourNextMove|So,W|2016.06.17|A09|0-1|W +FVn^@Osd?[jb[Rxg>@k[RKw\DLmeBRrsEU\c;JvxR[b[J[tX?>XOHOga@Aug>@^U<`g^K]UL]dLC:;cG@HscHG^`GDaW=?e]V]W]d]`]DC]\;<\^C;ws[JcC;CsCxoL=qa=NhVQHVHNHsxEMp`MLf^W^gf>?ohIYd^Y`h`HWfg?AxyLlgol\`X\]o_WF^O]eyvFWvyeh_`hbXPbgaYAQPXQOXOWhOXhyYQyoQIg?`];BXP?APHAIHIBKIPDT[TKT]ETLE]LT]ECSPWS[W_JR_fo`fm`VEIVLmeLVelRZIYT]Ya]TaYTUlkU]Ya]TaYTUklU]|GM|Alekseev, Evgeny|2009.07.29|B48b|1/2-1/2|W +FVl\@OmeDLxgIQsd?Me]V^gmM[uc=Fnf>@wnLT]T[Tcl?>jbBRkcEMtk@gVEUVe[dmdU^e_=uvuIQuv;LqanSHXaXQX_n`fif@Hru=uvu>=utWPSLCLfh=Uo_PYd\UWn]W_hXYPtuHQXhLT]n_wumGWmfPYhiwvp`W`ihQXfovyhbyqowqinhX_wpYGhn_VbRifndV_RTfhpwhgwx`hTDGNdUNU\UgoUMomDG_`GH`gHGg`GH`gHGg`GH|2nd Sinquefield Cup 2014|Nakamura, Hikaru|2014.09.05|C67w|1/2-1/2|W +FVl\@Ome?[sm>@jb[mtmEU\U=Un^UMqiDTxg;LwnCKvxBRrtFCDFOuMOWDGW^GN^_M]|Wch U10|Yilmaz, Mustafa Enes|2001.10.23|C55|0-1|B +EUxg@Onf;El\FNkc?Mtk>@wn=Fm]DLsdU\c\NVjZV^gm?>mwE?wh=>oa>Z_WPXah;CWOZEsrE=wW|Gibtelecom Masters|Simpson,J|2007.02.01|D05|0-1|B +EUxgDTme;Ln^@O^VOEunEKt_<`smFNqi`Yp`YPjbKZrsCSwp?Fvx:;_hIY`XYahaS[b[;[ahZkwtkZsrZdnvBRmwL]g]T]o_RZho=DwhPYhYAYiaHPpgYAaYPYxy>EvxFTXPA@PHELgYDFx`[Coa@HaFH`Y`CFypZbtybjyALC`YFDpgTbg`bkrjdjA?jd?GdZ_WZTGDCDWNTNYGDE`WNDWOkbGYbFOGFaY`EL`gDJGNJ[gY[lY>LTNEl[VN[eNFeo>GaFEF]e|7th Mikhail Tal Memorial|McShane,L|2012.06.14|A54|1-0|W +EUm]DTld@OxgFNph;LwpT]d]?[sdO^vx^dkd[drs>@tb?>uedRwtRKn^U^e^L]gVGOV\KDbMDM^]M?]fNVpCFfcFCcC:@VLCLSnFVmeV^e^O^ulDFgmrs:=e^F^l^>^kcT\og\cjc^FxoGWf^W^tX^fohHVg_fnXF=eh`nw3swV]wgem`i@GF[mlgeLT[vltvmtuihGNhgNUgnuxehU^h`xs`hsyhiIYmfyrfmrymfBRfmyrihrjhPRZcZT\nuYa_W^emt\dP`]o|78th Tata Steel GpA|Navara, David|2016.01.24|E39h|1-0|B +FVl\@Osd;LphEU\UOUwp@meIQtmGWdUNUmd=FgmUpxp:=m\@ArtFN\KBKZ\N>k[?G[SL]nf]SdVDLe]SDjZDU\n=:tr>NogLTf^U[^WNW]TKTg_:=ruGEuE=Eh`WG`XGPpy[eXQPQn`EGwgT\`?rtyxUYBZ>FZBF>BZ>=ZJY`xy`_JR=FRY]enefn|TCh-RUS Premier|Areshchenko,A|2011.04.22|D85|1-0|W +EUxgDTl\U]k[T[jb[bph;Ltb@OmeFVb?>?wpHPvx?HsmBRuZ:JmcV^gX^eneL[ru=KumA=Xg[Lwse]>M\eM>`g>Mg_ONelNOl^ON^LNOLEOFEiFOi`MS_^Sd^fdSf^Sd^edSe\SM\UOF`iM>UV>MiwM>w\>M\cM>o_>M_WGOV_F?cNMS_^|71st ch-ITA 2011|Brunello, Sabino|2011.12.01|A59j|1/2-1/2|B +EUxgDTme@Oph;Lt_U]sbOU_mFVb\GOjZ<\fHXkcIYmv<;xyL]g]T]f\[LZRYahaXapg=@vo@`wx`_xHE>unF?Hx?[g`OW`gA?rw_gngW^g^?_^INUxp>t\UK\wiWweAqoxWeceqi|III EUICC|Daulyte,D|2007.06.19|B76|1-0|W +@Om]HPph?HwpEUldDT]T;Jk[J[d[OYtmHrsdrdmd>@u]GO]U@AU=?=nf:;xg^VjUVOFOwvUpxp>D]N=>ND>vdvCLDJ;=JTA@pg=Uqa@GT^IQh`OW`WPW^hLT[TUTvmBRmQRZQfTUhnZbntGPfXUTghTlogbjtjljX_|4th Zurich CC Classical|Anand, Viswanathan|2015.02.16|A07|1/2-1/2|W +DTl\@Oxg;LsdFNnfEUm]BJjbU\w\CS\e@un:dU=Uf_[]u]U]_V]=nS>?rB=mVhFOk[IYBEmQqaQPSePeEe?=ecNV[S=Eg_V_h_OaSKEC_DaOc[OF[SFOSYO]YS@?o_?FpgGWgn]xnwx]wpFNph]OhgO]gh]OSTHXTLNGDMO=MTG>LP>GPQG>TfCFfTFChg>EQME:B>Ax]AY]KDLKfYWfxWGB;GC;:LDxqDEkcEFnfA>xyNGf]V]tmFOuvGYpC>vrv<>|Madrid ESP, Sity Ch 2005|Franco Alonso, Alejandro|2005.03.08|D85|1/2-1/2|B +@Om]EUxgDTnfHPwS@ld=Dsm?=kcCKtbBRd\RZrtDBmsZcjc;L]TEWTKBKbkU\sm:jkOHOm\K;\mL[t\Wlutlene[etueV\lVgpg;:wvOdvnjrltrtut:Jm\JOxp=Ug_UYnjIQ\VdVt<@Ij:OA_VA<:@gVEUVe[dmdU^e_=uvuIQtm?=wnHX_YOYnY;EutEOYn=MqiOUyv@phBRsm@w\=FvxDLwv@n^EMsdFV]VMVu=?=tX@wnKZtlFMvxDT_MEMwvCSnw<>phMEg_BRmgNcltOW^VcUtlIQwpEHk[R[b[UgpgPXaXQXgU@I_gZdUcX`g_T\e\d^\S]elL>Vxp|8th Tal Memorial|Nakamura, Hikaru|2013.06.17|B90n|0-1|W +FVl\@Osd?[ph[dmdEMwpIQxi;Log@vxOEg_V_h_GWoyZcjcEOyhMUulU\c\=\T>OwuLRTLCLhW?GSVNclecueu@wpDTvx;Luv?>voCKgV=Dsd=kcO>rt>Mb\MConKS\RCRmROHX`HOBRwnRZn`YQhoZcjc>G`uG@oh@GhaG@O=QHaXH?XP@GPIG@IA@G=aG@aX@GXO?>AHM?HI?MOa>?ahMDIQ?@QX@?XQ?@QX@?WOG>OG>GXOD=OW=KhvKTWV?Fva|42nd GM 2014|Baramidze, David|2014.07.12|A87|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQwvEUtk;EnwKDqiU]dsCKldLTsmE?ulcm>DZbFb\bI@xw@?nu?FucNiwnGOm\iNo_HXaXQX_XOX\mN`nvETcl`Nm\TElZD>ZcN\c\>OblO`vnFMngEO\G`QGPQ@lbX`gnOEnmMTmlT[b\@O\M[TMGTSPWS[GQKSQ`[b`OEOh`S[`X[clsOYXPY_PH_nH@2ndstcktmks2@?bk?[kr[RsjRjdjmlj[lc[ec\e_W`rk\T]eTM_PMNemNOPaOVkdVOap^Vp_|4th Sinquefield Cup 2016|Ding, Liren|2016.08.12|C92o|1/2-1/2|W +FVl\@OphDLwp?TmeEU\ULUxg;Lvx>@gVTowoLVqiIQuZ?>sb<>kd>nqxELrunpxwpjbsjquMqawnL^sm^WMUa_nfHXU=AH=:_ZmgW^|Trophee CCAS GpA|Bu Xiangzhi|2008.10.26|B22|1-0|W +FVn^@OsdEU^UOUw\Udkd;Lug=O\UFsrRclc:rurLUd\S\ndDL]VOVc\U\d^M;rs\UsCFNfTNWp`ahqhWPh`A<^M;MTMGOC;<;M;LTg_V_;_OW`WPW|FIDE GP Tashkent|Ponomariov, Ruslan|2012.11.28|C45r|1/2-1/2|W +@OxgHPphCKwp@sdIQt_FNVg;L\UOU_m=Fjb?=rt:n^U^v^LV^VHVKfVHe\C^sjS\t\^UgmU\m\>=qaH]k[FN|4. Zurich CC Rapid|Kramnik, Vladimir|2015.02.19|A05|1-0|B +EUxgDTnf@Om]HP]T?Hjb>@sdFNtm;Lg]OE]c=FdZEOwS@tXGOdZTM\ULUXfNGrt:tlU]n]L]f][]pw]uxp>YwnYnln@G|GM|Vachier-Lagrave, Maxime|2009.07.20|D89b|1/2-1/2|W +FVl\@OnfEU\UOUsd;Lul@SKBJxy:t\M=f_N_U_V_wu=aypNZRaFe]FOutT]\LNLtLOLk]LSiaSR]MPXM;@H;CXaCDRXpqaiqiXxD_xwiaGOaYwS_WSKWEH?YPOWPWJRg_K[E=?G=DG?og[S^VS[WP[FDF?F_WRZWOF?VN|Vugar Gashimov Mem 2016|Mamedyarov, Shakriyar|2016.06.03|B33m|0-1|W +FVxgV^g]EUmeDT]c^ene;Lwn@wn?>k[RKmeDLvxIQtkEUwvO`vw`Owv;EnwBJphKBwpCSum=tT?FwnFMTLMVLJOUpU=UnfGWJPW_fnUEPKEUKCHXCKV^KN^]NQUVnoVfQYfbYX]^XSbjowjrworjowjrwo|ETCC|Atalik, Suat|2007.10.29|C92p|1/2-1/2|W +FVn^@Osd?Tw\DLxgEMjbCS\j<`qi`NvxBRm]V]g]S[]NGNdZ=FZTMTtXNVo_;E_VFVwWV^uw^]xyIQrv>?Xf]kw\|31. World Open|Ziatdinov, Raset|2003.06.30|C54|0-1|W +FVl\@OnfDLxgV^g]?TmeEU\ULU]cTMe^U^sb=Fc]MDb\>@tm;Jwn@utO`f]HQ]TFTsmTFtuDTqi`Owv?=nfiaIQXiLEd\E`ut`WlZU\m\FEZEMEvu>=uE=E\VEDV\DE\VEmV\m=ogWNi_N\t\=uxqH?\lurf^rR^VOE_eRZg_Z]etCSpLBJtn]eLCE;ndT\ln@HaYS[dU;EYPHPCLE;LC;ECLE;LC;E|FIDE GP Tashkent|Leko, Peter|2012.12.04|B01d|1/2-1/2|B +FVl\;LsdHPph?HwpEMmeGWxg@OtXIQXO=Ort>@vxL=k[BJ\TDLTMOMjbK\MDmfV^e^>^fe=Nnf;=enN?gv^FvePXnlW_tuCS\R_fofFfeT=ulufbRLbrumrwxw?NTJDKJ;N]p^KDwp]L;L@AmeG\euDGu=H?^gGWL]WG]L\wpwGgwxgfxwftwotloxlsxosWofWNfoA@L]N^qi^Vh`V_on_qnuqjuvjG]WGNvo@G=]NjoxjsxpslpxltxptLpoGN]eLKogKCe^C^|FIDE World Cup 2011|Pridorozhni, Aleksei|2011.08.29|B25h|1/2-1/2|B +FVl\@OnfEU\UOUjb?Mxg>@ul=FmeDTph;LwpUOsdIQvx@jZ`fnfBRm\K\e\EN\eCKvx@AeSGW^WNWSeFGrvWefe:>vf>NfgNOgOGOe\OFc[FE[RKRwsEW\nW_d\_]phIQxpDLogMUsu]Tuv?>\ULUnSTSZS>@tmDLjb[Rxg?>k[RDn^IQphEUwpU\e\BRrs:xqN\tuKJskO>o_>Mks\w[SwSdSMS_V]VlT:>stQYTLJLtLYaLTahqyS]vd]NTVbdVWNTuwGO^V>VWVOVpU@IwvIQvVTeVWdTUNTWNWe_yxQXW@rsFVkcPKJf_JSP>S\_fNWXPW`f_`W_fW`f_`W_W^fPHfn>S\SH@2nv2@USZU^vt]UZSUMtQWVQAVUA:U]:^]^SL^VLEVUE=UL=@wnEUvxbZBRSJ:Je]JB\UCUf^U:^VT]k]>DZRDURJU_m^_nlnET^TKT]d:Uws=:sKIQqa@IaYFDYPGPnSU\SsBJrJ:JKCD=CGJKs^=e^_e=_O=@dmKsxq\emQ@GgXIQXGQIGXIQO_s[_fQYXN[aqxeWNH|GCT Blitz Paris 2016|Kramnik,V|2016.06.12|A05|0-1|B +FVn^@OsdEU^UOUw\@kc?>tkT?wvUdkdN\c\;EnhHPru?Hh^=D\T>FghGWhaD=^XE?me=Eo_V_dH@HXI:>vFEFaF>FI?H?xoFVe]V^qaCKTKBKog?Gl\^fg_fdaYPY_Wd\umYaWVGPmkKS]U|Spoleto ITA, 43. Team Ch|Pavasovic, Dusko|2011.04.28|C45|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtkEUwvO`vw`Owv;EnwBJqiKDumE?ph?PwpNrkN>dcGOktUEwp>ntmn>mdEUpgHPYPQYWMDMTMY`g`OP`_UW_h>?dmWo]ULUMEoO|ETCC|Banikas, Hristos|2007.11.01|C92p|1/2-1/2|W +EUxgDTnfHPl\U]f]T]me;Lph?Hwp@Ovx>@smBRunIQgVLVnVgVOEVEWEtmFVh`V^e^KknekKqiKTrs:;o_CSstS\t\ES\TSewvRZjbH?TR;kmtklRZ>@vx;EdnTKnhETcjfK=KwvLTld:=mlKLruT\e]LDhnN?gaDCnhHPagCDqi?NhnDCnhCDhnDCnhCD|AAI GM|So, Wesley|2011.06.25|C54c|1/2-1/2|B +FVn^@Osd?Tw\DL\c>@meEMxg?>tX;EvxIQXfBRjbTKgaETcjO`aWAyoPW`WHOjsQYs^U^o^OFWOF?^XD=poAQX^=D^XDhoW:>f^haw_aXWXQO_OEO^VOUXY?FYX>AxqFNX`AQiaUf`_f\qh\kaYQY_ONUOMU^MLk\h`YVLDGW`XVUXOW_|FSGM February|Nemeth,Mi1|2006.02.16|C54|1-0|W +FVl\@OnfEU\UOUsd;LjbUdkd?Mm]>@xg?>wnV^gm=XvwXFd\CKtk?rs?Ocl;?nuOQdnHXYPQyPH@HpyHOn_OFyp?OunOQsuF=nYVOYn=@wv<`qi`Yh`YPgaU]dnOUaWPW`W]fofFXndUdkd=Evw:=u`XOp^LFxyEZwo=EopF<`Yrx>VYQ@?pH?FH@EDd\ZlmRD<@=<=R=FEQOld|66th ch-ITA|Scalcione,M|2006.12.01|E10|0-1|B +EUm]DTld@Oxg;LnfFNsm?M]TMTk[TFtk>@jbNVd\V^g]BR[SLVul=MrtRZqikdGOiaNGaYIQmEGNEFNGFEGNE]NG]E|LIII TCh-ESP CECLUB Gp2|Comas Fabrego, Lluis|2009.09.19|D47g|1/2-1/2|B +FVn^@Osd?Tw\>@xgEMvx?>qiDLmeBRjb;J\jJDdnIQnhRZwv=ZLCLxwHGdZ=;ld]cmMT\ML;=wv=mL\ml\[crZTOWTeW^[^GO^n|GCT Blitz Paris 2016|Aronian,L|2016.06.12|C50|0-1|W +FVn^@Osd?[jb[Rxg>@k[RKw\BRrsO^d^EU\U=Ume@tXT]d]=KXtO^sdGWucFOcKBKnfmvX`ga^dvdW_pw_gqiIYwe@Hf^U^e^:Z^lZ]d]L]um>Lrv]lmlHGk[KSlT?AjbO]TX]OXTAQvuQIuvIAvuOFTVFOVTGHuvHGvuAIuvO]TXIHXY`ivwHhxqhpqipowuNVihojagjbYWGPW?PH?WL^u]^W|71st ch-ITA 2011|Ortega,Le|2011.12.04|D10|1-0|W +@Ol\DTsd;LphFNwpEUmeIQnfU]f]T]d^NV^O=OjbBRxg<`qi`Yun?Mh`YPgmOam^MD^hRZtm:JrsJKhWaOp^KcyxL=W]P^n^DK`XQXmXK]XOHOxh=Nvw>FiaN_svF?h`|TCh-SUI National A 2012|Prusikin, Michael|2012.10.21|A35f|0-1|B +EUxg<`m]FNnf@Ol\;EsdDLqi`Ywn?MvxO^gmYPm^U^o_^gng>@f^NV]UEKunMTxyT]wu=FjZFTZRK\RJCSULTLdU?>rj:fTIQXg>=uvMDgaW_h_V_aPEeogOEToBRoa=@ruEVueVev^eVPVLVavVLvdHXcTDMTN@Pkc@gVEUVe[dmdU^e_=uvuIQtm?=wnHX_YOYnY;EutEOYn=Md\<`\TMUmd`ndO@IyvnYld:>O]GWjZDLk[UE[SYGSLCLrsW_ZRG\skIPtm\Jk[PW[sQYs[YaqiE=og^fml=;vs;Ssr>;rsWNlc;=[SJScl=>luSwskfnuv>Fk;wpvnNGnopiRJiW;=We=MFnoxaiMQnpxyphQLenyqngLDGP|41st Olympiad Open 2014|Negi, Parimarjan|2014.08.04|C67r|1-0|W +FVl\@OnfEU\UOUjb?Mw\UK\nlu;@vxBJun=;gaCSo_S\_WNEc\;KtfKRrtRZh`LR`XQXfXZ\ngOIWOIXgh\nOH?;hXn`XF`NFXN`X`E`aW`W^W@HWOH?wWDLtuMUpi?>WV>=d\=D\UDMVFLTFG;=GF|77th Tata Steel GpA|Carlsen, Magnus|2015.01.16|B31f|0-1|W +@OxgEUph;EwpFVme?Mvx>@l\DLgmU]sbBRbl?>kcETtb<`bTMTjb=Fwv`Wut:=rsV^c[R[b[TKe^O^m^W^p^F^\TKDtm=UscCKTKDKme^Ne\IYce>=vuYalvNn\LUMLgngvgahqhMUut=:t\USxp:Zec]eceZ[\<@I@gVTovo=apha]op]VugEMldyvEV_V>Vgo?>ngWeoBenvnVngn>npxIYrwOXB]nk]^XV^VMVwvGOv^CSjZkcZScd^[de|31. ECC Open 2015|Fish, Gennadij|2015.10.19|C61|1-0|W +FVn^@Osd?[jb[Rxg>@k[RKtkEMwnBRvx?>me;EdZKBl\E?[S?NSKBKZKDKktNTrs@gVEUk[RKm]U^tf;EV\DLwnKD]ULUdUOUuUEOU=?=vxOUwu@xnO`og`QphGWwp;Lvx@AmeQ@tb@O\TMUd\U\e\@gVEUVe[dmdU^e_=uvu;LuvIQqayifovoUO`XO^opIWiqQXaXFPng^Me_PVgnWltfMWfo=mrvV`qil^px`oxo^LXP>^PG@G_eLSetmkiYSnYWGN|GM|Vachier-Lagrave, Maxime|2009.07.27|C67w|1-0|B +DTl\@Oxg;LsdEU\UOUnfBJw\UK\cFVm]V]f]T\cl?Fvx@VLCLuZ:@me=XphXPulBRkc;JtkJTsmyxMV^XQXeI@AaPAIP?I@?EKElciNcdV]d]EV|2nd Ruy Lopez Masters|Adams, Michael|2008.04.10|B42f|1-0|B +EUxgDTnf@OkcHPwS@m]T]d]O^vx;Ltk:UL>YSZmfL^xoemY>Z[>E^WonWY|40th TCh-GRE 2012|Kempinski, Robert|2012.07.02|E15b|1-0|B +FVn^?Tsd@Ow\DLxgEMjb>@\j;EmeTKvxIQtf?>qiE?wvKfvfAWHPHgWGOuyYao_EF_XOXn`HPywahia|FSGM February|Vajda, Levente|2006.02.05|C54|0-1|W +FVldEUm];E]VEVxgVgpg@OtX?FnfKR^l:RKlZEZ:ZMLsjTUZ[KDf^UN[RDCR[CDjrNGtuGNuU|Open A|Manca, Federico|2005.10.26|B16|0-1|W +EUxgDTph;Lm]T]g]FV]LCLwp@Ol\Enf?Mvx<\wuA;dUOUpUNUuUENUu;ctmckm[MDrtkltl\l[?HXh`GOusDKqiOW`WNWsSW^?M^gSVltxqgoVXKfXWonqhtxhaxPMTPQa`QP`aPQa`QP|29th ECC Open 2013|Vachier-Lagrave, Maxime|2013.10.23|D85u|1/2-1/2|B +@OxgCKph@l\OEt_EV_VGOV_FV]VOV_X=MpUCUuUMU\UV^sm?Wm^;JruHkh`WGUMDM^MGDM^:?ogkHut?NU^MCEn^UL>H]xpPX@PLSPQSZbME=>DJDMD=DMBRg_X_pgS[`XZbg^]dIBRZXPbjBZjcZBclBjlsjp[cPH>@^edrpxsjVN_gNFgoxwckwojcowcjwojcowcjMV|Showdown Blitz 2015|Nakamura, Hikaru|2015.11.15|A05|0-1|B +FVl\@OnfEU\UOUjb;Lul?Mxg>@w\UK\j=Osd@[SLFZ\@HtmDLSLFLk[BJul:=yxV^ga?>h`^enePaxhLVhiV\e\aP`WPFleFWrxHGiYWHYQ>AxPAQPQ=>qa>VQAJRA;R[;CGPTLHNm[|GM|Ivanchuk, Vassily|2009.07.28|B07v|0-1|W +FVn^@Osd?[xgEMw\[dmd;LvxIQgm@msOIsdLFdU:>tfCKjZGW^WNWeW?WZRWGUFEFuUFNUN>NRKBKr:G?:B?GB:G?:B?G|Vugar Gashimov Mem 2015|Adams, Michael|2015.04.18|C65j|1/2-1/2|B +FVl\@OnfDLm]V]u]EUxg;J]u@vxFOsdZdmdO]f]?>wvKUdm=Etk>FbZBJ[SJSZS:>kbF^ng^vrv>vmvIQqaPevVE=SLCLbM=:aYe\Vh:>xq>Ng`N^`E\SMVGOVMUFog^f|26. European Club Cup|Collutiis, Duilio|2010.10.17|B22|1/2-1/2|B +FVn^@Osd?[xgEMw\DLvx>@me;EdnMU^ULU\c?>tXIQXaBRjb[?ndRZcj:Rqi=Dwv?MahCKum=]WDLWfMDe\RT\`=]`Y@IldHPYnXixqi_d]V]ngTYqx_ixwCJf\J\j\L\gni_|GCT Rapid YourNextMove|Kramnik,V|2016.06.18|C65|1-0|W +FVm]V]u];L]eEUxg@Oph?Twp>@vxIQjb?>k[TKtk<`l\U\e\=Fnf:=sm`WwvWe\cFNcN>Nmce^rtNMcTKTtTBJqiOETt^gpgEVgLVLkd=Eh`MexwL=wn=NiaDT[TeUd[QYvx@ITLEDLCDCt\JR[dCcbZY`x`cbf^bjnfUuo_uy`hyq_WjnfeN_e]qadRnj]TayRD_YhcYOZRO`TSyrci`QDKGO\DI@ierveEjpRJv^JB^>DC@IC;>VS\pjB:2j:;:QW:RV^\e^_KD_oe^IPEuWQuxPIRYolD_l\^fHXxy\_YQIHQIHPyQPWIG_^fg^NGBX`goWXQANKA@|FIDE GP Tashkent|Dominguez Perez, Leinier|2012.11.29|B01d|0-1|B +FVnfEUm];Ewn@OxgV^gmDLl\?Msd>@jZBR\ULUdSM[vxE;mc;LtmCKrtmwIHwmH?mwLRwmELxw>HwvHWph?>vu>=utWQqiYah`Q@tk@OltPXkjO>jkGOmw>MSMFMo_^gngL>tlRLgnLFne>Elo=>wm>GmgGHelE>ktKSZS>SomSwmuwiueH?f^M_gmip^VOV]Vaien_hmwpwnwh_|3rd Ruy Lopez|Adams, Michael|2009.06.14|C05s|1-0|B +FVn^@Osd?[xgEMw\[dmd;Evx>@wvETgm@k[RKtkEMwn;LvxBJme?>umLFduFPufKBwvO`e]`fmf<`qi`gng=OldDTruT]d]P_g`IY`E>F]VMVfgHPxwYaE`JR[SRZwxBTum:RxyRSphahohOKkd_NdVT]V]N]gd]LdOKDvuSVmEFEuE|3rd Sinquefield Cup 2015|Carlsen, Magnus|2015.08.24|C78q|0-1|W +EUxgDTnf@Om];Lwn<`qi`YvxFNgVYnun:@VL@wn?>k[RKvxBR[SEMme;EdZKBl\DLrsETZdIQtfO`fmGWskRZusTcmvW^e^;uM;>wv^fof>fxwjlMLlWngWegneWngWegne]phf>vu]kLgO^ge@AuvkVefVWwx^OfoW^qi^VxpA@ogVkge@ApxkVxpVNegOIg`Nf`_fd_odmpwmdwpIOvudlngl\um\SmkSRolRDl\DMkl>VljV>jl>@gVEUVe[dmdU^e_=uvuIQuv;LqaruV`n`O`vn`Vu]:=kcCKaYLT]UHXYPGPd\QYU=>=_U@Gf_VLnf=EytLFUdW`_XFWf^W]^V`Wd^]LV_L]_V]LV_L]|Tashkent FIDE GP 2014|Radjabov, Teimour|2014.10.31|C67w|1/2-1/2|B +EUxgDTph<`wp;Ll\U]meFNt_?M_M=Msm@Oqi`Yjb>@vxBRh`YPgaOEo_GWaPIPuv?Ovh:?iaMD`XOGhq?>aYE?pLCLmgPYgVHPqp>;k[R[b[T[VL;CLRCBpLD=LT=:T[NV\TV_TL:=xo=XovBFrjXhvuhp[vpUjb?Nv[Upwv_gngpgulgpltN_vF_ntsndbd]d[;@HFGHG;cGFcdpxsjxojb|6. London CC Elite Blitz 2014|Giri, Anish|2014.12.08|E61|0-1|W +EUnfFVm];LwSV^l\BJSLCLxn=Xvx?MsdXanh@Oul@_o@In_HP_nQ@n_IHxq@Qqx?A_nQ@ndGNdnPXndAQun@F[SJSZSLSnSDLScE@vtDT]T;En^=RjbETXOFO^UOWxgaYT^d^>^]cEZyiKOl\PXYQHQutQHUMX`ieCK\THQmdOdtdZcME<=dcKTeuQHwSH]og^Fg`W`uy@HyYHPYUIYSePQeWFvsjvnphnoW^on^WQHcCHOWenme\OFUWGOWYFMCc=EYW]VWYMDYaE]\NT\c[\da`]`N`dk`Wmu[\DMh`urjcks2|FIDE World Blitz 2014|Salem, A R Saleh|2014.06.19|D02|1-0|W +FVldEUm]V^t_DT_;:;]T?Tnf@FwSFLsm=KSZ>@mcLVcTKTZlV\ut<`qi`Yp`YPxnGW`XW_n_;>vx?WiaT@gVEUVe[dmdU^e_=uvu;L_nIQqiLVkcCKtmmdGOtkDTrv@IwnP_iaQYWf_nvn=Ep`Y`x`>Nnv[LfULV`^CU\UNMdVOV^VEGvnG_aYT\n^_^V^\cl\MOo_OWUMWY^]|5. Final Masters Blitz Tie-Break|Carlsen, Magnus|2012.10.13|C67|0-1|W +FVl\@OnfEU\UOUjb;Lul?Mw\UK\n>@meBRkcGWtk=XphW_xgXFh_<`yx`gng?GgYHP_WGWY`WGsmV^m^Mqvn:>o_KUl\Uf\dLVdVFVkVqxrxf`x`>Fe]GWne@?]UFEe]CKc[R[b[?F[SF=`p=@gVEUk[RKm]U^tf=Fwn?=dZDLZKBKvxOUuvGOV\KS\k`XMUGw:=uvNXm_DN_hN?qaXNbj?Pp^PV^ULUvVI^xq=?O?N?qhldhq?PV;AIaYPF;SdlqxZb|7th Mikhail Tal Memorial|Morozevich, Alexander|2012.06.08|C81|1-0|B +@Om]HPph?HwpEUld>@xgCKvx@qiZSDENE>ESLE=LD=EeW|It Open|Vicuales Gonzalez Jose Antoni|2006.03.30|C00m|0-1|B +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDT[SJDvxHPg`?HuZ>@Z\CKbZ@AZR=Ftf]lRKBKr:?:dZlb\cbSZK:=wtIY`uS]cb]NphFMfTMebe=eTfAIuZHQfQIQKEe]ZLNXEVGOV\X^L^]^\M^FtLDN|FIDE World Cup 2015|Mamedov, Rauf|2015.09.15|B33m|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@k[RKw\;LmeL]dZEUZKBKg]V]^U?>vwOUtmFXhCKbZSZcZIQZRUSwxKR[RLThgT\gw]etsSUmdNnRJUTxyTLsrL:dV:^Vd^:JB@IdVnlwxlnyq:gpngYqpYnpyFVB:2V^:C^FCpnYxqY>qhempm|Makedonia Palace GP|Topalov, Veselin|2013.06.02|C78h|0-1|B +FVl\@OnfEU\UOUxg;LsdU[wSBJSL[Lm]?M]ULFf^>@vxCStfk[FPrsR[b[:bftP_t_V_e]GOwvMVgVOV]e>Pog?OemPYmkbJUMOMvuELuMDMsuYPkoPNoaJ:qiNcutckdnL>av>GtsklstlktskjsuG\ndjBxqBfvmfmum:Jia@GdUJbqiGNi`bcaYcs`XNEUKEDKU\U^Us[XWDKWNKTml[\ljV^NG^fGH\ZjlT]HI]e|TCh-RUS Premier|Zontakh,A|2011.04.23|B40|1-0|W +EUm]DTld@Oxg;LnfFNsm=Dwe?Mvx>@]TMTjbO`d\LVulVeleTMqi`qgXHPwuIQ\UNUXgk[WlumDdrjlctkd\jr\nmnBRgmcZ[R:RmsZckdRSbZcZnjZcj:>?:?@?dO?>sdS[dn>EOd[Zrsc\sCELCG\nGOLEOPZ\dm\lmvltognePHENxoMqf^U]|YGM|So,W|2010.07.23|D45|1-0|W +FVn^@Osd?[xgEMw\[dmdIQtf=FgmyvFOeUHXqiBJjb>Nvn<;g]L]U]O]u]=>ogGWtmDLk[;DmeCKnvNVvnKSnvLT[TMT]UW^g^S\e\V^v^>^\T^nl\npUMQYMODETUEFOJ_gJBFOB:OH:BHPB:X`i`Y`:?plbZgoZR`hRJlj?ghp|FIDE GP Tashkent|Morozevich, Alexander|2012.11.23|C65j|1-0|B +FVn^@Osd?Tw\>@xgEMmeDLjbBRvx<`qi`Yp`O`i`Y`xp=Owy;EphIYtX`gumOPhgMU^UV^gnEVrxVgm_TM_fCS\jLTd^gxyx:>nwGWXaPxwxW^e^?_ah_^fg^vxpMhUM|GCT Blitz Paris 2016|Nakamura,Hi|2016.06.11|C50|0-1|W +DTn^;Lxg@OsdHPdU?HUOHOwS>@vxOHwvEMldgm\VXfKJbZSEvuCKjc;RKBK\MCLcZLTk[EZlZTLZLDLMSL\uE;?ogIYrBPXEG|4th Ruy Lopez Masters|Malakhov,V|2010.06.14|A29|0-1|B +EUnf@OxgDTsdBJph;LwpFVme?Fvx@UMFX_X=Mtm@]UFNn^NU\UEMwn<`vx;Eqi`gngBJjZO>t_:;gn=FwvH]nw>HumFO_f?>ru]fvfEVwnOauwPXxqX`fhGW^WHWh`V`n`WHo_aO`g>?phO]mlHWwv@Av^]HdnCSZRS[g`WFlm;S^NT\NM\dkd[cmkFUn]SRkcUfcNRVNVHV_V?o|Zuerich Chess Challenge|Kramnik, Vladimir|2013.02.28|A30d|1/2-1/2|B +FVn^?TxgEMw\@Ome>@sdDL\cIQqinl>:ksYW]V:BdkW?kbFb^MbTljBDhPN_P`_Nue?gegEVj:N=g?AI?=V`=AIP:>PXo_X_A?`O>^_h?GTM^fhaGDMDfFD_FHO`HC_fCLQYLUfTsk`OUgaXkdO`gU|Mitropa Cup Men|Le Roux, Jean-Pierre|2006.09.08|C54|0-1|W +EUxgDTnfHPl\U]f]T]we;Lvx?Hwv@Ojb>@k[<`ew]etkFVrj?>qi`gugV^gfBR[SLVvt:<\T=UsdUckrOUdUcU|68th ch-ITA|Garcia Palermo,C|2008.12.04|A60|1-0|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tfDLwnKDfXIQXaHXahOUumGWdULUo_@d]T]mcEKc]V]^V?>VM=Mwv<`qi`YtmKZucMUcUOUg]Ynvn>n]nZkn]ke]SIQrs;@VLCLSe<`en`nun?>vxO^sm^omco^cT^Tkc=XtkT^wgXFrwGOl\:=gW^MkbFfnf>fbM=M\ULUwufVW_Vn_on^olU]xo@GlD^FD\]eumMU\_UVjZHX_gVnmnFnownmc[GN[SNVZROWgiIYSKBKRKV^iYmkwvkpKCpkYXkCX@Cs|Champions Showdown Rapid|Nakamura,Hi|2016.11.13|D37|1-0|B +FVl\@OmeEU\UOUxg;LjbtsL]c]=]lk>Sut?FtdA=ytDLtlX`i`Y`og`hltSJ\VFOVPJSP_N?|TCh-SUI 2010|Prusikin,M|2010.11.06|D10|0-1|B +@OxgHPm]?Hph>@wpEMvx;El\FVsdDLn^BRkcV]g]ETog?>tfOEumEVwu=FxyRZrsZcjcvqi`fpovxoxtxyxfUxoU[|FIDE World Blitz 2014|Le, Quang Liem|2014.06.20|A08|1-0|W +EUxgDTph;Lm]@Owp=K]TKTvx?py?FbSHXapOUruENqaIQaXQXpfUfofBJSdGWh`Aa`WNWk[L[usJRjb[lsCFNCKNGdUWNKCGPCKPGKCGPCKPGKCGP|31st ECC Open 2015|Vitiugov, Nikita|2015.10.24|D97n|1/2-1/2|B +FVn^?TxgEMld@Om]TKwSDLSe<`]VMVqi`Yun;EsmYPel>@gaIQaPGPm\KovoO^ox^hn`?wxqhytX=?\M?MrwQX`XEOXPV^qy^flc@APXMewue^u]^syqfnXaOI]=:=a=I?=?AI?@|2nd Sinquefield Cup 2014|Carlsen, Magnus|2014.08.29|C24|0-1|B +FVn^@Osd?[jb[Rxg>@k[RKw\DLmeEU\cIQtk?>dnU^gVNV\^eue=ele;EvwOUph:=ruE?umNFwp?NytGOpwFEtu@GntHXmnX`tcNXcTKT[TGPwpQY\M=AusYakrahohEIsyIir]Xg]xAIn^OW^NPXN>XP>NPXN>IH>?UFM>XP>HPH?;FU;CHPxoW_CBgVyuVguygVyuVguygV|TCh-SUI National A 2012|Godena, Michele|2012.06.24|C78k|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeEUtX=vtDVf\V_tvOUph_Dvt:;TKBKc];:[SUF]lFW\fZltlWflDfUD\=o_IQXgW`gVLV_V?FeP>?vnQYrwYaw?A?PYESnvFXjZSEmwT]f]`hlPXtPltXlPX=wf?ofuopYnDKP@EZngpqyqhquoZEoeKJvmJr@pES|Mitropa Cup m|Haba,P|2008.05.31|D12|1-0|W +FVn^@Osd?Tw\CS\SDLSZEUme=KumU^Zc;Ee^T[ogETxn>@mfKRtmTclc@yvgomd:;ZloTdmTVmt;StsSklk?;rjVqvn;kjkqD^VIQkmDKsjKTmlTUjkU]ksLT|US Open|Douthwaite, Bryan|2003.08.14|B33|1-0|B +FVn^@Osd?[jb[Rxg>@k[RKwn?>meDLtXEMvx;EdZKDl\IQXaE?gv?PaO=On`P_`<:FlvV^ve=eC<@I<`D_ZTeUxyUX`nOWog^fTe_qg_XYypWi|Ch Italy (juniors) (under 20)|Lain, Luigi|2006.08.21|C88d|1-0|W +DTnf;Lm]EUwnT]f]@a`NV]VLV`hVghgFWle:>g_GNmgWMyvM^_aNGvf^Te]>f]fTNgVGOVP?=a`U]d]N]f^]N`hN?PF@AFW=EWaEGhgOXghXYagYW^\?NpqWY\aYagaGoqxokhbBJbfNXaPAIP?I@f>@G>;kmxwCSwvXgvwgVwvmj?IVE|GCT Blitz Paris 2016|So,W|2016.06.12|D31|1-0|B +EUm]DTld@Oxg;LjbFNph?Mwp>@vxIQk[CKsm=DtkT\gvaP|FIDE GP Tashkent|Kamsky, Gata|2012.11.24|D15g|1-0|W +FVnfEUm];LwSV^l\BJSLCLul@OxnIYkcYaqi?[tm[MmREXVHXiaXa`XOId^U^qaIXa`FOV_goxyXg_^gx^p|FSGM February|Jakab, Attila|2006.02.09|C18|0-1|W +FVl\@Ome?[sd[dkd>@tXEMxgDLgmIQXaahCLeW;MtuHPWeMF]VEVe]K[]dV\hoJRjb[cdc\fcfFfof>fxofNrs@?sK?FuvFMKJNvovRZvmU]JR|Open A|Kovchan, Alexander|2005.10.06|B51|0-1|W +EUo_;Lxg<`m]FNnf@Ol\?[tm`gpgO^qa^hyqhwvw>@sdU\un[dmdCSkcLFc\FWwoS\rx=MqpHPn\WapqaWd[DT[T?@g^O^smFMxg?>wn^OgV;Lmg<`vxLV]V`gVMgnunDLd\U\n\=E_XEMXOHO\`@AruMV`_V_w_:=_]=]u]>FxoOW]=AH=;HOphCK;@ulBJjZ?>ZRE?ruZK>MScFO\nO]>MN>?N@vx?>jZV]d]DT^VMV]VEVgV>Vm\VUugKDtf=Eqi:=wtCKxwIQgnO^nlEWwxUetu^ouwoipiWilpef\fifpofowoGOrsDVxwBRwn=]kc][owHXwu@Hut[^ne^]elX`tu`h|FSIM April|Lengyel,B|2005.04.12|C24|1-0|W +FVn^@Osd?[xgEMw\>@dUOU\U;Eld[RmeRKvxDLUcETcl<`qi`YtfTNp`YPe]=OxpN_f_O_]VMVut_OtXOXgXGOXg?=wuBRgaP>aWKTpg@?gnHPu=:=Wf?Flc>EjZ=ArxE>iaIY`X>EXOFOxXCKf\A>\fEFhgOHghFBc\@wn:wiRCusZjskjkvtCMrlkci`cd|FIDE GP Tashkent|Wang, Hao|2012.12.02|D10g|1-0|B +FVl\@OnfEU\UOUsd;Lul@ph=>clEwpWivxipxpCKtk?>lZ>NruNQmgV^gaE`qi`nktQaZL:?LDngpq^ftfTfDFaZ|68. Ch|Dvirnyy, Danyyil|2008.12.05|B57|1/2-1/2|B +FVl\@OnfDLxgV^g]?TmeEU\ULUsd>@wn?>vx;L]LCLe^O^d^>^ul=Mtmk[>N[Sa\leLSgU\twtIYmvNOvdMbtuEWemOPd[bZUcZJmUWNUYNcjcJjutPQYWQPWejktlkVxpVNqaP`[mHPpw`^wp^Vc[VUl<@HmdGOelUWd]NUf^U]^W][lj[^og^Wj@HQ@A|Open|Eschmann,P|2007.10.06|B22|0-1|B +FVl\@OnfDLxgV^g]EU\ULUme?T]cTKe^O^sd=Od^U^wS;LuUOPUV|GCT Blitz YourNextMove|Vachier Lagrave,M|2016.06.20|B40|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLm]V]g]O^d^>^ldEUne^>uYHPYQ>Vp`=?Q?@?t_;EqiV>rvEO`XvwvBR_M?@o_R[b[:rvnK]d]IYnoYaewrbopbrporuMTumogmuwiuxgoxhi@]LCLSL:;qi`Yld;KLUMTUcKMunO^p`YPgV=FVPIPcl?=ng^XgpMOlu=uvuXg`XFEulEW|FIDE World Rapid 2014|Jobava, Baadur|2014.06.16|C10|1-0|W +EUxg@OphDTwpHPld?Hm]=Kvx>@uc;Lwu?=t_O>_fT\cl>Mf_mU_gpg?gUXgGwiNOia^LvpG?pf>fofOFxqFf|AAI GM|Laznicka, Viktor|2011.07.01|D78h|1-0|B +CKkcFVtk;LphEUwpELTRKT\`obZA<\@gVEUk[RKm]U^tf;EV\DLwnOUd^KDueEK\VneHP^gDV]V>VvxUfof=Ff^@HqaK<`Xl\LT[TVT_]MF^UGIT\IA>G|World Cup|Gashimov, Vugar|2009.12.02|C83|1-0|B +FVnfEUm];Lxg<`]VLVwn`gpg=Mg_VLld@Osm>mwO^og^OvtMNneQ?_WNFts?QktFTyx<;xpBJphLBhiQHjZBLtkTKWPIPiaPXaiLRihRchXHAsjcTkbKLbTLTusTLlc>@XW@pskpkjk=MW_OEklETcbAV_`M=wm=>mwTeleU]d]Lg`^gwemwp|Open|Malakhatko,V|2007.10.09|C13|1-0|W +FVldEUm]V^t_@Onf?Fsm>@_hBRxnRZjbCSn_DLogoaXfavW_nu?Wp`WGul>Nts_gmwfXYhEK\jgo|42nd Olympiad 2016|Bareev, Evgeny|2016.09.13|B12r|1-0|W +FVl\@OnfEU\UOUsd;LxgBJul@tkJR[RURyt?:rsFMkdRBbZGOZRLRdRBRsC@GtlRjCkjklk:rmerZgmM[|66. ch-ITA|Piscopo, Pierluigi|2006.11.25|B49|1/2-1/2|W +FVl\@OmeEUxg;L\UOUsd<`nf=Ejb>h_>?ph@wnEMk[RKmeBRtmDLvxKD[S?>wv;EdZMUnwIQqiDMSLCLl\U]ulETZTMTvsOEmvTMgmRZmgETv[Tcrj=F[MFMgmcTjk?wnGWngHPsk@Hmw?Gwh:?lnHIksGHnl?@[KW_hwQYlmPXp`_hohX`i`E`gpYasSah|75th Tata Steel GpA|Leko, Peter|2013.01.17|C84f|1-0|B +@OxgEUphDTwpFNvx?Fme;Lsm>@n^=Dwv?=^VOEunCSmw@wn?>k[RKvxDLm]V]g]O^d^>^ldEUne^>uYHPYQ=FtmF?rv>vQ?@?wvaY>D_DEDh_K;_XPYXY;>eINEYX>fg_GOXOE`rx`i_WfcxHDKOVcfVMfgHGg_WOKJMV_wGFJKOGi`IP|2nd Ruy Lopez Masters|Sargissian, Gabriel|2008.04.09|C89n|0-1|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQtm?=utHX_nO`mvGWqa@GkcW_tk;LaXQXyIGPID`qd\qwvd_gDHPWpg^gHGWNGgwqgONEruEDOLCLdRDCu=<`nd:=R=`W=XqgXOgvdZvlOdCDktDMtmMDZTlbdkbsmtDMc[|41st GM|Adams, Michael|2013.07.28|C67r|0-1|W +EUxg@OphDLwp<`m];EvxFNsm?Fl\>@kcCStk=KkdBRwvRZ\TKDc[?>utDCgV`WtkF=jb>FogIQn^U^g^WIVe=Dru:=eoNV]ULU^UOUm^Ud^OHOpCduvuOWCLV^LSEVu=D=SnVgng^gkd|Narciso Yepes Memorial|Garza Marco, Sergio|2005|D03r|0-1|B +@Ol\DTsdCKn^Ekd=OgVEDtfLV_VOVe]V^noT]d]:>rtD;oh;:vo?MhiM_td_fdf^_on_]|2. Norway Blitz 2014|Svidler, Peter|2014.06.02|A30|1-0|B +FVl\@OnfEU\UOUjb?Mw\UK\n=XphXFme;Jsd@vxGOuc@AXgEZcdMLdvZSe]SnvnLMgaME]UF>tfK@sb?>blBRrsF?jbRZtmETm[VsrbR_gOW^U@Aru=OvnHPg_RBofPX_wVfnofVurBrwrAHrBOFB;HQ;@vo;L]UEMwpyqg_LFUeFWtmWQmvQ`ow?>n^@gVEUVe[dmdU^e_=uvuIQtm?=utHX_nO`mvGWqaW_aXQXyY@GYX=An_Ayw\GOX@yvtmvr_UOV@VM>=ML=<\UNWjd_g|Mitropa Cup Men|Neubauer,M|2007.05.09|C14|1-0|W +EUxg@OnfFNl\DT\UNUwS;Ekc?Mtk>@vxBJSnCSjZ:;ZSJSsdT\g]ETdSTcSMcrkbrc]L=KL;K;me@nh[MvxDLhWFEWMEMog^gwg;EmwO^tmEK\l:>jbKUm[U[b[BJlc>NrR?>RWHPW_>F_aIYp`NOcuMUwhUXh^F^gOXOaiOXih^fhpXFumfvxo|Corus C|Ushenina,A|2008.01.25|C02|1-0|W +FVl\@Osd?[me[dkdV^tXIQXa>@nf?>xn^en]EMwe;EvxETel=FxyVg_X_f_VvrvO]d]TNvuBJSJ:Jlc@HyxHOxoDLofQY]UNHfgLTjZCSZSJbueHWgoW]SKbJcuOPh`Y`u`JKedKkowkm`EGWE<]ndgPO@tXU]sm;km\knpgEiwunl\VFTBJloxoO^g^=XJeXVuvHP^pVOoxild]lrtlfofQYuwMD\n>Mm\FN\M=MwuA=uMNMhwDRn\=ExoR=trMe\Te^T[^loxleZR=F[cFTrveUd\UeckGORJEMJC;CxqCDvtTbkjbtjBD=\TMEB:=FTLewLEFE:CENCsWofW_fn_\no\_on_h>=MN=>NW>ulHPk[T[d[<;mcOIcTEMvF>FXaGWaFMFxpIXrtXipi=AihFDg_DIhgIigni`nm`_md_\dk\[Tc[MldA>tlBJjZPXcT;BZRU]dgMLgLCLkcX`Te>;c\;SljBCeTCBTNSsN]W_]nsv\T_gnhBCjZvtT]LT]Utlh^CDZ\lj\TD=U]|7th Kings Tournament|Nisipeanu, Liviu-Dieter|2013.10.07|D90|0-1|B +DTxg;Ln^@OsdFNwS=DjZL]S\BJmeCKtf]gug@nhDE\cMUgnELwvKSldU^e^T\cl?=ZSJSr:=:vuS[d[F[_V[FVd:=u=F=qi=FnfIQf_@?hnFM_mMFd[F[m[?@[RHPR=@H=]LDo_PXnhNV_VO>VN|26th European Club Cup|Pavlov,S2|2010.10.18|A28|0-1|B +EUm]DTnf@Oxg;LldFNsm=Dwe?Mvx>@]TMTjbBRd\?=\UNUkcU]f^O`un`VgVLVbZ<`og`Nm\V\c\N\tX=@sd;LrsFVwn=Fk[?=vxU]f]V^]U^gngFVtkL]dS]gugVWl\Wgpg@o_?>vgF?noDJ^VOWh`W`i`GUm^?FaY>?ohJ[Z[T[YPIPyt?GgXFX^XGFtTBJ`gUjg^@HXg=ETtjUtvF>h`U^v^EU_WPW`WUR^]>F][CS[`H?gX?>XNFGW^Rj`pJRe]RZ]UZbp@>Fkbjn^]nm]TmlTKGI@PlmUMF>POIANTmUON>GNFGPKLUuME|Makedonia Palace GP|Dominguez Perez, Leinier|2013.06.01|B90n|0-1|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tf;EV\DLwnKD]UEKUMD;\KBKf_?>vxNqaXhmo;>rtfW]mhaonW]no>=md]WomNv|Vugar Gashimov Mem 2016|Hou, Yifan|2016.05.28|C83|1-0|W +FVl\;LmeGWph@Owp?Tsd>@xgEMvxW_h_=>_VMVtfL]d^O^e^<`f]V]ue>Yg]:=nf?gelT]f]=Mwu`ipiYi^VMP|VI World Blitz|Gelfand,B|2010.11.17|B23|1-0|W +FVl\@Osd?[me>@tm?>xgDLjb[?mXEMnf;EwnIQXaHXahOYgmYHvxGWqiEOhqW_m^HW^O=OnY>=k[OFun?Hrt@vxIQk[L]g]K]tkDT[T:@vxBJtk=DjZO`qi`VenVgmgLVgVMVuc@tm?>jb[?mXIQXaDLrtHXahEUqaU]d^OIaXQXnfFf^;Ek[CKhoKT[TE?ph:;um?Nwi;cofBRtrRZvxGOmlPGgmc;MG@Gm\G@\MI?lZ=DrsN=Z\?NbZ;:sK@AxpDBwrBRMC=CiNHQKLC=LM=NMNFCNOCkfoAI\G|Zurich CC Blitz 2014|Nakamura, Hikaru|2014.01.29|B51|0-1|W +FVl\@OmeEU\UOUxg;LjbGOn^UKtf^V>VjnTMnVMV_mK[m[R[gU;Dqa[cUcD=o_Vdh`dmpg=F`XF?g`|Tashkent FIDE GP 2014|Vachier-Lagrave, Maxime|2014.10.21|B90r|0-1|W +FVl\@Osd;LphEU\UOUwp@meIQtmGWwtUOmv=>nf:=tuHXk[W_[SLFe]_fgVFWdnNUZlUpxpOUogK]n]>V]W?Wl^VkpxkOrtfn^nWguU=Un>O?>N?GN@ux;=ts:BntOYtc=OmvOFvm@IRZPXcRGWZuYHphW_h_X_f_Q_m_?_xp_guc^fofgfjbB:clIAsjfhphahlPHWRLFHPHAHLVENdn:AyxAin_iQV`Qa_NHGNXGP`fWfxhfWhxaA|5. Open|Cheparinov, Ivan|2006.04.02|C18|1/2-1/2|W +@Ol\DTsd;Ln^FNxg?Fm]EU^UNUtfT]g]>@wnU\]LCLu=?=n\O`vxp_oh_e>?eTEMTe?w`XwgX`gf`YMDY`DKe[f^`W^\c\KT[JT\WNLTNE\U|18th European Teams|Meier, Georg|2011.11.08|A35i|1-0|B +FVl\@OmeEU\UOUxg;LjbIQn^UFqaHPwn?Hk[L]sm]nun<`tkFLnfBJvx>@wt?>rs>Fmc=>cT`ZklZblD`Nmgb[gX:?DF[FtDF=DCN\^V\UCBJRxqKSBJRZJO=;OM;C_]U\X^\N^O@Ho_?<_W@meIQsdBRrsPXgmFPk[R[b[GWvxX`[SLFSKDLwvW_nwFWd^QYtkYaf_V_l\@AkHAH^T`hmghoxoaipiHQTN@mc@c]NEtXVGXOFOnfMVi_V_h_HX_XGXo_^g]g:>umXgpgOXxyXfgU@Am[fVUg>;[aVMrv?OaoELgLMLogLgwg;cv>AH>FOGFGHGgWGPWRceRBIYBZPXZ:XabZebZRaiyxYaRJbrxoiq:ArjogjJAa|6. LCC Super Rapidplay Open 2014|Lenderman, Aleksandr|2014.12.07|B06|1/2-1/2|B +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDLvxJDrs?Fg`=MbZ:=tf>@[SLTZRCKuZMP`u=EZ\?=xy]NulIYdnYao_V_f_FX_VXflcP`cuainh`apiaiwgf]hWigug]VRKBKsx@?gnHPWQVHQ`E]\tDSxw]E`OHOwO?HOwS]n`KStkEMko=EqaS[aYPYoOHI^VMU`WI@wx@?OA?Fx@ECAOFE@=EL=U[cW^ckUE|Mitropa Cup|Huschenbeth,N|2010.06.01|B33|0-1|B +CKn^@xgEMmeDLjb?>\jBRtfTfof=KutNvx;EdZKBl\MU\TCSTKEKZTN>tdK\e\BT^ULUgmRZrtU]f]V]de>feWfVWe:;tsVfeWTF\TfVW_FTk[ZcmcTFc];swsVvsvFv_wvfwofbqibtxqIYohtshVskV_k[_VOEV>E?]g[MqxHPxo@H>VMVgV?NiaHOV\N]ph]WogONg_GO\mWMmwM\_^PXaXOXwq\M^fNWqgW`foMWopWfpof\op`Wg]W^]N^WN]WV]gVOg]\MpgMGgfOV]gVWfoW^onX`gm^WnfGXmcXgcTWV|78th Tata Steel GpA|So, Wesley|2016.01.22|C54h|1/2-1/2|B +EUm]@OxgDTldFNnfCKsm?Mwe@tk;EvxO^ulGWd\=>\UNUeSBJSE>EgVENog:ko>Vo_efruCLu=L>_X@A=P`]|IX EICC|Savchenko,B|2008.04.26|D30|0-1|B +FVnfEUm];ExgV^gm?Ml\DLsd@Own>@p`BJ`XO>qa>DucE;\TMFog^gmgDSdZn`CKTKBCmRFMw_>;xwMV]V:K_G?G`N^PaYPYRdK\cl\flqfwqY;>Y`CFXPFN|Open|Macak,S|2007.10.07|C06|1-0|W +FVl\@OnfEU\UOUjb?Mw\UK\n>@me=XphXFsm;Jm^GW^MDMk[@xgEKsdKUdUOUjbDLel=FwnBRvxUOkcO^ne@\U?>rt=KwnT\t\<\n\>fvuf>m]KMcmCS\cBRjbRZcjEWmsWsjsOU]eUfunf\noMTohHPqaTVhiVkeE>nE=@HaYkmse\V|1st GRENKE Chess Classic|Meier, Georg|2013.02.07|C10l|1-0|W +EUm]DTld@Oxg;LnfFNjbCKwS@Se:MV>?Vd?<^e@vxU_n_N\u`EO`iHXih@AhX?@Xa\wrw[M_N=FNX@PxyFHo_MFai:>f^F=pg>@dnOEXNHON=O=^VEK_WPXWOK\g^IYOG@?iN|Aeroflot Open|Motylev, Alexander|2008.02.16|B12u|0-1|W +DTxg;Ln^@OsdEMm]T]g]FNwn?Ftf>@vxBJjZl\=Oum>HvuO_mMHNwpQqMLCLKC@HC;2A;xqN]qx|27th ECC|Lendwai,R|2011.09.25|A28|0-1|B +EUm]DTld@OxgFNtXIQX_;LnfHX_hO^smQY]T^hqhX`g]?TwSf^W^g^MOofU^ZRVD]^DR|25th ECC|Dancevski,O|2009.10.04|D12|0-1|B +FVn^@Osd;Lxg?[dU[RldO^m]EMwe^OtXGcCMUrtRKtD=DC:OW:ADTjZT?A?G?xpW_h_KDwtD_t@wnDT]cIQXa@meBRtXDLdZKD[SMUl\LS\S;EgmIQXaEKrtKZuZDKmg?>aO=O^U@gm;Ln^?o_^gwg@me;Lld?>sbCKgVpgM\YPIPV\<\n^Jrsr:;^U;_vN>GNf?Mf_M_r:@HUM_M]UKSoKS[gn\a:=MF=EFXECXOnS[c|77th Tata Steel GpA|Wojtaszek, Radoslaw|2015.01.15|A88|1-0|B +FVldEUm];E]VEVt_VP_hIYqi@OnfO^hq?MqM=MxgvxMOrt^Td\TeleU\e\OK\dELm\KJ\VPFVLFLg]=E]LJLdRLKRWHPWs>=tlPXldKNwtX`slDLlZ<;iaEmZ_;:dcNF_hFOf^mncfOktvnvfvkjhD=?DhjN^VBJhf?vsNEsvEUKf>NfXLTXYT\YW\daYNLYQUmvwmQWl`hohQflofVwvVT|Madrid ESP, Sity Ch 2005|Almagro Llanas, Pablo|2005.03.09|B19b|1-0|W +EUxgDTnfHPm]?H]T@Ol\>@sd=RtmRTk[TL\UOUdULUrtjZ>M[SIYdU@Im[M^pg\d[d^d|43rd GM 2015|Naiditsch, Arkadij|2015.07.01|E04r|1-0|W +FVl\@OmeEU\UOUxg;LjbWOTNlc|Renova FIDE GP Zug|Topalov, Veselin|2013.04.29|B90q|0-1|W +EUxgDTph;Lm]T]g]FV]LCLwp?Tl\@Fsd@ul:XgV^g]K]u]LT]uU]k[>Ztm?>mvT[u][c]EPVECZ\Cc\nvdVgxp>?qi@f^;EtfEOweO`un`fnfMTfn=Xnw<`xg`gpg:=ru=MqaXFvn?=wiToe\Muyu=unuoaulHPi<@HFMWF?WM?FMWF?WM=KnfT[sdLRMSBJuZ[FSbRLwnEMvxjbCS\f:tLO>p`Y`g`JR[dPXdmF=xoX_onRZm[_^[M=XMT>OTFXfLO:AUMAqnwqywnyqnwqywnyq|20th TCh-RUS 2013|Jakovenko, Dmitry|2013.04.10|A34|1/2-1/2|B +@OphHPwp?Ho_EUxg>@vxDTme;Lld:;sbCSgVLV_VOEe]S[blFNt_[dkd=RwgZr>?rs?>s;>EOGRZ;:Zb:BELGNLKB:KC:ZCLNGLSZ:S[VN\MGFMWFOWMNF[cONMS:;c\;S|4. Zurich CC Blitz|Kramnik, Vladimir|2015.02.13|A88|0-1|B +@OxgDTldEUm];L]TBRt_O^sm^TmcT^jZ<`phFNwp?M_fMFvx>@c]`Y]S:@vxV^xy@AunFMqM=MwuOWnYMOo_^gmgX^yxYnLVc]>Ym^OPnvYu^huYvoVLo_L]f]PGrvYPvV:=hw=MwmPYSeMNmwNV]V?>eS>FwfGNfWNV_XFNSEVvxqvVqxVv|Corus B|Kasimdzhanov, Rustam|2009.01.23|D17h|1/2-1/2|B +FVn^@OxgO^me^OgVEUe]?Mwe>@vxDTldT]d];LVLCLtX:;smIQXa;[mcLTaO=O]TMDumBRwv@wpDLm]EMxn?>vx;Ejb[RqiE?tfRKue?Nru=Fwv>=dZKDo_LT]UN]ld_VFVf_VkTMDM_M=Mn]M=c[:@vxEMrs;LjbFNk[=Fnf?=un:<[TMTtkOEgvGWo_PXdS<;vgIQsuHknkX_f_BJSdFHwvE?dZHkZkL]g]=]pC;CkZ@Gus?EscKSxoC;ZkQYvtYa\SJSbZSZc;E;tT][k\aih`W`oh;ETR[cRZceh`GP\VEV_Vef|FIDE World Cup 2013|Yu, Yangyi|2013.08.15|A05|1/2-1/2|B +FVld;Lm]=O]VLVsmEUmgDLgVOVxgVDtX?Mnf@XF?>NLG\L\>FjbFEyuEutu:B\<@G<;BEulEMd\HX;:X`:BG@qi`hohMeh`W`i`efBZfnld^fZ[np[K@GKQphQIGOIyOVdefnenhpnfpkyYVNYRklfelp`Xphe]h`]dNMd[MLRW|Cardiff WLS, 8. South Wales Open|Marusenko, Petr|2011.07.11|B10|0-1|W +EUme@Oxg@smWIwvBRjb;Jn^=DgV:=V`O`u`U]mgNVkt@AgaFa`aRZcZDRvnGOrsJTo_RZ_VOVaFTEsC?>FG>?GF?>FMEOMTOETBZBCBI@tm@NbZ=:B:>:ZR:;nvETvrTJpgA@xo@GqaLTl\GFovFMguNEulQYrb|FIDE World Rapid 2014|Le, Quang Liem|2014.06.18|A46|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;E\ULUZdEKbZfm\U\e\?FsuEO\TMDnwO^d]DqxqFaqxfvunvnln^hn>@IweGW]Vayxoh^e^W^V]^f]fyaowa\wx\[|10th EICC|Klenburg,M|2009.03.06|C99|1-0|W +@Om]DT]UCSogFNn^T\jZ=RtmS[w\?TxnNU^U@ZRKLvtIQXm?>n]T]c]LZ]c>Nyv:;v^NJuvJNtsNMm_MN_h;>vuEMc]N^g^UOhMO^MD^oehou]WHPWQ@HQWH@WQ@HQWH@WQ|Champions Showdown 60m|Topalov,V|2016.11.11|A09|1/2-1/2|W +FVmeEUxg;Ln^@Osm?Twn>@vxBRld?>kc<`jbU]d\OEgv`nunT?phETrs=Evp:;tkCS\S;So_Tcm\RZwgcR\RLRsw>;ktRctkcmnmSkmukj_V;kpakqgWHPu`?Q|FIDE World Cup 2011|Pridorozhni,A|2011.08.28|C41|1-0|W +FVmeEUxg;Ln^@Osm?Twn>@vxBRjbRZqi?>^UOUm^T?l\UKtf=u=O=Z\SR\d?Mde=>k[RJphCSed>:le@IiaJLdL:LaYN?ga?Eh`EOogHPYPGPap|Biel ACCENTUS GM|Carlsen, Magnus|2011.07.29|C41v|1/2-1/2|W +@Om]DTnfEUxgHPwn?Hvx>@]T=RjbRTk[TDtke\;LueL=ruIQe=D=u=>=XNPXTLCL>LQY[SYabZ]ZSKZjKCjkvrVML^W^rBMVB:kCxoCkofkcfockofkp:RVOf^pn^gnqg`qp`YphRShiSKOWKSW^YXiyS[^V[ayaXa|7th London Classic 2015|Anand, Viswanathan|2015.12.12|E05s|1/2-1/2|W +FVl\@Ome?[sd>@tmDLxgEUgVU]d^[m^mmc;Jc]J[nf=RumLT]W:=WhO`wn[lvul[yw>FutFEtsRKjb[eneEemlKPf^PNqi`VgVNVsjCSruS\ue=el\em\t|Gibraltar Masters|Tabatt,H|2011.01.27|B51|0-1|B +@Om]EUxgDTldFNtXIQXaHXahO^nf;Esm^hqh?Hwe>@h`?>mw=KrsNV]VEVgVHVwmVHugU]d]T]f^FnuCSunFCsuS[e\[bkbCk\ULEngTdgndlpw]eneE`UG@GeUGPwv`u|Champions Showdown Blitz|Topalov,V|2016.11.14|D11|1-0|B +FVm]V]u];L]ZEUxg@Old?Tt_@smOY_hDLul=OvtEWweWeleHPd\?=hD=Em^Og^TEDyw:=e]CKTeLT]agOaOYOkcU\c\DFek=utuF^un^awyO^jZGWZRKRqiPXyrX`og`gng^mgnm^ng@HgpW_f_a_ke_GrRGDRJH?e_?>_NDFpg^mg_FG_Xm^X`>EiaGFNXETU>?UV?@ICaiVWZrCk@HW`rbkqHPqibi`i|74th Tata Steel GMA|Van Wely, Loek|2012.01.20|B01p|1/2-1/2|W +FVl\@OmeEU\UOUxg;Lph@\fOEvxETum@ArvdvYaldOW^WPW[LCLjsN_um_Ywo?@yx>FseFHewaixyXavfYhyxW_fehwewMU\ULUbZipopV^g^_gpH@Hxya^wiA@i<@I@\j?>vx;EwvE?qi?PfK=Kum?xpOEteEVeVPVgVMVfe=eueQY\T?@c[BJpg@:eM:@we?>vxE?\ULUuc?PtmCKjZBJrvFseEMdjMEv[F>jdOYnoYhwvNWgXGOeWhWu`PaXgDhgahaoWavdUva[vHPW_E`_`avUO@HO>:>f^>=^Vv[xwHGwnGN`_[Fne=<_wKSZSJSwr<\rBPXp`IQBC\[edF?C;?F;CF?C;?F;C[\de\tCStye^yv^eF=S;=D;ANUAQvuefu]QP]^fg^VPQD=k[VvQA=OA?vs[SOV?WscgpchpohiWXicXWU^opcSWoV_on_fphSsnpf_hoskowkc`X_hwn^_nu_XulcgpmX_megoemowmuhvle_guswysrgorjowj:yie^wn:JvmJMia^UnfMNfeNVa]UN]ZNUm_VWefWOZRUNf^OPRBPO_VOPBJNGJ:GNV_PO_XOP:RNEX_EN_XNERWPN^_NLXOENO]L\WVNM_^\LVUMNUYLM]VMLYAL\V]\LA?LM]VML^]NF?:FN:BLKBZKLZ[LJVDJLD_NW]ULJ_MJj[_WXUNjpMVp`_oXPoOPXNG`^VM|6. World Blitz|Ponomariov, Ruslan|2010.11.16|C05|1/2-1/2|W +EUxg@OphDTwpHPvx?Hm]T]g]>@]c;LsdU]dZFVldOUnfUKZT]ftf=DunKEruETcTIYum@vxCKmeeg[vYak;@H;CgOCDJnvRno|2. Norway Blitz 2014|Giri, Anish|2014.06.02|A05|1-0|W +FVldEUm];E]VEVt_VP_h@OsmIYqiYahq?MqM=Mnf@vxEMm];El\FVsd?>kcDLn^V]g]ETwvBRtk=KqiRZrsOEdZTZcZKB]cHkskEVklBZuMV\MTN^VMWfvBjdg=Eiajlwoleg_WHpiGWvfe]iw]_h_CSwn@IfhEmqpNFhdHNphFEdfE]ngmoho]_oh_[fdN]guIQhoPXVN]NdL[^ul^VohQYaXYXLMVfhofdluNTMUX_c[T^opd@kc=OvxHXtkX`gmOawv?OdnOQmwLTnh:?f^W_hWNW^W_gkVMVvV`hpga_lnhoxyQiypigng_VghVhwh?=ruKUpoU[of[jh^j[f_=eux@?^TeixuidTE?FEVdTWO|2nd Ruy Lopez Masters|Zhang, Pengxiang|2008.04.06|B33b|0-1|W +FVm]V]u];L]eHPxg?HqaEUld@smCSwnO^m\U\g]DT]WEWvxHV_VWVng:=wu=egnVOuweMaY?=jZ^m|Open A|Mukic,J|2005.10.27|B01|1-0|W +FVm]V]u];L]ZHPtm?Hmd@Oxg>@nfBJsm:;ZaCSvtEMweIQdO=OaOHOe^p`OHyxJRaYPXuvRZ^WENWNGNxwL[jb[UldDTm^>?gmHVd\UOo_O^_V^mtmMVw?@?meS\e^;kvtkp^gpjt\jb\Tbcg^?FTRZbR:FM:JMT^VcfVONVOPfcJRT[R:V^PQ^f:;[d;>dkQXbjYQjr2QIcS|XXXII Open|Munoz Pantoja,M|2006.07.06|B01|1-0|W +EUxgDTph@OwpHPm]T]g]?H]c;LsdFNvx>@wv?>jZ=Ftf>=fTFDdSD;n^BJ^UJSUL=uru;DZSOELE@rs=Dwu?=h`D\n\<\sCV^aWFW`WMTtk\Zpw^fof=UuUOUweUfC;@IWOHPxyZayqTM|7. Tal Mem Blitz|Kramnik, Vladimir|2012.06.07|A50|1-0|B +FVl\@Osd?[ph[dkd>@wp?>xiDLvxIQo_V^ioEMrs;JtbJTbTMTme^fo^O^p^NZbCKbt=>jZKSZSLS\S;Ssr>:_WNVWOHXpx:=gf=OfVOVtlT\e\VTxpTLpxLTxpT\le\LegLNrwSVwoV^geRZe=@H=:NFnfZb:U^fd\fnU]GO\Tno]oF^pi^NipNUpibjokQY|42nd Olympiad 2016|Eljanov, Pavel|2016.09.08|B31c|1-0|W +EUm]DTldT]d]@wn:ZTCKTe>Ee[?le>OogO>eS>OSJO@JW_f_PFhoFWp`W]of]lfol]>S]c`XOGofGFfecTe]FMXPMF]VU]V]FOS>TCPHOH]VCT>LHG_WNWVWGFg_FMLSTNS\NT\STNSeNTelTNluKSZSN]WP]S_WMFPHSMWOFNHPNVuc|1st GRENKE Chess Classic|Fridman, Daniel|2013.02.17|D10g|1/2-1/2|B +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDLvxJDrs?Fg`>@tfDSut=MdS]SbZS]tm:=wtMPmuBJqiFXt\Xfof]Nun=MswGO`YPhwghagw?=\dHPY`NDnmIY`u@HmnaXucYaxyHQwoD>ZR>HclOWdTHYyqW^e^MmnvXhqx=MTdmovohoxoMmogYhleQXdchyenmMn\MOgnOonvop\NpxvnyhngxwgpwON^d>VXOV>dUf^U[^VOXVNLT=[UEZU_|53rd Masters|Navara, David|2010.12.29|B33o|1-0|B +FVl\@OmeEU\UOUxg;Ljb<`nfGWsm=Oul>wnOPm\V^e^W^gaPYn`Y`phHXqi`NapM[vw[TwxUK\KBKxqIYytYahaTMqxNikOiqxwqywnypO=Mhtw>=aXpgnvgflnfd|I Patrimonio de la Humanidad Open|Camarero Izquierdo,J|2006.10.07|B99|1-0|W +FVn^@Osd?[jb[Rxg>@k[RKw\DLmeEU\cdZKDl\IQZdU\e\BRrsR[b[LTdST[tmETm[OEcl:J[TETu=D=gVJjVe=RvtT^e[R[s[NESD^dlednen>ntwELDSnmqi@?[cGOSdjldsm]sbljcd]m\TmUwtjndlnltl?FldOWxwW_phHXh_X_blFEwnUVnmLSdgV^lvENgc^]md]\dmSLveNWcbL^og^gb:gL:?WX?GQYG?\]md]ZdcZ^cdLSiaXae_a`_U^\dc\TUO`aO^TV^MSLcdVTd[TUMWaXWfUVf\V>|Renova FIDE GP Zug|Ponomariov, Ruslan|2013.04.19|C78k|1-0|B +EUm]DTld@OxgFNtX;LnfIQXO=Osm?MweT]d]>@rtNV]VLVgVOVtlVXvw@k[FOf^U_[SL]g]=]tk]MbZ?=kbMEph_NldN]ogBJvoJSZS]SwSESdkSZkd@ul=FmeDTph;Lwp?=vxUOsdIQgm@jZFVf^U]dsO>qa>OsmCKm\=DaYBJYPGPgXDLtmKS\RLKk[IQXgT[ZSJSm[OYph?2yU>^UTldTYkcYuc[us[Toh^UhoU^oh^fhpfnphn^hoTKsc^[cNKSNESTEFTUFGULG>LD>GDKGPKRPe[]on]eneR[|It (cat.9)|Ilincic, Zlatko|2007.04.08|E11w|0-1|B +EUxg<`m]`gngFNwnDT]T?Tsm;Lvx@OmcTKjZBJtm>@ZRKBwvIQneNVrZ?>mfBfvf=Mew:=phOEfeETcTMTldU]usTFsvFDvrDFrvFDvr|40th TCh-GRE 2012|Sedlak, Nikola|2012.07.01|D00k|1/2-1/2|B +FVl\@Osd?[nf>@xn?>dUOU\UEMjb[Rk[RKtk;EndGWdZK]wn]kZkEOuc=FkZFGn\BJ[SJS\S>?S\W_og_fmfCS\S:;c\OUf^Uf\G@Gvo;SofScfmGjbCSf_M_n_NV_pDKcTV^efFWfnLV]VKTpfWFVOFPbZBJZSJStrPVrJ=EfWA;xp;KwrVgJBEBrBGOWHOPH>KN>DTBDNBrnwrkN_PQ_UkmwSmuSLQHLEHQEMQHMOHIOGIQG?QI?G|Baku FIDE Grand Prix 2014|Nakamura, Hikaru|2014.10.04|D31h|1/2-1/2|B +EUmeFVxgGOl\U]nfDTf]T]wn?Mvx@Fsm>@rsBRjbFLm^MFgvOW^h;Jo_V_t_JTng@AgUTNhnFOphLFUp:Bk[R[b[CSucrvOV_VLVn_N_w_HX_oC;csX`suVgog`gug>vlvENvl;>l]Njgojsxpsepieu]WuYWaYVaW>?h`VOoaOrWhrdaFdHFfHOfn?@hYO]ng@>Yh]VgGVNG_NV_gVXgdXHdmHOmE>=ESOQhYQfYhfQhYQfYh|FIDE GP Paris|Giri, Anish|2013.10.02|B07e|1/2-1/2|B +FVn^@Osd?[xgEMw\[dmd;EvxETgm>@wv@AjZBRkcHPmwT^ogMU\e^dumU]vVOEVvETtbCKbTKTwhdUh^GWl\U[^o=Mewv>E>xo>GskA@qaLVQmVewe;>mRM_kn>fRm_aoxW_ZRaOnvOJvrG>e^>Gmk]ekdemdmfcm_J\ru\N_DNORJOJ^UGUuUcgUEJwxqgGEGwGDTG_qy_wyqw_qyIYTBYaBF_wyqw_qy|Renova FIDE GP Zug|Karjakin, Sergey|2013.04.24|C65j|1/2-1/2|W +FVnfEUm];El\@O\UV]u]?T]m>@sdEVwn=Fxg<`jbTMg]:=n`O`qi`OvxMT]WFEf^VPmlIQk[TMo_MFtk?>ruOYdnBR^VR[b[PaWaFaleEZkdHP_WPXphahnhY_w_X_hY@?VN=Me]|5th Classic GpD 2013|Sutovsky, Emil|2013.12.12|C07m|0-1|B +FVl\@OmeEUxg;L\UOUsd<`nf=Ejb>@wv?>n^U]dZNVldCKd]V]tXfvf]fedfnrvZcpLcULU=U_W;>k[UWXfWgfmg^xo>Ndg^]mf]kf_kOvnNnonIY_mONnw?Hg:@I:BNUwnUpnupqmvqjBKjbKSbcunclnwl^SE^gwxHV[SVhvhghxyhgyqPXSKX`KCgoqy`hEiogyxgfxpfo|Corus A|Dominguez Perez, Leinier|2010.01.21|D76g|1/2-1/2|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQqi?=uv;Ltmnu>LphHPc[T[m[]NvfOWfb=EiaXahaN_bhPI[d_etsW_hx_guceTxvTevxeo\TQYxX^fcNL^srEurk^PTLuskbstd]tLNULMXVMEVfo`|Vugar Gashimov Mem 2014|Carlsen, Magnus|2014.04.23|C67r|1-0|W +FVn^@Osd?[xgEMw\[dmd;EtfEK\eKZrs=Fvx|FIDE World Rapid 2014|Aronian, Levon|2014.06.18|C65|0-1|W +FVn^;Lsd?TxgEMw\GWme@O^WFfXOXgXYuruWhS\hwuwIQXgDL\c?_wv;?ldFEvnHXe]V]d]K]cNE=N`]Kkc?>nl=Dph_^xw>?wpMU`YDMYP^NPYBRgqRZq`ZcjcKTlj?;jk;[YGNv`QMFGYFOQ`OHkl[S`qHOYgOFgnSRqgvsgXsciacbaYbjljRjpgT]XiLTi_FMh`T\`X\dnejog`dlelolYQlq_Y]fYhqpQIf]`gph|Ultimate Blitz Challenge|Kasparov,G|2016.04.28|C28|1-0|B +FVl\@OmeEU\UOUxg;LjbIQsdHXucUKnf@mcKEwn=>ph>GcmBR[SLFvxQYbZDTSLFLrtEKlsL[kbGFm\K\e\W_dUNU\U_fofV^t\:>b[R[\[?wnwFT[^>?w\@AsSTbUMbtxptlpxlo|4. Zurich CC Rapid|Karjakin, Sergey|2015.02.19|B90|1-0|W +FVl\@OnfEU\UOUxg;LsdUdkdV^g]LVulGWlcDT]N=MwSGN?A?bkV\kt<=wo=exw?=wvIQqa=EjZGPoqW_aYPGf_egvng_meEFnu\fum_WmdfUd\FEZRU[qiE]\dWoRK[Udc][cb|FSGM July|Todorovic,GM|2007.07.08|B45|1-0|W +EUme@OxgDTph;Lt_HPwp?HgVLV_V>@vx@p:=:t_]NruEK_f:[SLFe]V]g]FWuZUKZBMV]LCLkVOVbZW]we]gpgEeSL=UZRK\|38th Olympiad|De la Riva Aguado,O|2008.11.15|B80|0-1|B +FVn^@Osd?Tw\>@xgEMmeDLqiBRjZ;J\J:Jvx?>wvIQtfT[fm;srZ\aWNWhWT^tv^Ofh\_WH@ArbV^vr;Sl\SVr]LT]M:@bR^fhfO^HY_o|GCT Blitz Paris 2016|Carlsen,M|2016.06.12|C50|1-0|W +@OxgHPk[BR[SDLnf?HtkRZwn>@vx=KsbEUrsLTl\n`@GvgHrsrGOf^IQ^VOGgm>H`g@blBRrsOYn^]flfGWpUNUfUL[wv[evfV^mweVfc?GtfV\fT:@wvU]f]T]d^OUtmGW^T=MTcIQcRLRmRVLCLnN@INMFMRm>;kc?GvNH?rvUDNnMUmR?[RDGDn>;>v>IH|FSGM March|Bosiocic, Marin|2007.03.11|A50|1/2-1/2|B +@OxgHPm]?Hld>@t_EMnfDTsmT]d]@vx?>ldBRjZIQqi?bc?gcCBoxp=?vuoKCKDKwSgopx?guwowSwNcxpgOwSclS\@I\UlZkcZL`XLUXOU^poHOtfKSfKRZcZSZKTPXohIPiaXahaPWah^LhoW^onLSnmOWTMW_MT^UTBZbmlS\B;_g;BV^|VIII Open|Garcia Castro,P|2006.06.11|C41|1-0|W +EUxgDTnf@OwS;El\BJSE=E\UOUsdFNvx?Fm]>@f^UdkdCSt_GOwv2pU|FSIM December|Galyas, Miklos|2005.12.05|E11|1-0|B +EUxg@OnfFNm]?Mkc>@tkCKwe@sm=Dld?=kcEWtbO^rt;LbT^T]TFVc[BRjbR[b[:bmcbjtrjlgaldaWPW[SLFrtU]f]V]ngFPSKDFTLCLcRPVRLVLgLHQtd]dusFTKC=;LZTUslQHwsW_sSUNluNFqi;CSCFCu=H?=X?HX=H?|12th ch-EUR|Palac, Mladen|2011.03.30|E11h|1/2-1/2|W +FVn^@Osd?[xgEMme>@phMU^UV^e^O^tm[dmd^dkd?>wnVunHPne@HwsBRd\VYqaYV]SD@un:]TKTd\U\e\>=wuE>k[TFm^BR[SLVgVHVo_VHu=<=bZFb\c=F>NUCKf^W^U^>GsuH?uEGNEC?TCHPXHPNF_WTo^gdbPQX`QNFGg`ohqiho`gbZgYGHp`ZbipoaNPHIPKRZKJbhpqZb`XhXYPIQJbX`bcaOSKOVqiQXKCV;ce`[ip|YGM playoff|Nguyen, Ngoc Truong Son|2010.07.29|D12|1/2-1/2|W +FVnfEUm];LxgV^gmGWl\@Osd@ldET^mKSZR:;mg?@vxpU\fof>FUNGNu=@GxoGP=eFDrsdT|FSIMA Feb|Eperjesi, Laszlo Dr|2003.02.02|D85|1/2-1/2|B +FVl\@OmeEU\UOUxg;Lsd<`nf=Ejb>\]>=]\CKf^;C^V=uHICLIQLEQPut\UtuU\ut\Utu|Masters|Bagaturov, Giorgi|2007.09.08|B67|1/2-1/2|W +FVl\@Osd?[ph[dmdEMwpIQxg;Lgm@mwNiwfipfpLFvxBJogCSpfOIfUFU\UGWtmIOrv?GneW^g^:?wgEiewiEweEiewi`wpOEgG?Gqi`PmfEOfoG?h`OIvfPXph?_haIOaXQXfn_^n^O^of@GjZGPZR^O|67th ch-ITA|Bonafede,A|2007.11.24|B31|1-0|W +EUxgDTnf@Om];LwST]f]<`sm:@V`O`mg=Dqi`OSeO^gX^OXgIQvxO^jbGWd\HX\UNUtfDKk[W_Zc^Oft@HtkLRcjR\rtBRe\U\]UR[b[K[kd[cjmH@wv<>v>O>tv>Hg]cK]NHNUNKTmlTWlW?WNFMFvFWSFH@?HD|KM FIDE GP 2015|Vachier-Lagrave, Maxime|2015.05.17|D38f|0-1|B +EUm]DTnf@Old;L]TBRwSHPxg?Hsm>@vx=DuZLBSeDTmcTDZRCKRZO^cm^TZlTele?=f^BL^U@\UNUwn=Fvx?=dSO^tm<`md^dkdRZS]`YrsYPneZbePIPsSLR]cRcScCKun:ZwuZ^csGWgm^VphPXmgV^g]=?ngW_f_X_h`FVxp?@sdFNtm;Lg]OE]LCLk[BRrsR[b[=XphXFweNVf^EOvxU]dnntGW^WPWe\@AteFDogW_h`>OeoV^o^IY^oY`g`O`ug:bsc|4th Ruy Lopez Masters|Perez Candelario, Manuel|2010.06.16|E04j|0-1|W +@OxgDTl\;LnfFNphEUkcU]f]T]me?[tm[MwpIQvxBRmt>@sbNVbSMTgvogWPxy>FjbF>tkQYkt:<>tw_VwvVOv>E>TL>=aYOVYQ=aqia_yxHQlv_tewVDxytfpg@?vefmeo]eypdnwrm_rA?F|3rd EUICC|Agrest, Evgenij|2007.06.21|A34|1-0|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQtm;LutCKkcd\UOm_=EyuEFhwLVwfC<_fOE\TPXaXQXUKQIGOIiJS\SW_SKowc\_g\UOWULW^ia^fLE>@aiwuKCfniqgoTL@HENusMTsCqoneLCHCNUCETME=ogengbnmUVmnM[=^_>N[dN>dV>?_^?>bjnv^]vwV_>njbn>_V>FbfFB]^Bjfcjn^WnjV]jlW^wncinu]dln^]npiful]\p`d]`pfblu\epme^mlbZln]fnkZ\un\@ZB<:BC=MCc?;clMTkcIQXtU\tkTSsdSKlt\cjcKcduNUpUcUufUNt\:rkrOUwuF?rd;SdrSRrkRT\^Uf^fTSkr?Ff^QYutSUqaHPxp@I^\UM\NMNtsIHsCGOrdH?pgV^gfPXf]OWaXFXnf?>CINQIBYahaXO]\OadvQPBIaFv[F[\[Pp[TpoTLomIY>GYWGNWXmlLSldXh|FIDE World Cup 2013|Vachier-Lagrave, Maxime|2013.08.23|D85t|1/2-1/2|B +FVl\@OnfEU\UOUxg;LsdUdkdV^g]LVuZDLZlGWlcLTwS>FtbFOo_VG]n@w\UK\j@Asd<`qa`gpgGWmeMFtm=Evt:=mv?OaYIQyxE>dnW_vdKUjU=Ue]V]n]UTxH|FSGM July|Fogarasi,T|2007.07.07|B43|0-1|B +EUnfDTxg;LwS=Dsd@OmeBJSLDLvxHPun?Hf^U]dsOEld>@tXFVd]T]sbCSwtLMnlEKlLMLtLKZkcZdbsS[XF?>F[dnxwn_gvnmfnl\T:=U[l\[L=>um\dscdlmeljc;>;L;@Ge^|Trophee CCAS GpA|Cheparinov, Ivan|2008.10.26|E33|1/2-1/2|B +@Ol\DTsdHPn^;LphBJjZ?Hme>@wpO>tfEMxnL]vx:;rs]ndnCSZSJS\SDn_H]ulDN_NGNT]=]lD]MDMFMscSZcb;[pi@GwtGOtD?GD@me=XphXFsmBRm^RZxggenV]V>VemaYI@V>G?>V?Oh`@GphONVWGFwtFMWGNFG?mk?=FE=;kchpMVtTcbTSbdSRd\;:\`pi`_RZ_oZ`oW:>VMiaMT>MD>@WG`]DM@:MV]`GF:RED`pD\aiVMpPMVPp\diaFDpnVMRJDL|6. London CC Elite Blitz 2014|Adams, Michael|2014.12.08|B42|1-0|B +FVl\@OsdEU\UOUxg;Ln^U[meL]g]V]dsDTwn?Fvx>@jb[Lo_bt>FmgVgngUgpg?>vF>Fxo@Gg_FCtmSZcZCconcknukjZRMDwvjm|WYb12|Yilmaz, Mustafa|2004.11.07|B33|1-0|B +EUnfDTxg@OwS;EkcFNtk?Mvx>@m]BJSnCSl\S\c\:;kb=RumRZmuZRumRD\UO^mlNU]TETsdnJ>NTMDltl;=l@vxU]gV=Do_?=ldOUd]T]k]U_w_HV]VDVsd;Lnf@mcO`t_EMpL=DLpHkrskHstHktskd_mUXc;uvbMia@HaYIQXtPXvuMOtT;=|Lorca ESP, Narciso Yepes Mem 05|Lalic, Bogdan|2005|A16|1-0|B +EUxgDTph@OwpHPld?Hm]CKvx>@]TKTd\|6th Kings Tournament|Ivanchuk, Vassily|2012.11.12|B90m|1/2-1/2|W +EUm]DTld@Oxg;Lnf<`qi`Y]TFVp`YPk[O^tkIY`X^XgX=XuUXWwS:=SL>FU^W^L^P^yqFNsm^Pvt?Fo_=e_Vefm\fhiah`u]A=\MCKkbKT[T=Etk`xkcEDM>D<>HNVqnVOHYPY]_OHnFBRFCxsbk@phDTwp;Lvx?=ulIQsdUOgm@mcTK\TKDc]=E]WNWtfBRf]O^nf?;rsENjbRZk[ZcscHPc;:;p^N^urIY]A@?qa?>bZ;:rH:ZH@>FAH^NwsZBHQFEQ_N>@HD_f_EDHkDEkHEFOA@tkDLsmWIuvBRjb;Jn^JTgVOEVETExy=Do_?>h`FMvhGOrv>?e]RZl\HX^VOV]VMF_WZchcDKcjF[\U[mUNETvumRuEKkjk?W`WTENEIWwWRdkc|54th Reggio Emilia|Ivanchuk,V|2012.01.04|A48|0-1|B +EUm]DTld;LxgFNnf@Osm?M]TMTk[TMwe>@vxCKtkxoe\TfIQfTQY`YPXT[XYCF>=FHOWohW^g^YyHXyxhaxyahyxhaxyahyx|FIDE GP Tashkent|Mamedyarov, Shakriyar|2012.11.27|D47h|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb?Fnf>@ulGWwndUNUk[BJtk>Pru:>umFMwv?OluPQph>?e]W_]V_hohOgmUgonYMFkdHPVNA@bZPY[SJSZSL=u]=N]\FMSKQPKDMDUEoGvuGEuE?GEUDhqhPhxyhiyxifxyfiyxifxyftypGH|Corus B|Sasikiran,K|2009.01.30|B84|1-0|W +FVn^@Osd?Tw\DLxgCS\cEMmeBRjZS[dn;Enh>@vxTKldETcl?>qiMUtfvuvLUvm:>rtOWkcKBmlW^xwHPlm^WgVB;p`WNtL;MLJNFJRMV]VFVmUVrwp>vRBrOBCvnUgONC[nlg^|Champions Showdown Rapid|Nakamura,Hi|2016.11.13|C53|0-1|W +FVnfEUm];LwSV]f]?Mxg@Fvx>@ld<`qi`YwvGOsm=Emw:>tmBJSnYGwhGPgaMhohP^nY>=Y`OW`nIQmf@IagFvn^gpgOYtvNPnp>:h`W`p`PGCLGgLPI@PHYH`H@AHGA@|4th Sinquefield Cup 2016|Anand, Viswanathan|2016.08.05|C01v|1/2-1/2|B +FVl\@OxgV^g]EU\U=Unf?TsdUVo_VF]n>@ul?>nhIYyxT[jb[dldDTkcYahyOUdl;Ltk^[L`oyw^aLF@GFWIWwoWNogai|Capo d'Orso|Shytaj,L|2007.05.26|B29|1-0|W +FVl\@OnfDLxgV^g]EU\U=UsdUVo_VF]nIYkcHPjZ?HtbLTrt>@djCKc[@xgEMmeDLqiBRjZ?>vx;JwvJD\j;uwM[mt[?o_LTno:J_VEVt_JK_hKclnVeWQNQogetnu;[gGchG?@IutQtwthdtvd\^V]evu\d?=T\VN[C=EC;NF;>uw|FIDE Candidates 2016|Topalov, Veselin|2016.03.15|C54h|1/2-1/2|W +DTxg;Ln^@OsdFVw\O^d^EU\SU^gV=UVLCLSnUXphyvGWkcFMnm>=vuW_h_UYuy=?t\Yamn_OZcjc?HOL>ELD|VI World Blitz|Andreikin,D|2010.11.17|A28|0-1|B +FVnfEUm];LwSV^l\BJSLCLxn@OsdIYogYag^aipi=x@e\nd\[uc[cjc=FdUFNUD|Mitropa Cup Men|Jenni,F|2006.09.12|C19|0-1|B +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[`gpgL]wp?Mdn]nun>@g_DTvx=OrsV_tkMVwu:=[TJTe]V]^V_gVOgnu]=]k]?=sv=]vnHOnF]upwuEFfEuxpBJfh@?hi?HihHAhguMw\TEgfEV\nCSqaVPaYP_ph_nfnAHh`IQo_MUnfJRfdRZdfOW`gS[b[USghS[fVZbVR[chpckpgbjgfkqf]qkRJkq]VqYJjYyjpH?|FSIM April|Radnai, Adam|2005.04.13|B33|1/2-1/2|B +FVl\@OnfEU\UOUjb;Lme?Fk[BJtkGWsm>@xgFOul@Awn=FrtwvFGnwUKkr>=lsNjsljNf^?>^WNWm^KEphIQwpOFtsW`gm>?[SJSsSFbm\bFSCL[lm[emeETelTC\VGWqi`uvu=uluCTunFMV`?>nkWP^MDMxqTekSQY`f>?fueouo?oSZo?ia?>r]>nZ:AI:CIACgn>pwPlqxlPwn>ngnPhxwhanfaywnypnvpPvmAImdMUfVPLdmLQ]fQPVUIAUVAIVU|FSGM July|Fruebing, Stefan|2007.07.14|B43|1/2-1/2|B +FVn^@OxgO^me^OgV;LVLELwnGRBLDmE@wn?>k[RKvxEMmeBRtmDLdZKDl\;EwvMU^ULUmXIQXaU]utE?nuHXah?P[SOYSKD;gXYhXGhnvn@Gn^GH\TP_ug=OTL_ixy;M^nV^g^OVphVYog>^e^Ygnpg^tv^LrtLZpn<`nFH@|5th Final Masters|Aronian, Levon|2012.10.12|C88g|1-0|W +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBRtmmcT?wuUXrt<;dRCKnlDTRdXPum?McRESlcMqxq=mcSmotxPQ|Mitropa Cup m|Baramidze,D|2008.06.02|B65|1-0|W +EUm]DTld@OxgFNt_;LnfOY_VGOVh=Kul^UNUgaYhqh<;rsKDmwHPwf>GvxA>kc\cscFMwsLRcSMhag;:lZhoxoDFSRCKZL:;sK|Mitropa Cup m|Saric,A|2008.06.01|D12|0-1|B +FVl\@OnfEU\UOUjb?Mw\UK\n>@me=XphXFsm;Jm^GW^MDMxgJTe]T^vxh`WOohHXaXQXtyA@yY|Bundesliga 2009-10|Berndt,S|2010.02.06|B42|0-1|B +FVl\@OnfEU\UOUjb;Lul?Mxg@tkGO[SLFm]V^l^NW^aU_f_FPw\@AaY=Ega:>vwPaYaMTahT]sdEMhgDLruMT\e]dkdWegeTbSLCLph|FSGM July|Kjartansson,G|2007.07.11|B43|0-1|B +FVmeEUxg;Ln^@F^UFUwnHPvx?Hwv>@ldm^CK^hWNgXN`og`NuZIQXN>Ntm@IruEMk[BRh^MF[SL;Zc?=mtGWtbF>^oDTbkUDjZ;EphEOd\OEwpNFvnDNuvN]k]T]clETh`>G`WPWoyQYyhYahwHQxyQ_pi=@wmGYvwFHnv_fg_IQ_VYnlunmumfmvumfiW@?VN?OqiTN|XXIII Open|Arakhamia,K|2008.03.04|C41|1-0|W +EUxg;Lm]FV]VGOt_OVgV=OVLCL_mOksd@Orskbnf?Fqi>@we@ul:@ldEUm]CKt_Esd:=m]VYp`UflZ|Capo d'Orso|Pedroni,Marco|2007.05.23|B43|0-1|B +@Ol\DTsdFNxg;LphEU\UNUm]T]g]=Knf?[wp>@vx[dkdLRtb?>]cR\bTKLT]O^uYCKwvGOog^XqaXGg_^cm\mum:@goCJmuJ\jZ^auvaYvNQ`NLGFomFEL\U\]KEaipiW_ipOW>;SL;KLUKSUNSKNGKL^mph_wLJmc]VGFV_wu_VcTJLuUV]T^h_^m]fFELOmsf]sbOW|5th Final Masters|Aronian, Levon|2012.09.29|A35h|1/2-1/2|B +EUxg@Oph@o_V]f]O^d^U^_WEOtf?>umCKk[OUrsR[b[KT]TDVwuVdmod[pw=Fst[btl;cf]>;w\csus;sxps;\ULUofb[WOFNOH[RljR=f_;h`>Eph=>h_>?_V?>V]>:QP@GPOGN]VN@qa:>V]>?xgEMtb=FV];L]uLVwnruO`gV`VvxIYogFNlZCLZcYaf^VEneaip`EV\TKTcN>NenHP`XGOXOPXbtNOtXA@g_L^xo@XofV`n`X`f^`p^UpqULqjLDiqd\?GuMOMDMjpwyGOMTOWTSW_SJ_h|Ch Madrid (final)|Vazquez, Renier|2006.03.15|B30q|1-0|W +FVn^@Osd?[jb[Rxg>@k[RKw\BRrsEMmeR[b[DLvx?>\cIQdn;EnhE?qi?PgqMUugPagnKDq`FaYF>wv:jgW>:[SI?SLCLsC:BCBjB|11th Aeroflot Open A|Iordachescu, Viorel|2012.02.08|C78m|1/2-1/2|B +EUxgDTnf;LwS=Dsd@Ome@nfGOruJRgvT\vgNVgaHPag?=qaLCgm\cfc@HjZSZcZCLZjF[ldLSwv[dkdDdmgS\jZ\GutdcZLRZaYcNLC=;CDZbDTbjTfPXYQHPvuNcfvPQgqGNqw;=u=:=wf=;xqcefl;<||Mohota, Nisha|2007.01.30|E33|1-0|B +FVl\@OnfDLxgV^g]EU\U=UsdUVkc?T]n>@tkVFnh?>ul;Eme^eweEVeWTbkbFbvx=uMFMvuMFu=F=hn=MxoIHXfMNg_BJ^VOEfeKSeULFUNGNd^FU^XUDofH?f^?Fp`Y`i`EKnhKU_WPW`WNWhWFEjbT\c[Ud^]dsWfDNXNENfUsmUDNWVNmg]f\dfedlelg]le]NDJWVedVU|FSGM February|Antic, Dejan|2006.02.13|B22|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb_VL[tdDLum[JmQ>@QIJ[wrBJVN@>NFUNIH[UdTKTOaUFrv]np`W`iwFW|1st GRENKE Chess Classic|Naiditsch, Arkadij|2013.02.09|B90l|1-0|W +EUxgDTnf;LwSFNvx@Fm]BJSeT\enCSldFWsm@tbFbrb=DulGOwrWMbjHXlt?Fsb@wtOW\LV^kc<=m\]e\KBKne^eZ_em_X@A|YGM|Rodshtein, Maxim|2010.07.20|D85|1/2-1/2|W +FVn^@OsdEU^UOUw\@kcUDd^TFtkGW^hV^gfCS\NDNhYFXo_XFxyFTfh?Gme^eruemkd;Eum=Fwv:>ntHPmnE?teTMdVF=VM=MeVN]nmMTVG>vhv@GYh?NvfTKld|Ultimate Blitz Challenge|Kasparov,G|2016.04.29|C45|0-1|B +FVnf@Om]V^l\DLsd;JtmHPxn?Hn_>@wnEMvx?>ogPX_i^gwgX`gO=On`<`u`ON`hNPhgPlruJDi_DN_YlPd^GW^h>?YHNH]ULTmd?Guw:?g_IQwg@IjbH>k[CK[SPXhnGFxo>OdO?OnhX_g_IPonOGneBJbZJSZSFBenBjngjl_aGBhnPInhBGa_IP_aG?hn?>n_PIaY>V_eVFYWlde_dfg`FH`af^ph^\WO\[OM[SMLS[UM[]LKT\KLHPLDI@D<@GMEPMa`ME`WEF_N]^NT^FD<>GTZFVW_f^_g^]ZKVWgf]ef^WoK\|33. Annual Eastern Open|Stripunsky, Alexander|2006.12.28|C00|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ltm<`nfU[md`gpg=ajb[Udm>EDp`W`>^`g^]|FIDE Candidates 2016|Topalov, Veselin|2016.03.24|A33o|1/2-1/2|B +EUxg@OphDTwp;Lm]T]g]FV]LCLl\:;vx?FsdU]d^O^p^=EnfGW^l>@f]V]lZ]ers;[tmW_m[F[uY?WY`E>`u>^wv^]v>@Gh`_gqi]_ueG>su>Ge=[TxyWO=nwX`o_`gwgYaphahqh>@fw@`go<@vfEldCKcmMNd]T]m\KS\mNjuljNmc<;opL[luGOyw@Hg_HDcrNj_VOVwWQHa=DE=XjkWokbrc>McTEDXtbrTNDFNHFHucBRcNA=o?=?NMHDM?;C?>rj>SCBpgDGt_jriY|43rd GM 2015|Meier, Georg|2015.06.30|A42s|0-1|B +EUxg@Om]DTld;L]TBRt_FNnf?TsmRZwS=Run>@vxTFgVRKrs?=SeLV_VOEVhETelqh@I`gT^hq|6. World Blitz|Carlsen, Magnus|2010.11.17|D18|1-0|B +@Om]CKt_@wnEMvx;E_qDTldBJjZ=DsmCLk[T[d[DCucKSZSJSrR:ruEK]VKZklMVnw^durDEgm>=mcV^rtIYiaEucTZT[Tutlt=utbuv|GCT Blitz YourNextMove|Giri,A|2016.06.19|A06|1-0|W +EUxgDTnf@Om];Lwn<`qi`YvxFNgVYnun:@kcTMd\MVrs=DjZ?GDNEN_m@Qo_OWrtHPcT?TtTW^_WQWu`=UTUNUp^USwoLFmXSV`gAYX_VNkcCKonNEnl]e^eE]loGHe\Ya_Xaigi]oidW]XfogyqgYqpY`pw`gwxghxwhiwxi`xwFWfo`^wxHQde]gxw^_wng]nwQX\U]lU^l]jZ_twp]NpqtkqxkresrVseN_e=WF^p_pxpV^phXO=MOGMD^ehpeUpxUXxwXRovRJwxJnvonuxpuUpxURDERXxwXtwntlnwBJoKlswoskoxkcEBcuxoumoxmvxpvnKoPXBEn\of\^poX`EB^govgyvnyqnwqywnypnvpy|FIDE Candidates 2016|Giri, Anish|2016.03.21|D70|1/2-1/2|B +FVxgV^g]EUmeDT]c^ene;Lsd@OtX@ng=Ee]T\ctBJjZ:>tnHXqiQYumX`i`Y`mX@AXQOIgUNUdUEUn_UMQYFX_iMQY`GW`uW_hq_g]ULVwvgpvVQiV>?>rbiWu]IO]\O`qh>^\JWUJ?g?rHeiXapqHVo_Vkipahqik]?W]fpkh_ipfhpw^mwnhg|FSIM June|Farago,S|2005.06.15|B03|1-0|W +DTnfFVm]T]f]V]xg?[sm;Lwn@OvxEUmcIQc]>@t_?>nSTe>@tfGWgVBRog^MsmMSulLV]Vpg>GqaSk|3rd NH Chess Tournament|Svidler, Peter|2009.08.23|D15h|1/2-1/2|W +FVl\@OnfEU\UOUxg;Lme@sdUKjbBRkcGWtkFOul=Fgm:=m\FGruKG?>?@?kH?@qaeoyqXa|Corus B|Efimenko, Zahar|2009.01.22|B83|1-0|B +FVl\@OnfEU\UOUjb;Lul?Mxg>@w\UK\nGWmeV^gm^eleLVec@AmggVMVmgVMtmW_wv_fmfELcdOPgaP^d]MV]^L^rtVktDKUD\Ufofkbvr^UaPIP\aA@rb>@n^;EtfCKogETxnE`OELOI?AIORZX`U^`nFUO^CKkc\cd\U[tkcj]UNU^MLMkA<\nVMTVFTSFE\LAdBRd[S[EULlwuZcu][b]eRZUMbkM]|2nd Sinquefield Cup 2014|Vachier-Lagrave, Maxime|2014.09.03|D31d|0-1|B +FVn^@Osd?Tw\DLxgEMme;EjbTKtfKfof>@vxCS\jBRgaEKuv=FaW@SMDMkc?WtbWgyxEOvaNO>=ON=>NO>=U[]UOF=@[j@HF>H@>E@HE>H@>G@HG?HXKck]cSXVj[UMSV]V[UV]?>ml>E]TgnlknSkcELT]LMclMNluNWuvW`vo`i]TUOTBO`ovipB]pgvmSJ]B`qmdqwd]wfBTfW]VWQTKQ`VU^fKf`fUVJwV]f`]UgfUNf^NM^]MNweNMe^MN]TNFTLFN^PNFLUFE`OEFOIFEPWEFWNF=UM=>NU>=IO=@wpUKvx?>jbF?k[L]g]V]d^BRtkDL^TKUk]R[b[:r]rU[T^<`um[Uqi`YnfYPwu=EmkGO^mU[e]>:f^PGksE=rd[jdk=K^VOV]V:=p^IQVNGN^I@GsPGFuv|XXIII Open|Zozulia,A|2008.03.03|B70|0-1|B +FVphEUld;Lm]V^qa?Mxi@Ot_>@_M=Mut?>nf<`smOYi_Y_h_`gmg^gvmLRtuDT]TMTml:fd]Tltf|90. NY Masters|Blatny, Pavel|2004.02.03|B15|0-1|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tfxy@Anw<=cs=MstIQqiGNtsAIftM=tb=;ph;MZjTDjpMTh`TdvdDd`WNWuUWipldlwilTiWI@WN@AUETS_W^fECQYN\SsypskpiK]CFAIF^kmiaIQ^>]OahQX>fml\eldhpYapwRZwnZb|3rd NH|Korchnoi,V|2008.08.21|C80|1-0|W +FVl\@OnfEU\UOUsd;LjbUdkd?Mm]>@ul?>tk<`qi`YweYPePIPxg=OvxOWf^WOwvOFgmLRlZCKmcRcZcFacl>Nvf:>rvPXleNPfhX`h`P`i`a`vf>Nfh`_hg_XghXF]UNOd\MThgOQktQItfTbfKF[euBKurbkr:[?:LIQLDk]phQMxp]TgW?>WYHPYa>=DC=Oo_M=CDOMDBMFBrT]ru=:_WFX|12th Karpov Int|Rublevsky,S|2011.10.10|B46|1-0|W +FVmeEUxg;Ln^@Osm?Twn>@vxBRld?>kcCKjbNrvVOfNGNvtRZcZL\ZRKRxwNVtuV^uURZUR@GwnGNqaOFR:NW:>FO>:W`:>`inwIQ>NOdkd\dN^db^\brwnip\DZb|25th ECC|Hauchard,A|2009.10.10|C41|1-0|W +EUxg@OphDTwp;Lm]@Z\TKsd:<\ZIQt_=FgVHXVLCL_m?=ru=]Zc<;mt]`tf`[cbKfofO`dZBRutFBZT[kf^WPbdBDqi`VxykKwu;:jbK;um;=tu=mum@Ih`D;mk;AkC:=CsQY`YPYdhAOswOHwo=mTcmuyqV\pgYgogRZcT\m|12th ch-EUR|Postny, Evgeny|2011.03.31|D92|1-0|B +FVnfEUm];Lxg<`]VLVwn`gpg@Og_VLjbHPk[?Htk>@l\U\n\=uvuO^kH@Hun:=rjBR[SLFytCKsm^mjm=mnm?=\e=Ef^Fe\OW\NH?N<>HVN?>]V>=^P>Vtvf\qaSLvV\VPW;Dp_D=xoLEW^CSofBR_PVP^PS[b[R[f]ENPe=Fe\N`\cFO]\OVclMU\[V]lP`N[S]faYU]ST]ePefeTMN@MVefh`fgVW@IWXghXQh`QI`Y|29th ECC Open 2013|Svidler, Peter|2013.10.26|B48g|1/2-1/2|W +EUxg@Oph<`wp;Em]FNvx?Fsm>@l\DLkcBRjb=;tk?mg;BrVBEHQEUg]<:VH:jQA>EH?F?]N?FN?F?A?jnvn|FSIM June|Eperjesi,L|2004.06.13|D03|0-1|B +EUxgDTph@Owp;Lm]=RtmRK]TKTvx@WM=MruOUfUMUuUNUvrGOwuU\rk?=u=L=km=NmE\LELCLog^gng@GxoGFofFMqaMUaYU\drOWh`HPYPIP`WPWrV\cfecbe\BJVObj\djsdcN_OX_eXfeVg_VEf]stcZtlZRlc]HLT[TETH]c\]x\URKTeKJU^JS^gS\e_xq_nq;g^;qn]\d]gq;W_;_^_|Zurich Chess Challenge 2014|Nakamura, Hikaru|2014.01.30|D90|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb@m\GOkc=>tk>Pul?=phBRwpRZcZU[b[L[ld[evwF[dleklkPewx[d|I Patrimonio de la Humanidad Open|Candela Perez,J|2006.10.12|B84|1-0|W +FVnfEUm];LxgV^gmGWl\@OwnGZR@wn?>k[RKvxEMmeDLdZKDl\;EZdE?qi?NwvBRtfIQnwOI[SDKrsKTSLCLe]TbuZLTZbV]f]T]dS:Jg]NXogI?su?P\TXipi=XxyMT]nXanxP_bkJPkq_Yxn=qx=;us;=vuT\u=a=sS=mSYmnYU\dxwnkUSkmSUmkUSPLg_kmSUmfUefewedl^VHPpLlt2yqtL_WPWeWLPWEPlqhlchqckqykryprVpgVOghIHEBOVhgVWghWehpe^pqRZBxHIxo^VqpZb|6th London Classic 2014|Adams, Michael|2014.12.10|C90j|1-0|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQuv;Lqaru=unu>VfdVTkcWEdfELvmTWph@?fvWVmf?FunLEvuDLldO`n`E`us`Yc[Yg\TKT[RT\sCFOCDVRDLOWL\gu\^uZ_eHX^\RBogZl\LBFfmlemeQYLQFEelEFlmFEmf|31st ECC Open 2015|Navara, David|2015.10.23|C67w|1/2-1/2|W +FVnfEUm];LxgV^gmGWl\@Own@sd=>o_BJtkF[ut@Akb[dtd?@wo>EmwL=wh=GhYOYnYJRrt@[KG?rs>Nwv?>K;DGsKGBv[>@[c@>cu>@uYNPhaBGxy@?;:GEYnPNK;N>nkEGahGYkm?>:>Y>m[>E[KC@ul;Lvx<`meBRjZMUqi`NtXTFwvIQXaOEaF=FsmGW^UNUe]V]g]L]d]FMngUgmg@AvnDLrvMUgV?Old:=V\CKnFW_F>=>v>AI\VEV>VUGdeGPePIPV>OM>;M];K]ZKLPWxwZjL\WVwvHX\lV]vnRZnujrunQYngrjgnX`i`Y`ph_hohjrl\^>@en|FSIM December|Lengyel,B|2005.12.04|C24|1-0|W +EUm]DTld@OxgFNtXIQXa;LnfHXahO^]T?Tsm^hqh?ru@kcUOtkOEe]V^gmGWm\MPsm:=ul@AmwIYqiYaruPNumEK\VT]f]KUwf=k]>N]T?>muNPutUO`OHOTM_gMhgpvf>=xpJnpqngfv=EtLEIaI@IvtPQLDIPiaW`txPWDTWNTLNGLDG>|3. Norway Blitz 2015|Hammer, Jon Ludvig|2015.06.15|B41|1-0|B +FVnfEMm];ExgHP]VMVf^@Ow\?Hun>@vxCKsdnhHIgaETagOEia?HkbCFfnE?bTKTu=hw>MwfNFgmQYmcMCfwHQwqQHqgHOemFDgvOFveFMxwIHwnHIogMFnuFMutM?ts?MphDGcRCRmRG\RBIQB:\]:AQXA=XQg_V_h_T\^VMV=XQIeV]MV\M[\k[vsjYa_WPWXWIQkevhe_hXWXQX_iX`ZR`iRJ|FIDE World Rapid 2014|Nepomniachtchi, Ian|2014.06.17|C00|0-1|B +FVn^@Osd?[phEU^U<`wn`nun[dmd=Uxg;Lvx>]f`NvuN`f]>?uv?>vf`Nl\NW]UWPxpPIbZ;Ffc_Gc[G_SK|Wch U10|Petrisor, Adrian|2002.11.22|C60l|0-1|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQtm?=utHX_nO`mvGWo_^gpg`fvmfwywW_qa@Gd\;Lmd=>woLVaXQXkcCKtknqnCgnNPYNOg^ktX`dV_gtmYaOW^WmfDTldWlc[lZfoBR[RKRVDZLDR`howL^|6. LCC Super Rapidplay Open 2014|Howell, David W L|2014.12.06|C67|1-0|W +DTl\HPsd?Hph;Lwp@OxgEU\UOUvx>@uZFNme@gm^OmgOH?F;>F>HQ>FpgFOg_ONQHGOHANG_^GNo_NG^UGFU]FN]^NG^UGFAHFGHQGFU]FN]^NG^UGFU]FN]^NG^gGNg`NG`aGNa`NG`gGNg^|Ultimate Blitz Challenge|So,W|2016.04.28|A05|1/2-1/2|B +EUxgDTph<`gV`Wl\=DuZ;Eo_GOVgU]meFVsb@F_VOVwpFLvx?FgaW`ZuFahaEOqi`NtX>@nfDExq:=f^?Gbl=?rsIQXmLFaY@IkcHPYPFPwxPalvapvpNipaO`qh?@un`ohqi`nvEFapGgxwgiqx`gwoFa|FIDE World Cup 2015|Mamedyarov, Shakriyar|2015.09.20|E60b|1-0|B +FVn^@Osd?[xgEMw\DLvx>@meIQdn[Rnh?>ldMU\c;EwvRDclU^e^E?qi?PtfP_lc=uru=jZDKfKBKm\=uvu:Z\KZjK\QYiaHPogCS\VjkhwN_umkmwmLTxo@?mc_Nof?Fg_O>cR>MRLF>p`Y`V`M\fg\mgfm\fg\mgf|GCT Rapid Paris 2016|So,W|2016.06.09|C65|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tfDLw\=Fvx;Ef_^fVgfowoE;um<`rvF=dZOUZT`gog;ETC=aCTU_g_a=TE=Evw@AldGWmeHP_oKDwvBRon?>[S>nenEMnVMV]VLS\SD=VN=FbZAHSEHOvs:BsSBDSRDdRUdtxotlowljqiIYiaW_UeOWphW`h_`_ed_VdhFahPaFPQYaQYVMYWaiwxiqxyMDWGFMESDKGwjmwtKRtsMFSEFMNFMFsSRJE@vx:=ndOFf^BJwvL]jZ=;tfCLdnKS\SJSZRFMo_NVn]V]fo;:k[T[uc?<^VMNcNGNo]LpxpH?pg:Jvs?F]KtDIYqiS[e]:;DL>ELDE>RJ;KJBKJD<>GB:2J:<:F?h`Y`i`?F:AGHAyH@yw@GwoF?ol?FlWO?FOK>GKQF?VNG>QA>Fc[bjAyFN[dNWyrW^rj?Hjn^WdeHOn>OH>:HO:JOFedF?JBW^BE?bE=|13th EICC|Rodshtein,M|2012.03.29|A04|0-1|B +DTxgEUldEUNWNsbNjn^BJtf:>]T>^vtEDgm^fof?Tw\j\m\@QtsA>yv|4. NH Chess Tournament|Gelfand, Boris|2010.08.15|A50|1/2-1/2|B +FVm]V]u];L]ZHPld?Hxg@OtXIQXO=Onf>@wnBJvx:;smCSZl?>g]LVwuEMmgDT]cVcm;>ngMUjZOKZSJSlcVXphT\c[XWgpWo|Ch Madrid (final)|Vallejo Diaz, Javier|2006.03.07|B01d|1-0|W +FVn^@OsdEU^UOUxgUdkdV^un=Fg]DTtb;EphEOnS>=]cCKwpFESE]n>M_]=Dn_ELrvLpxpDLh`MS]^?=vnSM^]HPqa=E_iIYioTRo^M^n^Y`]\LC\]E]^]Rj]ECLEGBRGOLSd\STm]T]OKRZKPjlphZbPJbjaY]\YQ\cQIl@wnEMk[RKmeBRtmDLdZKDl\MUus<`qi`gngU\e\=]ZkR[mf]dfmd]mf]=b[:rsr;JrZJ[fT[eke=eT?@?Z[?>\THPiaIYgne^[^O^p`DRvwY`n`RdaYPYyY^To_T^YA>FA;^M_VdVwnGW`iCSipFE;:V]neLTpUED:JW_JLDELJ]VJBE=UNT\enM^BCVDN`\dCBS[`N_gnugoN\[cB:=F:BFMBC^TC[D=|29th ECC Open 2013|Navara, David|2013.10.25|C84f|1-0|B +@Ol\DTsd;LxgHPm]EUnfT]g]?H\UOU]LCLdULUwS>?vx:;SeIYrsYaqiFVkc@n^EMsd;ExnFVvxBJjZCKqiru;:yihMnoDT]_MNumBJwn=MiyNFyuMO_qFfowONqhU]d]T]hofVn\NFm]VDkcIW]MFEo]>=MEWE]MDRjZQYwx:B\G|10th EICC|Milanovic, Danilo|2009.03.10|B01d|0-1|W +EUm]@OxgDTld;Lnf<`qi`gugFNsm:@vxCSgn=KkcS[d\U]m^O^p^<=^LKLf]=]tkL^nY]mYTmkT[^g[TIYTB?=rvYaBfgWh`WlvtlPwu=utukjfePQ\TNVc[HPe\|Mitropa Cup m|Le Roux,JP|2008.05.26|D43|0-1|B +EUm]DTld@Oxg;L]TBRt_FNnf?TwS>@vx=F_hO^sm^hqh?=uZFDruLBSeTFZlIQd\BL\U=Ue^UTlsRZutslLFln>Sn`FL`YSJh`DFjbF?phHPYT?TeTJ\t\=uxpCS\lLV^gVgpguUgn@?Te?Fo_UElTEUTtU=tT=UTlUEe[ECf^FElmEDnfOHmlDE[JH?JT?TlTS[f][bkbGOT\Cc\dcS]\ELdeNV_WPW`WS;edQYde;sedskdekne=n^\d^`=?LT?O`hdkhcklcbOJTUWObglmZbmnV^OGgGJbGWb:UVnfWgfnYa:>V_>?_h?@hq@`ai`@gh@?^f|Corus C|Li, Shilong|2008.01.23|D19f|1-0|B +FVldEUm]V^d\@O\UOUnfDTwSjZ=<\G>FGj]lfKBKuUVOZR^fRKOKURKL_UCKpqFE|31st ECC Open 2015|Jobava, Baadur|2015.10.20|B12j|1-0|W +EUm]DTld;LxgFNjb=Dnf@Od\T]f]?FsdO^dSDRtm^mumF[Sd>@rt[F\UNUwe<`m_`g_g:=vxL]eI@IgeI@e]FO|39. Olympiad Men|Dominguez Perez, Leinier|2010.09.25|D10|1/2-1/2|W +FVl\@Osd?[ph[dkd>@wp?>rsDLxgEU\ULUvx;LmeIQgmCKd\=\m@sdh`Y`i`USpgRZg^[cjb>:LBSCBL@GtuCD`XGPXOHOut:<^UPWLF|FIDE World Blitz 2014|Ragger, Markus|2014.06.19|E60|1-0|B +FVl\@OmeEU\UOUxg;Ljb@vx:=meOFo_KRxqCS^Vc\t\S\e\RKktKc\L=@XaEKvx@vxCKmee]DT]TFNtfHVf]V]u]:MnfPX_]\]f]MWruWfutNVxof`ox`fxof`oxV^pi`QjZGWtr?:rbCLbcLZcK@HKCHAkcZ>CK:rxo>PdUruldumoxmuxoumoxmu|53rd Masters|Ivanchuk, Vassily|2010.12.28|A81|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBJvx;Ewv?>nwE?qi?NtfKfvfN]fvDTds@]T=RjbRTk[TDtkcREK]VHVrV:BRLDLf^>O^UOUjrBDg]LOVOUOwv?=]cKZphFNxp=MrtDdts@?qaIQpgOEgpEKvf?HpwGWfvHOvudDumNVwvV^enMmvmDEmvZdsrKZo_PXaXQX_XOXvoEInwW_c]_g]g^gogIGgfGFf]FE]VZkVNEmrvmlwik\vwlnNEnfw?djiNfbEFbh?WXQWOhPOoj[NGPKoW[LF?K;G>;>|76th Tata Steel Masters|Karjakin, Sergey|2014.01.13|E05s|1-0|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LtmCKutn`HPog^faYGWXO>OYPIQbeO`g`L^ec=?_eMOcSOw|TCh-RUS Premier|Eljanov,P|2011.04.13|C67|1-0|W +FVn^@Osd?[jb[dmd>@ue;JefCKxnJTnhEU^UOUfX@tfKC\UNUSe?>rtFMnkE`gmLFcTC;qi`WenP_ngFPf_P_mc;=wv=XxwWeTe_ev>:>klXtltetctMFte>:gU:=Uc=]wnHPph@Hnf]=iaFMfn=>ngGWgpHOpg>^c@IQ@cPXaXQXgp^]cl]\lc\devX`pwOVwndDvlMTlvV]nmDIcN[cvecjNjTMjN]^mnIqN@mee]DT]TFNtfHVf]V]u]:MnfPX_]\]f]MWruWfutNVxof`ox`fxof`oxV^pi`QjZGWtr?:rbCLbcLZcK@HKCHAkcZ>CK:rxo>PdUruldumoxmuxoumoxmu|53. Reggio Emilia|Ivanchuk, Vassily|2010.12.28|A81|1/2-1/2|W +EUxg@Oph<`wpDLvx;Em]FNsm?Fl\>@kcBRjbCStkRZ\SLSc[:eT>Mrj`YkrFOmg=FgvHXveOHutK\wvYPtu<=nfGOun@ApiMWek\MkuNVudV]dS]fSM=MofF>nuIYjoX`ipHQoWPWf^WP^VM=r]P^VO>GuZQXvw=MZS^Pqa`ipiAITE?:EVGDVP:b]VXOS>DKxyOVwGIQ>?QXGW|Vugar Gashimov Mem 2015|Kramnik, Vladimir|2015.04.23|D03r|0-1|B +FVn^@Osd;LxgEU^UOUwSUdkd?Mm]V]d]>@vxIQld=Owv<`qi`gugOgpgLFSe:=tfFPrsPae^CKxwGW^C?Od\MqscDLftOP]ULUCU@ItmPxwn=>cf>fofxpnephvyhim[HX[MW_U^IHMVHG^UGF\TX`TLaPLDPVe^|8th Tal Memorial|Morozevich, Alexander|2013.06.22|C47u|0-1|B +EUm]DTld@Oxg=D]TDTtX;EsmHPnf?HwnO^Xa^mgm>@vxEKjZBRf^?=ul^UKUng>Lm^TK^m=ElcKBm\:=ahBTuvUDgLCLhDEDruDEuE=Ec;H?;_?H_^H]\f]fvfEufvumvnmunvumvn|Corus C|Grivas, Efstratios|2008.01.17|D23|1/2-1/2|B +FVmeEUph;Lxg<`wp=Eqi`Wh`WPga>@vxGWul@AwvFMdS=OnwRZtmUKmdNcls:>gmcNslOQk[ZcmcKUcRL=SMDMrsW_f_U_dm_ipiQPxy?osS>?lu=LmfojvnjbRLCLSkbekm?wuwNUnpUpmp|3. Norway Blitz 2015|Giri, Anish|2015.06.15|B85|0-1|W +FVl\@OsdEU\UOUxg;Lme<`nf=Ewn>RZFO[TKDo_OV_V>Vng|Masters|Baklan, Vladimir|2007.09.06|B65|1/2-1/2|W +FVl\@OnfCKkcDTtk;Lxg?Msd@wnMDdUOU\ULFf^FPqaGWph=OvxCJxpW^e^P_h_O_gq_^ng^PpyJwUMwegU@AMD:o_eWUL>V_V?@wv;EgmETogOYmwg_V_^V>EvwHXph=?h_X_u]JK]_?_w_KS_GE=GOSVOQ=EQIEMIBVXBZX`xoNVZJ`\[SMDJL\LSLDLofLSf^SZ^VZbVU|8. Tal Mem Blitz|Anand, Viswanathan|2013.06.12|C65|1/2-1/2|W +@OxgDTl\;LsdHPm]T]g]?H]lBJphIYqiEMwp>@tmR\>N\mNUDtUSmgxpgvpytlSnl^ogvgwp^snw|2nd Norway Chess 2014|Karjakin, Sergey|2014.06.13|A35l|0-1|W +DTxgHPm]T]g]?Hph;L]LCLwp:;sm@Ovx>@mcO`t_EMpLHkrskHLp@sdTKtfN`gm`nun=Fmg:=fXFNrt=EdZ?=wuIQZKBKXfKSqiS[b[L[e]V]u]E]f]O^tD[L]dNUnfUudv=>f_uUvdHX_t>;tf^dkdUugvuMfKMuKfuMfK;>vg>:p`:;DC;CKCMuxpuUCJU^JS@Hd\HOSTONT?GO\TLV?>NU>:VL:?^_gm_V?QL]QP]NPGULmgN_pqVkG>LT>fTMg]_U]WMEfBENBJNGJBGN|Zuerich Chess Challenge|Anand, Viswanathan|2013.02.23|B90k|1/2-1/2|W +FVn^@OxgO^me^OgVEMVg=Fwn;Lvx<`e]>@k[BJsmIQjZPXtbFP^U=U[SLFe]V^bFPFn\UWm^W^wv^_vF<`SJCJue`gpg@Ars:>F>?>\JDTeS>@STX`TY`gxyHOJC@pCgpogpolswltYnOFwt_tpwFMngAHZRtrRJH?yprRw\RXpiM_g`XOJB|FIDE World Rapid 2014|Moiseenko, Alexander|2014.06.16|B07|0-1|B +FVn^@Osd?[xgEMme>@tmDLph?>wp;Evx[RgaE?xyIQjbRDaWO>_DMh`OEdnEVkcVEpoETn]MS]SJStvFvov?Fe]TEvmFOqaHPWPGPmdPXaYONdmNMmfE?gn?NldNDneD>en>OngMDfeO>ef>MfeCKefMCfmDMgnC=mf=NneNDenD>ng>OfeMFefFNfeNMefO@gn@OngLTfmO>|3. EUICC|Cocchi, Andrea|2007.06.17|C65|1/2-1/2|W +@OphDTwpEUo_;LxgHPvx?Hme>@ldCKul@jb[MUdMFk[EU\UOUtkUdkd=Uul?>dkFOrt<`qi`Yl\UEwnYPmeV^e]PW\S:;n\>=SZOFxnFMnhWPvxLFZE=E[SDLbZED\c;D<>EIA>GAIG>IA>EAIE>|YGM|Andreikin, Dmitry|2010.07.27|B23m|1/2-1/2|B +EUxgDTnfHPm]@Own?Hvx>@]T=DjbDTk[TDtkgVR:mcEV]VH?VOFOc]:;ld@wnGWvxdUNUk[BJgm>PngUgmgFMtk:>gmL=m\=GogDLf^MDxy>NphGXg_V_h_XiwxixrxPYkHA@HVNPxPIPVDW^e^Ygyx?GDVGIlmg`xw`gwxg`mp`upwul_Wl^WPIEVh^]xp]^px^]xp]^px^]|Corus A|Van Wely, Loek|2010.01.27|B85|1/2-1/2|W +EUxgDTph;Lm]T]g]FV]LCLwp<`l\:<\ULUvx@OtXU]XOHOsm?FuZ=EZJ>@wt@HmcOWpCHDpoDHhpsj>?HX?GXhGNhXon|Reykjavik Open|Thorfinnsson,Br|2012.03.11|C42|1-0|W +@Om]EUxgDTnf;Lwn@jbBRl\U\m\FTtmO^mvRZ\m^OrtTFms=KvdO^gm?=m\KBuv^Td[TeneWe[FLFv[FU[Sewtw:<\mBJSJCJkcUdcZdsmsJRwv@]T=DjbBRtmDTmdPH>FHPF>PH|12th Karpov Int|Karjakin, Sergey|2011.10.07|E05m|1/2-1/2|W +FVn^@Osd?[xg>@gV?>VeO^wn[?d^>^vx;LevL]ne^>ld]NenDTvlEUm]T]nS^]e?TtmELrv:>v^U^en>=mfTfnfLZk[Zjf^jU^fBR[RURqiIQws=@wnGWvxtm>PxyFOrt:>k[BJf^U_m_V_dUNU^UL]g]O]ng]VwvPOvnVMnNOatv>=lk=EN>E=>=a=vN=EqaA@aYEGyxHPkdGHdvHGvdGHdv@AN>HGvdA@|3rd NH Chess Tournament|Van Wely, Loek|2009.08.26|B85|1/2-1/2|W +EUm]DTld@OxgFNtX;Lnf=KucOYXaIQcKBKsbHXbS>Fp`Xa`Y?HgaHOag@xg?>wnV^gm=XvwLRuZ>FqaXWp`d\DT]TMTtkIQruELmsFNsdTfofNOwvXfxpfidU^fUOHOnwiavnLp|2nd Sinquefield Cup 2014|Topalov, Veselin|2014.09.02|B46e|1-0|W +FVn^@Osd?[xgEMw\[dmd;EtfEK\eKZrs@unZTog@AsuTN\NGNd\ELf`CKnfXak[aFumLZvu?=fbZ>\T>Y`o=ETMDM[S:=oeFXe[EGme=?btG_l\XPxy_gpg?gumP^yxgfef^fxwY`tl`impV^[LMU\UNUloftwntknfkdfnipopdknwkS|GCT Rapid YourNextMove|Topalov,V|2016.06.17|C65|1-0|W +FVldEUm]V^t_@Onf?Fd\@nhUdkdO`wn`V]V=Uu]Fah^:=vxUL][BR[s@AngNUwtLNd\ULskaF^hGOgLCLrsOVklF[tu=Mh^NPstM=u=?=tu=MogIQueMelePNjZNFphF>xp>FqaHPpiAHipHGewFNh`[FphGHweHGaYPY`YGH^oNGo`GYedF[dr[Mg_YPhgPWghHP`VMV_VLTrdPXdRWVhgVW|AAI GM|Laznicka, Viktor|2011.06.26|B12u|1/2-1/2|W +EUxgDTphGOl\U]k[FVwpT[jb;Lvx@QmeQWsm?Fb[L[gv>@tb@Avl[LusFbrbWFl[<`wv=MbZ:;m^MD[LFLsS?@veM;ZuOXjZSKeT?@vx@meEMqi;LvxLR\cCKwv@ZSCSueJD^m=:f^GWogS[m\W^g^?wrwRZcZ:ZndZ>^VDSd^MVUMF=eU@HME>F\V|Baku FIDE Grand Prix 2014|Dominguez Perez, Leinier|2014.10.13|A36e|0-1|B +FVl\@Ome?[tm[mumDTmX>@XVEUsm;LVdU]dcm^O^p^NW^p:;xgBJvx>nwv;>vn>npwnFcKEMgmMPKTWewpPOmgIQk[enrv]e[SngvFemFEOrpwgn|FSIM December|Muratet Casadevall,A|2005.12.06|B52|1-0|W +@OxgHPnf?Hm]>@wnCKvxDTl\FNsd@n^EUsdU]dnT\gv\eveFVtX=MXOHOl\BJo_OH_WHQqaMFpiCS\TJRxqL[e[R[ntjb>NpiNOwOMOi@nf?=XOFOf]V]d^OF\T<;k[BR^MR[b[FM|18. European Teams|Banikas, Hristos|2011.11.11|D85|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wnEMk[RKvx;LmeBJdZKBtfMUfB:BZdU]ds\l>Dc\DN\NENldPXaXQXdtHPt\N\e\X`pwGWwnW_ne_g|7th London Classic 2015|Aronian, Levon|2015.12.04|C84f|1/2-1/2|W +FVn^@OxgO^me^OgVEUe]?Msd>@wn;Lt_=>nS>NSLCLvxLTwvO^ogT]d^U^v^u]NO_hIY]BMVhV>VBC?>v^V^g^>=qiO]xy]\Cc\^rw^Pcd=EkcPJwv@IjZJPZRGWc[W_[SEURJPKvrU=dgK]ld|2nd Ruy Lopez Masters|Koneru, Humpy|2008.04.11|C42s|0-1|W +FVn^@Osd?[jb[Rxg>@k[RKw\BRrsDLmeR[b[EMqi?>vxIQ\c;EdnE?nh?PwvOIe]IXgXQXuYVTMDKp`WPMEVUsuUuvu@?um:=ia?FaYP^l^KD^WFOmlDKl@gmIQsdDLn^WIjbBRun;Eo_U^e^CSxyEK^VOUd^=@wn:FuYL[m[T[io:?o^CKrv?wvwA?wv?_YuJRphVgug_gxpgWvyQYyaDVh`Y`a`WG`XGHXHVHpgNV^mKSg^FM^WMUm^HQkcQ_WORZOFZcjc_q^OULFNqhOEhoEVLTVgohgmhqm^TL^OLTNWqxW^xoOUohU_ho_NTLN]LT|Ch Italy (juniors) (under 20)|Bellemo, Davide|2006.08.20|A50|0-1|B +FVn^@Osd?[xgEMw\DLvx>@me;EdnMU^ULU\c?>tXIQXa=Ke]V^gmBRjZK=msEKsd<`qi`YutHXah:NSB<:BSO>nd=Etf[dfdNLdf>HogHWfm^fmn:>g_K\c\L\ld\Lp`WH_WHW`WPWSMLMqMWiwO>NONENnqGOrvQYqhfnheiWenNMn>M?>?@?vwW^wO?HOKYaKCHPk[R[C[|3rd Sinquefield Cup 2015|Topalov, Veselin|2015.08.27|C65j|0-1|B +FVl\;Lsd@FxgEU\UFUn^U[me<`jb[Jk[`gpgL]g_?Mtf>@wp=a_WDT[SJDrsCKyx?=pwMFqiT\xh:`^GW^V@GFO>VOViyvmytmtPXtmGNVqNUogIY|Lorca ESP, Narciso Yepes Mem 05|Fernandez, Ernesto|2005|B33|1-0|B +FVl\@OmeEU\UOUxg;Lph]ZJLZBCKBZMTfTLTZ\TUc[=SeIYefHXZRURfgRUgYKSYI=MIFUNF?NEuvM]?OX`qa`ixqEUqiS[vr[cO?CK?bKLrvLCvrCLrvLCvrCL|GM|Alekseev, Evgeny|2009.07.24|B76s|1/2-1/2|B +FVn^@OxgO^me^OgVEUe]?Msd>@wn?>tXDTVg;LXO=OdUOQ]TMTUD>=utQPvx:;nePYtXYXgXIQXg<`e^L]ld`g|GM|Gelfand, Boris|2009.07.25|C42|1/2-1/2|W +FVn^@OsdEU^UOUxgUdkdV^un=Fg]DT]c;EtkCKvtof>Lfd\SVH?HdH^f_WfnWNnu2tuLNHBNfB:EvxAt_BJrtIQqaFTnfT?jbW`og`YdZOE_D?TZTEtDEDutDKxoJRpwGOweNVeWY>t<:Yg_Yn_VOV@kcgUjrU\@?phrw\wVD<:DKw\HP:U>MqaIYf^?F^VM\c\KNxpNK\TKDUMDMVM|FSIMA Feb|Kovacs, Gabor2|2003.02.07|B22|0-1|W +@OmeEUxg;LphFVwpIQvx@l\U]ul:=\TMFm\N\l\OUc[R[b[U[gVLV\[CK[cFTn^ENcl=:qiVLlnL[kb:Rb[T[o_[drRKR^VGWh`@A`WNWn^RZ^W?Wp^W?^UHPxpdmphZbh`AHiaQY`h?=U\=?\UDTU\?:\U:BwrmdrjdkhgH?g^?FU\B:^U:?U^?;^U;?U^?=\U=;U\;[^U[;U^;?\UFEU\EL\ULEU\EF\Uktjotfow?;wr;?rwfmwomvojvhU\?_^U_WjbWVULha\UFOU^OXb:ah:@Ya@PX_^U_fU\fo\UofU\VYPNfo\UaiNOovOPhoUgYaPNvwLTiqgywxy^a^|GCT Blitz Paris 2016|Aronian,L|2016.06.11|B08|1-0|B +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDT[SJDvxHPtfIYbZ?Qrs=MZRCKf]T]dZ>@uvDNguN_scMNphNiug:;RKBKvu?@vxIQmeBJtf;Ejb?>k[TKuvDLgaE?dZKDph=uvFTwoiES\ENvtN\t\TKkZKB\LDVLTVOqaXNTYBJe^]eyqempfmu2fu=uoOumqiHO|FSIM May|Lundin,J|2005.05.16|C55|1-0|W +EUm]DTld@OxgFNtXIQXO=Onf;Lsm@]TMTf^BJSe:=unTBruB;wvU^n^HPm\LF\VEuvPXVg>vgvW_xwGWlcHOwnX`iaJRveB;cUCKk[;M[RKRULOFog@wn;LvxEU\UOUkH@Hut=MjbMOrjAHuvdOqaW_>N|70. ch-ITA|Ortega, Lexy|2010.11.27|A30|1/2-1/2|B +FVl\@OnfEU\UOUxg;LmeHXqiIYsdA@e]V]g]L]u]FOYHXi`E`n`X`og`XY_<@xoDLwyVEp`EOumBRf^RZofXS_nLTnhO>hWFNyQGOQI|6. World Blitz|Movsesian, Sergei|2010.11.18|B81|0-1|W +EUxgDTnfHPwS<\mGWvn=UmcA=rsLVtmV\mdHdkd\bsubSu]SdnmdS]U=UmtSdjb@tmFVf^U]dsOYsb:>rvD=k[GW[TW^e^Y_n\@A\c=Fb\_Nm[N_[m_Nm[N_\MFEgXHOXGAHM>?>GM>?[m_NciIYo_V_m_EFMWPW^WFTWN?@NFHIvV|Gibraltar Masters|Nezad,H|2011.01.25|E33|0-1|B +@OxgHPl\?Hsd>@m]DT]UFNn^NU^UEMwnX^>^ne^>t_=Dum;ErvEVkcGWvnDGwvIQ_QVen>:>v>G>QHeoHko`qi`VmXVExq@GXa>@ktEOavO^vR@;iaPXtX^XaX;AqxA]xw]_|Champions Showdown Rapid|Anand,V|2016.11.13|A05|1/2-1/2|W +FVnfEUm]V]f]?Ml\U\w\;ExgEK\c@Ovx>@tXDLqiKUcULUsd@l\L]g]T]u]FW]m=D\UMqxyIQXfqVsdDFphVdkdF^yqWaha^aqxa`xq`aqxa`|66. ch-ITA|Manca, Federico|2006.11.26|C01|1/2-1/2|B +FVnfEUm]V]f]DTwS;Lun?FtXT]xg<`smBJSLCLvxGOX_HX_h@QwvLTqi`Wk[>G[TFTmcT[vwA>nu[drt]eleU]cT=UTZUjZd]dtdGPiaX`g]jU]nPHn_UGe]:<]UWEurES_NH@wth_@H_f>P^CH@f]S>CFOW]T>LF?@I?GPH|III EUICC|Okhotnik,V|2007.06.24|C01|0-1|B +FVn^@Osd?[jb[Rxg>@k[RKtkEMw\BRqi;L[SL]meRZvx@vxgX?Od^OWn\@AXGWG\G>Vf_|Narciso Yepes Memorial|Torroglosa Minarro, Juan Jose|2005|B33f|0-1|B +FVldEUm]V^t_DTnf;LxnBJ]T?Tsm@FmcTKum>@_h<`qi`Nn_FWhq=aphaOwn:=c]W]f]KDh`OFqhDMmfCSjZ=:k[FEZSJSvx:;rJ;CwrMFJ:F=xqHPrJ?>_NGN`X>?qp@Hn`H@ia@HpiIYXQHIiqIAog^g`gNV]VU]f^|Gibtelecom Masters|Grooten, Herman|2007.01.31|B12|0-1|W +FVnfEUm];L]VLVsm?Mxg=Fwn@OgVMVvx>@mgDTrs?=gVFVkcO^tkVXngwv:=su>Nl\U]nw]fvf^mum=mfNGNktX=tm=mgCmjwuIQqi@IugjsxqWlgfscC^IA^lclfTBRTAI>So_qx_fxwfewvefvwfewoemogmeg_e]_W]oWNopSWIAW?AI?WIANMRZ\TZbTLbjLDphMLhDLDjr2DErOW`HX`NAHN`|WYb12|Ravi,TeS|2004.11.10|C10|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBR[SEUmeU^e^=uwu<`qi`gpgK]ue;EtfETe]V]f]TN]fOYn\Y_xqDLSLCLrx@Aia:=qh_YhiHPdn=EldYHxs>=sKEuKLurfK=:\U:>KRrbRKbrKfIYnh>;g_N=LDA@DErJd\H>^V>H\T=Nh^Jb^O@?TLbdiqdlUNHN_WPWLD|AAI GM|Negi,P|2011.06.22|C88|0-1|B +FVld;Lm]@OtXIQXO=OnfBJsmHPxgEMw\?Hvx>@unOF]VLVgVFVwuCSmgVT\UDLUcMUjZ<`ZSJSr:?:qi`gngS[d[T[f^[^g^U^uE:?EDHkDL@HLDkVDCV]CF|FSIM June|Simonsen, Hans Kristian|2004.06.06|B11|1/2-1/2|W +EUm]DTnf@OxgHP]T?Hjb>@sd;LrsFVwn=FdUOUuU?=UcV^gm@gVEUk[RKm]U^tf;EV\DLwnKD]UEKUMD;\KBKf_?>vxNfX=MmM;MXf@If]:@bZM[ZS^fof[d]dO^neNPum^meWmgxogaWP@PphaWr:P`SLCLdV`^:AIPA@PI@A|FIDE World Cup 2015|Mamedyarov, Shakriyar|2015.09.21|C83|1/2-1/2|W +DTxg;Lm]T]g]@Oph=RsdO^]S^dSdHPwp?Hvx>@tmEMdUR=ld<`qi`NuZNEZcFNU[L[c[ELpLCLm_NV_f=Dwu?=kcGWfX=E[aMUXO:?OH@HnfIQd\?=\ULUrtDCtT=RTCJTUEUuU>FjZJn_MFCMVHGUMnYVO|FSIM June|Katsuhara,O|2005.06.14|A16|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUgmU]mcBR\T;EtmR[b[E?Zk;vsOEnwiNwuYauYahqhPFxpGWsyW^YI@GIYG?YAF@yIN`e^EOog`PIyPGyrOEg_GPrw?FAa@O\MDMTMFG_VEVwWVEmX]eR\;:WoG@XOHOo_:jpgPIaI@I^VjnVOCSOGS\G?5E?_?nvgpemMEmu2E=2u=?=\d|Gibraltar Masters|Lafuente,P|2011.01.30|C96|1-0|W +FVnfEUm];EwnV^l\=XphU\sd?[og@Oxi[dkdXRvx>@ulEKiolkO^g^W^wG>?G?:?tm^ekbKErw?wnwewxwRWwvW^b[^yvnyqnuqyulyL[FIQf^EO^VO^ltAIFGLPVN^MGEPhNFhxtlxPltM>EUPOU^I@^UOGUCGFCB>OB;@I;SFNZRNUSTUytly^lt^eTVewtlwgm_gelkDLVvOU_VUfvsfuktestsudskdSRJIPV;PWJBSB;BW^kd^UBTHXTFX`FaLT]TUTahQYhoTUovU^d\^g|8. Open|Hamdouchi, Hicham|2006.06.10|C03|1-0|B +FVl\@OnfDTsd;Lxg?Fuc>@wnCKvx@\VD;Ve?>uZOUZ]FO]^UdtdOdgXHP^aIYXN>Na\dV\cBRwtNFpg=@tXFXgXD_nm_msmEKZRKZmc?=rZLZcTZSd\:@vxIQsd?>gvEMe]V^vlVWF@ArtE?FL=MLVJZtDK>VUViwnwxwVWtl^fo_WSwnSsA@h`LTmcT]f]U\w\EK\nOUd^M_cT?>uc_trtU_nSVScVT^T]TcgKU`YTSwxSkxq:@we;Lk[TMvxBJjZO`tk@xg?>wnBR[SLBf^UOsdDLSLBLvxMTtfTfofCSdS=Ke]V]f]>^rsK=n\xpL=]U=CS]CM\eEC]WMW_WCkpik]UM]MWRM]R:HX:>O>g^]E^WEMbZ>OipMLpoLKonKknuk]ul@?W@vxDTld;EjZCKZRgVHV]VEVuU=Df_Y_h_V`UXGWp:>:qi`Osm:=rJ=mXQDLnfmkwr@GJ:GN:?Lgrwkm?;mkd\k[;?OE?@meIQdnMU\c[Mnh?>wv=D^ULUl\U\c\;Ltf=qaEU\`UE`^ENjb=Ufm:=mdHPvfOHaYPYuvHObZBR^\NWf^=Mvf@I\cMEcuWPdVOVgVLV^VUVfVEeuYPY|FIDE Candidates 2016|Anand, Viswanathan|2016.03.13|C65j|1/2-1/2|B +DTn^;Lxg@OsdHPm]T]g]?H]c>@wnEMvxBJtfwuHV_nGOf_CDumETk[\clcTN_Q?GQfDCc[>@o_t\:=ulCKk[=][T]_\_KT_oIQl\>FbZfV\_VU_gUEg_ELogLNgoQY_XNLogLNgoNLogLNgoT\e\N^XU^U\UFVUMVUMEUEoWHPWR@?wo?FogGOg_FGn^ECRJCFJRFCqiCDh`Y`i`DC`XCFXOGO^VOG_XGNXPFCPXC[RB|XXIV Andorra Open|Gonzalez Arribas, Vidal A|2006.07.13|B37|1/2-1/2|W +FVl\@OnfEU\UOUjbDTxg;LwS=MmeUDSLMLvx?Mf^>@tfGW^W@qiBJSLELgV:@tXENsdU]d^;kjZknZR?>RJO^XF>FBF=FJBNUB:2U:r:F?:?@?pg^dgndnxpndwtHXqiIYpwYahaXatr?Hr:GO:=d^o_^T=MT^M=^hwohY_VOV=>HO>AOXA@XW@AY_AaV^aA^fogfnA?WPgoPX?_X_on_hnehie]|Vugar Gashimov Mem 2014|Karjakin, Sergey|2014.04.27|D85s|1/2-1/2|B +FVl\DTsd@OnfEMph@ndBJvxIQkcOItkGWm]T]f]V]dn@An]IO]N=jb[lvn|19th Moratalaz Open|Martinez Martinez,A|2006.09.18|B40|0-1|B +EUxgDTl\FNph;LwpU]vx@Onf?Ff]T]me>@tXIQXOFOwvYnJStl=SRJSJvtOEk[JSgnSZlk==n\O^vn^M\cBRsdytE`nwJKrb`NcN>NduKJbe=YWGOUdMdUM>wn:=f^DLUf=]t\]\f\CDneHX\fQYe]>H]dHNogDMf\MD\fDMf\MD|66. ch-ITA playoff|Godena, Michele|2006.12.03|C03|1/2-1/2|B +@OxgDTphHPwp?Hvx>@l\EU\UOUsd;LuZUKZaFVme=agaT\jZBRe\K\rs?=kc\mtm=mwumusuap@H\UL]xw>FU\CSZSFCpf]SflCKuESM\Ud[l]HO]L[bLRKSR\SU\bONEBUuwpumBJNEnfmjJZGWqaIYZBELBRjrc[LERBE@vx?\TM=Rb>O^vIQvtOUbJ[keb<;TLUDJBGO]UNUg]ksts;sxq=;bRsKph@IqpIPRZK[ZlPGlTG@BD[]DC;VLDV^pq]uD<2@I@wSGvt=Kmv:;iaX`aY`gYPGPpgOIdZKclc;c\TMTu=@sm=KmcT]f]ESnSKSjZSLldO^wv;EgX^XtXFNue?>XfEKelK\cm\fofNVle>F]VHVmgVDruLZeU:=urZrU=D=vr=KxwFfgmfNqiNOmg@?wn?FneBJk[KDrjOMe\GW[SJS\SMKS\FOg]DV\UKMUTIYjkMEkKOGT\VO\eO=KSGOenCK]lEMlfONp`W`i`YangMLd\LTSsPXsu=DuvNVfUV]v^]eU[ed[UdcUDTD^NDGgpc\NL\]LKG_pi_giq]fKSf_S[_V[SVOSKOHKCgGCSHPSKGOKSO_SKPGqi_giqghK[GN[ZNVZ[he[Ze]Zb]`qi`^b:|3. Norway Blitz 2015|Aronian, Levon|2015.06.15|E11|1-0|B +EUm]DTld;LxgFNnf@Osm=DweCKvx?Fkc>@tk@n^BJrsEMwnc[TNneL]l]H]voN_e^=EfU]owo<=U_X_uU>GUX@A\TEDsvMTXaIYaXDM[TMNonCK^C|2nd Sinquefield Cup 2014|Topalov, Veselin|2014.08.27|A35l|0-1|B +DTn^;LwSL]jZBJSnEUmeFNxg]Lt_?M_M=Mvx@OsmCKwv>@nwMD^VOEunJRldV`OGhnT]d]>?qi_nfnG_nNL]NV?GVUGUm_]nvnUuxqun_W@jZ=DrtDBU^EO^VF=ZR?>VS=FtLBELKE^|FIDE World Blitz 2014|Grischuk, Alexander|2014.06.19|C02|0-1|B +FVl\@OmeEU\UOUxg;Ljb@gVHPVeCKwnYhqh=MmgFOh`OH`X?=ul@H>VH@V>@H>V|1st GRENKE Chess Classic|Meier, Georg|2013.02.13|D12n|1/2-1/2|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQuv;LqanS`Vih@IaYHXYPGP_nBJSLVLn]LFvnPXryIH]WFWhiWfnf=MjZJRkc>VyvVUd\UWiyHPvuMOywX`u=QY=>W_ph_gfngdwtPWnmdgmnCKtyWPyqgdnmdgmngdnm|Tashkent FIDE GP 2014|Andreikin, Dmitry|2014.10.23|C67w|1/2-1/2|W +EUxg@Om]DTldFNtXIQXO=Onf;Lsmd\U\m\@X\M=MrtXUeVGOV\MEnf;:SKE=KB>ZfNZLtrA>N<|17th TCh-RUS Premier|Potkin,V|2010.04.05|D11|0-1|B +EUxgDTphHPld?Hm]T]d]@OwpO^vx;Lkc<`tk:@sdTJnf=Rrt?@tfOEg_:;kc<\?@phYXagXHg]>YqpY`\d`^pqHX]g^nqinwiqwoqyXhd<@H@vxBRjZ?>ldIQqiTBwvFrsEMlc?EcUEOUM=Md\O>scCKWwFCws>De]V]^VM=f]=]cKCKsKHPKCDNCB]^xoN]ne^VBR@HRJQYJKYaZRVFRJGWKCFCJC]LphahohHOiaOVelL;lZ;JZSJ;S>VOh_;J>LJ;LSON_XNGSZ;JZLJ;LSGFXPW_SZ_gZugounF?PW;LW^?F^gFMgoMDngLVgU|11th EICC Men|Vorobiov, Evgeny E.|2010.03.16|C41y|0-1|W +EUxgDTnfHPl\U]f]T]me;Lph?Hwp@Ovx>@wvBRjbOEsmIQgaLVmgVgugETrs:JtmJOgnPXag@tXMFXF=F]UNU^eFOum:=wvC]Vjkc[kcVOG\_P>=PV\SOW=@xg?>wnV^gm=Xph=ZRLD^TNT\_D_f_WetfTZkmenmnZdnl=>wvvovdSlLCLxoLTofGWfeSMvoMCov@Ge\GNvdHPh`NMqaIY`YPY|FIDE World Rapid 2014|Svidler, Peter|2014.06.18|B46|1-0|W +EUxgDTph;Lm]T]g]FV]LCLwp?Tl\@Fsd@dZTMkc=En^Ni^UipxpLU\UGWogW_ZdM[d^FUh_:=un[btmV_pyELrv?Wwxb?vtL>mdIQd]BRxp>GtxUf]f_fnf@Aph=EfnWUxtE=hxGEnpEGpnGExPUWPhRZcZEZhx=:|74th Tata Steel GMA|Nakamura, Hikaru|2012.01.16|D87i|1/2-1/2|B +FVldEUm]V^t_@Onf?Fd\@jbDLum?>rtF?qiIYdUOUn_U_V_BRwnYavxNUn\RZmn:R\U=Ut\>NwtCS\T?TtTU=_X=KTVNV]VKTXOHOn`@?`VW>|6th Kings Tournament|Nisipeanu, Liviu-Dieter|2012.11.08|B12u|1/2-1/2|W +EUnf@Ol\DLm]<`og`WsdFNxn?Mp`WPqaIQn_M_f_U\w\;EunEK\c=FvoQY_WNWnF>F`XOUcUKUdULUyvFEvVGOVUENUSCKXOHOt_A=]UNEjZ=v>P>[c>GcdldkdENhoG>ofNUfe>E_h|ETCC|Karttunen, Mika|2007.11.03|A40|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@k[RKw\BRrsDLmeEU\c;JvxR[b[J[tX@vxTBldETcl?>wv<`tfTNe]`gpgHPumOEg_V_f_N_m_=O_OEOxp:;rs@Hle>Fo_LT]TBTeS[dkdO`vn`fpgf\scFCnjIQhnMU^U\Md\CFnh;CceGWjnHOqaFnhnCFn]Fv]cM^cT^T|42nd Olympiad 2016|Jobava, Baadur|2016.09.12|C54c|1/2-1/2|B +EUnfDTwS@me?>smNVf^U]m\MDktIQqiCKgqBJSLELo_V_t_D_w_KSZSJSr:L:\m>N_W=Dq`O`u`NJWwJjmg:CgaC@weOE]H@Hvx?=mgLOl\ETen@mc?>tb:;cTOEgX=DpUFNTNGNUN>NXNDVNHVHucEVbM;:cSHOMVOVSVLVws@GsSVLnf:;ST]fof@vx?=qiOHwvIQ\cLRclFVme@vxOYunY_f_=DphS[>EWhU]kcZc[c]fc\fghwEiwmgf\diNmwfowmNU|Corus C|Krush, Irina|2008.01.18|D18|1-0|B +EUxgDTph;LwpFVme@Ovx?Fn^@ldU]gXN`og`Yd\O>Xi>Mh`YPg_V_t_FO_hOVi_?>bsGOsmMGmgV_h_GVgVLVjZ:@sdDTxg;LphEU\UOUwpUFmfL]fV]lvmlrVTrcjcCKT]h`WFqiFUnmU[g]NGp^GP^WPW`W>Vo_VTyx=]f]TWmfWYxh[Uf^UD]UD>^]>Mhg@Gd^GF^MFM]\YUe]UWghHPhfW_f>_w>=MD=?DM?=MN=>NE>;ED;?DM?=MD=?|Zurich CC Rapid 2014|Gelfand, Boris|2014.02.04|B52|1/2-1/2|W +@OxgCKkc@vxEUl\U\c\DTme;Lsm=Drs:=gVLVkVDVpCO>CpVDm^>M^M=MjZIYZRYaumH]m_ahqh?;RJ@HpUFNUgDFxp;AwyM=_^=;yA;A^C]OsKBKCKO]JBFOKCOWnfWipx]fofihxwhiwniqgpqYCgYVB:2VknwkswoA:g:se:^emogmugoumohmvhivdpgdO^_Od_^dO^_OdgLdriqrkqhkr_orVo_Vrhorkogkr|GCT Blitz YourNextMove|So,W|2016.06.20|A05|1/2-1/2|W +FVn^@Osd?Tw\>@xgEMvx?>meDLjbBR\jIQdn;EnhE?ldTKe]V]g]MU^UOUtfKDug?PjULUhW:JguPVf_JO_VDVWhHPumQYwvYahwaiphRZvfVDf>=>rv>=mX@Hwf@tmCSnf:bul=:lkT\e\S\c]L]k]Ug]\@Apg:g\DOUDCb:f^g^wv^]ru:;CE;=ECFTmf][|Open A|Weinberg,E|2005.10.22|B03|1-0|W +FVn^@OsdEU^UOUw\UK\c;Lxg=Fvx@dZK=kcV^tb?>rt>NwvIYvnYanlpwJwxw=OuYW_h_X_wn>lcL]cU`gpgM[U\]gvugm\[mwywOJrtJeuv>N[deUvnUSngDLd\V^g_HX_hW_hpSWpyWikH=E\[CKwx@nfLTut?>f^T\c\U\kdFTvnNVrsKNmgOEnmGOtuNFgaHPu`E?aW|New York State-ch|Simon,Jerry C|2002.08.31|D90|1/2-1/2|B +EUxgDTph;Lm]T]g]FV]LCLwp?Tl\@Fsd@ul:@vx:tsUdldA@ph@HaWHEf^>NumNKytBJsrKSe]SZtuV]W]EMog?Qg_Z>dfQ?]c>ZmM?Mu]ZSrj=>fdSK]\M?c]>=dc?T\TKT]NTFN=F=cN=]_WIY^VOVWO;BOG]TNWT?jsCKk[BCslJRleR[b[CLWNLCN>V^>^CB^>|9th EICC|Lupulescu, Constantin|2008.05.02|B67e|0-1|W +FVl\@OsdEU\UOUxg;Lme<`nf=Ejb>@wnEMmeDLvx;Ek[RKdZKDl\?>wvE?nw?PphMU\ULU^UOUwpCKtk?WYUj|66th ch-ITA|Brunello,S|2006.11.23|C90|1-0|W +EUxgDTnfHPl\U]f]T]me;Lph?Hwp@Ovx>@wvt_==bZB:og:@xn;EsdEK\eKUqitkO^e^>^_e:>ltT]tmRWuvWPv^>^xw]kekPpwp^]ph]mkuBRufHXrvQYiaGOo_X`_W@Gvsmeh_e]_h]eh_`hskhpksGFsxFMfUe]_f]\UO\a|VIII Open|Jakobsen,O|2006.06.13|B22|1-0|W +FVl\@OnfDTsd;Lxg?Fuc>@wn:;vxBJjZEMme@Atm<`qi`YdUOU\UL[m[=KwtJRcuR[ZRK=gmYPRJ=Em\F=JCECf^=DnYPYuYGWrZW^e^;:tr:ZrZ[cYnIQ\m?:n\:;\eDKm\KD\mDKecT\cgKTm\A@gnCcZr;?rw?_xy_owoTo\MoTM\cZyqZr\frtfuQYiaTKphtTqiHPudT@Y`@AwuEGu=?=WhP?ru=u`uGEuE?EhnA@nt@GteOFogFMxoGNonIQnoDTonMFeoE?oe?EeoE?oe?E|Showdown Basque 2015|Nakamura, Hikaru|2015.11.12|A45o|1/2-1/2|B +EUxgDTph;Lm]<`gV`YVLCLl\FNwp@O\ULUsdT]u]?Fn^U^]Z=EZE>Ed^:;^dA@dUOUjbFOtuEVkcVL]LCLrt=Dcg?;t\O=wpDFgn;CnvCBqa=R[RBRpULUuUNUvFU\TL:JKDFKLFNLC>FCS@IxpNOh`Y`aYFNYPIPphPISTOPT?NO?TOghpgOphOghpgO|4th Sinquefield Cup 2016|Nakamura, Hikaru|2016.08.11|A61|1/2-1/2|B +FVn^@Osd?[xg>@me?>tmDLphEUwp;Evx[MgaEKmXMFqiIQXtFwpE?lTCB_m=CTtBJm_JK_mK[mdFDog^ghgLTdmOKgd[cpUcdmdT\U\CMdcKBtlDF\U?EUgEOlLM^L<@Ic;B;<;^XxpFfnxfbgLbjphjl;KlmKJm]JRQYxg]eR:edLCYahpdlpwXgCgIQZRQXRJldgpdbwnX_pCbi:AibAaO`aI_WIH`V|TCh-SUI National A 2012|Huebner, Robert|2012.10.21|C66|1/2-1/2|W +FVphEUwp;LmeGWjb@Ok[?Msm@l\U\m\N\e\V^g]HPulOEo_^gngW_rvGVpiETxy:>]cFXcTMTl^V`^>?>v>@G>^`owoTo^_G>_^>?^_?>ypoK_^>?^_?>kdXT_^>G^_G>_^>GiNG>N`>G`NG>NU>Ed[TopiDL^FE=SLCLULowi`w\L^\[b[=F`XKfg_FG[SGHX`HO`gfxqaIQh`PX_XQXaY|25. ECC|Michalczak, Thomas|2009.10.09|B06|1/2-1/2|B +HPph?HwpFVn^@Fl\EMsdEumMU\ULUd^T^e^U]fXHOXOFOm[:<[CE=PWNW^WOWyxA?CU=>US>=SU=>US|78th Tata Steel GpA|Carlsen, Magnus|2016.01.17|A00t|1/2-1/2|B +@OmeFVxg;LphEUwp?Fvx>@jbBRsd?>kcU]dSL;bZDLSbOUb\GOtmF[nfUdmd[drs?`Y;Ef]V]^MUpxp[M\MEVM\=Uog:>YWCS\mHPW_OWsvUTwxVGv>?>xtPX_D>npxnm|GCT Blitz YourNextMove|Nakamura,Hi|2016.06.20|B08|1-0|B +FVn^@Osd?[xgEMw\DLvx>@me;Ejb[dkd?>wvE?e]@pi=>uwIA_WNWiWDH\TCKTKBKbZO`W`H`eg>?nm`HgW?WwW@?mo?WoWHXW@vx?>gmNug=>dnGOn]V]wx>PXOPOt_:?x`@Agi?GrxN>ih>N_MA@^VOQ`]Qm]`HXhiGo`popxpmupxucigckxwkj[SNQgpjNSLCLpLQae]X`L:@HM?HP:^|Gibraltar Masters|Korchnoi, Viktor|2011.01.26|C77f|0-1|W +FVl\@OmeEU\UOUxg;Ljb@wp:>vxIQwvHXrsX`gqEDm\K\e\@HluQYskFMqwNGknGPue>Vwm?>xwDKpyK[ypVNpy>FypMVvtVDnv[KvuNVuvVNvuKLwxL>uwNVo_`gwgV^m^P^ew^gwg>PtwDhgUCKU=FnxyhM=EHQECMVC:PHwWH`WV`ayxnV:?QX?HX_HD_hDHaX|FIDE World Cup 2015|Kovalyov, Anton|2015.09.17|B90n|1-0|W +@Ol\HPph?Hwp>@m]DT]UFNsdNU\UEMxg?>gm;EvxEVqiBJjZ:;ZROYxqGWo_VGn^YOwvCSRK;K^WvmvEKrJK\c\[\ur\[J:[;:;=;rZIYd^H]^m@Hmg]OgaWeZb;svdO]d]T]age^g]^p]NHIqpslpglugoumoxmUbfUuxoulfnlnonGQngI@h`Y`i`@GN]Q@g^@O^gO@g^|FIDE World Blitz 2014|Svidler, Peter|2014.06.20|A08|1/2-1/2|W +EUm]DTld@OxgFNph;Lwp?Fvx>@nfCSsmwtTKmvLRdS<;e]cUvRKRgVDLSdRDVgUgngHXphDKk[OUgULUh`=Mqi>@vx=K_iJTo_GWio@lm<=nYPYmQE@vxIQrs=Owv<`ldLFSe`gugOgpgCKscFPd\Pae^:=g_GW^L?O]UaPcgM[v>=>L>@?>E[MENPagcHXciOPxwMFtkX`ifQYkVFMjZMV_V?F\TW_f^ag^_PHTKBK_WYawpgvpyveN<`hohahqhHh@]T=DjbDTk[TDtkkVD@sb=EblMDf]V]o_GWaPFP`X:>tm@Awo>Fpy?>ugFNrvNvlvD_m_>vowLV_VPVg_Ve_;v>;BekBT]ewWE=WU=;Tokuog>vxpufpovwofwgygIQXPemfm;_mn_\nf\df_dOUWOM_fMNg^NFWGFTfgCSGCTdg`d<`_GHMNnfNjHCjbf_bt_WtTW_To_VohV]hM]fMhf]hd]UdmUNm_^L>=PH_fNMf]LU]OMTOdTSdeU\eWSJWOJBO]B:]rCBryBCyr:;rV;BV]B:]r:;rV;BV]B:]rCB|6. World Blitz|Grischuk, Alexander|2010.11.18|E70|1/2-1/2|W +@Om]EUxgDTld=Kph;LwpT]d]<`vx`gpgL]gp]LsdFNn^U]^VOEdZKSt_:=rt?Fwv>@pwSRjbEVk[VgxyRYqi]evfemtsYWskL]wpNVpgWiyxV_gp_fpifn|40th Olympiad Open|Elsness,F|2012.09.07|D02|1-0|W +FVn^@OxgEUgV?MsdU]V\]d^VdmumO^\MDMmn=RldRVtf>@nlvuU]d]L]_f]nxy>f|Wch U10|Zamarbide Ibarrea, Daniel|2002.11.23|C43g|1-0|W +EUxgDTld@Om]FNt_;LnfOY_VGOVh=KulYhqhvuMUdUhyUKBKRKPYul;_TE>@rtTVwuVqxwMVu=?=o_VOdnOklkLFwoFWkm=?mEWaECIQtuNVnhV^|66th ch-ITA|Borgo,G|2006.11.29|A32|0-1|B +FVnfEUm];LxgV^gmGWl\@Osd@wpFVxg=Fm]EMvxV^gvIQvlDL]U;EULCLl]sSNESTDMTUMN^gELUTLgng>=jZH]TU=U\U|2. Norway Blitz 2014|Karjakin, Sergey|2014.06.02|A04|0-1|W +FVl\@OmeEU\UOUxg;LjbEkcIYelFMgvCKve:>swA@rvMDo_X_e_D_w_>?vwEFwo@`lu`_o_NGxoGPovFNugOWvmNVphYa^W?W_WPWhaV_gnW`aY`Wqa_VYQVOnYWPYgPIgYIWmtOFY`WItmFG`YG@YuIWmv@IvoIQogQPg_POaYWsYQsW_gOXgnXQnmQXugX_gY_hY>ho>YWsmts^tm^WYGWsGY]eYPslP>og>Lg_LUlcmecZUGZcedRZGY_fY`cj`EZbESjsSJbjdkf]|27th ECC|Berg,E|2011.09.26|B90|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBR[SEUmeU^e^;En\RZqiIQun=FtfKTdUOU\UEKwuKUfTU_nfFOxqCKT[OPuxPYgvN^VNPZ_Ppqyph_aHXaQ@H|FIDE World Rapid 2014|Tomashevsky, Evgeny|2014.06.18|C88|1-0|W +FVn^@Osd?[jb[RmeDLtm>@phEUwpIQxg?>vx;EwvRDunE?nw?PruU]dnOIpi=Oi<:VbZLKkcQYumHPg_VF_XOEmoEVoOKOXOAIqiF>hn?FOoFEn_VLoh>V|8th Tal Memorial|Andreikin, Dmitry|2013.06.23|C76|1/2-1/2|W +EUxg@OphEGNEDdVOVZRCKRVDCVO?Q|5th Classic GpD 2013|Sutovsky, Emil|2013.12.11|A48f|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtkEUwvBRnw<`dZ`gugKDZTCKTcRZcmU]ldLTd]T]rtKStT=EgW>NphDMTl;LwiE>WgNFvtFDiW:BqaLFWi>=guDltlBDxpFLutLFo_DltlV_mgFPiWPVk]Vgpg_hl<=^VMFD]KDUKBUdB]dsESsbSZF[ghbshgsdZL@?aY?F]oFNe]dUg^Ud^eduox[RLCuke^NF]UkZCLZKxTF=T?HPYPGPVNK@gVEUk[RKm]U^tf;EV\DLwnBR[SOU\KUdumEKmdLSnSrw:@me<`qi`gug:;guCSdnS[tf=RjbO>b[R[^VLVrB[KBj>Do_VEldFNe]?=]TMTk[DSjmKDucT\clEKwu=mumIYfT;=pg=mlmKZmjSdndZdj\dZgnZK\eKUxpU[T[DCngC[iaH]pi[kenksnusWip]fuZWOZ\Ok\nk]nu][u=@H=D[kpifxgpkOpgxoipOkD\ofpikrgpfx\wr]wgxfpw]mwpf]g^]OpgmdgnO]ipdrnw]K^grtpiKfiptmwnHQpif]ipmtnwQHpitvip]OpiOdgnvripd]ngrvgnvdngdkwnNV_V]Vpik]ip]Mn\MD\cGWpiDtcutmunmvneVMe\HQ\eMVipVDpiQHe\D=gUHQUg=D\ev[gfQIipD=fgIHpi[]gCHQCg=DipQHpiHOipOFpiFMg_]_h_MTihT]eS]fS>D_hiPX>Y|12th ch-EUR|Gozzoli, Yannick|2011.03.25|A26|1/2-1/2|W +HPph?HwpGWm]@OxgEMvx>@l\=>sdFV]VMVtXV^g]>GucDLru;EX_EK_M?>\TGcjcKUutBJwuH?M?@?nfUDpw=u=F=qaXGh`W`phGVh_Vene^ef^OE_`JR[RET`XemogTeduLTkc=FXQFGQIevg_vp|FSIM June|Kahn, Evarth Dr|2005.06.10|A03|1-0|B +EUxgDTl\U]k[T[jb[bph;Ltb@OmeFVb?>?smHPwp?HvxA>uZV^gX^eneFZb:bMFNM_NO^L>L_]<>SV>V]VLgVfgfofOgrvPXh`IY`YHQe]QY]UYPxpgOf^O_UM_aMEaAvrBRrsPOsKOFKJFEJRGORJEF\TAaJBFNB:NE:?a_phELqa_a?OLThgT]OPa_gh_^PX|TCh-ESP Div Honor CECLUB|San Segundo Carrillo, Pablo|2009.11.07|A59l|1/2-1/2|B +EUxgDTph;Lm]T]g]FV]LCLwp@Ol\:;vx?FsdU]d^O^p^=EnfGW^l>@f]V]lZ]erscG>?Gc?>cG>?f_^gGNO]_V]VvVW_svIQNiJSipg`qi`Eh_EG_WG\p^\]VNBR[R]TjZSZxy=MNMTMmeMe^eZSel?:vrA@yp@GpgGFg^FM^]:=l^MD]T=>og>VT[DCrxVFxPFGiaCBPNBCN>CB[TBJ>:JC:=CJ=>SZTMJR>F|Biel ACCENTUS GM|Pelletier,Y|2011.07.26|D85|0-1|B +FVmeEUxg;Lph@Owp?Fvx>@jb?>sd=^W@GwnHPW^U^e^Eutu=@vx;Lwv@gVEUk[RKm]U^tf;EV\DLwnKD]UEKUMK\MD=uru\fof@k[RKw\DLmeEU\cBRrsR[b[;JvxJ[tX?>XOHOga@Aug>@aW@gVEUk[RKm]U^tf=FV\?=\KDKwn;Lvxbr<;gnEMw_O^utVL]LMLm^LK_oU^t_;BnS^fonPYnvfn_o>fc[=u[RKNSnurvrYnrvB:RJCJo_NL|KM FIDE GP 2015|Tomashevsky, Evgeny|2015.05.16|D15m|1-0|W +FVn^@OxgO^me^OgV;LVLELwnfm>nmnsrnmrsmusrZbrs|78th Tata Steel GpA|Hou, Yifan|2016.01.21|C42m|1/2-1/2|W +FVnfEUm];LwSV^l\BJSLCLxn=Xvx?Mo_^gwg<`smXYqi`gmgU\f^GOul@Fl\YS\l>@tf:>jZS[nt[Ctc>;gmOWl\@ArwW^w?;?m^C[^M[vxqDMfmv^qxFPctPa\n^]mf]^fX^ntnaPn]LT]N?;ND;kDJkj|67th ch-ITA|Contin,D|2007.11.28|C18|1-0|W +FVl\@OmeEU\UOUxg;Lsd<`nf=Ewn>mcT?wuUXrtEiu=>=o_^gngiNqaXUc]UgpgNjtrjUf^U\rB?TB:@nf?>wnDLvxIQqi^wu:>ewHX_qOPrtGWd\W_f_X_uv_gv^>^p`^nqhU]\TKRjb]ek[em[RP^|FSIM May|Koneru,C|2005.05.18|B17|1-0|W +@Om]HPxg?Hnf>@wnCKvxgvEMog;Ef^EVvlT\tfOEf]ETlfCJk[Tene\e[SJ<]VHVue=aphaOrt@w\DLk[RKmeBRtXEMvx;EdZKB[SIQXaETZTBTSLCLldHXah<`e]TB]VO^VM^hqh=Oul:=l^`g^g=MwuOgpg?=\nMuru=unu@?bZ?Fh`B;ul;Vl^FMd\MTxpGO|7th London Classic 2015|Adams, Michael|2015.12.13|C78j|1/2-1/2|B +EUxgDTnfHPwS@me=UrbK\f^UNgXNMc\OEXg?=qiIQ\jMKj\FNtmKMmdEK\jMEdH@HjcH@wtEMcdKEtrMKdR:;RZPXZ\;:rjEObd:gVE]bB>MdRKRjR][B:=:R:@H|TCh-RUS Premier|Makarov, Marat|2011.04.17|E00j|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtkEUwv;EnwU]dsE?qi?Pld]dsdKDdZBRkdR[b[CKulOIdmNZK:rvrDKfK=Kh_V_r:N>:>E>lTK=e]X`TV`iwi@?qp=aiE`E=Eg_ECVTCD^VD=_g=agfaXfnX`nm`gmtgoTLovtlv[]U[^lc^VUMVNc[HXLDN^[S^USKUcKBcZB;ZS;<@HMESJDCJ\<;\]CD][;<[`DVHPVMPY<;|Trophee CCAS KO|Karpov, Anatoly|2008.10.29|C92|0-1|W +FVl\@OmeEU\UOUxg;LjbGOn^UKtf@VOHOvxCSwv:mgFMlm=iW=OQO?OV`O?vNK@gVEUVe[dmdU^e_=uvuIQtm?=wn;Lutia@HaXQXrZHPZ[DLyuEutuWVc[VU]ULUum@xgDTldCKgVEUvx^gENxoSLghNjk[T[d[BR[RKR_]RZhMjlMOld]edOXOIQfQLSef>fQfZbf]bjqa@?n^?>of>EfmSLmtL^tkENkjNWjbW`]o`Wo]W`]o|5. Classic KO 2013|Gelfand, Boris|2013.12.14|D78|1/2-1/2|W +GWm]@OxgHPph?Hwp>@vxDLt_EMl\OY_mFV]VMVn^W_m[?>sd=Ouc;J[bH?dnPXqiJTclBRgqOPh`YOog@n^U]^VPYue=Kd^KJvmF[ml:@vxBRjb?>kcCKtkU]xyTMgxLBbZKSZSBSm\M[o_V_w_Vxndngn=M_wRZldZbwsIYscVRmtOEqiETc[MVtxTN\TVT[\TKd]RZrsKB\ZBZ]UN]nuZBsrbjyqB;xoDTUM;MqyMNuYNcyqHPYPGPoOcN|GRENKE Rapid WCh|Pelletier,Y|2010.08.08|C41|1-0|W +EUxgDTnf;LwS@Ol\HP\UOUgV=MVLCLSnU[sd?Hvx@tk?=dZHkZkMmk\muwu@wpF[sdEUuc[R\ULUvxU]ds;LtXIQXO=Osm:;wtRDm^OFgm<`qi`Yh`YPcbF=tT@ArtGW`WPWbc=amga_cuDKTUW^e^;=um_OUS=EtwHXjZEHgqQYScX`xy?@o_OQcS`ipiQPqgPhgXHX|9th Masters Final 2016|Carlsen,M|2016.07.15|B50|1-0|B +FVl\@OmeEU\UOUxg;LjbGOn^UKtffmW^e^L]g]V]ceEFogMhvuKZulDTlcZdmd]def=mrsT[b[FVn\mpfdVdcd>?swhVdcBJyiCS\Upkcbklg_?_w_V_ig_MbcltgGtscls[GHJRHPM_PO_XOWXaW_aF_GFMGO;DOQRZQNZbUcDEYQM?QI?HNPHAP@AV@XVAX@AVIA2VA@A[^A:S[c@^>:BEL@\>f\eLTBDTKDEKTlcfhE=hPeP|Alushta-100|Pavlov,Ma|2002.04.19|B90|0-1|B +@Om]HPld?HtXIQXaEMnf;EweCKxn@smFVd\?>rt=^fg:>SMGWM>L>uvJCv^C^gn>Z\T^LRJZb|FIDE World Blitz 2014|Meier, Georg|2014.06.19|A07|0-1|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtkEUwv;EnwBRdZKBl\U]\TCSTKEKkt<`ZTR[b[KETEOEwn`NtmLTul=FvsBK[TKTr:>:qi@IgqHPn`GW^WPW`g:BqwW_svTMlLETm[NELUENULNE|NH Hotels|Beliavsky, Alexander G.|2006.08.23|C92q|1/2-1/2|W +EUm]DTld@OxgFNjb;Et_=Kul?M_h>@nfO^smGWweT\enKDhMDMvxCSm^W^gm@jb[MxgDLk[MDtk?>\TCSn^BRwn=FvxR[b[:rur;JkdEUrb=JrN]g]V]wmE>rJIAJC>EvrW_r:_hqhO?pL|41. Olympiad Open 2014|Pancevski, Filip|2014.08.04|B51|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQwvEUtk;EnwBRdZKB^ULUl\U]\TCSTKBK[SKDkt:;rsNZk=?XONOk\S\e\;krsksus?;s;M;\TETgVONVeNv|World Cup|Shirov, Alexei|2007.12.10|C92q|1/2-1/2|W +FVl\@OsdEU\UOUxg;Ln^U[meL]g]V]dsDTwn?Fvx>@jb[Lsm:;o_CS^VT\m^@wSNV]VLVgWT\vx:@jb[dmdOUw\DLvxGOgmd\U_t_V_nmOW^oHXwvFOewEVmMVGM[X`[C`gCLgpwp?@xyOkoek]e_N\ru>vuvGMLg@`vu]_g_`_uM_oM=AH=EHOEBolyxIYBDltxoOVDTV_pUtwop\eTdwuU\e^poum\nYaovmjdi^pidaivo_VovjrvorydTV_T\p^nwyqoxqyxoyw|World Rapid Final|Carlsen, Magnus|2012.07.07|C65|1-0|B +FVl\@OmeEU\UOUxg;LjbGOucHXnfBJsdMmtxmo>SjkSwofa`RL`@KS@UCKUuL]wS]Surfo|68th ch-RUS 2015|Artemiev, Vladislav|2015.08.16|B90d|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQmeDLdsEUsm;EtkKDwvE?nw<`qi`YutU^e^OIbZ=OrbIXgXOXm\XOtr:=[S?EbeON\fETe=>=SLCLog=;ZR@AkbTCRJCMbTDKTK;KvuK;rRMSfWYPl\S]W]V]RD;kDBkjB;|FIDE GP Tashkent|Dominguez Perez, Leinier|2012.11.22|C95k|0-1|B +EUxgDTph@Owp;Lvx<`meFNsm?Fqi`Yn^=Dld>@h`YPgaU^aPIPe^PXiaLVaXO`o_`fuYHPYafwmwVe^VT\p^?=tfFTxpDKwmKkrye_f_=m_mkmpgmfgpfnpinfipfnpi:=yvnoaoTovsCKs[=<[s@SLENtkFXdS`fphfpvwaiwxN`nw`g]g^gS]XO]gOkru:bwpi`umkOgvOdme`npwnjvgj\gm\TmsbcsdcdedTdwSdvxpv^og^lpiU]SU]eUEemLDIYE=lWipWlpilWip|5th Final Masters|Anand, Viswanathan|2012.10.13|D16c|1/2-1/2|B +FVldEUm];L]VLVxgVgpgDLul=anf?Tk[TM[S@OtbLTsm>@mcCKvtBJbkJSwS:jtsjBd\U]c]T]u]aY]M@wnDTdSMFvx;Lt_BJVLCLSd?>wvT]u];onQYxoHP\LRSLS;SnmE?ZTOFTJScJD?NDNGNmEFOh`Y`i`PX_XOXohckpgkcgpckpgkc|FIDE GP Beijing|Wang, Yue|2013.07.15|C42u|1/2-1/2|W +EUxgDTnf;LwS=DvxBJSLDLm]@O]TLTkc<`tbTDqi`gugFNb?>?l\?F\UOUsm:wuFph_eqp=EpwFOwneVgV|20. Amber Blindfold|Ivanchuk, Vassily|2011.03.22|E36|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?ph?PnwBRwpCK^ULUl\R[b[:rurU]rZF[T@IBJiEDQOD<>E<@OP@AGOpiX`g`L=AIELIF|Premier|Sasikiran, Krishnan|2002.12.31|C95m|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLm]V]g]O^d^>^ldEMne^>t_=OuYHPYQK]d]O]ru]HQH@H_M<>enPXqaIQphEKumKUMTUdT]dnmn>=]BXaha=UnfHPfdPYohU=Bo=UdTUToTOW|66th ch-RUS 2013|Inarkiev, Ernesto|2013.10.08|C89i|1/2-1/2|W +FVl\;Lme@FxgGWn^EMsdFPwn?FdU>@^WrtFGucW^]VLVgm^L\TLUcbMTbTDLTBPaBZapvwGEtTEiTUpfof@hxohpovifvufnulnw|Rapid Match|Short, Nigel D|2008.05.04|B23|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?Pph<`wp=EunCKld:=nwBRruE@sd;L\UNUwn<`vx:unV]f]K]nN>N`N@?N<]K@me;EdnMU^ULU\c?>tXIQXa=Ke]V^gmBRjZ[MwvHXahMhnhE?mw?PwfNONMNruNVvhKTxyVXh_XVuEVFE=@H=UTD_DFDURGWfW|20th TCh-RUS 2013|Svidler, Peter|2013.04.10|C65j|1/2-1/2|B +EUm]DTld@Oxg;Lnf<`qi`Y]TFVp`YPk[?Ftk>@smO^wp^mgmPejbBRf^U]d\CSucS\m\e\c\R[b[:rkr=:vx:Zws?;pwL[o_Zbxy[Ls;L;\SbrS;F?;SV_TLrt^V]eSetLwpLtyqHPeUtvU^vhqy@H^nHQVNGNnN?TNnTKnghvgwvfpgQXyqXaqpKTpqfmwnmtnutfuwTMqpMTpq|Amber Blindfold|Kramnik, Vladimir|2008.03.27|D43|1/2-1/2|B +FVl\@Ome?[tm[mum>@sdDTphEU\UOUwpNM?@MU@AxtIQUE>@EWqpn^pqmnKSt@gm:=m\M;jmKEc[T[b[FN[SLFtb?>ucEOwtCKdjFUj[U[b[@A[dW_f_V_ogOUd]NPck>N\VPYmn=>tv;V]VA@e]YGkcNFvtHXtLUfceFEnf_fefGWLtIQqaXatLEIfcWGce>NLFDFGFePIHVHFHPH@Hg_HOxoONofNU_WQYf_|CCM4 Ordix Open|Rublevsky, Sergei|2004.08.08|B42g|0-1|W +FVl\@Ome?[tm[mumDTxg;LphEU\UOUwp>@vxCKsdwtIY[TKTqa>Vtl:>rtUcbZcZlTVnm_ZE_WEWTWHPW_BR_]nvtv>vxpvr]MRZ|FIDE Candidates 2014|Mamedyarov, Shakriyar|2014.03.18|B52g|1/2-1/2|W +@OphFVwpEUmeDLxg?Mvx>@l\U\e\IQsdBRul;Jjb=Fga?>wuJTtfRZaW?umng[C:=C[=][RLTtlgURdV^df@HlT]mTUmUf^UR^]?OqaQYxpRJ]EOGE]GO|6. World Blitz|Svidler, Peter|2010.11.16|B07|1/2-1/2|W +FVn^@Osd?Tw\>@xgEMvx;EmeDLjZIQtf?>qiT[\jE?dn?Pld[RnhRDulMUruVhnOUkc\ele|78th Tata Steel GpA|Tomashevsky, Evgeny|2016.01.19|C50p|1-0|W +@Ol\DTsdEU\UOUxg;LnfBJwnFVvxUKdZ?Fme>@ZK=Kgm?=jb@vxGW^WFWo_CKdne^FUhWPW^gBRvoUOtfCgogRZc]O^ru?OxyOP]n@Af]>@phEUjbH]u]PQwxDLxpQPyxLTxwTS][^mwoS[d[mgog@@]TMT\UNUjbBRsd<`qi`YSn?>g]T]nY]dkdOYuYLVrs=EwuELYnV\ne>Vel:>u]RZs[CSls\MseIQtmM\mt@Aes\MtmV^se^Vo_VF]UM\[S\fSTLCmfFfeWCkUVfV_VkbWG|20. Amber Rapid|Gelfand, Boris|2011.03.12|E54|1-0|B +FVl\@OmeEU\UOUxg;Ljb<`nfGWsm=Ful>@gVEUVe[dmdU^e_=uvu;LuvIQwn?=_YOUYhGWn\voMJ_eGYeTYgTJgLJT>FTZFHphW_h_HpofQYZTYaTN?@N]phfohpowLC\TaiTLCSnOW^TV^gXNUtk?Mo_IQXiA@rtHX[SLRkOX_i_M_f_R\O=>=vx\mwu^flW<;ph;:TNUNWNKUtTU_Nf_nfn=]xp]TnmT?mE:;bZ?OZRBJSJOJEm@Xm=;B=]DT]mX`us`]mvQYpiJPRJCKvFBJsrJSFnSLng]UgfPWipUVfmW^pi^`ipVn|?|Grabliauskas, Virginijus|2004.03.06|B48|1-0|W +EUm]DTld@Oxg;LjbFNk[CKtX?FnfIQXaHXahO^gm^hqh=Dwe@tXLVdUNU^U=EldCSc]OU]SECSbFNrsCKuZUDXfKCb\V\w\MU\w?=vuD>wJ<:Z>=>JC:jCL>;k[Hd[SdVphVMsrjkusklstlkSKkKfK;KrsKJtl@?sCIYLSJ:xpMVCE:;SJ?Ho_V]lD;kpwkqEGH@GE]OD<|SportAccord Blitz Men 2013|Nepomniachtchi, Ian|2013.12.15|A22|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQtkEMm]V]g]O^dU^lD_nxyMPtu:>DE>NECPYue^_wrYWeu_o|39th Olympiad Men|Onischuk,Al|2010.09.24|C88|1-0|W +FVn^@Osd;LxgEU^UOUwSUdkd?Mvx>@wv=OrsIQSe:;e^tQ?GsvFOQ_RLih>N_XOHhaLRg]N>o_G?_VMTxy@IXOHQ]gI@aZTFOF>Fqa?>VNQHe]HOgXDLZ[>=nVRC|World Blitz 2015|Aronian, Levon|2015.10.14|C47|0-1|W +EUxgDTnf;LwSFNvx?Mm]@Ol\>@sdBJSLCLul@vx=RtmT\xy:=uvIQe]U^g^LF]UNEwOHOhYRJmQ@IQHFPvmP_Y_IH_YHIrwOWmXJPXaGOYOIHOYH@n\=<\jW^UM@IY_PQaFIAFV?O_PQPwO<>O?|2. ACP World Rapid Cup|Grischuk, Alexander|2008.01.07|C73|0-1|W +EUm]DTld@OxgFNjblnWgnfgyvnys\cstfdtyaO^fdf>@jbCKl\dsO^sm^mumKS\TFOmlMU]n>LkVOVn]VOphL>wpHPtuJRceR[b[:ZemDBusQY|Aeroflot Open|Berkes, Ferenc|2005.02.21|A09u|1/2-1/2|B +EUm]DTld@OxgFNjb?MtX;Esm=Dnf>@]TMTwnNVvxTMqiIQXaV^g]HX]SMqxyD;o_^gmgXagqO^yx;hwghXq`ETS]QY`o@AnwEywMTtTKsmt?wnwLFvmDLTRFVOJR[k>;k;B;bZ;D`uDEdmNDmvUNulNWOVDUvmE=KJCHO>EKBCJBTJCOVELVOLEOHE>HI>GIACJTFJCQICJF=JC=FCJF=JC=FCJ|Renova FIDE GP Zug|Nakamura, Hikaru|2013.04.18|C11m|1/2-1/2|W +@OxgDTnf;Lm]EUwS<`smT]f]FNqi`Yvx?Mld=Dwv>@SnOEgaYnun:;jZBJagCSZSJSk[NV]VLVgVMVtk?>neEKmgK\eU>=U^VOrsDEvn=>^l>nln;>nlIQsuENktNLg]O]d]LUle>^eg\MgdM\dg\MgdM\dg\MtfMWutWaghaWhgWaghaWh;@ItTUN]UNOT@wnEMk[RKmeBJvx;LdZKBtfMUfB:BwvB:ZT?>rtIQqiCKTc;d\bfofL[\S;StD[eD<@I@me=XphXFsmDTm^;LxgQI>AaQOVQLGH\SAILTIif^|30th ECC Open 2014|Mamedyarov, Shakriyar|2014.09.19|C42m|0-1|W +@OxgHPl\?Hsd>@n^DTm]=RweO`vxT]dUFNUF@At_RTF@sdBJSZIQtmFGnfOEZl:=wuETe]V]f]L[lsTEjb[UuvDLgVMV]VUdmdW_ogETk[TZslZdldGPh`Pedt=UvuecuUNUtwcfwofVrvVOoT?GbZOkZRGEv>@IqakrxqrOaYU^To^sonsenvEUpwelw\O]\ULUvnlu>AIA|WYB12|Szabo,K|2001.10.30|B09|1/2-1/2|W +FVl\@OnfEU\UOUsd;Lme@vxDTul:@wn?>k[RKvxBR[SEUmeU^e^;En\RZqi=FunIQtkDLwsKDktETSLCLtmTN\N;k;:;sd;:veMbeVbkVLF>rZ>LnS|FIDE World Rapid 2014|Tomashevsky, Evgeny|2014.06.18|C88|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;E\ULUZdEKbZ:phOETEFEgvPFRj:@tXIQXOFOnfDT]cCKwn@vx@Akc@xgVPdO=Old?>wnCKvxVmgVFru:>weU]f^T\e\C^v^F^d]^_leJRkcHPuw@HwuM;uwOMwu_g|GRENKE Rapid WCh|Lorenz,Rog|2010.08.07|C10|1-0|W +FVl\@OmeEU\UOUxg;Ljb@smBRaYKvn:=\N>Ntl_mlmN^if^fnf=mfm@GmdKSdeGNe^HPYPIP^fNUfeS[o_OW`X|Karjakin-Nakamura m|Nakamura, Hikaru|2005.04.29|B90n|1-0|W +@OxgEUphFNwp?Fvx>@meCKsmuE>EpgE=ai=>fXLCvu:Lh`DE=ELEXQHQ`XEFaQI@QaC@wnEMvxBJtfCSjZS[dU:;c]LRUOHOo_JC>fsum[ZR[RCg]VphAHgUIYw\Ya\@VOUOnhDT]TFTul=Kwn:@vx?>wvEMtXIQXaDLah^e^U^JwLTxqknrunjuEPIEDT\D\jpqipxwx^\xBQYBf\`iq`Wf]IP]MPXMmXOm=OG=DG@D=@I=mW^mRIPRKPWKoW`omHPmu^gu]`W]TWNTKNGKBG@BJgoqi@IJ\IQ\tQItD|World Blitz|Ivanchuk, Vassily|2009.11.18|C47|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb<]UNUdU=Utm?FrtFOtl@wpUKxnDTvx;Lm]T]f]<`]VMVu=?=sdK\t_VOqi`Wwt\kdU=UpUkeh`WNU^etrt:<_fOFbZNEtuE>ndL[dSBJSB<=u=F=^C>ZB@n^FVwn;LmeEMvxBRdSIQwv?>tmOEmdETnw<`qi`gugTZdmL[guZTmfDLSdTNjb[JrsN]dnJTk[R[b[TNn]N]ph:jf]V]uc=:\TMT[T>FskjbcKPXkcbZckHVKcZbcu:Rus@HvuRTkCFCsCbjCcjlwpQYpgYagYHQcGTMhaXaY`MPG?PH?WHXWNQHusltstXtxptTNEHQE=TM=aQHaXHA`YV_X`MOY>_D>ELT`YAHYTO_T]DV]f_qpw|FIDE World Cup 2015|Eljanov, Pavel|2015.09.29|A05|0-1|B +FVn^@Osd;Lxg?[dU[TmeIQwnEMUO=Ovx@uc:;\TMEc\LFk[DLjZ;=tuFUwvBJe]V]f]?>gULU\l>NvNEN[SJSZSNfxy=>qifhTLCLSL>FutFDlTh_ts_^s;@ITM^FMUDB;CBryqFNUNGNCFrZLDZ\p`\diaIPqpPOFEHPpoQY`YPYonOWnmd\me\tEHWOHIOPIEPWeftdfndlnul\umW`EH`WHXWOXT|World Blitz|Polgar,Ju|2009.11.18|C48|0-1|B +DTn^;Lxg@OsdHPm]T]g]?H]c>@wnEMvxBJtfCSjZS[dUOU^ULRf]Rclcv^D<^]>=xq=>m[TD\e>=e^=E[mDtmQ=dVGOV]=Ewt`n]TENc[|Amber Blindfold|Mamedyarov, Shakhriyar|2008.03.22|E12|1/2-1/2|B +EUm]DT]TFVxgV^g]?T]cTKsd@Ft_;Lnf>@um@cC=>\UNUdUOUwSU[SZ:;CD;Kxn[evwekZckecZFO_M>@wn?>k[RKvxIQtkEMm]V]g]BRdU;EUKEKogKZutZktkOYwvY_nwQYruR[b[=Xl\VpUENuwNU\UO=UMVSbZSRZ\RWwuCS\^agME@IxhgXhXWX^a|World Rapid Final|Bologan,V|2012.07.07|C88|0-1|B +EUxgDTnf@OkcHPtb=Dbk?Hl\U]f]T]g]>@wnDVsbOYphY_h_V^vx^_wv;LblHVng_qxwV]k]L]l]FV]l@gVypFMWEMPE`PQ^U>vtvQmvumlTE?=UL]ep^lkLD=>D<2>@hW?>xy=DgaMUug:=ruN_m_U^e^=uguV_ueOEedDVdcCSagVNg]NcjcEVwrPW]W_gpwToweHPWM>=MC=ECRoKc[VeleEeRLgoypefrwf^pg^vgp@HL;GW`WPW;EK]kcW_|World Blitz|Ponomariov,R|2009.11.17|C65|1-0|W +EUm]DTld@Oxg;LnfFNsm=DjbCKwe@vx?=tf:@wnBJmeEU\UFUsmJR[SLBbZDLSLBLm\um>F]gOKe]aiphKNgViqxq@Hng?AqxUgwgGOVPN^PF^gFWHGmpgpxpGNf^NE]U|Premier|Tseshkovsky,V|2003.01.04|B23|0-1|B +@Om]DT]TFNxg?Tnf>@jbCKwn@wn?>k[RKvxBJxyIQmeDLtfEUfK=KgmKDmcCKumNl\NPpyPNypWY_WYXpgXWg`WX`_^mvNGNwtU\e\XW_fm\t\WYqa@GfmJRbZR[\[GOmfYVfgVTgfTdfmdimlQY[_OV_[VW[KiaZRNVlca]K;HXRJ]Ec\Ya;CEuJBur\UaiCGW`UViqGI`hVWrRWPX`|World Cup|Navara, David|2009.11.27|C88f|1-0|B +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn>@vx?>tfFOulBRwtwne[u=>=fm[Lne=EmdHPogQYdvL]vh]LhvE<\kL=e\=G\S@sdU]dnCSgmBRqi@p`YGxuIYgqY`i`HXog@Hqw?AfoE?ohNEZc?NnoG>wfN_clT\e\[Tk[T]rtAidUEZUD>AlZiq|Tashkent FIDE GP 2014|Andreikin, Dmitry|2014.10.27|A46s|1-0|B +FVn^@Osd;LxgEU^UOUwSUdkd?Mm]V]vx>@d]IQld=OwvtfLFusCKfmOPgaWeaPesPF>FvFMFrs:=mf=UxwURskRbklGWwnFMftbZd\@GphDLneGNjbKSlnNE\TMFtkFOogQYqiBRh`Y`i`W`g`S[b[Z[kd[cnjcsjRsxRBE@vxU_f_=]\N^fuc]mcCfoxyGNCFmkd^;JFN@A^XkON^OWwoIQ^W?WXN:>N]WOph>^]gJ[om[UgV^ZrsAIs;QY;@sm?>ga<`pg`Nm^MF^OFOap=Ekc:;g^N`og`WrjCSjoO=ulS\c\W^g^E`vw;CoW=XlZ>NZlN>lZ>@xg=OwnOPvxg^W^vpLRd\EN]UNitkMVkV>VurV>rkRCwr:r|Aerosvit|Rublevsky, Sergei|2007.06.20|B46e|1/2-1/2|W +FVl\@Ome?TxgEMnfTKwn>@vxDLsd;Ekc?>tbKDrtE?d^=F<=@neFPtX:>qaGOXtNVaYPFtbFL]VLVgV>VewVvuvETruCLvm?=YQHPm_DFbk=?uMTN_hL^\TNT|FIDE World Blitz 2014|Ipatov, Alexander|2014.06.19|A01|0-1|B +EUm]DTld@Oxg;Lnf<`qi`Y]TFVp`YPk[?Ftk>@smO^wp^ovoV^g]LVucVeonFXiaXarw=XpiIYyxY`i`eV]NX`x`PYnuGNwyY`ulaXd\U\m\?olsVeyx:?x`owsl?o\momlmwomuowumwo|Aerosvit|Shirov, Alexei|2008.06.13|D43n|1/2-1/2|B +FVl\@OmeEU\UOUxg;LjbHPn^UFwn?HsmBRkcIQvx>@tkPXgvL]n`<`u`:J`u=Evg]gmgFPph?=gvP?rs?NktNTunJKc[R[b[TetfK[ve[swsEene=esCedC;@IxpX`qiQYi`Y`pwdl;jm>Fmuwpu]pwfmwomeFB^fov][BEe^|World Cup|Zhang, Pengxiang|2007.11.27|B91m|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@k[RKtkEMw\;LmeBJqi@tkU\w\LFvxELgVLU\e:FR\Ahg>?BJG=gf?HJKLZKJZcJB=GfgHQBJQHJBcughunBCn\CD\ehgH?DYQH?QIGAC;?F|FIDE Candidates 2014|Anand, Viswanathan|2014.03.29|D30r|1/2-1/2|W +FVn^@OxgO^me^OgVEUe]?Msd>@wnDTdST]SM=Mu]?>t_HX_h;LVLMLogfhofNrtBJo]:>woIYjbYanwNvtv>vovOEk[GO[SJSwSEVvo@GphGNhaXaofWPbZPYSn|WYB12|Andreikin,D|2001.10.26|C42|1/2-1/2|W +FVn^@Osd?[xgEMw\[dmd;EvxETgm@mwENwfN\f\TN\fOYjZCKuUY_U\=EfU_U\UEFtf@AruF>kcHXxo?@p`IYvx>Fon:?qi@Hc[HIxpY`i`?;[RKRURF>ur>LnmNTd\IipoTNRdLJZRDTdeAHew;AweiyowyqmtN]f]T]wuA@]T[e\e=edneJg]LVvxVeTLFV]SeTc\JLk[TJ\LCLSMJ[M@gVEUk[RKm]U^tf;EV\DLfXKD\f?>w\E?Xa?PahIY]U<`umLUdUOUmU`NU=D=vxYahMN\f\:<\f=XMTCKT]XfofkCwoCS>FS;ow;@wo@:ox:JF>JN>:WPxoNK:>Kkowk[wo[\onPG>:GN:>NE>:EM:?\lnwMV?>VU>=UN=>NW>Fl\F>WPwoOW>@PQ@?\T?@TRowRj@?jrworR?@RBowBH@>QI>?IP?>HGwnPH>VG?VN?:noHGNKX`i`W`KQ`hon:jnwjrwnryQAGNA>NU>=UL=og^evmHPweTeSK>Fys=>sSFfSR<;jrevRUfemtedtkdfUM\dkjdlZR><[SLRcZA@yIE>rtFOIiBJkb<;d\U\e\R\t\JSZ:;:\D`Vm^VgigOVDTVA^OAOgO@pb[|Aerosvit|Svidler, Peter|2007.06.23|D45l|1/2-1/2|B +EUxgDTnf@OkcHPtb;Em]?Hwn>@vxCKl\U\c\O^bk@Iqa\^>SD\SE\DES^`gq`WSUHQmnDlUgl\gc\DcbDEbgWsqwsuwfQfnfuZkbN]g^ZlbMl^f^]WMbW]bM]SM?SD^[DN?MECpgBR[ZCBg^KSZjBJ^US[U\JL\U[cjRckRSLT|74th Tata Steel GMA|Radjabov, Teimour|2012.01.20|E15e|1-0|B +FVn^@Osd?[xgEMw\DLvx>@me;EdnMU^ULU\cIQe]V^gV[Mt_=Fnd?=cUEV]VMV_VOUu]Ud]dGOV]CKjZ@tfTfofOQum<`vxGWqiW^i`^gwgBJrw?gwg:?giQNm[NU`XHP[`?Wf^UTxqWG`NToigoaqxavxqvaqxavxq|65th ch-RUS|Svidler, Peter|2012.08.04|C48j|1/2-1/2|B +FVl\@OmeEU\UOUxg;Lsd<`nf=Ejb>wn?Mc\>PvwPYqaW_[SLFf^FdmT]m[K=|GMB|Acs, Peter|2003.01.16|B67s|1/2-1/2|W +@OxgDTph;LwpHPld?Hm]T]d]EUvxO^nf>@gmGWsd@gVEUVe[dmdU^e_=uvuIQuv;Lqa@t_YX<=^O?OpU@?U^>EtTEN^pNjTSCKwt=MX`L=SXjktw=NpUMUXUklUEBRECN=C;OM;EB`fpgf\BZKSZBS[|FIDE World Cup 2015|Andreikin, Dmitry|2015.09.22|D79g|1-0|W +FVn^@Osd?Tw\EMxg;EmeDLvx>@jbTK\j?>gX>FxyIQXiE?o_@ulDLgVMVmgVDwe<`tm?>qi`YvtO^yw=Omd^dldDVdlHPlnYgpgU\e\CS\cBRuE>FEFOFg_VHclRZleLTeS:;wuFCS\HktmC[me;=el[dls=;\Skb|39th Olympiad Men|Heidenfeld,M|2010.09.21|C10|1-0|W +FVnfEUm];LwSV^l\BJSLCLul=Xo_XPsd@O\ULUxn:;vx?tmO>V_FMnhM_hY_MdZ<;rtHPY_?Fkc;SmvA@vhPX_YMhYh>OZTJRhnEndS;xp@AtyAQiaGOh`Y`aXQypyOXdnFOnh>HoqHWhWOP>?PH?oHPh`\cokcu`hPWkKunKkn\koWPh`\cokcu`hPWkSWNhoulSRlcohNOR:OW:>c\>FWOFVOPhoPYVNY`op`WNQW`po\eQye\yx`aov\evoe\xh\eopewpqw\hp\wpow\qpa`oO`apoa`OQ\eQqe\|20. Amber Rapid|Ivanchuk, Vassily|2011.03.22|C18|1/2-1/2|W +FVl\@OnfEU\UOUjb?Mw\UK\n=XxgXpyxpisd;Lk[ZROMkbMDRJCKSLELnSKTSLUKL>=>cS>@vx;JTLCLl\FNsd:;g]@vxO`qi`VgVHVtfCKum@vx?=k[O^\U^duvNUneBJmcdStkSMgVEWeWMWrtFOcRWFvm:;V`DMRcIY`OMOcTF@k[RKw\DLmeBRrsEU\cR[b[;JvxJ[tXKD^U[UdULUXOHOga@Aug@wn;Lt_?>VLCL_M=MvxFZT:>ngM_ldW`Te_Wg`O`qi`OwvFvevIYveO^rt>NtlWXeVGOVe^MlnN^eT^nunYaTeM^nfXYog^hfN@IN`YQxqhwqxwhg_BRjZOW`XQX_Xh^eT^Xk[R[ZR[dRJX^TeLTJBT\etDTB:2T]:U]eUWIQW^em^l|GpB playoff|Bologan, Viktor|2004.07.27|C42|0-1|W +@Ol\DTsdEU\UOUxg;LnfBJdU=UkcUWtkFVme?Mjb>@gmWPul@sm;LrtO^m^W^ucDKwu:=gm^W[SLRc[KDkbHOf^U^m^W^[^CKd\RCngCT^LDVbTVTLTKTjZOXtrXOu=?=rj=]gnOXxw]mjbX_ZR_;wvmkSKBKRJ;BngKSbeS\eE\dvukmEmdmumT\mnFNgLGWo_@GLSNVS\GO_VOVngPXp`W_\nBKn\KB\nBKn\KB|Tal Memorial|Eljanov, Pavel|2010.11.12|E06|1/2-1/2|B +EUxgDTnf;LwS=Dm]T]u]@O]_DKsdEjZSZcZNVogENxqV^g_NUqiD_f]_DipU\`X\epi^f]fefXPGPi`D=ZR=R`XRdXP|Renova FIDE GP Zug|Morozevich, Alexander|2013.04.21|E34|1/2-1/2|B +FVm]V]u];L]ZEUxg@Osd?[g]BRjb[dkd^g>fm]Zlutlc]_feg^emofmjtwc\^e\efeMU_]jq]UTUwWUNaYqyW_yuefuUbZOW`WUW_\NM\aWUd\UXf]MLa_XY_OLCOPYy\Tya]eaZTLCJ|FIDE World Cup 2013|Ali, Sebbar|2013.08.11|B01|1-0|W +FVl\@OmeEU\UOUxg;LjbutBRsdHXdS<;gv>Gk[L[e]V]f][L]KDKtf?TfhLVvgGHruNEgVOVuUESnS=U^UA?xy?_og_]hv;Bvn]UwuT]utIYSe]Te\UM\SHOtuT]n^OG^nMOS\GD\SO_neDGS\GF\UFEecX`U^Yacl`gpgaiutEHln_?nw?@g_V_^g]TgU@=UgHktsklsrlWru=@wnWXnw@HusXWsSWe|It|Dominguez,L|2005.04.03|B90|1-0|W +FVn^@OsdEU^UOUw\@meGOvx;Ee]@A]VOVtXNWXF=F\e:=rvET^TFThVWele=>VhT[ndUdkd[dv>?>hD|12. Karpov Int|Rublevsky, Sergei|2011.10.11|C45|1/2-1/2|B +EUm]DTld;Lxg@Onf<`qi`gugFNsm?M]TMTph>@wpCSvx=Kgn?=kcTFtkOErs:;wuFOmgKRjbRKg]=@nfIQXaEUgVU]sm?>wnFTf]T]Vg]krskdvxHXahLTmc;LcT=FT^O^e^X`gvQYog>=ve@meDLvxIQdnMU\c[Me]U^gV;Eo_^gVg?>t_E?_M=Mnhfgf]fuM=Mn]MJwsO^qi^hsvhW]WPWvfJjfnIPxoPOc[jr[SrtoftunmW_fnumnmOVmeHXd\QY\TVUk[X`iaUVTLVMLCMDe^|SportAccord Rapid Men 2012|Ivanchuk, Vassily|2012.12.14|C65|0-1|B +FVl\@OmeDLxgIQsd?Me]V^gm=Fnf>@ul?>kcMDtkBJwnEU\T?mcFNZdPYjZYnlnHX[SJSZSW_SKD;aXQXh_X_tlNWkt@Gux?@x@G@lkE?tm?Pdu_fof@HcRWEnpOIyxI?uo;_f_^foefmpmHOeVEiV`OG_WPam_?E`QG>x@E?_V|WYB12|Rohit,G|2001.10.25|B50|0-1|B +FVn^@Osd?TxgO`m]V]dZT[ld]dkd[Fqi`O^VO^weGWVO^Ovx>@ulEUd\;LjbU]tk@AruuvLRnuEZlZ>ZuZFM\TMTvtTKg]DLwv:>]WA@WM>vtvOUvnKDMC|EYCC B14|Ragger, Markus|2001.09.02|C59|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQtkEMmeBJum;LwvLFe]V]g]FPnwDLxy?sdIQXaEMfm;JnfJTweTeme<\N=ENFEFXiLVvxA=mcVephOUi_U_h_=Uog^gwgekc]k\xoFE]cCKrt\bc]bS]L@w\DLk[RKmeEU\cBRrs;JvxR[b[J[tXKDXOHOga@Aug:RaW?@dn@wv:;smKSbTEWgVLV]VOETBHVB;=;mgVrurFVvuWNgXIQXNGNjZSZrZ;DZ`?Ol\DK\UKoxyQY`^ET^VOWV;@IuxNUc[T^neo];DI@e^U^DFWGFN@H[S^fqi]mNVHIyqfnxrGHSKm[Vn|FIDE Candidates 2016|Nakamura, Hikaru|2016.03.21|E15o|1/2-1/2|B +EUm]DT]T@Oxg;LjbFVk[V^g]BRnfR[wS=D]cDVu]VXb[:r]r?Fvw>@SLCLqiXYsdO`dnFOtkOkrk@UMCS\nS[dZTMme;EvxEKld[dZdIQd^MDulwvU_nwE`gm>Nph_ixpNPog`WpyKUm\=FkbFalpa=pmU_bk=Uru:>mfU=e]_UfmV]k]PN]BiX^XQXvN>NBo=FuvX`vNFNg`W^wp^pypN`\f`^px^smusjfULUuUjrxprkU:@I:^HP^fDVfeIHe\Vdpgkmgpmk\UdOh`H@U\Odpgkmohmugpumhomkpgkmqimugpum\TmkT<@H<\H@phkmiadVhgVdgpmkaY@HpgkmYQH@gpdOc[mQ[SOVSKQqpwqywnyCofCpfoVh\ThoTop`ne`[o][cem@I]TcgTDgomdovd\vN\SNUDTUETLEeSTedTMdhMEhiEFifFGf_GF_fF=fX=]Z>?Z_?@QYF=_\@H\dHIdlC;2PXIAldA@d\@?\w?Hwr|FIDE GP|Smirin, Ilia|2002.06.01|C54|0-1|W +FVmeEUxg;LphGWwp@Ovx?MsdV^e^W^gXLFdSMTl\DLSdIQXi>@\ULUdZTMogCSZdS[dZFWi_=Rkc^gpgrtR=ZTJST^U^u=>=g^=mkVmn^U@IwonfomWatDfV|SportAccord Blitz Men 2012|Ivanchuk, Vassily|2012.12.17|B09|1-0|W +FVn^@OxgO^me^OgVEUe]?Msd>@tX?>wnDLo_=Kvx;EdZKDZdCSjbO^d^U^nY>?YG?GVG@GuYG@Y>E?_W^LT^aT]WO?POG@AaY:?rvDEYnIQn>E`wo`X>EXUv>MqxqUE>?P?oWEW|3rd ACP Blitz Prelim3|Vasilevich,T|2004.06.02|C42|1-0|W +EUm]DTld@Oxg;Lnf<`qi`gug=K]TKTsmFVf^U]mcTKw\?Fvx>@tX:@un?=wuHPe\\c@Hph=mum:=qa>ExpE=NE=E^CMDqaXWrtdtvtA@gVEUVe[dmdU^e_=uvu;LtmIQqiCKut@nfDT]TO^tm;J\UJTw\hd>^dh^>hdIHYQHPQI>Ad\AIahJR\jIBj@BH@>HG>:GchacN:yRZyxPQxrNKrvZbvnK;ah;@habjnJQPJZ@NZuN^|76th Tata Steel Masters|Naiditsch, Arkadij|2014.01.18|E04n|1-0|W +FVnfEUm];Lxg<`]VLVsmVgmg@Oqi`Ng]?MphNEwp>@vxDT]n=Dnd:=dUOUuUESUCSwxwDRpgMVC^VO^\=;ldBJwnRS\SJSjbS[b[T[d\[cgU?>ne>Fo_IYf^YahaOa^V@AtfGOfTOVTFV^e^aFruFOumHP\T;[^gPXU^X_TL[\g_\TmUTtUStw_`wx`WAHWNOkSckrLDxtNEtuceuvD<2v^ehHQ@phEU\U=Uwp;Lme?=sm=skFIh`TbkK=DtbDK_VW`usRSZSIYSLKLsjYVd^`hbMAqjqV^e^hqMqNXwtLS^VXgq_ga_XaPXOP_t<]LyqSTMLDSTD>QAOIFNWFvWPvwPH=OEO]VOEVME?wg?PgWPaWwaPMNP?NF?PF>PVwoVP|World Cup|Shirov, Alexei|2007.12.11|B33r|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQtkEMwv;LqiBJn\L]dUOU\UDLU\]gug=nmZbmlLTeUNU\UT\xw=:wnD=phbcia:butQYnmHPmnGWog@Gfm=KtwGFmXFEXmb:mfEDg_:>fKDK^WPWnfcbwuV^uv>@vxKSf]@:]fbjxtjltl:rlqrwqjwg|World Cup|Matsuura,E|2007.11.24|C88|1-0|W +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn>@vxBRtf?>sdFOdZKZuZFlmLRnuRcucNce]FE]UDLfXOXgXLU^UEUmfUef^HPXg=U^[:>tTUM[SMETVESVS>nSCnkwrknC[@Hg]nm]cZcrsck[kmk|ch-RSCU Blitz|Nepomniachtchi, Ian|2011.01.09|B92|1/2-1/2|W +FVphEUwp;LmeGWjb@Ok[?MsmV^l\MVrs>@\UOUe^Uduc@AxgdscsW^m^@xgVPwn=FdOFOld?>vxDLwvvuvOQqxQm`EUNEFIQvfmEFE=EjbEmfnmun^CS^]ut|2nd ACP World Rapid Cup|Gelfand,B|2008.01.06|C10|1-0|W +DTxg;Ln^@OsdHPm]T]g]?H]c>@wnBJvxEMtf@vx?>meBRdZTBl\;EtfE?ZdDLqi?PwvIQfB:Be]=FnwB:umOIruFOvfP_]VMVmMOMuMIXgXQXdZ_N\TN]ZK:;fbFk[GW^WPWjZX`i`W`[SLSZSFGB:;:K:@?M=?F=;FOweGE:KEDKZNcZdOFTLCLSKDEKCFMeJ|Tal Memorial Blitz|Movsesian,S|2008.08.30|C55|0-1|B +FVn^@Osd?[jb[RxgEMk[RKw\>@vx@ulLVgVHVsm?>wnDLvx=Om^OH^h=mv=exwecru@?v[?>f^ck[dkowoO^of^duy>FyQBRfedSbZSDQYDNe\CKYQFMQOMFOQFMQOMF|2nd FIDE GP|Kamsky, Gata|2008.08.06|B90e|1/2-1/2|B +EUxg<`nfFNl\DL\UNUsd@Own?Mkc;Etk=Fg]`ndnHPulMbkbFbvx>@o_BR_WbMnh:>WPGPw_MVrwO^h^U^l\VU_?>?\ULUwt?G]NGFtD@GN=GO=CRZcZEKDFOFZRK\RJFECR\KxoEMohMTJBT[RL[\LF\eFUK:h_|Helsinki vs. Tallinn Match|Pakarinen,Pekka|2001.10.28|A45|0-1|B +@OxgHPm]?Hnf>@wnEMkc;Etk?>l\FVsdV^gmE?qiIYulfvuW`en`ndn=Oum:>rvOgyqHQmuQ_vy|VI World Blitz|Ponomariov,R|2010.11.18|A05|1-0|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LqiIQtmCKjZ_YOYnYLT]fV\kc\fof>NywGOYn@HZRNMRKBKrB=En`EG`YGFd\H?tkCLBJLCJrCLkd?HrJL>wuMuYuFCu`>L`WQYc[T[d[Ya[dL>W^C;d]>P^eOWJBHOBEONEU;:UVNOVS:=SU=>UM>N\TKT]TPGTUX`l\`ipiW_f_NMUMG\e\OWMFW_FO_h\Nh_NW_gOXgfXaf_W`|18. Amber Rapid|Aronian, Levon|2009.03.20|C67|0-1|W +HPm]?Hn^DT]UEMsd@Oxg>@wnCSdSO^vxBJSb^Ol\FVUNGNbs;Lsd]xqpaipyxKyqKxqyx]yqXYSnum>^YQqy]on`oh`imqyxqixpia^NQXphaZhgZrgnRZnmZbmlbjlkrskj|SportAccord Blindfold Men 2012|Morozevich, Alexander|2012.12.18|A00|1/2-1/2|B +FVmeEUxg;LphGWwp?Mvx@Osb>@l\U]tXMTblIQXmBRjbV^gvRZpypvMEypGYul:=csVP_tT[b[^eneYn[SW_tmEWvg_hohWelenesuewpwO^m[PVgv]eveV\ut\m|67th ch-RUS 2014|Zvjaginsev, Vadim|2014.12.04|B09n|1-0|W +DTn^HPxg?Hm]T]g]@Osd>@wn;L]cBJvxEMtf:;jZogN\xyFV]o\ndnMU^UOUld>=tlRDlcDLumV^g^UOn]L^rv^_mn=Eoh_QnFEFvFQtFvtXcC<>vwIYCJYah_X`qi`YJSYI_X|Tal Memorial Blitz|Carlsen,M|2008.08.29|A29|0-1|B +FVnfEUm];LxgV^gmGWl\@OsdGvn:ytIYqiHXbZX`i`Y`ph>AkbGNduOUudU[b[M[rs[FmcRcscFMtxAqnwDTSLCLdn<;c;M;n_;_f_^fofNUxpqpwpU^po^eZRBJ|65th ch-RUS Playoff|Potkin,V|2012.08.13|C11|1-0|W +FVl\@OmeEU\UOUxg;Ljb@wn:;jZEMvxleT\ehD=nk=Evs>;kS\ZhaGHSKZ\aoHGKSRZoaG@aOZbSREGOa\dav;NV>?ON?@NE@IEL_VK]IP]VqyCSP@LT@TL>nSRnjRKjoLTojTdjUdTU:KS:>S\>n\cneckemkbme[cg_MU_WU]i`TdeJbkWO]eOGemJnd]`W]UWOksG?2mu2nuUu|World Blitz 2015|Safarli, Eltaj|2015.10.13|A29|1-0|W +EUm]DT]TFNxg?Tnf@Ojb>@l\TK\UNUsd;Lwn?>vxvtv@HvfKDph]ElcOMxpEFfgMEgeEL\ULKclDVkcV]egKMl\GWgeFVUgMN\lVvc[NV[T]TeUVrlTvxpirwiaW_UE|World Blitz 2015|Wojtaszek, Radoslaw|2015.10.13|D27|0-1|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQtm?=wnHX_YOYnY;EutEVkc<`Y`V`qi`oyvGWmfoipiW_f_X_v^=?tm:=mn?>ng>^g^=md\@Grwmlw_GP_`PG`_GF_aljaQjkQIFM^]kcIQMEQIEMIQMEQI|2nd Norway Chess 2014|Carlsen, Magnus|2014.06.09|C67r|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBRrsR[b[IQvxl\E?tfKfof?PumDLSd=EduMU^ULU\TU]f]V^|Blindfold World Cup|Topalov,V|2007.10.19|C84|0-1|B +FVl\@OnfEU\UOUjb?Mw\UK\j=Fsd@vx;Lf^W_rsL]bZ?:tm]gugKZdSRJe]ZKwtV]S]NG]WK\m_M_g_\MphMW_WJOWTOLT]LtstDL^VIQtvGN]KNFVN:?K]?=]^LTvs=MsCFNC;@G;CGO^gOPqaNVxpPICDM=DLIAgfVUfgU]gf]U|World Team Ch|Arencibia Rodriguez, Walter|2005.11.08|B42g|1/2-1/2|W +FVn^@Osd?TxgO`m]V]dZT[ld]dkd=Oul[Mqi`Vg]>@wnVPphBJiaCStXOVo_V>aYFrvFTwoEMkeTK]c;ElkGOg`ETcTMTkbLRbTKM^VMeTFehxwhewx?G`Nehxwhe|49th TCh-ESP Honor 1|Socko, Bartosz|2005.08.28|C58f|1/2-1/2|W +EUm]DT]TFNxg?Tnf@Ojb>@l\BRsd=Fwn?=vxU\ulCKf^IQ^VOUd^g`@`dgOXts`^nd^]dS]uwuMOgiOVSdXOigVNdU>=UO=uguNOuU|20. Amber Blindfold|Giri, Anish|2011.03.20|C42|1/2-1/2|W +@OxgDTkcHPl\?Htk>@phEU\U=Uwp;Lme?=smulHdld>DrtDSdkUgpgYWg^WNnfBR^p=MqaIYxqNEpiFNiwSBvuBLumL[tuEFjb[Uf^UOc[M][RKRutFMmlT\l\<\t\]\e\O^wp^TkdRZd[M]qx@H[vTEpwEVvtVgxpgmtlmcwn]TldH@ngTMdkMe\Tcmk;@I;_I@TLewpqmg_gw\LD\Dg:@H:ZDTqxNVZcTtxptLcgLZgfHOfKOHK[ZLpwLtwntlnfltf^tl^fltfntlnwltwptLpqLl[KlZKkH@k[Zl[;@I;BljBTV^TfjlqpI@f]lj]djUpqUjqxjsxpsud<@H@gVEUk[RKm]U^tf;EV\DLwnKD]UEKUMD;\KBKf_KSvx?>u]IQwuHX_f>Nqa=M]M;MaXQXf]MD]ONOd^OQphX`uv@wnOQvx@Ars:>[SLFSJCJf^FP^WNWd^P_xy_nlnW`nfQPgmKUfhU_og`Wm\_e\MDM^M>NMWPWkdNPhae_sk_pkpPpypWlwoldaF?<>G>AI>^I@^>@I>^|UKR Ch U20|Gasanov, Eldar|2002.03|B33|1/2-1/2|W +FVxgV^g]EUme@Oph?Tld>@e^U^wp?>tX;EsmIQXOEOnfT?ul=FqiO>MTKLTFLDF^Sn|XIV It|Vaganian,R|2004.12.26|B04|1-0|W +FVl\@OnfEU\UOUsd;LjbUdkd?Mm]>@xg?>wnV^gmLRvxDTbZ=Xo_^gmgXFne<`f^T]d]RLtf:=us@AeS`gpgBJSLCLslM;ruFaxyailpipyp;BpoGW^W=Uut>:|Aerosvit GM|Rublevsky, Sergei|2006.06.18|B46e|1/2-1/2|W +EUxgDTnf;LwS=DvxBJSLDLkc@OtkFNjZCKme?Fsm>@gVLDo_xyUYfNYiN>@H>FHQFC]oCFiYFno_qiYUwqUEvw_MwOM]OwQHqg]OwvKSZSJSnVOLVNLDNVEGVfIQvnT\c\S\e\D\ld\cnvclg]lmyqHI]gmkfFIHFGHGd\klvfGOfbl\br\lrJOHJBH?B:?F:BF=Br=FrvFEqylovuEFumowyqPXm]wo]^FO^]of]MOHMEH?E]QY]Z?GZ[ft[CGNCKNEKPt_qyX`i`Y`P`_Q`aQtyqtDqy|KO|Zhao, Xue|2006.10.30|E32|1/2-1/2|B +FVnfEUm];L]VLVtm@Omd?Msm>@wn=FxgVPvxO^m^U^gm@AuvDLruGWo_^gmgFfxyMTk[TKn\W_uMfvwv<`gX_gpg?gMege\e:?qiK=i`=Xd]P_eWBJ]T?=TK=:vuHPuEXO`XOdW^:>^g_NECNXgL>vypvnpwnljZXNL^ltwntvned[C;AH;>HG>@n^;LmeEMxnBJjZO>tf>De]T]n]DN]nLVkcIYqiJRvxNTul@vt:Btk;>o_IQuw>Nqi@Gmv?AvaG>yxQYdu>=xy=ihNOhX>Gwy;AudA;klGHlmHIXhOGhiGO|Aeroflot Open|Psakhis, Lev|2002.02.07|C18b|1/2-1/2|W +EUm]DT]TFVxgV^g]?T]cTMsd@]TFPmd:ZvtZ\TKLTtsXfuvfQcT\dkdPVTcV\K]?@xgEMvxIQmeDLqi?>jZTKwv;EtfKR\jE?rsR[fm?Pdn[mumMUnh|42nd Olympiad 2016|Harikrishna, Pendyala|2016.09.12|C50p|1-0|B +FVl\@OmeEU\UOUxg;Ljb@wn?>k[RKvxDLm]V]g]O^d^>^ldEUne^>uYHPYQ=FtXF?Qa;ErvGOXQ?Gv>G>eWK]WEV]m:>QfEWwvV^og^emeWexoCKf_@Gv>G>bZ>E_fEMf_|5th Final Masters|Aronian, Levon|2012.10.08|C89n|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQtkEMmeBJum;EduDLl\MU^ULU\UOUwvKDufUfmfJRnwR[b[:rkrDMfmCKe]V^gVEOrd=Dmk:vtDFtr:@I>^HP^eIHo_rwewiwxwHOwnONneNUh`UT|63rd ch-RUS|Tomashevsky,E|2010.12.21|C88|1-0|W +FVnfEUm];LwSV^xnBJSLCLl\=X\UXpyxpqul@FsdGWULFLdU[lQ_l]IY]gU]gaPXaWYaWH>FHWF>Rm_mWM<=emCpM>=>vtait<>F@rt:@wnEMVLCLvxOUuv=ad\U_t_a_vd<`n`_`qi`Pog:>g^?wrwP^xqIQwg>;dm;kgokson^PldPWnFsCmfBRfhWXhvX_qy_Wvf@IyqWPfgMU\ULUgUDLUNCFNFPeFTe^TV^eVRewRV|UKR Ch U20|Semenov, Dmitri|2002.03|C29q|0-1|B +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn>@vx?>tfFOulBRwtRZsmKEk[ZcmcIQqiE?cTCKTcFiaFEnw:ZksN]f]L]g]V]cTKTsCOFwiEMtTMKCD=DTDZbrbFb^VbkD<@IaYHPYPIPo_QYipkdp^PH@vxGOwtCKe]V]g]L]nf@tk<`g]L]f]GO][YS[b:<^V`nwvn\rsSEsuEDVOFOvFDLqi\GuMLTbTo_T\BJ>p`Y`i`;=xo=eLDGUovehDF>=FVUGVX\dXTh`[R=ETDENRd|Eurasian Blitz Chess Cup|Moiseenko,A1|2016.06.18|E20|1/2-1/2|B +FVl\@Ome?[tm[mum>@xg?>sdDLnfEU\ULUe]V^gV>FwnO>o_>DvxGOV`;Lrt=Mjb@l\U]rsIQblBRjbRZk[ZcscLRcsDTnf=Df]V]g]T]l]DGsSW_]WMDwvRLtk:RpL@gVEUVe[dmdU^e_=uvu;L_nIQnhLVqiCKuvwSDLSn:=WfLTnS>NtmOYruY_mt=uvuNMuvHXSwCKT[kDBkjph>=VMjmMV`uBJ=DT]meVUucU^euJRuy^VyiV_DLRTLMTRiy]Hyw_XcuHVMLV]wgXage]kLKR:KS:;S\;:\cktcj:;ec;:c[t_ZbaX[c:=u`_Vjs=?`g?>bjVOgu>:chXah`ai`[ih[k:=ucOksk|GpB Playoff|Kramnik,V|2004.07.27|C67|1-0|W +FVn^@OxgO^me^OgVEUe]?Msd>@wnDTVg;LvxT]g]?>tfBJngMVqiVD]n<>DKULrt>nh;@HKTn>;_>ViaVUt\PXaXUXogE>xo>VTMV_M_XUonHPp`IY`YUY_DYi\]LgnmPGmdGN]_OWdmgL_]LUD_iamfa`][CS[]JR_DRZD_`p][UL[]L>]MNFM]pk_MFOMT>Y][k[T[OX[MX`e]YGfeW_enG\no`WM[W^[d^ed[\U[TedTM_gofS[MTZbTFbj|WICC qual Moscow 25'+10|Touzane, Olivier|2002.04.13|C42t|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDl\U]\TE?ulHXws?PbZX`gvOIktIXm\P_nwBJrj:>ha>@swHIbt`Njk@ptXIPXtGWZRW^e^N\wvPGtXiokopo|KO|Zhao Xue|2006.10.30|C95|1-0|W +@Om]EUxgDT]TFNnf?Tjb=Fl\U\w\>@vxBJk[TMtkCS\n@I>fdDETH]fg]T[TIPgdPWpgWVg`V]dg]T`YDLgGJRqaXaYaS[b[R[GF[cFvT]o_ckvs]dh`L\_WdlsklkaYkdYQ\`WOd]OG]V|Europe Blitz Ch|Huzman, Alexander|2002.10.02|D26|1/2-1/2|B +FVn^@OsdEU^UOUxgUdkdV^un=Fg]DT]c;LnfFVtbCKwS@vo<:sk?>yvIYg_E`]g>fvfTfof`gfg:b|1st Asian Clubs|Wang, Hao|2008.12.29|C45k|1/2-1/2|B +EUm]DTld;LxgFNnf@Osm?M]TMTk[TMjbNVd\V^\UL[b[^gpg>@uc=Ftb?=ruCSwS:;SL@wp:bZCSZ^VkjZlTZS>;SK;K^ZKMusMmZ:m=:jkVsCDMCGIQjBQXBbTdbj=;GF;kjkdipiVkOGkHFNMUyqHVNVUVqyV^yx^fwo|18th Amber Rapid|Ivanchuk,V|2009.03.26|D43|0-1|B +EUxgDTnf@Om];Lld<`qi`Y]TFVp`YPk[?FtkV^g]>@]LCLd\BRjb=;`XOY\UR[UMFXbZXOkOYOu]:Rsm;BmcRZrZBZw\ZBvxBExq?>\nPWwx@AnwWNcmNU][EWwpWo[]OExwonw_>N_`NPm^P`i`ETqhnv^ovx|KM FIDE GP 2015|Grischuk, Alexander|2015.05.22|D43n|1-0|B +FVmeEUxg;LsmGWn^@O^U=UldGNTCKTJOUXtk\cmKSjZUdZS\mtmdnxyn]rs@=mf]Nog^gpgMVwuV]f]N]yp]Nst:@jbCKkc\UCF^VOVDVEK\e@wn?>k[RKmeDLvxIQdZKDl\EUulU]tmCKZk;EphE?gaF\TKSbZBJZSLSlcFNcUE@gVLVkVxpIYqiYah`Vewe\e^eNLogLDdnO]f]>Fum=>]UFfeSDVpwVqmlfgwvqxvmxfmvgivwiywpfi|GMB|Cmilyte, Viktorija|2003.01.20|D97f|1-0|B +EUxgDTnf@OkcBJtk;Lm]<`wn`gngT]f]=Kvx:=wvFNld?Msb>@bl?>lfM;ph;BgpNVumKRfWIQvnV^xyCSogS[d[R[rt[SjZSKg^U^tw>NpiOUWfUfnfNFipL]f^F^p^Kcm_cN^p=EwtGWk]E]_D]ED<@ItwHPZRQYpLEM;D>NdbNFD;F>bc>Fck|World Cup|Mamedyarov, Shakriyar|2009.12.04|E12n|1/2-1/2|B +FVn^@OxgEUgVU^m];Esd?[tm>@d^[m^mEV]VO`wn`VvxDLmgVgng[`DTvwHXum>Vg_|It|Azmaiparashvili, Zurab|2005.04.08|B19|1/2-1/2|W +FVn^?TxgEMw\@Ovx>@meDL\c;EldTKwv?>smMUclIQmwKDwhE?qi?Ptf:bJ:JmcNP[m_Nm[J:hn:;l\ET[TNT\lTJcR;slsJ[R\PNnt@ItjLTjtGW^WNW\m[UtnWPm^U[sc?Fc\PWnhWPhwF?wmPYmgYWgmWYmgYWxy?FyxQYiaIP^hWOh^OW^hWOh^OW|19. Amber Rapid|Smeets, Jan|2010.03.14|C24|1/2-1/2|W +EUm]DT]TFNxg?Tnf@Ojb>@l\TKk[BR[S;EtkRZwnKRsmU\ulEKvx@jb=Fl\?=k[TKtkBR[SEMwn;EvxRZkdMUsmNVusV^g]ETd[FV\UOUm\VX\Kn_GuUSLUVGOVWOPqaQYWXPGXYCSYWGNW?\taYtyh`NV[dVM?OMDYQyx`_xydVDKV]KD]TLE^VyYTMDLM[LDVNEL_`YyOGD=QIL>[d>GNG=FIA2|VI World Blitz|Kramnik,V|2010.11.16|A09|0-1|B +FVn^@OxgO^me^OgV;LVLELwntfN`qi`i\TipTME`gV`in`O`u`i`V`pwMD=exwIY`qNdnNVa_EM_\LEn_VX\tMLtrLD_nXWgpE>n]WUpg>Gg^UV^eYaenPXneDEo_X_f_airyVU_fUYenYa]ga[yiBRiARZgmKSfT[`nfEUA@tmDLjb[RphEUwp?>xgU]dnLTvx;LmXIQXtCSga<>XPYOwya]tX]VXOVOi`>;gU;?pgOVUVMVg^VOys?;scOFe];:cs:J`nJLnSL<^eGPS\@?sy?>yAF?WP>F\GFOAy?MyvOXvNM?NKX_KS@tkUdkdBJxgFMwnGWme=Olk:>vxNU[SJSkSLFe]V^gVONphFLn\LFwtMV\UNUSUFU]V@Gd]CKbZDT]kU[kd[Urs>NZRKRdR?@gVEUVe[dmdU^e_=uvu;LuvIQqa<`tfCKwn:=aYLVjZBRkc`Wd\V`n`O`_U`fUfWvnDLry>Va_VRKRmRCKR[DT[mOYk[Wf[TY_nuKSe]f\m[_Uuc?gc\S\t\>nTL;D[RDFdU|Alushta-100|Khudyakov,A|2002.04.19|A09|0-1|B +@OxgHPm]?Hld>@tXDTnf=KucKDsmCKwnWPaipy|Amber Blindfold|Gelfand,B|2008.03.15|A11|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?PphCKwpU]rt@ph;LwpEU\U=Ume?=sm@vx=KbS?=kcLBSB:Bgm`nunT]f]=@k[RKw\DLmeBRtkEU\c<`qi`gugU]dnR[b[:rkr;JvxJ[nhHPrkKTwr@HktTFgn[Jo_JTcj=DnoFMtk?:_VMVk]TeleV]o]Dh^VOYVNHQNGY_jU:?Ughg|Tal Memorial Blitz|Tkachiev,V|2008.08.30|C78|1-0|W +FVn^@OsdEU^UOUuYU[YV=gVEDvn=@wnFNvx?=rtTFgVO>_h>MuZMWVe;LwuIYf^WhqhU]d\YahaFaphaF\TNVm\n`NOo_BJSJOJumPX_WF@\M=MTMJMVgMhmph_^V>LWOHAlm_^sv^Upq|SportAccord Blitz Men 2012|Wang, Hao|2012.12.16|D23|0-1|B +FVl\@Ome?[tm[mumDTxg;LphEU\UOUwp>@vxCKsdjbUOwu=Fml>=gm=EpiE=m\IQlZL;k[;EipCpxpFNf^=<[SE?Zl?P\fPFbZBRSJ:JljNjrjFLdUOUfUL[U[T[us@l\U\w\=Fsd?=unBJ\eIQk[TBtk;EvxCSd^@gVEUVe[dmdO^wn;EvxEOngwvCKe_=M_YOYgY^OYgO^ph:=f_MEg^W^og^WumDLxoGOv>=>rv>vovEFmnFnvnWl_;BJ;BKSk[@GjbGNB]HXnfIYfoNWofWNfoNWofWNfoNWof|EYCC B14|Papin, Vasily|2001.09.01|C67|1/2-1/2|B +FVl\@Osd;Lph?[wp>@dU[RuZ:;jbOU\UCSZuLFk[RKtkEMm]GOnf]VMVvx>GndBJbZSZuZFWZj?=wuWMdZCkd<`utV^jmJRTZR[d[MWZK;K[RKCrsCsts>=ml=URD`gpg^gD_GNf^W]^UNis;|SportAccord Blitz Men 2013|Radjabov, Teimour|2013.12.14|B31|0-1|W +FVl\@OmeEU\UOUxg;Ljb?TnfTKk[=Oul<`wn>vxOPm\`i\KBKgvi`n`P`[SLRvg=Mqi`Ef^U_t_V_e]ES^VMPrtSE]U<;wuGOVNEMgaPXaWMblD;BD_HPWM|37th Olympiad|Dukaczewski,P|2006.05.21|B87|0-1|B +@OxgDTkcHPl\?Htk>@phEU\U=Uwp;Lme?=smb[R[s[=m[mKS\S>Sm=S>=>|World Rapid Final|Topalov, Veselin|2012.07.06|A30|1/2-1/2|B +FVn^@OsdEU^UOUme;LxgUdkd?Mph=FwpV^e^F^tf>@vx<`rs:=g]^PutL]d]CKl\?>\TM?tbBRbd`WskW^TK^pxpDKdD?[DlPNlu[dkcd]f]N^og^]u]=]cKHPwo@H|Europe Rapid Ch|Djuric, Stefan|2002.10.01|C47|1/2-1/2|W +EUxgDTnf@Om]<`qi`gugHP]T=RtmRTmd?Hsm;LwnFVvx>@wu?>f^L]d]V]^UOUn\:=\cTLuvUOgeOEe\L\c\>vrv@?mgIQvuEVgVHV\e=MphMKkcKMuvVOiaQYxpO=vV=OVRBJRTO=T=U>ve\vF_W?HldHOWPGPUmFf\eTMmoOHogfgpgMVd\VMh`Y`g`HO`gM[en[vg`vojboTbZ|World Blitz 2015|Gelfand, Boris|2015.10.14|D30|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb?TnfTKk[>@wn=OulOPsdU_f_Ppyw<`luL]gapLtk]ndnLQapV_og`iwoKfnx:>ulfovoipop>NpyDLloCKxn?>n]NVrxGOow@AkdLT[TKT]lVnxpQilviNpxnjvpNnwsBJsCjlCGnFGcFncCT\e\ldxvnvpv>vypvnpwn>CL>;wpdbLMbjpi;@vx<`ld=OSnIQqi`WgmLRmcRcjcBJtbMbrb?>wvOPxyPNbrWingNvuv>vrviNgC:;CJ;cvfckyxklJCltxqHX]UNWCJtlqxltxqtlJn@Hd\QYfVHPoglmqxPOVfYaxwDLUL|64th ch-RUS|Galkin, Alexander|2011.08.13|C47y|1/2-1/2|B +FVl\@Osd?[me>@tmDLxg?>jb[Rk[RDn^IQwnEU\ULUvx;LrtU]dSD;bZO^e^]emdenun=FtsBJSbCSZSJSblFClf=urCLqi=]rRF[v[][xqLCne@Ie=[ZRZSZ=RCcRBZbflbjlrc\|World Cup|Timofeev,Arty|2009.11.26|B30|1-0|W +EUxgDTnf;LwS=Dm]BJSLDLgVLDl\U\sdFNuZFneIYmoAQphFNZkO=WGV^em=OGCOko_kdmldV_^SMCDM^D@m\DN\MN]tfFMVM=Ow\@Hdn]nvnPVftV\c\H@tkOPum:>nF>FMF?>rvIQvVPGmM@IqaGPMeXaogaiVnI@p`PGeMW`MQ|3rd ACP Blitz Prelim3|Grabuzova,T|2004.06.02|A01|0-1|B +EUm]DTld@OxgFNjb@rtD_ph_Qwp?=vxO^mcLFwvEZueU\t\^M\TFUqiHOgVQHV`CKpUNUTU:@Hfd=>v>jrdrOg]UGO>FH?UM\MFNM>rv>HNfgWvdl^[S^Ude?GbZHNeWPWfeNDedD>deGNe]>HxwNMwnMT]aUGneH>ed>DdeD>ed>MogM\a_\M_aGPa_P>_a>Ga_TU_aUVd[MC[dCTa]GUg_VMd[T^]e^oedoid@gVEUVe[dmdU^e_=uvu;L_nIQnh<`uv:=tmOUqi`hYLVvwV`n`W`YhCKwv^fmf=mt_\ts=mvt\txtmotDgUDBopBbUghYg^stpltulq|TCh-ESP CECLUB Final|Shirov, Alexei|2008.11.01|C67s|1-0|B +@Om]EUxgDT]TFNnf?TjbBRl\>@sd=Fwn?=ulU\vx;Ef^NVn\EK\jIQqiueWenelrkrDLe\LUdU>N[SHPbZKDg_CKr]?OF?HFOHPVUE`USmM`NSCNMVM>^CB^]Mh]eh_yrBJPWJOW^qirjoxjrxoebOGbjohrxGF^WFGW^GF^WFGWPGOPH_VjphaH@V_xwaYpo|Hotel Bali Stars|Mamedyarov,S|2003.11.29|D45|0-1|B +FVl\@OmeEU\UOUxg;Lpht\HX[SJSZSESur@sb=KbSLBSBKBqi`Wkc:Cs\`V_mjsSjZxq>Gqi`_h_Z_ih_ZSKZ[KJRZhgQYghYahi[_iq_WJZHXqiWgi`gh`WaiZBG>BIX`WN>?NO?>ON>=NMheMVemIaiqVW`h|World Blitz|Carlsen, Magnus|2009.11.18|D15|1-0|B +FVldEUm]V^t_@Onf?Fd\>@sdDL_h@wnEMk[RKmeBRtmDLvx?>dZKDl\;EZdE?wv<`qi`gng?NdnDKrsR[b[N]n]K]mf]fof=DsrDKum:Be]BrvrIQ\TKDmeMU^UV^UMD=ew^gwg=ErB>^p`E>xo>;Bj^>op;^c[@gVEUVe[dmdU^e_=uvu;LuvIQqa?=wnLVtmCKaY<`ruDTkc=EmtEuvu:=uv`Wd\^ftfWloglsjbsjnuVLvoLRc[R\ftT[b[BR[RKRyv=;p`jcunRZn\c\vf;c_p\Np_csfvsrtkrjvnN\nmZbkdjmdmOEofETmdTc_e\efebjeljr2drcrlkGW|FIDE World Cup 2011|Polgar, Judit|2011.09.03|C67w|1-0|B +FVn^@OxgO^me^OgVEUe]?Msd>@wnDTdSMFvx;Lt_BJVLCLSd?>wvvuvO`_hWele=Xqi`OvVXPVDOYhV:>e]T?DE>NrtIQE:UVkuwkVUV>VwvGOvVOVoh?TxwV^ho^fovRZwn@GneGNvdHPp`NUdkQY`YPYkdT]d]fn]d|16th Ciudad|Topalov, Veselin|2003.06.06|C42u|0-1|W +@OxgHPm]?Hnf>@wnEMl\;EsdFVvx?>k[BR[SV]g]ETtkIYrt<`qi`nunRZwuO^d^>^kb=Fnl^VSKDL]gVWg]WV]gVWbTWTgmMUlsZbs[H?[cU\m\TSclFNu]STle:Ztl@IecZ:ce:ZecZ:ce:Zec|SportAccord Blitz Men 2013|Wang, Hao|2013.12.15|A08|1/2-1/2|B +FVn^@Osd?[xgEMw\DLvx>@me;Ejb[R\jIQdnMUnh?>k[RDtkE?wv?Pe]V]^U>vuvOUg]k[RKfKBKbZE][S][wu[RngN`g`O`rs`OqiLTxw=]srIQdn]ZrZRZl\>=ndZcwnnm>N_hHPmlQYh_:=srE>rB=;Br>?p`?Hlm;=rBNM`XMemlO@_VHIV_=EBCeidUENUf@F_DN^lk^]kligfugeDFemlc]e|15th ETC|Kritz,L|2005.08.03|C42|1-0|W +DTn^;Lxg@OsdHPm]T]g]?H]c>@wnEMvxvtJRl\Sctuc\umCSphIYqaS[b[\[ml>vsv[vxpvslnRZn^sl^_GW_[HO[KOVK[VO[KlTK;OV;CV]CHTlHC]eCKempwltwptlKMlkMJkSJ:mvUMSE:REMRZMKZjKSjlSwpqwelnengnvnqpnvpxvnxpnvpxvmxwmuwxuvxpvnpxngxwW_h_g_wn_`nf`af_ai_XYaXPipo_ai_WiqWOqy2PHyr|World Blitz 2015|Tomashevsky, Evgeny|2015.10.14|A29|1-0|B +EUxgDTph;Lwp<`vx@OmeFNsm?Fld=DjbBRuZ>@n^CSZSRZ^UNUe]T\m\`gt_LBSZD\Z\U\pg:=wvFM_M=MvFB:;@?kc?Fc\M\xw>MwnIYneFN;=HPqa\kelk\ogMWh`Y`g`\flef`d\NF=A`oeno^ne^oeno^]UFMne^OA@phEU\U=Uwp;Lme?=sm@vx=F_hO^sm^hqh?=uZFDwvLBSwNVd\V^g]T[vu<`wn`n]n[mumU\m]CSZlBL]=:=jZL[l^SZrZHPn][eZjDK^LK[]g[cLZcZjZekZR=uxq\dg]keRjIYoge[j:@H:<[eh`Ya]neonxuef^HOxneunxutphtlhalmqhdlh_ou@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?PphCKld<`wp=Eun:=nwP?qi`Yrt?I^ULUd\V^g]^fvf>fofDh\UOU]WYPWhUfwgfpxpIXg`EemweUpoQY`a=>tdUjaXjkXmkria@Ihn>NwhNOdgOgogrbgpBR[RKRn_b[m[R[_PIPpg[ch^ck^mPWghGOhgHXghWNaXOXhgNUgfYafgU]g`]emselsblt||Sasikiran, Krishnan|2004.05.09|C95|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQtkEMmeBJum;EwvDLnwE?qiOIe]=OdZKB]VMVZT=>le>=xo=U[^@?^]U]d]<`ohQYhaGQ]o`nPYneYu?Fp`QGahHXuce^bZG=_W^Ucl=GofFOf]OF]HFEhoEDH]DEluEDofDEfmEDmdDEd[E<[Rd]>?]^?@^gGVgh@GfXVEXfGOh_JRf]OG_XE?X`?E`_GF_XFG|WCh 2016|Carlsen,M|2016.11.15|C88|1/2-1/2|W +FVl\@OnfEU\UOUsd;LjbUdkd?Mul=FtkV^d\>@m]^eweMVxgVklk<`kC`gpgLVe^:;CBGW^U@AvxW_xyFOB]DLU^ONwx_fof;CxXVgrwCE]TE=XW?W^WNVTVgVbZHPW^=:wr:R\TAHypHOphIQqaPXaYOF^pFGrwGFwrFGrw|6th Tal Memorial|Ivanchuk, Vassily|2011.11.25|B46d|1/2-1/2|W +FVmeEUxg;LphGWwp@Ol\?[tmV^gX^fm[fovmL[uZ[L\UOUqaIQpU=UXg@qoBJZ_CSrwS[dZNjZTEM_MDMTC?OwrjUCRUgogLVg_:?R\V\e\?;rROP_gP`kcW_h_`ame@GgoayelyilkidogdgngGFklFE_WEDWOHORYDEYQENQYOWg_;go>?EU|UKR Ch U12|Maletskij, Igor|2000|B09w|1-0|W +EUm]DTnf;Ll\T]\U=RtmRUf]U]sdBJxg]=w\FNun@Ovt=Dp`?F`XOEtsCS\cETcl?smPavt=Oog^gpgHPf^apuxp_df_NhnLT^VOFg_ES_WPWn_T]fh?>_UFTUO>=yYAYh@T?OY?@x@S>YO=FOUFEmg:=UOEFgaN_aWFNWHNVH>]e>D_ntmelmln]lk=@O@GWDJW_@Q_gQ`V_`qgoJT_hTehqeoqhoehgkdg^d\]WeT^VjZVMc[ML[SLK\[KDZRWfT^fl[TlrSKDCTSC;RJrc^O;:KC:BOE|2. ACP World Rapid Cup|Grischuk, Alexander|2008.01.07|C16|0-1|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvBRnwDMldCSmcR[b[:rkrEKqiU^e^=Dul@sd?=wnD_]gFVph_WvxV^gaWidUOUkH@H\U=Uul;Ll^Um^fm=ru=uwuiNapNfpf@ld=Dsm?=kcCKtbBRd\RZ]TKTut;LbTE`c[O^\U^dn\`gmgL[T[D\[dHdtl=UruUTgmdml\T\um:yu>=g_GO_XOX]`PY`XYutuMNc]Nf]gDLgaU]d\]eaWfVumVnmuem|It|Itkis,B|2001.08.03|B19|1-0|W +FVl\@OmeEU\UOUxg;Ljb@p^CSZJ=Xog?;tsS[b[;[umXTdj[KJ\T\e\P^g^LTyw]N^VIQwgBRjdKcdURZgcZcme:Zed@IUKZ[KU[CdgHXnf_fgfN]stCBtmBjmdjrUOIPO^rtde]N^mtxmcx`fgQYgOPHcmYam^ai^M`_MW_WOWN_efiqWXHQf_qy2X`yw_fwvf_vo_^on^Wng`_ge|It (active)|Delchev, Aleksander|2005.11.19|B90|1-0|B +FVnfEUm];LwSV^xnBJSLCLkc=XnhIYqaXPtb?bsb<`umJRl\@FrtPMbs>@sdFPhn?=\ULUdSMEtTDLSd:Jn_P_f_EWmfWOvm=;dZ;[mdJ:jb[Sdk`nphn\TS\SZTRZc[OWyt:BtdWifv@IvuHPumi`dfGOmvBHkt`iog^gfgipgfpjvdHGTNjodmowmvwp_WPWvmpxtkxwN_LTmlT]lWI@WPGHf>S>P>@I>YI@Y>@I|TCh-ESP Honor Gp2|Bauer, Christian|2006.09.17|C16o|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn>@vxjlTKqa>YlpHQpXYXaXQHUNHPypBRNEKTphT[VNIQE>PHXQ|2. Governor's Cup|Areshchenko, Alexander|2001.11.19|B92|1/2-1/2|W +FVl\@OsdEU\UOUphUdkd;Lwp@tfE`]U`gpgLVgnCKo_VErt?>ngEO^VOEul;Fwv<;UMDMVMFfvfETZuGWuU@A`g=EfFE=tv=@ME|Keres Mem Open|Zaitsenkov,Aleksei|2001.07.25|B34|0-1|B +@OxgDTkcHPl\?Htk>@ph;LwpEU\UOUkH@HutCKtkGOm]T]g]L]k]f]rtaitxiaxt|FIDE World Cup 2013|Eljanov, Pavel|2013.08.18|A30f|1/2-1/2|B +FVl\@OmeDLxg?Fph>@wpF[sm?>jb[?vxEUn^BRkc;JtkU]ul<`qi`ExqCSgx=;rsRZcZS[sr:Bo_[bkb?brbJ[lu;MmgV_^V_hqy>VgVMVumLTZRELpL[LmpLFxgVDgaFPaWOYpnDLngPVgLVLypL[WhYOwo@?pqBJqpHPpw?FwvOEvuGWokEVkcIYhnVLcsFOsrPXumLVrwYanxVLxgLRmu[LwxJKulKCxXCFXYFfgaL[lmR\e\fbYWONWTbiaWiqmu]eW]NM|WY ol|Jones, Gawain C B|2002.08.21|B50|1/2-1/2|B +EUnfDTl\@OxgU]me;Lf]T]phFVjbIQk[?Mwp>@vxBJsmgaWIm^MF^OFOagV^gm^elu>vuv=Ep^<>ogOXvwXm^I@IweI@tmLVewELxpVg[SJS\SLU|ClubCh-EST|Kanep, Meelis|2002.03.09|A70|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUgmBRrsR[b[CK^ULUZd;LdSD;wv:vr:rkrP_rkELh^LPph_ixpi_pw_N\TPYcUYuwpueTKDK^MKDM>el>DlD[SDTUCHPSK@HC;TLpxNX;VHIVDL^KCXgxwgqwxqgxwgqwxqgxwgmwx^vxqvoqiowi`wW|World Blitz Final|Ivanchuk, Vassily|2012.07.09|C96|1-0|B +FVnfEUm];LwSV^kcBJSLCLumJRtb?bsb@Ol\=M\TMFxn>@bsHPsdOYvx_nDLnx;Cxg>;qxckmvOEokCkts\esk;kvmkrxqe\dnr:n_:;phIQia;sgVEV]VPXaXQX_NHPN]\eqpe^posy]Lypovpxvnxhmvhqvo^gnvqyvmyumdutd[t\[b\TL[TdbZguZSd\SR\TRJT[|?|Gontcharov, Vladislav|2004.03.06|C16h|1-0|W +EUxgDTnf@Ol\U]f]T]we;LvxHPel?Hme>@jbBRwvOEsmETrs@G>^ltxotuonuMnoML^]GNonL\]=WU=AS[d[\lnwlkA>NE>^Uu[vkswosrv[rj^nurnjrjoxjk[?ENxqNUqikciqU]?M]fqxceMTfnT[e][T]\TMnfMF\txqfoFMt\qioniq\]MT]UT[Ueqxeuxqnwqiue[TeEp`_hihEGg_wnT]ne]Ve^|Sportaccord WMG Blindfold|Kamsky, Gata|2011.12.15|A60|1-0|B +FVl\@OmeEU\UOUxg;Ljb<`nfGWsm=Ful>sd]de]<;rjW_wpFGnu=]lcGEjn>=yvHOulX`cdBJdcJStkELnN`gpyLTk]O]N>=>v>;Bc[TKbZ|TCh-RUS|Jobava,Ba|2007.05.03|B96|0-1|B +EUm]DT]T@OxgFNnf?Tjb>@l\CKsmPQ>ZOXZLXPLDQYDVPh|UKR Summer Youth Games|Gordenko, Dmitry|2002.05.18|D27|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxEUtXU]dZKDut;EldCSZk]dtdN\Jr]yq@HJn^OngLT[T]TbZU]_;]ZgWTfWSZ^SRBJRWf]WXH?XQ?FQt]V;V^Vt@wnEMk[RKmeBR[S;Evx?>dZKBl\DLrsMU\ULUulEKZKBKtX<`^U=UXOHOga:NMCRZ^VNVCMbdsrZbqaX`wtdtrt`h|20. Amber Rapid|Carlsen, Magnus|2011.03.18|C84|1-0|B +EUm]DTld;Lxg@Onf<`qi`gugHPsm?H]T>@wnBRjZLVg_VEf^FV_fU]d]V]f]?>]fOUfgU[vx[lrsl]gfETn\=Dkc]WfgW]g`@Atk:=xyIY`aAI\U]W^W=UWPGPmgHQwvU=kO=<>Xf>^\dCFst^Vd\FE\_EW_QI@f]WXQXVX]TKTtuXVuM@GMLYayxVvxqvsLTscTRckRXkoX`oj`aPXa`GOqhOWhgjrgfrufnurnertemtT`[WPp`TUmdUM[]MOZROgd[giRJiy[R|6th EICC|Halkias,S|2005.06.19|D43|0-1|B +EUm]@OxgHPld?HtX>@nf;Esm?>wnDLjZBRX_OYvxY_f_=DphEKne<`usLTgV`iwvT]d]DM_WFNWPIPmgiWeWNWseKEruHV]VEVgV>VvVMVeS:@wnBRsdpXVOf^bf^V>VvfOXaXVXfhXVw\UOxpVT\eOUpoUdhiIYePAHPYdSYnSMicMWcSTSnSHOSEDTonOVneWME`KSqaS[aYT\elMW`nW]|UKR Summer Youth Games|Luzhinsky, Vitaly|2002.05.19|B85|1-0|W +FVl\@OsdEU\UOUxg;Lme?TucUdkd>@phtfV^g]L]f]ULe^L^p^>^ZRKRsSRKSW=FWGFGl^DL]KBKwuIQuM:>^eKSn^Gc^VS[ePc@d[>VMEVNPeCKe]LT[TKT]TNvxp@:pi:>TWvVW`>Y`YVYipYRpgAIqiIPECPOCKOGg`RX`_XRKCGOCKOGogRZ_WHPWVZRV]Rb|2. Governor's Cup|Miroshnichenko, Evgenij|2001.11.19|B57|1/2-1/2|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;L_nLVqi?=uvOUnhGWhYCKtX=>d\U[vmDTmd@GwnIQXmHXiaW_aXQXY_X_yIG@ryVPIQvQIG>IA>EyIELIQLC|11th Karpov|Naiditsch,A|2010.06.03|C67|1-0|W +EUm]DTld@Oxg;LjbBRnf<`smT]d]FNqi`Ywe?Mkc>@tk:usYPePIPse=Kwt@tX;Egm@Aog=>mwOYwfEK\eGOXaY_d\DLumPmoOWtTUTfT?>T[IQ[dW_rvV^o]AIg^e^]o>NvnPWov_gnfNPph^LvoQYxwPMfVMuVvuUwxW`xyUWvFWXolI@lo`\Fv\eqaX`yqeWvVWPVFPMFVMPVFPMFVMQVF`PdmQIm_PO_VOGFG@GomIsm_GN_f|Piterenka Blitz 2012|Grischuk, Alexander|2012.12.29|C77|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBR[SEUmeU^e^;En\RZqiIQue=FgaETegTNaWFTWH@HtQHQgOQIdU>?OaIHaOHI\eDLOaIHaOHIOaIHaO|Baku FIDE Grand Prix 2014|Svidler, Peter|2014.10.13|C88k|1/2-1/2|W +EUxgDTnf@OkcHPtb=Rbk?Hl\U\c\>@wn;Lvx?=uc@n^]fofvx>MkcN`ndL]qi`Ers:;muGOxq@Ah`MGwoGXokXNum=>c[T[k[;[s[EL[sIQmkQYkoY`oaA@i`NXqhLUdU>ZaYZbsc]cjcbchqcC\TCGTL?@k[RKw\DLmeEU\cV_OY_`E`g`Y_ah_nxpn]ws:=pwHXl\QY`YGWo_X`ho]g\T@Hsugqwpqg[S>nTLCLSLgmcZ`hphHQumnmZSQYoB=eSemehoedbZdLZRLdonYPnmdbBKPGmlG>lkbikl>ERJELJBLClmibKTbZTfZjmdjbdmCLmlLUlkbJkcU^fT^_c\_h\SJBTB|Tal Memorial|Shirov, Alexei|2010.11.08|C78k|1/2-1/2|W +EUxgDTnf@OkcHPtb=Ksd;EdZKLl\U\c\FVbkV^gVEVkV?HZd>@rsCKwnJ\>;on;V\SX_S\_hnuVrulKS\Srjltjpewp:wO:b|Tashkent FIDE GP 2014|Vachier-Lagrave, Maxime|2014.10.24|E15d|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb<`smGWk[?Mtk=Onf>UF>FyaFNf^NLtsLlkO@]V?ogF[rtOEVE>EvuE>xo[dtdGfB<\t\G\jb@GB;\S;BS\B;\S;BS\|68th ch-RUS 2015|Khairullin, Ildar|2015.08.14|E34|1/2-1/2|B +EUm]DT]T@OjbFNk[BRtkCKnfKT[T?Txg;Esm:;rj>@l\tk>;kt;>tk>;|65th ch-RUS|Dubov, Daniil|2012.08.05|D22b|1/2-1/2|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;Lwn?=uvLFtmIQru<`n`O`qi`Vvn@Ip`V\mtCSu]=]d]S[ia:=kc\MtkDLjbBRb[R[yrMSnf=>f^FP^gP_g_>n]Uno_^olkVln^_LUrRn^_WS]V]^]aY]eRSecSUcsW^[c|GMB|Jonkman,H|2003.01.14|C67|1-0|W +FVnfEUm];LxgV^gmGWl\@OsdGbZ:@wn?>k[RKvxIQmeDLdZKDl\EUgmCK^ULUZd;LngN[SLFtfeYaha;qRLT\e\qxLB>^\c^aB@wnDLvxEUe]V^gmIYjZ<`kcFNtb?`gL]gp>OaY]ndnV^YQ_gpw^enxfnwvef|AZE vs World Rapid|Radjabov,T|2009.05.08|C00|1-0|W +DTn^;Lsd@OxgHPdU?HUOHOwS=Kun>@vxEMld<`SLKLmeCSqi`gngS[d\OHgnFNtXGWo_:>p`NV`WPW^W?Wn`LErv>?_VWwvwE`i`HVw?@?kc?GxpGNXfVOpgNVf_VNg^O]_m]omto]tQBJQm]omto]tQ]OQfOFe]F?fX?HXfH?fo?FofF?fX?H]UNGX_H?^W?F_hF?hq?Fq_F?_t?Hjb[btbHdbtdVtXVqXaqVa=VqWXqV=KVdXWdOKROVRmV]m_GFWX]HXYFEYXEFXWHdW^dO^eFEelOHlsHdsjdvjbEFbZvd_hdmhqmvq_vdZbdvbkv[kl[vlevae^aO^WOdWXdHXYFE_XE>X_>E_QHV`XEFXPIPYPFEPWVdW^dv^ev[elEFQXFEXmEDm[T[leJRe]DE\TMT]TRZT[Zc[cEMc\ME\TEDUMDETUE=UN=>ME>=NM|16th Ciudad|Topalov, Veselin|2003.06.06|A29|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb]O_gqg`gmgNU^UEGlWKEgXGOWOEOXN=EvwOUn`UO`W<;|Corus A|Dominguez Perez, Leinier|2010.01.17|B90n|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWuc=EcCUKCJ`gpg?Fsd>@tm@ArtFawp?Ovx:?xyOQdnV^e]LV]VEmg_mkn]KUJSkS]SDLS]UFogHXg^X_f_W^p^ahtl?_w_h_VN_M^LMbLEBR]LFLlLAHLJQYypbFqiHOJ:YXpg|GpA|Kosteniuk, Alexandra|2006.10.28|B97|1/2-1/2|B +FVphEUwp;LmeGWjb@Ok[?MtkV^nf>@xnMVkVLVe]V\sm\MvxrvO^g^W^n`>=woFE`E=Evw?:bZHX_n@HxpGNntBR[R:RtcR:ZREFwrNEqiIYpqESiaHPaXPXo_CKRK:rKCMCcrCMmsMWsdS\duF>rc\clc>;udDL|ISYG-M14|Chadaev,N|2002.06.23|B06|1-0|W +DTn^;Lxg@OsdHPm]T]g]?H]c>@wnBJvxCStfEMjZS[dU2L>v>]L|20. Amber Rapid|Giri, Anish|2011.03.20|A29|1-0|B +FVl\@OmeEU\UOUxg;LjbIQnfHXe]V]g]UFwS?Hvx>@]LFLsd=uwuLRf^DLSnRcrsctst@mtPVn_JRsrFO_Yd]>FxyVg]\F>ud>=jZgV\]Veo_=;dSMPUMDMLD;@smT]f]IQXaEMxg;Lwn=Km\KDvxOU\frtNGk[CKuZHOZbIHo]PXbkGPxy>NmcDG\TGFTLFD[S=>]dNFkmW_tuFNc]NF]lBRSJPlmlDLlcX`wSL:cU:UuU>@gVMVmg<`\UOUwnVOvx=Muc:=wu`NcZM[Zl[KjbU_u=_nln?=qiDTf^KctXOXgXN\nfckrtCS^VIQX^kV^TVfof=UTJUmJDmjtdBRf^RZxqjkDUkcdtcbUK\NtsbcsrZbK:S[:DN\|4th ACP World Rapid Cup|Drozdovskij,Y|2010.05.27|C10|1-0|W +@Om]HPld?Ht_>@nfEMxgOY_hYhqh;EsmFVul=FwnGW]VMVf^ETvt@m]V]d]<`ldLRqi`YwvDLSeCSjZBJtbMbrb=MbrMOp`YPgV?=ewR\w\S\unLT]TPenfIQru=>TLOafgelgG@IuE>@Em@?G\?omoahxw:>oghq\]qy]x|ISYG-M14|Mamedov,Rau|2002.06.21|C47|0-1|B +FVl\@OmeEU\UOUxg;Lnf@gX:=XNToxyONucNcjcoTtX?wrw=?n\@Aw?T?\UIQULQX|TCh-ESP Honor Gp2|Timofeev, Artyom|2006.09.14|B82|1/2-1/2|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;L_nIQqi?>nhLVtmNiaNPmdPhrvDTjbGOaY@Gqa=>aq^gc[hXqmXYvwgL[SL^bZYimMifwo>FZRQYM=Ya=Aaidmfho_^pmdhfAIG@IYfn_`F^`h@GRJCJYIGNhHJS\SNWIYW_Ya_gaQ^`QOghHIiqOQqy2QypyIy`PyYnpYTPKkcKCdVhgl\g^TDCDVD^eD;pl;Bl\SK|RUS-UKR Blitz g/3|Kobalia, Mikhail|2003.12.14|C67|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`sm?TuZ=Enf>@m^TK^dUdkdGWqi`YZaYPwnV^e^W^n\@AgmKRtk:=ruLVvxV\m\Euwu=uxquU\RURd\RWaFWGFVGEqh?>VdIQia>Nd[CK[?AIaYEGYPNP|UKR Ch U12|Savinov, Vladimir|2000|B94i|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;E\ULUtkU]ktCKtm:;wtDMphE?ga@sdBJSnFVdZZKNWskIQK\]fofO^kcWNceGWtkNGe=>=vr=UwuUuru^XgXFXumQY\MHQktGNMCYaCMainwLFl\V^[SJS\SFUSKXFmkipkp@IKCUftfQfxyFDpkD;M>IQkHQXHFX`wn|FIDE World Cup 2015|Onischuk, Alexander|2015.09.16|E20|0-1|B +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tf;EwnDLvxKDo_EKumKUdUOUl\UfmfGOV`BRph@A\TCSbZSZrZ<`n`OW`nR[Z[DR[C=Uwt?=t\:;C;=;\ZR=fbIQxp=OZ:;:b:AI:ZO]n\UT\GTFZ\LTG@IA@NHP\JAHqaQYN\FDpwD;JS;Dwn]OS>DK>SKMSCHQ\UOHnwT\|Corus A|Sokolov,Iv|2006.01.27|C83|1-0|W +FVn^?TxgEMld@Om]TKwSDLSe<`]VMVvx>@unOYsb;Eb\=O\KBKelY_nf`igVOXphEVf_X_t_Vgxyiwrw:jws?=^VgmsujklWIQVN@?yp=Uh`m^uw^d|12th Karpov Int|Efimenko,Z|2011.10.12|C24|1-0|W +FVl\@OmeEU\UOUxg;Ljb@wnEMvx;El\FVsd?>k[V]g]EVtkDLjbBR[S<`og`Ef^:H?LFTF|FIDE World Cup 2015|Svidler, Peter|2015.10.01|A08|1-0|B +@OxgHPm]?Hnf>@wnEMvx;El\FVsd?>k[DLjZIYtbV^gmE?[S?IZRBJSLCLrsIXsKLTmc<`]TOEKMHdn`Y`ME=VUC<>TL@HbM>Ac]VRM_:?_Xd]f]RX]UXWCk|SportAccord Rapid Men 2012|Leko, Peter|2012.12.14|A08|0-1|W +EUm]DTld@Oxg;Lnf<`qi`Y]TFVp`YPk[?Ftk>@smO^wp^mgmPepwewvwV^ucGWruFa`X=XyxXYcU?Gm\LFUEFPEUPFUEFPEU|15. ETC|Pantsulaia, Levan|2005.08.05|D43|1/2-1/2|B +FVl\@Osd;Ln^?TwnEMme>@jbBJk[TBrjL]tfCSxgO`um`fof]gng@l\U]rsIQblBRjbRZnf]fofV^gaO`\TMTe^=uwuW^p^LV^U@AtmHXmdXaqiTMi`<`u]QYhaAIUCVgxyg]l]:;C^IQyp;>^eDT]S`gpiMVdm?@f^QImX@?Sd>;dU;cUdg`ip?gelc;swghpy;kdUkl|VI World Blitz|Kramnik,V|2010.11.17|B09|1-0|W +EUxgDTnf;LwS@Okc@m]T]g]=DsmL]k]O`ph:=]H@H\n`VutDtwtE`m\`n\VGOtlnultuYV\=Exp?=f^Ee\fefof=mpxYgtDmpxwpqDFHQ^VQXVOXOFDOXD\qywoyrogrj\DCSDT|FIDE World Cup 2015|Mamedyarov, Shakriyar|2015.09.25|E21|1/2-1/2|B +FVldEUm]V^t_@Onf?Fxn>@_h;En_EKsmd\K\m\U\n\F[vwIQix>M\cESxnM\c\S\wxDTqaX`jb[RrtCSkc\Nn_NEtT:YX?@UO|SportAccord Blitz Men 2013|Mamedyarov, Shakhriyar|2013.12.15|B12|0-1|W +EUm]DTld;LxgFNjb?M]TMTnf@Od\>@k[TFtkU\sdOEw\EVgVLV\nCKdSFOvxFjZFNsbNW_hIYqa^fk[TFblWNlfUewtP^f\HX\MGWog^gpgXahqA@xyegMCaitl@plpipypgd[SdlpildipYaCMFXrwLSMSaipyd\SM\twtXtMSW_SBNVZRVMBSMLS]LCq_t_]giqgq_qyqCJqiJR|Sportaccord WMG Blindfold|Wang, Yue|2011.12.15|C43|1/2-1/2|W +FVl\@OmeEU\U=Usd?[tm[dmd;Lxg<`nfUMwnOUvx>@vx?>meBRdZTBl\;EZdE?tfDLfB:Be]<`]U?PgmIYwvP_og`ExyYanwOY\TMTm\LUdUEN\M>?MSBJUDJKu=?=vu=EjZ@?DN|67. Blitz 2013|Eliseev, Urii|2013.09.01|C55|0-1|B +FVl\@OmeEU\UOUxg;LjbGOnfeI>FIYM[vnZdngFHp`:?gpd^Vg[\YV?gyrghpqhiqi^oihH`ho\GVOGO]OLTrtCLOFT\F[`@f^@=tv=>ogLEvu|Human vs Computer|FRITZ|2004.10.09|B80|0-1|W +FVnfEUm];L]VLVtm@OmdVExg?MweETsm>@vxDLkc?>qiBRdkRZjbTeleZcuc=FcdF?wv:xqS[bZLT]WPWhWHPWM?MvtJRlc@Hph:>tvRBvnOWrtBFtvIQqpHIpoMLvtQYc[U]tT]fnfLyfF>FTVyqogqygfyxfmxomuowumwomuowum|Keres Mem Open|Fomina, Tatyana|2001.07.30|C10|1/2-1/2|W +FVl\@OnfEU\UOUsd;Lul@meGWdUNUf^UN^W?Wtf@AjbFMgmNUm^=aphailuIYngWgug:?gpi`og`PrvLFh`ULpiFUiYPY`YLSfT?=TMDMvtA@^dUdtd@GdDGOg_V^e^Swxw=>D\CS\]ONwp>@meIQwv[Rk[;EtfRDqi?>\cE?e]]eGPeUpxCK><;@wvO^bkEqaHQgXMWphQXaX=XmgX`enWhoh`hxyR\c\U\vwhiyxihxyhiyx|FIDE Candidates 2016|Giri, Anish|2016.03.13|E15o|1/2-1/2|B +FVldEUm]V^t_@Onf?Fd\@phIQXOUOwpNWul?>vxF?rtDLdZ?MZT=FjbQYqi:VwuGWlTBJumEGhn<>TMPYn_U_f_VUmUGUMDUmtT^fTWfnWXYGXWmjWVnv2Vv>v|Sportaccord WMG Rapid|Le Quang Liem|2011.12.09|B12|1-0|W +EUm]DTld@OxgFNjb;Lk[CKtX@weM_mgEUvx:@vx@AsdGOtfL]bZ@ulDTxg;LmeGWsmnw?OphOQwpXYmwL=rsCKe]V^tk=GvuGX]TXgpg`gldM?|UKR Summer Youth Games|Grekh, Andrey|2002.05.17|B42f|1-0|W +FVl\@OnfEU\UOUjb?Mw\UK\n@vxmcBR[SL]g]V]bZDLcTLSTE=EZSEStmRZul>@phDLjb[Rwp?>vxEMmeIQo_CSqi;ExqvwvBJmo=DqxU]yCDCd^O^h^CFvnmg=vuUmcmFTyqTfulfmgm=@rtJR]TKTul@wpDLxg?>vxIQn^EU\ULUdUOU^UV^gv=Ume;Lt_USjZSRp^=bT?TcT=DjZCKTcaWyv]SDEZR>=S]HPewNUme:;d\UCrsC:s[=>v>M>\T>DTKBKl\DJ[K;KRKJT]gTZgXGOXIEFwp:popZKpgFG\TKEe]GHTLEKIOHOLDONg`NE`XEDXPDEqaKUaYU_PX_YXYEN]UNU|41st Olympiad Open 2014|Hracek, Zbynek|2014.08.09|C45k|1/2-1/2|B +@OxgDTkcHPl\?Htk>@ph;LwpEU\U=Ume?=sm@rs?@sd?>k[T?rsN`gX`=e\N\l\@Agw=?VNXF\c?>wvFMc\:JNFJ:SUMOtb_g\]OGU=:=F=2go]oGoxo>=qaIYph=]vNAIbFPF|38th Olympiad|Nakamura, Hikaru|2008.11.25|B90k|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQtkEMmeBJdZKBl\;EZdE?ktDLtfBfofCSe]V]u]=FwuO^]^F^d^>^uM^fxofNruJR\SLSnSR[b[:;M=NKg]<`=;K;us?N]N;SNT@?of?Ff]FMqi`NTNGN]\SXskQY[SMDSKDC\]Ya]^Xh^_HP_VPXVNX`i`h`NV`hV_ClcUK[SL;wn;EclOQf^ETvxKZktQPwv<;rs>?^W`Ws[WeneTe[Z?gmgevlPvgpgIPZ`MFxp=MbZMN`^PX^`BJtXFX`XJSZSHPph;Bg_V_h_BKqaNO_fKRo_R[f^|World Cup|Shirov, Alexei|2007.12.09|B96l|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>meDLtXIQXaEMum;Ep`E?`XQXaX?Nyx@?qaMUk[RK^ULUgVN]o_]nvnKxrx=KmvU]XOKOdU>V_VOVnmVUxXUNvxNfxf]fmfchJBmlHPlcOWhf>Gc[BDfVD\[S\]Vv]aSKaZvfGUfhZ`heW_bZ_gZR`[KBgoeu[_|Hotel Bali Stars|Graf,A|2003.11.27|C87|1-0|W +EUxgDTnf@Om];Ll\T]\U=Uf]FVsd?[]VUuvuO`tf>@wSLVgV`VunngCKaY@GsSDEjZIQur>NS[\R[kRLruNVkSVT]TEuT[urZRLR[RrRd\RZSUGNU]ZRgfOWogRTfeNF]_BR`WFG_]TW]EG@E=W?=M?ge^gOM=@I=;OL^]RZ;:HP:BI@YPLPBZQY]V@HVWHQZ:PL:;QH;CH?WX?>XY>=Y`=@tm:;wtCSRKBKZu@jb?=k[TFulNVf^HPwvBJ^UOUe^FOd\UF\TL]g]V]^e@xy=Fo_]nunV_t_@A_XT]dSDTS]T]noFVXOVOoOHOwOAHrw:>k[>NONEN^VCpyp?=pgGWVOHOg^OF^VKS\T=UV^UYwoYUo_IY_wBJw_U=qi=Uh`JRjbR[b[Ya^gU=`X=Ug`NV_wFN`aV^e^UVXPV^aX^nwgnfPH|EST Ch sf|Parnits, Rauno|1999.03.14|B20|0-1|B +EUxg<\c<;m\ENtm[eog?Mg^W^qiA>mvevsvM?woDLvw?M\RNcRcCKjb;Ncm=Ep`IQxp<=k[MFm\=>wtOUpoFOdULU\VOV]V>Ft@me<`qi`Yp`YPgaMU\c;JaPIP^U[dkdOUugJTtbTcjc?>d\U_bt_Ntf>?gh=MxyGW`WPWo_V_f_N_w_?GhoMQ_gBJrvW_op:?p`GOvx?>xp>fe]fg`gONyqNfg`QO`<@I<`_gpoOMqxMPomPQxof>me>nogn>`WI@gp>npgnNgpNPpqPOW^Ooqho?egQXhoXmoh?=ldmu^fucfN@ANGcl]ULU\Ul^gW^fhaf^ah^fhqfmqxmuxp|6. World Blitz|Vachier-Lagrave, Maxime|2010.11.17|C65|1/2-1/2|B +EUxgDTnf@Om]<`qi`gug;EwnBJl\FV\UT]f]V]vxEVgW=Uwv?FnJ:JvVUEsmEWVW>@WSCKmg?=t_OU_V]ejbFOruOVgVU_S[GOVL_nxw=MLF@GF@wn?>vxDLd]LT]O=OldVc[VXnwJR[\@Iu]GW]=Xpwpa=p^W^\^IAxpCSZS=XpgXS^:AI:^HP^FI@F=@G=DGND@k[F=_M?>ghOYhq=FMDHPdnFOp`YHDVOV]VBRjbR[b[;SE;slsDEs;E>;D>?]S|Tal Memorial Blitz|Kamsky, Gata|2008.08.29|D02|1-0|B +FVl\@Osd;Lph?[dU[Rwp>@nfOU\ULFxnEMvxGWkc=>meRKndFPwvW_d^>Gum_gpyGUtkIQmuUGrt<`^m:>t\QYqi`iygMU\Zi`g`GoxyY`Z`>NunPFno?oktFWmwNL`XLltm|67. Blitz 2013|Belous, Vladimir|2013.09.01|B31|1-0|W +EUxgDTnf@OkcHPtb;Em]?Hwn>@vxO^l\U\ulEOc\T]g]=Dsd^dld<`og`Edc?>wuBJrs:;nwIYcKDV]cELbkVXf^OEKoHkskE?cT>=usXVTeVDohDhqh?ExoFNe[LZ[e;@wp:tmNVkcM^rt^mgmV^d\U]f]K]mwDVwfBRiaHPpi<=xpOYfU]Ti`YHnmIY`iCKmX=MiEVXaX>VUO@AuMTMtuMFuUVU\UHWEWPWjZAHOEFXEKW_h_X_K\HOpi_DiaOPUMD=ahPWc[R[ZR=R\RWNRL[cL]NM]cMVcmYahpV_m\aipi|NH Chess Tournament|Beliavsky, Alexander G.|2007.08.26|D43x|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxEUtXNvrE>YaNV]V>VrvQXaoVOoT:?Tl@HlTX`bZ_gpg`gxwOXvFH@TxXxwxSZFB?_BZ@GZJ_\xo\dJKGF[SLTKQFESKdcohT\KCEDQIDL|5th-8th|Naiditsch, Arkadij|2004.07.29|C91d|1-0|B +EUxgDTnf;LwS<`qi`Yvx=DmeFNsm@Okc?Ftk>@SLDLp`YPgVLDo_OEVPIP`XNVu`U]_W]fm^PWwWHPWg?>gfCSl\BJrwDLfg>?ia@H^hLN`NGNg?F?xp?Fpi:=i`=@h^@=wg=@go@=^mFMogMFm^=@kt@=tf=@fx@=gw=@xf@=`h=@wtS[tr@;hgHGjb[brb;KgnG>nm>=ml=>bRKLRr>GrwGHfmLKwrKLmdHG^mGHmgFMrvHGdVEVgVMVvVL@ph@k[RKw\DLmeBRrsEU\c;JvxR[b[J[tXKD^U[UdULUXOHOga:RugV^e^U^g^OW^\CS\dS[dLDqxq=aqxRJLDJQDhahohQPxq?=w_@wn?>k[RKvxDLm]V]g]O^d^>^ldEUne^>uYHPYQ>Vp`=Fo_K]d]Vf_WfetXF?Q?@?rv@_hBRxnRZn_DT]TFTkcZcmcTMwn;LvxHX_YOYhM=MnYMVYnGWd\U\n\@Hwv?OuYOPvu:ZrtZjc]jk]LCLu=@vxLBwsBSs[?=mwU^gmSMm^M^l^Q?wf@wpKZrsZkskR[b[GWm]W_h_;L_VL]ld=XpU@SeNV]TMTf^E`k[TFqi`Ywv:wv>vrvGWphCSxwluM[UMbkp^W^YV>FZEFEjZKLwtL\[S;MZR\ZSKBKRKZjtujkurkmrBELA>LKBGmn>NKTGEM;EC]exw;MCEM?NJTSJ:?T:fgEGgh|2nd Norway Chess 2014|Grischuk, Alexander|2014.06.07|D85x|1-0|W +FVl\=axgaYsdDLm]EMn^<`wn;Eqi@Ovx`igVYaphiwuwMVhaV]duO^ng^Own?Ft_>?kcETukIQkeTNrvHXaXQX_h:>eVF[vu[dne?HeWN?WX?PVPGPhVA?g^>VXV?>VD|Karjakin-Nakamura m|Nakamura, Hikaru|2005.04.29|B20|0-1|B +FVl\@OsdEU\UOUn^U[me;Ljb[JwnJTk[TNxgHPvx?H[SL]g]N]n`<`u`BJrsJSdS]N`u>@SdCKdUKStfDLU[=Euc?@og`Nm\N\e\OE\n?>tm:;vtBRnJ;KJR=;kc;CRb>:bkT\k]\cmdM_umEVjcLT]UCU^UKMw\V\c\:ZyvGOv^_mtm@GmeME^NZBdmEFNMFEMLBDLDEDmfG>qa>EaYD^W>nohMFUMFGMEGFE=4F=WOnfOXfghV=FXPFNVHg_`X_\ld\`HOT\PHNWHG`pGFpmFGmpGFpm|FIDE World Blitz 2014|Potkin, Vladimir|2014.06.20|A18|1/2-1/2|B +EUxgDTnf@OkcHPtbCKwS@sdENwv?>qiU\c\LR]UNWgVQ_u]_V]VR\n\<\ru=@sm^OnfDT]g;LweOY_hHPvxYhqhFOjb?>wv<`uZ`EZlBJru=DlsE`utCSgq`Nqg:;f^U]d]L]^V]gmgOFe^DKtu>=st@HtfIQxq=uvu;=utKDtvJR^sRZgxT\o_FTfn\dkdTbh`D\_W\nxnN\n]bkWOH?VNGNsP=]d]Zb`XQXqhk]|SportAccord Blitz Men 2012|Kamsky, Gata|2012.12.17|B04|1-0|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LuvIQqa?=wnHPtfO`yi@meDLvx;Ejb[R\jIQdn?>nhE?tmRmum<`muOYwvYhqh?Ium=Km[KDgqIOq`O`ru:=e]`OvfLT]TMT[vT\fn=uvu>=uv=MldD=vwCSjsMunvumvnO`sl=XwvmnvnXYnuYqxwqywnypuwpqbZBJZSJSnv`fofqlwWltvntkngHPWVktgotmogmvh`vaVSaOgnOd^VdengeughuxhgxwghwnSTQY|Human vs Computer|HYDRA|2004.10.08|C65|1-0|B +EUxgDTnf@OkcHPwS@vxEWSn=Dm]O^ut;Ll\LRrbU\c\DKsdRctl^mlumgngcRunR\n\Kkbjk[\[T[dUFVUF@AFWPW]VHVws:@tfKfefCKf_;JnfJ[vtBRc]LT]WEU\Ujb>MW_:@gVEUVe[dmdU^e_=uvuIQuv;LqaLFwn<`tfFWf]W]d]:=ld=MaY?>ya`WphBRru>=_pWNpfRZjbDL|39. Olympiad Men|Pashikian, Arman|2010.09.30|C67|1/2-1/2|W +EUxgDTnfHPm]?Hwn@Ovx>@]T=DjbBRtmDTmdd]L]f]T[ut[KbSOEldFV]VEVgV>VtmWES]VFngH]m]K]d]?@tmDTxg;LphEU\UOUwp[dkdT\e\UK\TK\vx=FuZFTrsBJmt?=ZlIQgmLRm\R\pCP^>NtfN`^`Y`fTMLTF=Es;@GF?JRaYOWvs\msSm\xpEDjZLQ?TQY;CDCSCGOCDONDHYAHFNUTBA@]T=DjbBRtmDTmd<`d]TD]VDTV]TMl\;L]d?=uZ`gngU]f]L]d]O`g`M]sd]`qi`_ruFNu=:=ZRHORS=eSCOVph_\d^GW^X\DCDVDXNDKxpecws@GNXGHXgKTgmcem\PXk[T][Sed\M]KMWHPWF|SportAccord Blitz Men 2013|Aronian, Levon|2013.12.14|E05|0-1|B +FVl\@OmeEU\UOUxg;LjbTWqa`ipiWXxoXWohWXh_XTiaT\_X\TXOTU>^DL^IUMOVMUV_@wnBRvxGWul@Asd@vxTKmeIQtmGWk[BJ[SJSZS:RSkUOdSV^e^RSkSW^md^gpgNigpipxp=USUOUdk?:wuUOjZ@Gn^HXogGNkdX`g`O`um`fpi:@moLVrs@XoWfW^WXWZRKTsCNMRJMLC;Vei`WU;AQY`geVg^VG|NH Chess Tournament|Ljubojevic,L|2007.08.28|B35|1-0|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQuv;Lqa?=wnLF_YOYnYvxL]g]V]f]EF^VMV]VFVngV]wvBJcG]EGEKEe]EOvV=]VWDLxq]mqh;DbZDKrtO^g^>^[SLSZSJSWG^\ts\lGHmohioWHPlLp`WTiaLPYPTXskXPaYPXYaXTahKRh_S[_^T\^WRSkq\LW^[c^eS[emLl|RUS-UKR Blitz g/3|Najer, Evgeniy|2003.12.14|B90|1-0|B +FVl\@OnfEU\UOUjb?Mxg>@meDTkc;LtkBRwnRZcZ=Rgm@Z\=XpU@AULCL\_XFsm:;kc\VFOfT[KVLW_L]Ni]gKLT]_h]OLOqhi`xp>nvn`gpogn|Amber Rapid|Mamedyarov, Shakhriyar|2008.03.22|B09|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljbu=>=ru=>phIEuENE\T[LcmOW^WEWnSBJSw?Hk[L]f]V]dc]e[SJSZSHQcU>NUNWNmsNWo_`gxoemsmQmogWNh`m[wi[TiwTFwn;@kcVXvwCKtkkc\ftf>fsv=>vf>fwoBRP_;BogfvjZBJiaCSgeSZcZvr_NrZ|2. Governor's Cup|Efimenko, Zahar|2001.11.16|B17|1-0|B +FVn^@Osd?[jb[dmd>@wnEMog@sm=FvxBRjbIQwvYPul?=nwETc[TEf^U^e^R[b[M[r:=:lcNVvu[TgaP^uv^ImgO^vnTonoFTk]V]cCTBCB:BokHX|Moscow Blitz Final 2014|Seliverstov, Vladimir|2014.09.06|A46|1-0|B +EUxg@Onf@wu?>aPIPslE?rt:=lc?I\TM;]ULUdUOUuU=UcU>=U\IX\dGOd\@IqaXGtu=unu;V\^FTaYOW^CVkYPIPCkGVunV`kmTVxpVTng`VgUV`me`VecV`UGPIcN`ON\T\G\IPo_O`pg`qgnPO\UHXUgX_f_qgngBRgfOPf]PY]V|FIDE World Blitz 2014|Sandipan, Chanda|2014.06.20|D02|0-1|B +FVmeEUxg;LphGWwp@Ovx?Msb>@l\U]tXIQXO=Oblf]V]umBRjbRZl[LFgvW_rtDL\TM;vgFWtvOPv>E>[lPYl]W]g]_g]g?gpgYgmfgfof;Ve]VOxo>Pon@GwtGNt\PYneYu\[NWqiuc[CcUCBUpBZpwemwiZ[W^mnOX[ciNcdN@xgEMmeBRjbDL\j;JdnJDnhhW:=gaGOn`@A`YA@ueDGY`@AvuMU^ULUehV^o_B;uwHPWQGH_W;hWNhaQGA@`a>NG=NM=CHCwOMOaOCGOX@Ht_GOXhOW_XWGhaGNXQHGa_NO_DOFDL^fLUFNUCNFCUFNUCNFCS\MSUG>xwMWQ_IYUVFV_VYawn>EV_EL_fLUneWMftM\el\RtXR\Xa\flef\el\flmf\mtU^aX^WiaW`tl`hkc|Eurasian Blitz Chess Cup|Grischuk,A|2016.06.18|C50|0-1|B +HPl\?HsdDTph;LwpBJme:;jZEMn^FVqaIYpiHQi<;@um@HxpGOdU?GkcJRtsCKsk<;ks=EsvECmk;?gxL]xnFU^U]WkmGFndCEdS?>v^WQ^nOWogE=wyHImXIHyvW_h_QGXhV_nF_hF>=avyaO>NOXN^XmphGVSMmXhiVeywe_^_X_M^_fUMfcwocZomZEipRZ^dZbpoYadSaiohEWmUiqUWqy2MEyvhivyihyvhivFWUbjE=2F=U=jr2=EHOEMOWMKW_|Vugar Gashimov Mem 2016|Giri, Anish|2016.05.27|A36i|1-0|B +DTn^FNxg;Lsd@OwS=DSLDLun?Fm]>@]UNU^ULJnJCJt_yv:=p`YOqiF?XgIYfXY`i`CVaWLVnltslksrkjrsjksrOVGBkjrsjksrkjrsokstkcuyjrtlrylcyrBCrRcdRSCBSKde>=e^T\B:=D:BD@mfHQRmX_n_QX_iXafoaFvf@Afh`WmQWOQYE>Yn>PkcJRjZONiXNWXgPYnfW_gV_fof?@hiY>wW@?|MTO|Arizmendi Martinez, Julen Luis|2003.07.24|C18j|1/2-1/2|W +FVn^@Osd?[xg>@gV?>VeO^wn[?e_^Om]EUvxDLne?Mdn;EnhHPwv>vuvE?qimQ?IldM?Q?I?ia?Nog@?xo?FhwFMwf>AryNHelCKyuHNuyNHn_HN_NENyuO@uy@Fp`LTohGOfpNG`XOWp_A?wSDLSJ:>V>?>vx>FqiQPxoPQohQPhoPQohQPho|FIDE Candidates 2014|Andreikin, Dmitry|2014.03.25|B46c|1/2-1/2|W +EUxgDTph;Lm]@Owp=K]TKTvxFrsV^g]=N]WFEwu:@l\CKkc@jbTKk[BR[SRZtkKRsmNVul<`gVO^V`RmvnGW`V;EVE=EruW_um_fl^?onfom^Vmufg:>VYEFg`FfphHPYX>^X_^_h_uwywfnwgIY|MTO|Avrukh, Boris|2003.07.29|D27g|1-0|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LuvIQqakc\Mn]>vovLEd\MW]WEWjZOEt_DLZRBJvmGOunHX_h@Gc[GN[SLS\SJSnSEVSnVLn\NFaXOX\ULRhDRLULCLldFOmfWN|4. ACP World Rapid Cup|Jakovenko, Dmitry|2010.05.29|C67|1/2-1/2|W +EUm]DTld@OxgFNjb;Lk[CKtX?Fnf>@smMF>OFMO>MF>OFMO>|World Blitz|Karpov, Anatoly|2009.11.18|D15|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@k[RKw\BRrsDLmeEU\cR[b[;JvxJ[tXKD^U[UdULUXOHOga@AugFkcMVrjOUg_U[jbVMvnHPtkAVRENog^dRJNGaodUJb>NbeUOe]O@f^@O^VO@oaNL]EG>E=>GphLN=EG?ho?>EDNJaXJjofjbf]bgVN>?DG?>GH>?NF@FHFg_X_?F]VFGqaGF_XFGVMGHMNH@NO@IOGW_X_PX_X||Kiriakov, Petr|2004.05.09|D31|0-1|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LuvIQqaruCKT]LV]V=unu>Vu`W`aYVWyaW_ph_Wa`^fofWY`]@?]EYTE=?F=ph>:ho:jov`hvwjk_ghpwxknxqV^g_^V_gV^g_^V_g|Tal Memorial|Nakamura, Hikaru|2010.11.07|C67w|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWuc=EcC:;CJV^qi`Ye^W^gmLVJB;=B]EN]^?Fw\YP\U=U^ZUEvxPesd>@d^E=o_ewxwVeZ\e_\N_Nwn=Uk[?;rjIYjlFO^OHOm^@Gtk;@p`@Pl\Y`i`PQk]QqngOWghqj`WUW\dGF^TN]f]FMTJWXh_jpdDX`_W`]DtpoWXMFJT]=tvFGX`=@`ioWv^Wgiqgb^_GFT^FN^oNV_`@?oi?gixgc`pc[phbjqiVWxgj:ga[a|19th TCh-RUS 2012|Kokarev,Dm|2012.04.15|B97|1-0|W +FVl\@OsdEU\UOUn^U[me;Ljb[Jk[L]dnDTn]V][TJTxg@tkTcgmRZo_GOmcNcumCSnucNug:;moFTwt=Msr;@jb;E\TO>qiDLxnHX_q>Hk[GWmc=]NHNjNDFNL>GuEFEyIOILEGPTLIOE]?A[S:=]TAYT\Yytk=mkcyA\wPGbZGFc[AqwtqoLDmlD<2ltDM^fME|Sportaccord WMG Rapid|Wang, Hao|2011.12.11|B12|0-1|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu?=uv;L_nIQnhLFwnFWhW@me<`qi`Yp`YPga;Eug@Agh[TjbCS\jBRxpS[aPGPdZTBo_=Ftm[bkbV_haMUm_U^ahB;Zd^elePX_;:;j\;kpyIQwvFTdZTohokovF?;yxolrvE?Fnlnvn?Pnk;=ZTOUTN=>N]P_]L>fkS_ixwUOLVi_SRAIbZQY`YX`\GIQGP_PYPfiwpQXVgXPRXPQX`O`pi`oihoeZRe[h_|Qatar Masters Open 2015|Salem, A. R. Saleh|2015.12.21|C65j|1/2-1/2|B +FVl\@OnfEU\UOUsd;Lul@qaIYwnMF[S?=]ZPpvtponY=UywoqwxF?Y`GWxyUT|Qatar Masters Open 2015|Ezat, Mohamed|2015.12.20|B48|1-0|W +@Om]HPld?HtXDTnfT]XOHOd]>@xgEUsdFNwn;LvxdnCKtlFCwtLFl@ulDFsm@xg?>nfEU\UOUwnDTvx;LjbCKrtFw\?Hd^[U^TOWogHQg_CK\UNUTcQHc]H]f]FMyvA>vV>V]VMNue:@ei@piIU]IBpqBJqoJKNUKJo_JRU\VN_^RW^NtmNQWoLT|WYB12|Khairullin,I|2001.10.28|A00|1/2-1/2|B +FVn^@Osd?[xgEMw\>@dUOU\U;Ejb[Rk[RKUcBRrsEOmeDLvxIQqi?>wvKDe]V]u]R[b[vgvOUcsDFecj:vgF^[SU_SLCLsv^PgaPXch:jhXQXagGOg]LT]NjlN_X_v^HXia@GaXOXogT\xqGOqiltiq\d^\OVqiVU\ng`Xdl>v\T|World Blitz|Jakovenko, Dmitry|2009.11.17|C65|1/2-1/2|W +EUxgDTnf@OkcBJtk;Lm]T]g]=D]LCLwnFVsm?Ml\>@ulDFvx@wnEMk[RKvxBR[SRZme;EqiETtfDLSLCLut?>wuKDrs=FnwIQdnMU^UOUfTFTl\UOnhDMs[TB[sMTtk:lkDMsr:;kVMVgV;khnkce]cbrsTMVEOE\TM?sCEOCKbrKLO^LJZbJ:^mnhGWTLW_LD_h:?@?|FIDE World Blitz 2014|Najer, Evgeniy|2014.06.19|C84|0-1|B +EUm]DTld@Oxg;LnfFNsm?M]TMTk[TMwe>@vxBJtk=DjbCSbZ:;ZSJSunNVf^LFeSFPphU^gX<`n\^fm^O^X^`g\DMDSeDKofKf^oGWktfKwvW_ePIPvV;:r:?:xw:jo^jq^T_htfKDVFDMFNM_f]@GNv_mTegp|FIDE GP|Svidler, Peter|2008.04.27|D47h|1-0|B +FVl\@Ome?[tmDTxg;Lnf>@wnEU\UOUvx@ldEW]TO^g]^T]WPWsmFNmc;Ec]:@k[RKw\DLmeBRrsEU\cR[b[;JvxJ[tXU]dnKDumLTnhIQXQHQmQO`QP@APYAHqi`QgV=Fo_:Jwg?AswCShnJOghH?hXA@wg_WNJhgJrxoQ`Y`[lWOlf`=gf]fofS[XU=>e][cUTckndrb|GpA|Radjabov,T|2006.10.27|C78|1-0|W +FVn^@Oxg;LsdEU^UOUwSUdkd?Mm]V]un=Fg]FnvnBJSZCSZc@]W:>WfLRogRclc>NZSJSrB?;c[DTyuT[d[M[tb[bBb@?u]?>nmHPbBIYqaNFflCFp`|40th Olympiad Open|Volokitin,And|2012.09.05|C47|1-0|W +FVl\@OmeEU\UOUxg;Ljb@vxRZul?=wuE>m\K\e\LRu=:=\TRcn\N\l\>G\G@Gt\=uxqGNaYHPYQu=ph=:gvNEveELqp:=\dLSo_V_e_=>_USLpgF=h`LSdeS\eu\SUdSLdZ=FuecRk[R\ec\fcfF?fe?QZdQXeUCSbZSZ[SLCdZIYTLC;`YPYSKDKUEOWEC|Tal Memorial Blitz 2014|Leko, Peter|2014.11.14|B90|0-1|B +FVmeEUxg;Ln^@Osm?Twn>@vxBRld?>^UOUm^TFwvGW^hRZnw=Mtm=>\TMUhnIQrBHXg]W_]lE`qi`YlvCKe]KT[T?TBDT]u]U]n]>vogOUD<@Ixovu]cYP<=Uf|63rd ch-RUS|Khismatullin, Denis|2010.12.18|C41x|1/2-1/2|W +FVld@Om];L]VLVxgVgngEUwe?Fvx>@wvIQt_FMumM_m_DTsb=Kkcp`>vrvKRc[Rj[TjR_[RDvs:@wnEMvx;EjZFVZRBJl\?>sdIY]VEVgV>Vk[O`rb=aqi`Oo_V>tmO^d^>^ne^>ug:;_WNmd;>|FIDE Candidates 2016|Aronian, Levon|2016.03.19|A07|1/2-1/2|W +FVl\@OmeEU\UOUxg;LjbUcBJgWJKphKCcUC;wr>LOGDKUcLSWIMDGD|1st Asian Clubs|Dzhumaev,M|2008.12.27|B90|0-1|B +FVl\@OmeDLxgV^e^O^sm^TnfEU\ULUkc?Ftk>@wn;LvxEtm[UcRCKR\?Mp`W`rxIYqiHXi`YayiA?o_^gig?gng:?gpUO\MDMxwEFm[O^w?F?]UBR[b?Fkc^Of^O^bkKSk]RZpiFG]K^OKDGFDROURmFOipU_pgMUmdOPdV_eVMetcZSZjbteMFeV|3rd ACP Blitz Prelim3|Grabuzova,T|2004.06.02|C11|1-0|W +FVl\@Osd;Lph?[dU[RuZ:;xgV^gVLVZRCKUOHORdErvNWkVOVxqWPm]^eneCpqpGWe]W_f^_h^PhovVMVP@;@pgV]g^@?^]EN]^DTjbBRbZ?G^fNVfnV^woGono|SportAccord Blitz Men 2013|Grischuk, Alexander|2013.12.15|B31|1-0|W +FVn^@Osd?[xg>@w\DLvxEU\cU^gV=]V\;Jjb[Fdn]=cjJTk[TZjc=n^?F^VOUw\<`sm;EXF=FvxEK\cBRqi`gmgRZcUKUjbA=phUKrt=exp:RwvRStlIQv^ec^nSUgmcem^KEo_HPpoQYiaec^dUed^egopgfnfcf^MfcM@l\;Lk[TFsmU]f]L]tk]gugBR[SNVqiFTweT]vt]ktk=]kl@d\DTsd;JjbdUOGnla]lT]^vo^Vk[HX[SV^UD^_ofGFTVFMV>MD>FDKFI_ZIHZbf]X`]\bZ\UKSHCSJCsZjUVjosrJCrsC:srW_VW`hqh_hW`hprxBR`hojhqRZxs:BsSBJSWjlWgJS|Tal Memorial Blitz|Ponomariov,R|2008.08.30|B12|1-0|W +FVn^@OxgO^me^OgV;LVgEUwn?MvxIQwv>@sm?>mwU]whOUtm;dmL]vf?MrRDTph]WRJWfmf;@f]V]dnDLwp?>vx=a^VM?wv:=utJDnhDSqiHPh^?HrjSd^d]dtda_jn_]d]=][SLSpC>;CLH?vsBJsc]ZVNGNnN@HLU;=UC=MNM?McdMbdLJRLDHOCLZ[DBRZBR[sxpbTRSsSLSZbS\OVpgIYgnPX\GTKG\V]nm]VmnK]ngVMghMVhg]kgfktfnX`i`Y`nutXul|2nd Sanjin Hotel Cup|Wang, Yue|2005.07.13|B33y|1/2-1/2|W +EUxg@of@HpiLEdSESZSHIumOYxpYHtw?wnw=?mo?owo[eoGF=GUevpwvgwog]\VDFVE]lfml[U\=DmdHY^V[l\NFNE?I@?ND;N=;D=Ll[VN[UNFYOiN|SportAccord Blitz Men 2013|Kamsky, Gata|2013.12.15|A48|0-1|B +EUxgDTnfHPm]?Hwn@Ovx>@]T=DjbBRtmO^sdDTd^U^g]?=ut;L]LTLl\@k[RKw\DLmeBRrsEU\cR[b[;JvxJ[tXU]dnKDumLTnhIQXQHQmQO`QP@APYAHhW@duNVufV^gnMqxyq_l\DEru?>nwLFktFWmk_;fWEWphIYwpYah`WEyxU\c\CS\SJStXEMXaOUahMPut;hohS[tTPMxq=;kcUdc\^fjbd^p^>^T<;<\@wnDLvx?>jb[Rk[RDe];E]UIQgmDKtkK]ULCLneEKmcLTcRNrs=]^CDCRCT\CTNFbZ]UZRUTRKBKsKFExwGOK[|FIDE World Cup 2015|Mamedyarov, Shakriyar|2015.09.25|C65h|1-0|W +@OxgDTnf;LwSHPvx?Hm]BJSnEU]TO^sdHdkd^duvdnvn=Rl\RT\UTUf^USnf<`jZSYg]:@_WFVWNGNw?cR>Ntl=?wtW_RLULlL_fofKUphUFbZOo|19th TCh-RUS 2012|Tregubov,P|2012.04.10|B48|1-0|W +EUxgDTl\U]nf;Lf]T]weFVvx@Owv?Mel>@meIQjbBRsmtm:=k[R[b[V^e^]elZO^[S^mv>=>gmL]SKDFZ>]nxyF>srIPrBMhoh>fBCndurfmCFP^F^d^r:@I:^HPqamtyqem^_mu2_GIAG?AI|Keres mem op|Miezis, Normunds|1998.06.14|A60|1/2-1/2|W +DTn^;LxgFNsdBJphEMwp@Ovx?Fm]T]g]@tfLRkc=DdnCSZSJSum?;qiHPfXNVXOFOndV]dUD=UO=OrR:RmR;@xiEUiofmZl^VOUd\UFVNGNnN@ANElmrv>?vnmu|Alushta-100|Arzumanian,G|2002.04.19|B30|1-0|W +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDLvxJDrsIYgnHPtfBJbZDNwvJR[S?[fm>@SLCLnw=Mdj[mumMbjd:;vu;csc]cmjbjdjcTut?;t\;sphsrjdTc|ETCC|Shirov,A|2007.10.29|B33|1-0|W +FVn^@Osd?Tw\DLxgEMvx>@meIQdn?>nh;EldE?e]V]g]?PqiTKwv=>jcELQf>NhWNOgYLEfXDTXfTDfKDKvfBJrvKSfgSVvfPFWFVFgOFOfh@AhgOPYPGPge|5th Kings Tournament|Ivanchuk,V|2011.06.15|C53|0-1|B +FVl\@OsdEU\UOUxg;Lme?Tnf@vxGWtmTKulU[lsBRjb[JdZKBk[CSZdR[b[J[dS[USBLBgV=Oe]DTrJOFn\T]sj?=wr|2. Governor's Cup|Korobov, Anton|2001.11.21|B89|0-1|W +FVl\@OnfEU\UOUjb?Mw\UK\j=Fsd@ogDTbZ;LZRKEme:=tmEOuZBJSM=MZ\?=vt@GmdHXtl=@wnEU^VO^o_^dkd=Dum;LvxL]d]@kVCSwvFg_=EyxFGmdA=jZEUTU=UxuUunuGFulFMkcMTdkTUleL[en[LkdUTneTUdkL[ed[LdeL[ed[L|67. Blitz 2013|Dreev, Aleksey|2013.09.01|E34|1/2-1/2|B +FVn^@Osd?[xgEMw\DLvx>@wv;Ejb[Rk[RKmeBRrsR[b[?>\cE?dnOYtX=DnhYhqh^f^DM^_M_h_GOcb?PphPFbBuEgvFWveWMqp@GB:IYeTEF:=MW=;CSpwFB;@f_:=jb[M_fBJeI@AIWFaqia\We\lelMVrsUjsrj\wxVkrskbsC=ulu?=uZ=MiaLTZlM=CDA@fTbTDT\STD@?aY=ED@un@wSLRSnUdkdRcrsctltNUd\U^sc=MvxCKme^Cgm:=ngC@wn?>k[RKvxBR[SEMmeRZtf;EutETqiIQrs@vx:ph=EulLRkcO^lkRLwt>Ndn<>c[BJ[SJSkSNQqaW_f_E`gq`imfQNqwIYSUHP_WLFUSFWn_M_f_^oxoW]SCNKCUKkwmkm_m>noxihxwho|Tal Memorial Blitz|Kamsky,G|2008.08.30|D13|1-0|W +FVl\@OmeEU\UOUxg;LjbHPn^UKk[<`wn`gngBR[R:Rvx?HgnL]tmRJsd>@bZ=:wvDLrjKEusETnuCSZSLSjJ:JdU?:m[H?[T?TstJMqa@HaYIQtkMJu`S[YPGPvtJMtr:?xyM=phQY`i]gklT]rJ=;iWPWlL|ch-UKR|Sharapov,E|2003.11.12|B91|0-1|B +EUxgDTnfHPm]?Hwn@Ovx>@]T=DjbBRtmDTmdrwNV]W^nwonogo>EWfENoaAHaX_PX=PF=RU]d]V]f`NMRVMV`VHOVg]ep`FUqhUfkcONhofliaIQaYNOohlfgmOVhgfUm^V]ZRUd^mdUmwUOg_OU_gUOc[]\g_\[_WOEWNETNGT^GP^hwf[d`XdmfUmtXQemUfhwQIwfIA2|17th TCh-RUS Premier|Eljanov,P|2010.04.07|E06|0-1|B +DTn^;LxgHPm]T]g]?H]cFNl\@Fsd>@wnBRdZGWvxW^\TFUn\L[unEMn^Fo_^g]gcm?Fvn=MkVMJtl>Ef^@?wsELsc?=cdFXmcJZphCKV_XFcmBJ_fIYfoFOdc=mnmN\^VOX|FIDE World Cup 2015|Yu, Yangyi|2015.09.17|B45n|1-0|W +FVldEUm];L]VLVt_VP_hIYqi@OsmYahq?MqM=MnflLEF]\AI\lFXLZIFlD`ho_XOZLO]xy]_DF>Fqi_Ve]VOwnOQneQ_eW_tLtMWt_;:_w:;yx;Dw_WM_tD=xwMWUMWMtLFEwn=FneMWL^FO]UEF^_Ff_fWfefOVfgVUg`U^`a^_kc|4. ACP World Rapid Cup|Grischuk, Alexander|2010.05.28|B90|0-1|W +FVn^@Osd?[xgEMw\;Lvx[dmd@CDVeleNWruBRkcOPwmWemg:>v>?>qi>NgaP^D=@I=Renuv^]aW]kWaNVRKn\vVMVag\eKMV^gVesVG^fof_fM_kdGVfnVgnv2gvdvxqvRjZsl_\RVqxVfxqlc\Sf_qx_ZSWIAW?c@?oZ\of\Ufo@GofAIfoGNofUWf]NU]mW^xqQYmXHPiaIHXhHOhMOWMEW_EM_fMbfmbkmuko^VqxVv|67. Blitz 2013|Malakhov, V.|2013.09.01|C65|1-0|W +FVn^@Osd?[xgEMme>@tm?>phMUunU]ds[msmDTjZ;Lm\CKwpBJvx:;nm=DwtBDLMUOMOXOHODTS[T\[c\[><[c@wnEMl\;EsdFVvx?>k[V]f]BRrsR[s[CKtf:ce:ZjbWRxwQYwnI@p`@?tmR:`YPYmt:>ng>vtf?>\TKT|World Teams 2013|Movsesian, Sergei|2013.11.26|A08|1/2-1/2|B +FVjbEUk[?Mtk@Onf>@xg;El\DLsd?>m]V^gmE?wn?PqaIQ\TMDbZOIphGW[SIOucO`n`W`d^fvufhaYP_yw=XSLCLcC:?CLheds`hrbXYut_n|Eu Blitz Ch|Popov,Val|2002.10.03|B00|1-0|W +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBJvx?>dZKBl\;Ltf<`Zd`gngL]phDLgpIYxyHPo_O`fxV_h_=aqi@HdnaOrj]njnBxwx`QurQWnkW]xwJR[R>Frv]WkKYayqO]wgWhv[hn[vnhKsGWgf:?voPX_XH@fg]VqxVRg_RVsvLTvf?G_aW_fgG?a`FGom@Hgo_gpwHPmfCKbZhYfmYhmfhYfmY_xy_N`aN]aQPHXPG_QIHPIC?Amf_OoqVhCKAYK;PI;CIAZRYXfoh_RJ]nJBnhoh_hB:2X@:@A@C;@H;CHQ|SportAccord Rapid Men 2012|Kamsky, Gata|2012.12.15|C84|1-0|B +FVnfEUm];LxgV^gmGWl\@Osd\SGYSLCLnJ<;JLUKgVMV]VN\wv>VLgYagoaoxo\coxHXf^W^tfK\rt;Cvn=etv\fnfefvfclxoIYfvDToflekcCLvtLMc[T[b[VFf]FCdjCSt@vx?>k[RDwvMU^ULUdSD;l\BJSdU]dsJRtk=KsmR[b[:rurK[vs[?kb;MbM?MgXMDrbCKX^O^m^NLUN>UL>N|36th Olympiad|Kaidanov, Gregory S.|2004.10.25|C77g|1/2-1/2|W +@Om]EUl\DT\UT]xg=Uu];L]UOUtmU[vu@meDTwn;Lvx@me;LuvCSnuT\f^U^e^FVldV_t_O`smgedLemLNGN>NmlDL_WNOtw@Xw_XW_aLTa\OLp`WUjZCKiaBJlk@wp?=vx;Lo_:<_VOVmlCSp^IQ^pLFleS[fB[dkdMDefDduedLfVLEBK|IV Open|Gonzalez Marrero,J|2004.03.26|D23|0-1|B +EUm]DTld@Oxg;Lnf<`qi`Y]TFVp`YPk[O^iaIY`X?Ftk>@sm=Dm^P^wi^PuU?=UcCKTKBKjbKSiwP^wnDQX=UVFCM\TM^vwNVn`@vx@Akc<`smFTtk`gmgGOrtT]g]V]n`=Mo_BRug:>giHPtvOW^W>vwvM_kt_MvNMTtQPW`W?@QHAHiQ|WICC qual Dubai 25'+10|Korensky, Sergey|2002.03.01|B92o|0-1|B +FVl\@OnfEU\UOUxg;Ljb?Msd@wnL]g]V]dsDTo_T\vxGW^VMTxy=Ee\N\n\K\kc\Kc[TFtk?=ucEUcUKUsm:@vx=KjZBJsb;EmeOYkHYHf^EOwvHN^VOYumYHZRKDSKDEblHWlfWfmfESvs:@wnBJvxCStf:;ogEMdUOU^ULVf]FNjZSZrZNUg_=>ZrV\]H@Hu]H@wv>f]f\fnef\rj;[phjJ>NvNGNJM[]|18th European Teams|Hracek, Zbynek|2011.11.04|A29|1/2-1/2|B +EUm]@OxgDT]TFNnf?Tjb>@l\TKk[BR[S;EtkNVwnV^gmETvxKDsd=Mph@sdFNn^NU^VO`uU=KU:tsPX_hGWg_VPw\@?uUPFyuX`haFUuUH]UW?HWGHP_WPQWO|42nd Olympiad 2016|Bomo,K|2016.09.02|A05|0-1|B +DTl\@Osd;Ln^EMphBJjZFNo_MU^VU]dsOEmeHXxgX_h_?QwpA@vxCKxy<_WQtrtNVtv=?^h?OgLRLwgOQh^EOyxEl\IYsdXW\ULUuZENkc@FtbYahaHPrtGOdnNGyxAabMDMtDPXZL:Y`><`gyq_qEnf?Mvx@vx?=n`DLktMFbZBRtmR[m[FD|TCh-RUS|Alekseev, Evgeny|2008.04.03|B91|1/2-1/2|B +FVldEUm]V^t_@Onf?Fd\DLsd>@\UOUdULUxn;LndHX_hGWo_^gugW_f_@gVEUk[RKm]U^tf;EwnDLV\KD]UEKUMD;\KBKf_KSvx?>umIQwu@ph;LwpEU\U=Ume?=sm<\TMDc[OQ[SEV]VG>k]A@SKBKTKD;o_`gng@Xe_E]TQa:CG>uE|78th Tata Steel GpA|Adams, Michael|2016.01.27|D02p|0-1|W +FVn^@OxgO^me^OgV;LVLELwnN\QIOH_WKSIA2HAWOS[d[T[OV\cV]RZ>PAHPsZbkb[b]THOTLOViacULDUgDEV]EF]dsjguF?uc|Tal Memorial|Gelfand,B|2010.11.05|C42|1-0|W +FVl\@OmeEU\UOUxg;Ljb@u]IY]_XRxp?=ZdRb`YPYDTGOdSbRTY=;_[HXSB;[BLRZL[Z[Yy@HyrHPry[ZyvX`g`Z`|68th ch-RUS 2015|Jakovenko, Dmitry|2015.08.20|B90j|1/2-1/2|B +@Om]EUxgDTld;LnfFNsm=Dwe?Fvx>@]TFTk[TMtkBJrtCSjZDKf^LVgVMVphU^m^O^e^@^VOUdUNUm^=F^MUpM@Xa:yu>AQPA>PQnvumox]Wh`m]xyWhyq]_qiQI>f_DfohY`Y|2. Norway Blitz 2014|Aronian, Levon|2014.06.02|D10|0-1|B +FVl\DLxgV^g]@OsdEU\ULUme?T]cT[e^O^tm^mum;Lnf>@rujb[MngMVdUVkmkNUgU=U|Corus A|Tiviakov, Sergei|2007.01.20|B22|1/2-1/2|B +FVl\@OsdEU\UOUph;Lwp@vx=FulCKnhgCGCv>=>mg>f|UKR Ch U14|Zavgorodniy, Sergiy|2001|B17b|1-0|W +FVl\@Ome?[smEUxg;Ljb[mgm>@nf<`ul?>\UOUqiUfldfwi`wmtm=UvwL]mf]Sdl:=ruUNogDLwoNPyYIQbZS]lmGOuy]NyuLTmdCKZR=MRKBKk[>=[TKTYWPGWYMUd\ND\^DSuySd^\Ue\G@Gfteug_V_t_HX_fuyYyduonufnfGPyt=]fg]_ghT\hiOW`WPWph_^ipWVpoV]tu]dog^]uydmyqmeqy\dyue\ut\ctscj|It|Zavgorodniy, Sergiy|2001.08.02|B51|1-0|B +EUxgDTnf@Okc;LwSFNtk?Mvx>@l\LR\UNUwvBJSwsm:vtvL]vF@?FB<=BJ=UJR]gxpgvpxvgxpgvpx|5th Kings Tournament|Carlsen, Magnus|2011.06.21|E43|1/2-1/2|B +FVn^@OsdEU^UOUxg;LwSUdkd?Mm]V]vx>@d]BJSn<`ld?>qi`Wne=EeWEWtfLRusWswsGWjZ@GxwGNwnNUne:=gmW_d\UN]UNWf]CKp`_hohWPmgPGh`G@gm>?sw=>]dM_dR>felKRwgfnruHXle?>\TnVe\Vn\enV|UKR Ch|Kuzmin, Gennadi P.|2003.11.08|C47u|1/2-1/2|B +FVn^@Osd?[dUOU^U>@qaEMw\GWld[RxgIQjZBJm]V^gxDLxnLU\U@In_=OaY;L_P?>P_O]tf]uruLVvxV`um`fofRKxo:;UG>=wu|RUS-UKR Blitz g/3|Najer, Evgeniy|2003.12.14|C61|0-1|W +FVnfEUm];Lsd@OwSV^ogBJSLCLg^U^xn?Mqi>@vx=Fn_?=tmLTuv@tm?>vtN?qa=Ed^EWZl:=mdLFpiWY^OHOux@Af^YaiEa_dm_oE>=>lcFPxPGPcGogyv>=mQ?NGNPXQH|Summer Sport Games|Miroshnichenko, Evgenij|2003.05.25|B60d|0-1|W +FVl\@OjbDLm]V]u]EUxg?F\ULUph;L]u>@wpO^vxFOgv_YO]mg]KY_>Fk[BRucEMtkR[ru^TcUMUuU=U_UFnk][bUKTc]dnlKUbjgVGOVLCLdrcrwrLUpU@?rj|4th Open|Khamrakulov, Ibragim S.|2004.03.27|B28j|1/2-1/2|W +@Om]EUld<`qi`YucCKt_FNnf?M_M=MwnYnxn>@smDTvx;LnhNV]VLVcl:=ruMNhnHPn_NLwv?>_eVEe_BRjZT\mgETurTcrbLM_nO^n]cTvwTebrMOruIYue\ele==wr]NH@N_Uuxpahohum_n>VpoVh|Tal Memorial Blitz|Grachev,B|2008.08.29|D00|1-0|W +EUm]DT]T@OxgFNnf?Tjb>@l\TK\UNUsd;Lwn?>vx<`tm=MdSMFmd:=d]L]S]O^rt=MulMPxyPQyxQPxyPQyxFMph`iwuMFnS>=Swi`uvQOwnK]g]OolDFDtD`nvnon]n^Mn_IQ_UM^Ud^dkdCKDB=eBDefxofVDLKSLJVTJRTdRSdbqaHPop@HSK|Tal Memorial Blitz 2014|Gelfand, Boris|2014.11.13|D27|1/2-1/2|B +FVn^@Osd?[jb[RmeDLtmEUph>@wp?>k[RDxgU^d^O^e^=fd=][R:Rpw\NrsRBioOEoe]\d\N\g_\eleGOxo@GofETstTNwiN]i`HP|Corus A|Mamedyarov,S|2006.01.21|C76|1-0|W +FVl\@OkcEU\UOUtk;LsdD<>ETDEUDFU:;D:BD=BK@]TFTjbBRd\U\e\?=unLVgVDVwuUOENO>?>noA@gOPapyNieM>NONGNML<=L:|Blindfold World Cup|Topalov, Veselin|2007.10.19|B30|0-1|W +@Om]HPxg?Hld>@t_EMsmOY_f;EphEOwpO`mw`fwfFNvxGWuc@Aru=FwvYOf\O^gm^mumNV]VMVvuV^cbFG\RDLbM?>nf@l\U\w\=uvuTFunCKkcO^tk;EgVEVkVhX|Dortmund (groupe B departage)|Kramnik, Vladimir|2004.07.27|D27l|1-0|B +FVl\@OmeEU\UOUxg;Ljb?sCRSgXes|XIV It|Naiditsch, Arkadij|2004.12.29|B90|1/2-1/2|W +FVl\@OmeEU\UOUxg;Lsd<`nf=Euc`gpgUKtm>^InNIH?@H]MV|21st ECC|Greenfeld,A|2005.09.19|B60|1-0|W +FVl\;LmeGWph@Owp?TsdEMnf>@xnBJvxTBdU@Atmdn>NmdA@n]NQYuMT]WEW^WCSwvBEvNQNWNENug?>iaS[drNnstngpgXaxqGXgY>=rO=Utv;Ev>E?>UeE?EKN@GNLEOLTO`qpaipi`oipouTRudRBGNZRNUBCUTRJdSCSTSJB|Rapid Match|Short,N|2008.05.03|B23|0-1|B +FVn^@Osd?[jb[Rme>@tXIQqaRdkdEUXO=O^UDLUL;Lump`NUyiL=`XQXaXOWih=NXPGPd\ULn`W?`N>NxiNOm[Og[?:?hg?gixgOxnPXndLgrsX`sSOWd^g^e^WgSCgbCSbdvmdgmngdnmdgmn|TCh-RUS|Najer, Evgeniy|2007.05.06|C72|1/2-1/2|W +FVmeEUxg;LphGWwp?Mvx@OsdV^e^W^ga@wv=EdnFTxyOYndNGd^T]ldIQd]U^Xf^gagGUgVUpypEUpxYOVLULrtLEf_OU_VDLun?Wvw:?jbQYwWEWxpBRbZHXqiX`i`W`tv@Ine`PenPWvyIPVM?OMVOGyvW`ne`WenW`|30th ECC Open 2014|Jones, Gawain C. B.|2014.09.15|B09k|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?PphBRwp<`unDMldCSnw=KrtR[d[U]mcOEpi`iwiP?gaHPagQYtlLTvtT[lLK;b[M[c]V]k]?N]k[btsbkskEVgV;Vks:riwrswsN]LK>:xpVTKO@HO_PX|3rd ACP Blitz Prelim3|Sasikiran,K|2004.06.02|C95|1-0|W +FVl\@OnfEU\UOUjb?Mxg>@ul=FmeDTph;Lwp?=vxUOsdIQgm@wvETgm@wnEMl\;EsdFVvx?>k[V^gvE?[SIYjZN^L=;f^QH[J;cJTuftfNLTc|67. Blitz 2013|Morozevich, Alexander|2013.09.01|A08|0-1|B +EUxg@Onf@sm?>ulLTwv:fvfGUfv;ckd?TvtTbtv@IvrUSdvcersSUsrU^ljecjm\dmj^\jlbTrtT]lu]VuYc;Yu;:ug:=tl\cgn=:ltcbtl:;n`brxwIA`Yr:wx:^lt^eYGdlGFAIFT;s|SportAccord Basque Men 2013|Leko, Peter|2013.12.17|A47|1-0|W +EUm]DTld;Lxg@OnfFNsm=DweCKvx?Fkc>@tkwvFMd\T]f]M_mwLFgVU\c\FPV`_XePIP`VOEVEDEn`XOwfEZumCJ`uZuvuOXml==tu^gumXFflFXlf@vx:@wn?>k[RKmeDLvxIQdZKDl\EUulU]tm;EphE?gaCKZk;s;:;wsE=nuOEskETls;:ul@Isv=Ovu:@o`N`g`ONugP?qi?EgwIHwsGOpvHGvgGFsv@:xpN@gx:;vr;krk@;kjTJxnJ[jsDMm[;[s[M[ntFMpoETon[bnubtutTJtkMFktJ[lsFNtmNGslGHlu[jucjd\THPmvQYvoYaogahghdnhqPHc\n_qh_P\NH?hgP_N\_ign?F\@i_nmF?@\?>\c>Fc@_P@IPaIWapmnp_nmF=ml_nWNndlc|It|Harikrishna, Pendyala|2005.04.06|C97b|1/2-1/2|W +EUm]DT]T@OxgFNnf?Tjb>@l\TK\UNUsd;Lwn?>vxBJk[U]f]L]g]K]tk=O=@H=]H@]=@H=]H@|SportAccord Rapid Men 2012|Wang, Hao|2012.12.14|D27|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb<`nfGWul=Ok[`gpg?M[SLFsm>@qaBJSJ:Jtk@Ag_ONyx?OmgV_gXN@f^JLlcLKcjOPaYPQ^UFUwp_g|8th ch-Euro|Narciso Dublan,M|2007.04.11|B96|0-1|B +FVn^@Osd?[xg>@gV?>VeO^wn[?d^>^vx;Lng^>ldEUe_U]meLVgnDL_YHPYhGWo_VGd\L>wvBFvF>FphOEqpE;po;LgaFNugMFapHGh`FO`XOHiaQYjZG>gnNnonH?ng|40th GM|Ponomariov, Ruslan|2012.07.16|C67d|1/2-1/2|B +FVl\@OmeEUxg;L\UOUjb?Fn^UKwn>@vxBRtmmnZbfWbjWM>EOGrwnmjr2|ch-RSCU Blitz|Nepomniachtchi,I|2011.01.09|B92|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQwvEUtk;EnwBJqiKDdsJRsmDMldCKphfpf[cl\T^]UC[vt[m\^mktskj^e=;suckes;:sl?TlTks2usjsxq:jfpslTljlqxlt|4th FIDE GP|Svidler,P|2009.04.28|C92|1-0|W +FVn^@Osd?[o_;L_VLVxgVgug=Fwn[dkdO^gf^OfF>Fd\A>tkF?kOHOyw?Hw_EMm]OW_o>^vt:;lduw>FogfgwgENgfHO]UNEfFOFmfFOf_IQ|5th Kings Tournament|Radjabov, Teimour|2011.06.18|C63q|1/2-1/2|W +DTldFVm]V]d]EUxg;Lsd<`tf?FuZFO]TU]vt`Eg]L]u]O]Z]@Of_>@nfCK_MKT]_?>w\EN\SNES\EN\SNES\EN|Vugar Gashimov Mem 2016|Safarli,E|2016.06.03|B13|1/2-1/2|B +FVldEUm]V^t_@Onf?Fd\@nhDTwnUdkdT]V]HPvxNUulULwu=Rn\:lj>?js?>cZLZrZXSsSJSZrDEusEUd\S\sCUERJ>:h^EC^O|18. Amber Blindfold|Anand, Viswanathan|2009.03.21|B12|0-1|W +FVl\@OmeEU\UOUxg;Lsd<`ucUKnf`gpg=EjbGWtm>ZKBKc\QYg_YytyIQ_VLV\lV`og`Oe]>EneW_eWESbZSLlLCLf^=]m_FM_t]ZyvM?g_Z]WP?[vn;@lcPVn]VetseouwoednFOmdJR]SRZc\MqUM@AME@f]V]dn?>wpDLvx=a^VM?wvJDn]a_v^_Xo_X=xyBR[R:RucRU]lDNe]N]l]U]cC]^p^=]rv]oCso_^I@AsW_mvwmUW^?b^ULUIlA@wvb[vu>VlcHPcU@HUgGWus[TypHOsSPXqiONSRNMRJMEJREDRSDMSsT]suMTutT[tjkpgkcgpdmnYcs>nmen>skpy]fYPenypW_PYnepyko>=f]=U_gYgogUXgoiae^X`^f`@oj@hf_he]fec_gc;|It|Felgaer,R|2005.04.01|B33|1-0|W +FVn^@Osd;Lxg?[dU[Tw\O^un^Om]T]tXEMvtEvNGNYGE\N<;OA>AGFBRFM;BMTB;TM;BMTB;|66. ch-2013|Motylev, Alexander|2013.10.07|C48|1/2-1/2|B +FVl\@OnfEU\UOUsd;LjbGN?A?k[JRtkR[b[ZSog?=r:=:vm:=k]=:yr:r]r|10. Petr Izmailov Memorial|Rublevsky, Sergei|2006.07.16|B46|1/2-1/2|W +@OxgDTkcEUnfHPtb=Ksd;EdZKLl\U\c\FVbk?MZdV^gX>@ul?>wnIQXiEKo_Vo`GFxy|FIDE GP Beijing|Morozevich, Alexander|2013.07.06|E15d|0-1|B +FVmeEUxg;Ln^@Osm?Twn>@vx?>ldBRkcU]d]L]g]T]rsDLmg]KtkKDul<`su`gng=MphDKxpK]kt:=gnMTlsIQtmOEutTKjbETmRKRc[RB[T]Tsc>FbZBRt\=]wt]\c\CK\lFBnuHPqaQYtsBEskRJunE]kjJRpw]MnuR[ZRKRjZ[KZ\T]wpLTlZ@HZ>KkulMO|It (active)|Garcia Fernandez, Carlos|2005.11.19|C41y|1-0|W +EUm]<`qi`YldDT]TBRuc=En^U^wS;LtfGWp`YGcZ@O`WOUsmHPWPGPm\?Hvt>@\KUKTKEL=>=E=dV=?G?C;2V;u=?G=;|FIDE GP IQT Final|Chepukaitis,G|2002.04.02|D00|0-1|B +EUxgDTnf@OkcHPtb=Dbk?Hl\U]f]T]g]>@wnO^kd^ovoH]d]D_ov_]sd;LdS]=ngBJgLCLSd=]unme]MvmMP^T>fmfYaTJaiJTPQoq`WT^QNjZHPc[PYZRX`f_W^e^YaRJ`hJBN>qj>?_VhpB:2?:j:px2:AahA@ho@xoxVMiq^Vqy2VNyQMEQmELm[\T[^LM^]|Tal Memorial Blitz|Karpov,Ana|2008.08.29|E15|1-0|W +FVkcEUtk?Mnf@Oph<`wn`Wme;Esm=FngV^e^U^gp>@xg=FsdCKphf^F^d^>^nf]NkcN_h_^Nxp?=wuNPpgPQghQPhgPQghQPhg|18. Amber Blindfold|Kamsky, Gata|2009.03.22|B52|1/2-1/2|B +EUm]@OxgDTld;L]TFNk[BR[SL;tbO^nf^Td\CK\UNUsd@g]FOrt?>ng:BdZTZuZBDgnIQ]NGNnY>FbFDFZl;El<=GsmOUtkFOkOGOrtLVvnV\t\HXphYah`=MmgCS\TW`i`MJyraigqJZngBJTtUKghK\qgNVtuV^gm\mumiqmMOFruqy2MEF>E=|11th Karpov|Jobava, Baadur|2010.06.02|D15e|1/2-1/2|B +FVnfEUm];LwSV^l\BJSLCLxn=XulXpyxpq\U@FsdGWtmqMULFLjb:;dZErtML\jLCmRKLtLCLvmW_xtLOj\_fofOomuogulgWlsFP\LEFL>FOtLOHDNH@R[WwskwG>;@IN?P?;MGokcoGcd|Aeroflot Open|Ni, Hua|2005.02.22|C18v|0-1|W +FVn^@Osd?[jb[Rxg>@w\DLk[RKmeBRtXIQXO=OdZKD[SO=vxEU^ULU\cnlK]e]>f]Zf>ZBOUlPUfpi>?g^Swia|GpA|Stefanova, Antoaneta|2006.10.27|C78|1/2-1/2|W +EUm]DT]T@OxgFNnf?Tjb>@l\U\w\=uvuTFunO^sm^M\e;Ek[CKtk@wvO`XF=Fqi`On^U^d^YahaO^v^NVuY@nfEMweIQXa=>xnFVvx;EldOYnhYhahGWuc@ArvEOogOYhaPXao>PclPGp`V^g^W`^VGFeP`hqh<`l^FN]UNOW]ULU\fWPfUPWpgEGUfWPgnYahaXa>APXA@XOf`ON@PNUPQG_QaULnf_w`owrjbBRoeCSf]rxa^xp]dp@^F@@wn?>k[RKmeDLvxIQqiEUwv;EnwE?tk?PdZKDZTCKTc;>lTKTbTP?TK>:tDFDKDGOpi?Pgm@?m\C^e^:^D=|Tal Memorial Blitz|Svidler, Peter|2008.08.29|C93|0-1|W +FVn^@OxgO^me^OgV;LVgEUwn?MvxIQwv>@smLFe]FPmwDLneP_t_M_ld<`qi`Ywh_hoh=KulYgpg?>xp:=k[BRjbR[b[KDlmCKv>=>rv>:mf@?[S:@wn?>k[RKmeDLvxIQtkEUwv;EnwBRqiKD^ULUdSD;l\U]gm:Jo_OI\TV_v>=>m^ET^T>STJCJk]IXiaXN]oPW>YWNYVNGVFGPF>PW>GW`G@`Y@AY`AH`YHVY`V_`Y|XIII TCh-RUS|Kasimdzhanov, Rustam|2006.04.22|C92u|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQgmEUngBRtkU]dnR[b[:rur;Jld]dkd=ente=m\KDwu=FteOEg`J;rBHPqiQY`E;EeTD;B:ET[TFT:;T\u=>=;V=uxq@?VA?FdOFNOX\^ANW>EWXECXOC:^VphLT:AOWANO>AOFAVFEVOe\OKdlKBELB:LS:CSZCBZcBK\[Kfckfn[c|Aerosvit GM|Volokitin,And|2006.06.28|C92|1-0|W +FVl\;Lme?TjbBJnfEMxgTBsd@Own>@vx?>k[LFtkFPe]V^gmDL]ULU\UFnk=EcKD=kl=DEH?gW>=EL?HLC=AWYIPYAHACFP^pqAHFT^nkt[ctbHITKnjb?I@?QOW`WjlK=@I=alWQtIHa`HO`WOWqhW^ia^eaYeltblsYQsjQI|FIDE Candidates 2014|Aronian, Levon|2014.03.30|B23c|0-1|B +FVl\@OnfEU\UOUsd;Lul@vxg^W^cmEOm^O^e^FNjZCUZRU\piNGnfGDRKBKiw\wvw?wrwDFwvFNktT\tbNLb[IQf_>V_`QY`_LNxp@I_gKSgfYahaN`py`a[MVYMhai^VYWfnW?npiNpC?=C^I@ho=?o]@IvsNisxiN^aHQa^QHxrNi^piWrvWNvf?Wp^WYypYXpwXWwvWY^pYaf^ai^niYpCYanoIQoGHVGFVhvuN`uth_tkQXFv`Wvxa`CFXQqi`xFaWYa_YX_?QY?AXQAQYQ]x|WICC qual Dubai 25'+10|Capezza, Marco|2002.03.03|C45k|0-1|B +@Ol\CKmeFNn^DTph@qiEMtfOEe]T]n]ET]SCJSMLVkcV\M\HdrtJ\c\dH^V:<\U^mtmRUf^Ucrt?MlcNcw\c\t\MV\l=evuA=utecmdVdldcdkd=>yvFo_JR^VRZe]Zb]TFEd\HPp`EFsvFNvrbcrscdsCGOCBOVBbdl_VIY`YNVTLVY\TlkbhYqLKPXTL|8th ch-Euro|Prusikin, Michael|2007.04.12|C10l|0-1|W +FVl\@OmeEU\UOUxg;Ljb=Mph<`wp>o_MTqa>fuc`NcSTKvmLRmlNclmcUrxBJSKDKmfUpxpKSpxswGWfgLR^V>=gfRce]cRfeR\wrDLrj\KjnLUnq=@gVEUjb[Rk[RKm]U^tf;EwnDLvxKDo_EKumKUdUOUl\UfmfGOV`BRruR[b[@A_W\G>?GNENWNZckcbcv^c[NF?>wOHO`O[]^]>F]`|Young Masters|Vallejo Pons, Francisco|2006.02.08|C83|0-1|W +@OxgHPph?Hwp>@vxEMmeDTld;Lsm:;jZFVn^IQm\CKgm<`og`N\fMUd\U\e\O>fU>Mkc=EmsGWsdW_tkPXdn?Gum;?ruL]k]V]h_NU\UG_n_?_^VHVwvMGme@Hv^EUuvUMpi_^v^VqxyqViWMO^nQYg_X_npH?ei_gigOaWi?FgCFOCLGMLga_gYOFYIMGi`FMIP_OP^Owpxw_^P_OPIBJypOXpyKSZSJS`iX_xPMDPpT\c\S\iN_wpxwgxpgwpxwg|6. World Blitz|Vachier-Lagrave, Maxime|2010.11.16|A05|1/2-1/2|W +FVl\@OsdEU\UOUnf;LulweA@eWEWSK?MZB;`P>PYPyinmuvgovwW_wpPWpgMTiyfnyvov2|Kiev Diawest|Deep Fritz 8.0 256MB Athlon 1200 MHz|2003.06.21|B48|1-0|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LuvIQwnHX_YOYnYd\DTkc>Lvo=ERKBKr:L:yr:Cn`OW`WEGh`CTL>V]VG>|FIDE GP|Wang, Yue|2008.04.25|C67w|0-1|W +FVl\@OsdEU\UOUxg;Lme<`tm=Ert`gpgU_uZ_NwiHPd^?FiNENk[>@qaGW^TFTtTBJaY:>YPIPmd?Gg_GIyI@IdVPXnfX_V_>@Zc@xvmNcjcIP[SLRmlxtltRctlcT_DJSDMTNldPGd[NX[SGNMhNUSKXgKCgve]veCDW_h_eo|World Blitz Final|Morozevich, Alexander|2012.07.09|B61|1/2-1/2|W +EUxgDTnf@OkcHPtb;Em]?Hwn>@vxO^l\EKbkU\c\<`sb=Ert:trGOrtZ]nm]_ph_Mm]FV]\>F\T@Ht\V^xpMVT@wn?>k[RKvxIQtkEMmeBJdZKBl\;EZdDLumE?e]V]g]?PruO^d^>^ne^>ePGP]gFvn:>uvPXqiLTn^CS[TBT\SJSg]N\^F>FvFDFbZFGZS\S]W@IdHGHWHSEHYIPYhMUhnPWnhWPhnPW|23rd ECC Men|Grischuk, Alexander|2007.10.06|C88i|1/2-1/2|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LuvIQwn?=_YOUY_UFqaLVaYDTjZd\GWya>Ntk:?ruM@m]=DsmBRvx?=neRZun;L]TFVf^U^m^OUTKDKe\ENphLRgXR\c\UDrsKLXNDNsSGW^TNXogV^g^Hdwud]u]=]nf]uxpX^T^L^f^W^Sk^fb[Zbknus[Mskpg:Z\TZ\qakngn\lnfljTLjlMbldf]dbLDb:]U@GUMIY|SportAccord Blitz Men 2013|Giri, Anish|2013.12.16|E15|1-0|B +FVn^@OxgO^me^OgVEUe]?Msd>@wn;LVLCLvx?>tXNneWeue=FduM_ah_hqhO`eWN^udHPWg^]ru]uwuIYgnF[us:;nm;>jb[Kk[KJbZJ\[SU]du\l|3rd ACP Blitz Final|Macieja,B|2004.06.05|C42|1-0|W +FVl\@OmeEU\UOUxg;Ljb@wnEMk[RKvxBR[S;En\ETmefoONohPFU]N\]\GOxo@GqaQYh_FPphPV_V>VbZGNg_VT\TKTuUHP_WPWUW@l\;Lk[TFtkU\u=?=w\OEsmEK\cBR[SRZcuLRunGOp`NV`X@rs=Dqi?>unGWwuEVtbCKnS>Nm]|WYB12|Alutis,Martins|2001.10.22|C45|1-0|W +FVl\@OmeEU\UOUxg;Ljb@ul?>vx;Em]TKsmMU]VEV^U=UgVUVne=lchMelDLuULUceHPgXMVXgVkwskjgXj\em\`s[O^X^U^mv^fofKfxy=][]f]lu`_ph_f|2. Governor's Cup|Vorobiov, Evgeny E|2001.11.18|C24|1-0|B +FVl\DLxgV^g]@OsdEU\ULUme?T]cT[tm;Le^U^jb[FmXFphLRwp=EutA@tfBRrsR[b[;LwpDMvxL[]SMFfX[LXOFOdUOVwv@vx:=g_FV_aO>h^>M^dEKf^GWjZBRme=>kbDLrvKEdUEOUOHOaiW_n`LDphMGbtGXipOHqaXN`N>Nh_V_p`H]xpNOwgIQvw]Vpo@IonDMtmCKmtMDtmDMmtMDtm|19th TCh-RUS 2012|Caruana, Fabiano|2012.04.11|E15d|1/2-1/2|B +FVnfEUm];LwSV^l\BJSLCLxn=XulXpyxpq\U@FULGWsdqMtmMLn_A@rt:;]ULMdnHXlDMDtDGOE;kEVG@V\Xp\kponuekuvkevu?[BJekuvkevuIYjbekuvkevu[dmdYaJQoqd[ai[MW_M_e_f_^fuvqyvniqnfyvf]qy2Qyvy|Blindfold World Cup|Harikrishna,P|2007.10.20|C18|1-0|W +FVn^@Osd?[jb[dmd>@ogEUtXU^u=?=g^=Mwe;ExgETvxO^XFMNFT^Te\N>rvNvVNVgVGOVeTNbZ:=wv@Gv^=UxoOW^aIQofGOk[DLZRU=a\BJp`HX`WOW\^QYqaXa^a=Ad\AQfoWXa^YaopXW^VWOV^aipqOW^VW`eo`_oe_g[SLS|Corus A|Caruana, Fabiano|2010.01.19|C69g|1/2-1/2|W +FVl\DLxgV^g]EU\U@OsdLUme?T]cT[tm^enf>@we;Ljb[FvxBJdnO^n]FOe^U^]LCLul=ert:;m[?=cTeltl=>wu;STc;lmSc]Z;:phcSiaIQZ]SC][C[d[:;[d;CmuCS|RUS-UKR Blitz g/3|Potkin, Vladimir|2003.12.14|B22|1/2-1/2|B +FVn^@Osd;LxgEU^UOUwSUdkd?Mvx>@m]V]d]IQld=Owv<`qi`gugOgpgLFSe:=e^CKtmGW^lFPxwPalu?OjZBRrsOPg_Ppuc@IcUpqsSDTSKT]d]M[m[=U[TqivVUE]UidUMaPTfdeVWeMKMEMWRMO_WPFf]OLWOLtwnFLRUL]U]HO|Tal Memorial Blitz 2014|Morozevich, Alexander|2014.11.14|C47|1/2-1/2|B +EUxgDTnf@Om];LwnE\f?MfUNUxwA>tdIYrt>^mf:>jZJRdeCKqiHXfmX`i`^`tv>@phYaha`awn@`mdENefNWfg`_g_M_vx_XxuW^ux^Wxua^nw^a|76th Tata Steel Masters|Harikrishna, Pendyala|2014.01.12|D37j|1/2-1/2|W +FVl\@OsdEU\UOUphDTxg;LmeUDwp?Fgm>@m\@ldEW]TO^g]^T]WPWsm;LmcT^og^Oc]FNtm:neLVelV\un>Mkc\VruVPxy=KqileTDnY>?vmM>Yn>MnYM>wx>OYn?>xwBJd\U\c\DEmdKDus>]g|10th World Teams 2015|Bruzon Batista, Lazaro|2015.04.20|E11h|1/2-1/2|B +FVnfEUm];LxgV^gmGWl\@OsdEnuA;mdU\dk;krtE@me<`\jRdkd?>qi`NjN>NgXN>o_;EXgMU_VEVgV>Vt_VN^VOEe]GOVOEOue=FbZ:?d\U\e\OU_V?w\wFGw\NP\eU_V_G_rw_MecMUcULUwsCKsSPMZR@GRKBKxoMLldLdSKdeKC|21st TCh-RUS 2014|Jakovenko, Dmitry|2014.04.11|C77b|1/2-1/2|B +DTnf;Lm]EUxgT]f]<`ldFNqi`Ywn?Mvx=DgaYnun@OaWM?sm>haU]VNLDGX]enfZjfg>FkcjkueTegekoqho?h`KSaYDLXGFNG=?=e=N^`X^f=@sdU\]=?=w\IQXa;EvxBJjZETg]HXahT^d^O^wu^hqh@?og?>h`FOrsCSZSJS\nO]f]FnejZofFMe^=>feU\ed\UdeU\ed\U|It|Kalugin, Sergey G|2001.08.04|B22|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@k[RKw\DLmeBRrsEMqi@]TMTjb?=k[TMulTV>GVXn\XWGPW_\NahPY_]Nch_YPqhcj]MPWMQW^QYjnYanwa`|KM FIDE GP 2015|Jakovenko, Dmitry|2015.05.25|D46k|1-0|B +EUm]@]gPWwuFM_MEMgaW^og^PaPIPtm?=ZRPXrZHPZ[@m\@Ae]O^gVMV]V=Fog?=uv^TtfLVvdV\n\TZdcZkwvk\c\EA:]esrRcrjc]jr]lrslbsres|Canarias en Red final|Rabiega, Robert|2004.05.09|B32l|1-0|W +FVldEUm]V^t_@Onf?Fxn>@d\DTsdU\]U=KnhKkrtF=tlkbutbRw\CS\SOUvxU_f_=OS\Odldvu[^ltdluU^vxpvtEO@?OI?HIX>?UEtwpwlt2wptLpiL\ip<:BKH@Kf\LX^?>E]GWfc@AckA@kc@AckA@kc|Sportaccord WMG Rapid|Grischuk, Alexander|2011.12.10|B12|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWsm=Oul>qiOQvt`gmgL]g]V]k]BRlcR[cUMVUV>V]V[btm=UVdCSwnQKusDTyt<=e]S[n\[dmlKL\ULUldT]f]UpdcpocbofbjfmjbmRbcW_c\RW]UWis;=DtsDMsK|GMB|Kosteniuk, Alexandra|2003.01.26|B96l|1/2-1/2|B +FVmeEUxg;LphGWwp@Ol\?[tmV^gX[mumU]e^IQ^VLVXgVgpg>@vx@wn;L]cBRjZEMtf@meDTph;Lwp@vxBRld?>kc<`jbU]d\OEqi`gmg:;iaTFaYCSulETrs=EtmTN\S;SwtSTlj>;tTFTmRLRc[N_nwRL[T;:YQHQph_PjUE>wiPFUc@Hga:RcuRbaWFWiW>FsCbdu`FX`XQXCDL[WN[eTLeTNU]eDGHPLDTJGEJDU@DS@IPOo_X_h_V_EedDIWOXeUSdURXaxoDHogHhg_d^W^h`_f`h^ghXRrahrjXVg^VXjoX`^W`XoghpWipqf_XHiWHpgiqxW^pqihxohgon^enmeWqnW^mtgctm_Vnfcsfb^UmdV^bZ^fZ[stdktD[SU^kc^eSKfmc[D\[SenKL\]ST]^LMmdTUngUT^VTKd\MOVSKD\TOg|6. World Blitz|Eljanov, Pavel|2010.11.18|C41|1/2-1/2|W +EUxg@vt;EwnEO`XOUyI?WuyUfl^fUg_U_n`WX`Y@IYPI@PI@GywGFd[FEtsK]ZS]^I^:GD|Blindfold World Cup|Polgar,Ju|2007.10.17|B98|1-0|W +FVld@Om];L]VLVxgVgng?TunTFnlEUwe>@vxIQwulmNEfQHQmQMhqh>Nh`T\eWNKWlDTQa@HaXH?uv:>XQ?@v>E>QX@?rvO@lI@FvFKkFf|Tashkent FIDE GP 2014|Jobava, Baadur|2014.10.26|B10v|0-1|W +EUm]DT]T@OxgFNnf?Tjb>@l\TKk[BR[S;EtkNVwn?>vxV^gmEV\U:m^O^u]bM]^V`phCS^_M_h_:;f^S[tD`O^VEWVO[cn\ck\jks2jsWsUMsWwu;=ME@IuUWNUYIP_WNWYW|Aeroflot Open|Inarkiev,E|2004.02.24|D27|0-1|B +FVl\@OmeEU\UOUxg;Ljbf^>MGgUf^VM\VN\VgOf`i`V`OWefWX`OXPfNvwA?n_N^_e^feTO^wp^T[TfbTLCKsw?@m]T^uvGWd\DTld:@phDTl\T]g]MUwpU\c\OEvxETkd;E]cTZdH@HsdETut=Dwu@wnDTvx?>CcELceO^k[T\e]M[tkGO]u^dkd[dg]=MrsMT]LTLng:=phLTgpU]f]T]ugdRsCRKgY@AYGOWGW>?CG]TG?=?WTKTqaHPp^?>wvT[vsBRog>=xp=mpiAHjb[bsCHACDb?D\mE\@f^T]d]NV^UL]g]V]qiOUuYUOYaMqxyD_a_q_mg_twt?=tu@wvOEsmBRjbRZk[ZcmcEKt_KZgVu`LRvsRL`aGOayPX_mIQo_X`_WNWpU@AypH?svLVxyVev>:>rw>Vc]ZKmdW_h_VYyxKU\U?Tp^EU^eYienT]d]iy|Renova FIDE GP Zug|Topalov, Veselin|2013.04.30|A64|1-0|B +FVn^@OmeEU^UOUxg;LwnHPe]V^gX?HvxL]n\DLX^>@tX=KsdUdkdwvDLgLCLv>:>ru>NXfKZuEBREBN^BR^\fQGORB\^BH@AHD^>QHA@HO>NDBZKOFT\FTKUjZUdZRNVB:@GRJVTJBdS:?G?B:2?H:CHQCKTVKL\dLOS]Oa|World Blitz Final|Mamedyarov, Shakhriyar|2012.07.10|C41|0-1|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LuvIQqanSHXaX`fifQX_n@HSLCLn]WEk[GWvmW_fv>Vph=?h_?_ogHOv^V^g^_^jZX`rwOH]n^VnhHPw_EWhWPX_`X`W]LT]ST[d[DTSBT[BLVTL[|5th Final Masters|Caruana, Fabiano|2012.10.09|C67w|1/2-1/2|B +FVn^@Osd?[xgEMw\>@me;LtmLR\cDLdnRcjc[TnhIQmfTfof=KunO`qi`fvmGWnfK[mnW_fm[mgm_hyw@fK=MugO=gW=KruKBum<>Wg>VphMLxp?>wu@?U_LgpgHPiaIYml|Baku FIDE Grand Prix 2014|Kasimdzhanov, Rustam|2014.10.07|A33e|1/2-1/2|W +@Om]EUxgDTnf;Lwn@t_LFgm=KucKD_hWIwvFWneWheI@IqhHPcuIHh`?AunCSjZS[d\QY`XO`rtMV]VDKph@wn?>k[RKmeDLvxIQdZKDl\EUgmU\e\CKul;EmcE?wu=Fog?NtfOEnwLTZdN]ljDMdUF=rsE?ct?dn`oxo?onx:?Uf?_iN@Ixi_a|GRENKE Rapid WCh|Howell,D|2010.08.08|C96|1-0|W +EUxgDTnf@OkcBJtk;Lm]<`wnFNvx?M]TMTsm>@l\=FgVLVkV`nun?=VOFO\UT[mg=UruUuwu:@meIQjb[dkdMU\c?>wvU^e^=Rue;JgmNao=efBedoTdtrtRmtwOYT[mephNP[sebsCY_xybjBojn|SportAccord Blitz Men 2013|Le, Quang Liem|2013.12.15|C65|1-0|W +FVl\@OmeEU\UOUxg;Lsd<`nf=Ejb>ts_fofHPmt?QyvA?nwLFwpFWc\BJg_V_f_>Gd^O^p^WM\G?G_WQtWPIPutM^e^=e^VebVNGFtuDLu]bivn;D]`iQqaD=sl=>lc>?`]?HcZQY]_YUnoFN_GHQGCN^o?^aCBQXBJLT|World Blitz|Ivanchuk,V|2009.11.17|B69|1-0|W +FVl\@OmeEU\UOUxg;Lsd<`nf=Ejb>@tkFNmeL[umELpLCLd^NVe]T]f]MU\ULU^TV^ogHQg_QHkdJRwuIYmv=Fvo?@nfUFp^P^e^=uvu:=unGOXO?OtmOMmdFyuMuruEKurKZdv@GrtL=tDG?DEZKEMK\MU=Gvd>:gV:jnv\VdVIQV_QX_XjkUSGXSXk[XV[kVU?GUmk[ogHXvoX`g_[^mUGOUX^ZX`OW`XWOogZrXSONSKNG_Wrwg^wr^_rRf^RZKMGFMQFGQIGOICZ\CKOG_V\TV]TR^VGFKCF>WORZ]UZRUNRJNWJROG>?WORBC;|UKR Ch U20|Shkuro, Iuri|2001|B90j|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBR[SEUmeU^e^=uwu;EneRZqiKTxwCKwnT]g]V]djO^nwETe^>^jd<`i`]dog^\tfTcrscmfmdmum\ds[dbmEbrwoHX[\Zb\DrtldbjEGty|4th FIDE GP|Aronian,L|2009.04.17|C88|1-0|W +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[`gpgL]g_?Mtf>@f]V]dnDLwp=a^VMFut:=nhJDvxGWVOFOwvDUpU=Uv^aituIYogYahyO=yoiWuwBRrvR[b[=DoiDMiXM_XN_fvf]fN?@?^fWXxoUVwvVf|Premier|Harikrishna, Pendyala|2003.01.02|B33y|1/2-1/2|W +EUxgDTnf@Okc;LwS=Dtk<`qi`Yp`YPgVP^SLCLyxU]o_OUsb]fmeDRvn^Pb\UdkdRd\f:Gwx<@RvE]hfAYf^]UvhUEiaF=XOHO_WYW\MG?MWNW^\?Gnu=Dhf@AutW_f^OW^pEN\TDKTLNftkfxLDKDpxDKxyGHc[KoyCHQCgoh[SA>jZ>fg:QY:BYaZRfVBIaXICX`e]V^CLPXRJ_gJBgoL\^vSKow2\wvwKCwuldumkc|21st TCh-RUS 2014|Sjugirov, Sanan|2014.04.07|E13c|0-1|B +FVldEUm]V^t_@Onf?Fsm>@xnOY_V;Ed\DLndEV]VHPucEDNVgvuONnSE@phEU\U=UwpUYqi;Lme?=smOUkH@Hh`YQ`XQYm^L]utCKg]T]^hYapU=UtLUTL:aXvwTDiaXmaY@m]V]d]<`ld=OSe:>rsL=qi`gugOgpgCKtm=NwvN_ewHXjZ>vsvBRiaIQw\@HaXQXm_X_vsHOxw?AwnAYneYqswMb\UbMe\qYULMFwtYqtlqy\SyuLUFMSLOFUcuec\eu\nurnSruLUFOSnurnSruSn|FIDE World Cup 2013|Ali, Sebbar|2013.08.12|C47|1/2-1/2|B +EUm]DTldFNxg;LjbGWnf@O]T?Tk[TKd\>@wn@AvxBR[SLFtkO^sd=>\U^dkdFUd]PwuPOrtE@wvBRogtv>;mUY_Uu;:um:Lh_?_qiI@vt_?xqB:qy:ByqB:qy:B|CHN-RUS Super Go 2015|Yu, Yangyi|2015.08.01|C65j|1/2-1/2|B +FVnfEUm];El\V]u]@O\U?T]e>@xgEKsdKUdUOUjb?>elTKweIQvxDLkc<`tk`gpgKfofUflnfwnw=XxyXmk]m_ru>=e^=MwxHPuv_Xxo:=]fXYohCKypLTh_MNqaYV_QVkpxkcaY=uvucuxouyYPyQfQNVQ_VYofGP^PYy_Vyvf_T\P^KSVdvtd[tr_VBR[RrbRv\dV]S[]\brvhrw\c@GhMGNM[NVcdV_[M_fMTf_dmwg^g_g|World Rapid Final|Morozevich, Alexander|2012.07.07|C07|1/2-1/2|W +FVl\@Ome?[sm>@jb[MxgDLk[MDtk?>\TBRn^R[b[:rur;JwnJ[vx=FwtEUTMDMm\OE\MFMkbLTb[T[rkCKts<[s@?xw?FwvGOvmFMgvMDn`CLvl<:`ELEmd:Rl[DM[lMTphRjdcENcdKSe]V]l]N\]lHXo_X`srS[dmjrlrIYrl[clfT]f\]\mt\]^VOV_W]UtkUMkcMF|29th ECC Open 2013|Cheparinov, Ivan|2013.10.26|B51c|1-0|W +EUm]DTld;LxgFNnf@Osm=Dwe?M]TMTvx>@jbNVf^?=ulIQk[TK^UOUm\<`e^`g^gUdtkdU\KDKruL]k]V]gU=Ul^:=ueBR[RKRphRTwuCS^_QYqaHPxp@Hpx=:utT?_^?=tv:B^_BDvVD\egUV_VH@VS\dSCdgCg]egu=]xw]\og\lwvldvodTovTxvmxhuyhMbZMUZRU\mf\dRJdbJBbBfeBoe^omyimv^evuefuxfe@HenGWiwx]wv]\nfHOvhOGfoW_hi\loxlTxyTFypFNiyNnpiGNyxngiqgh|8th World Teams|Aronian, Levon|2011.07.19|D46k|1-0|B +FVl\@OmeEU\UOUxg;Ljb@sd?>tfL]k[TKf]K]ulDLg]=]ng>=wuBRdn]MldR[b[:rurIYqiN`i`Y`ru`gpgOIe]IX]UMPnhPOxpXNhnOXpwXYwp=MdcLU^UYXpwX=wv=aueayvmNXcdV^nhXgmfyQf^gX^]M=dvQOvVOoVfXN]^NX^]ok]T=<|63rd ch-RUS|Nepomniachtchi,I|2010.12.13|B90|1-0|W +FVl\@Osd;Ln^?TwnEMme>@xgIQvxBJjbL]g]T]tf]fofDLumCSe]:;k[QNGNMN>=NM=>MN>=NM|FIDE GP Tashkent|Gelfand, Boris|2012.12.02|B30j|1/2-1/2|W +FVxgV^g]EUme@Old?F]l>@e^O^phDTwpGWvx;Lsmrv@AkcFX^l]eneL]v>?>lTXmb\mdTBEi|23rd ECC Men|Karttunen,M|2007.10.03|B04|1-0|W +EUm]@OxgDTldFNjb;Lk[T\smCSbZSZuZ@^UNUwvMsbHPvVFWrv>VvVWHph:>V>H>xw>OqaIYbl@?wnMFnuO>ut>DlbFvgu?HkmvmtmD>mf>MulGWogHGluGOf_M>h`Y`g`W`u`>M`gMW_`WF`_FW_`WM|18. Amber Rapid|Wang, Yue|2009.03.14|D15|1/2-1/2|B +FVnfEUm];LxgV^gmGWl\@Osd@wp:>vxL=^TFT]T=Gm^EFTLCLrt>=u]GX^XFXtLUFLTXP]^P^p^DLTV?OVYOQYXHPXV@Gk]QYVYPYwtNW^pWPpwFWwJW]f]=]JC]ebZe]CL][ZRPetuenuvneL>GOvreJ>Y[^og`gYg^VxoVWofOFrjFMg^WYf_Ya_gMT^WT[ghaQqaJ\jr\nW^QJ^IJRrR[RIWRKW`KTaYTMYQneh_MF`WeW_WFGWXG@XP@AQI|Amber Blindfold|Morozevich, Alexander|2008.03.26|C11|1/2-1/2|W +FVphEUmeDTwp@Oxg;Lvx?Fld>@e]V]d]T]g]=K]c?=sb@gVEUk[RKm]U^tf;EwnDLvxKDo_EKumKUdUOUl\UfmfGOV`BRruR[b[<`n`OW`n@Axy=MfcHX\TMQcdQH_XW_n\HXuv_gpgDqv^q_wo:>]U_VdfV_fd_VdfV_fd|Corus A|Carlsen, Magnus|2007.01.27|C83|1/2-1/2|W +FVl\@OnfEU\UOUxg;LsdU[me@dn]nun=MtfCKrbIY`iBJSJDJnjJ[j\?=wuMLurLMph:Riw=:wnH?|10th World Teams 2015|Yu, Yangyi|2015.04.21|B33m|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?PphCKwpU]rtDMldLTm\M?[TKTbZ<`qi`Ekb:;iaE`ulOEZR=Ogq`NlZ>=pgBJts]dxp;[ZlN\e\[\q`OLaYPFle\]edLD`fFLfUDRdRLRbkT\kdRcgn]^og^nvn=@rt?>d\T]f]:<\ULUm\UC]UEOUMFM\MnMC=mtNog^XxoNLqaXNCMLloflkMH?>Odlnf?FOIFMIOldf_MLh`d\_fLKR:KC:RCKR:KC:RTcRSCJS;JB;S\df_ZbO^dg_gc]gf]S^mSMfebjmcBKelKLlkLUkjUVcTM^TC^oaYo`YPGPjkPXktV_C=|FIDE World Cup 2015|Eljanov, Pavel|2015.09.29|E15s|1/2-1/2|B +EUm]DT]TFNxg?Tnf@Ojb>@l\TKk[BR[S;EtkRZwnKRsmU\ulEKvx@nhTKjb?>\jE?tfMUfK=Kut?Pwv<`gmP_mwQYqiYai`ahwhO`tmHPe]K]m]V]ru@Hu]GWog`V]uW^g^U]u]_ixw>?hWPWpiW_wo:=vxHOldLT]U=U^U?AxyA@yu_gof@pumpxUMxvfovyofyiMEgofn|FIDE World Cup 2015|Svidler, Peter|2015.10.05|C54g|0-1|B +FVl\DLmeEUxg?Mph@OwpIQvx>@e]V^gV?>t_OY_fGOVP@IP_Y_f_M_h_U\ulOWl\@wxXamw@Xln:@rtUOtlNUk[OY|UKR Ch U20|Kuzubov, Yuriy|2002.03|B22e|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLm]V]g]O^d^>^ldEUne^>uYHPYQ=FtmF?rv>vQ?@?wv@\UOUf^U_]U<`qi_nun`gng;EsdBJjZT\t_DRgnEV_VHVn\:<\cuEA@EC>LWg[dkdPNgL@gV?>m]T]u];L]ZLVtf<`qi`YwSDLULCLSJ=;vxVgpg>fJCfgZL;_dn_Xnh:=LDO>DL>MLUgWUpMCpCYgCDIYiaXaru=?ueaiegWgDLi`xqYa|6. World Blitz|Savchenko, Boris|2010.11.17|C56|1-0|B +EUm]<`qi`YldFNucCKn^@O^VOExnDTn_YP_PIPtfBJsm;Lwn?FvxKSo_EKcu:@jl?EXgFOqa:=aYPGp`W`gmEFm^KUtmGNrtUdmdFGyxLFn`N`x`IQvnCKk[=E`xA=xuFWdr=>tLWFL\DL^mEUmgBRf^USrdR[d[LT[dFLgmL]nw]cbZcmdmScZRKRmROFRdGNurcK|4th YM|Kosteniuk, Alexandra|2003.09.22|B97i|1/2-1/2|B +EUm]DTnf@Oxg;Lsm@kc=KtkTFun?@vx?>]gPYjZBRrbIQumKTbcDL_fO^mtCKfTKTwv<`gm^Xog`ipyT\cb:=g_XNmgGOtmU]ypi`xyYTqi`Yh`YGvw\dmtdktkN_wo]e|3rd UKR Games Men|Rakhmangulov,A|2007.05.21|B06|1-0|W +EUxgDTnf@OkcHPtb=Dl\U]f]T]bk?Hg]>@wnDVsbOYphV^og^Vut?=blYhqhVhvuBJc[FV]c;LlfCS\SL]fwhpyqpxc]V]meJSt_@xgCKvx@k[@AulBJtk:=rtE>\UOUdUNUn\>Y\U=UogFMqi^gwgW_tw?@m\_f\fUXfWYPlnXWgWLFW?FU?@A@wvIYn>@I>PIPxoPGogHPktDLtXMDp`Y`i`DKg^KDvwGHXmUO^gDK`XOUg^KDbZD=^V|Corus A|Carlsen, Magnus|2010.01.27|C11i|0-1|W +FVl\@OmeEU\UOUxg;Ljb<`sm=Fph>gmUKZlL]luIYrtYanf]LpLCLugahoh=em^OA^TV^goeUiaAVk[>=tlK\l\Um\lmoxoPXaX=AopVHwyAypyHXlqX=qo=Uyp<=h`W`phUYT^YQh`Qfo_fb^T=F_^FGTNbjNXGO^_OF_^FE^]E<`WjoWVoqVWqY]^EdRPayqaPl\YahwE>sdAYwm=Mqy>?dZ?@rt:>tdaiphU\RJ\cZTcjJjMUjlGWdbP?yqYQmc?IbBIXcm>;BDU=DB=KBrKkl\@Irt;[\lkltl[smsXgvwgqwxqwogwflq`gsmgpTEf`|WICC qual Moscow 25'+10|Shaposhnikov, Evgeny|2002.04.22|C16n|1-0|W +FVl\@Ome?[tm[mum>@xg?>sdCKphDLwpEU\ULUe]V^gV;EVE@phLVm]K=vtFW]_HX_oV`og`VgoV`|Aeroflot Open|Khalifman, Alexander|2004.02.22|D20|1/2-1/2|B +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDLg`JDvxBR[R:RbZ?Txy>@rsCStmRBZSDSdSLSo_V_m_=K_fS[utBbt\bd\d[dsKTKwtGW^W?>f]K]ph>fypfetl@G`nefpwGOnufVlnVWwpIQulWSpg]VleSRelONn^NM^ZRSg^VOZ\SV^gVUl^Um\LMEqaO]aYmog`on^gnvL\]Og^vw^ewoe^EM\LMVL\oq`gVMh`OVgfqi^gVO\LMEL\iqg^qmfgO]g_mo_homh_]O_fOX|KO|Carlsen, Magnus|2006.11.01|B33|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWuc=McC:;CJW_wn_fof?FJZ`EZlHXqiMQvxX`i`Ufld>@e]V]g]L]d]FMw?;?n\EN\NQN]fMTfTNvxqvaqx|19. Amber Rapid|Gashimov, Vugar|2010.03.24|B97|1/2-1/2|B +FVl\@OnfEU\UOUjb?Mxg>@ul=Fm]V^gV;EV\EOsd?>tmDL\MFMqiBRp`IQwpMNrtCKdULUlLNpwJwvwO>bZ@?wn?FtdFEytHXo_^gng:BmvBDvhDdtd>OdDE>D<>E|65. ch-Playoff|Svidler, Peter|2012.08.13|B42|1/2-1/2|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LuvIQqa<`tf:=wnCKaYLVf]?>ru`WumO`yiDT]V`Vm=>=ifV`fh`Od\=MhbBRldHX|17. TCh-RUS Premier|Jakovenko, Dmitry|2010.04.04|C67|1/2-1/2|W +EUm]DTld@OxgFNjb;Lk[T\sm?Mn^O^m^U^gXGWw\=Ouc>FXiIQi_A>qaF?tfBJbZM_f_NV]VLVvtNtk:>cU>FUVNVu]?GklGPlm^fofVfp`fnmenfemfnmenf|FIDE GP|Bacrot, Etienne|2008.04.24|D15h|1/2-1/2|B +FVl\@OmeEU\UOUxg;LphelNWn^U[b[L[ld[evweom\Eudvuvwvoy\KBKpyW^y^>^vo=UcmUWmgWRrs^Zk[ZrscRjtmjbcbrbg]@xg@wn?>k[RKvxBR[SRZmeDLrsKTtfTbsrb[dZLSZK:rur;LKUOU^ULFrVEMVY;SV^PVF@?FDKS\c;Kp`KOcUPeqaIQxpHXaXQXphenDlnel@wn=OulOPvxwvIQZd]dld=Eum>=bZBJvsOIe]IXgXYXsuXFmnEMxwFEnmENogMEdkN\woJR[R\ZkdZSmkSXowXOkm=:dT:=]UOVRJCJTLEMLTGWT]=>]V>Vm]@GutW^g^GOwoVF][OVtxo]^bBHXBZ^WZRWORJ|Superstars Hotel Bali|Polgar, Judit|2002.11.30|B87|1/2-1/2|B +FVl\@Ome?[tm[mum>@xgV^e^O^mt=OnfEMsm^Tmc@usCKbZGW`u@Arj=aog:=dnDNuc]csc=Mc\a=wuW_foPXZRX`RKBKxw=Xur`gpgXYnxNXwnYqj:XNnwqYrBYP\dIQ:?N?B:AI:BP>oa?Pav>Sd\S>vdP?xi>YioY>wnQYoiME\ZIQBJ>PioEMZr?NryT\JB\eoeN]d]M]ytKSBDQItT]\TFPxeo\DFDxsDEsjnwj\wpS[oi\nionJoe[ceVJOVeckESOaeoH]oyIQS;aXpiXO;cOKcGks2G_QI|FIDE GP Tashkent|Ponomariov, Ruslan|2012.12.04|B33m|1-0|W +EUm]DT]TFVxgV^g]?T]cTMsd@FtXGOXf;LfTMTcT=KTc^fof@vt:iaVP_ePal\QYe_YX_UOWk[ap\TKT[T>feRLJD>=ef=EDSEFfeFESMEFM\F^nd^]ef]\dU\^fe^_UO`XOU_]||Dreev, Aleksey|2004.05.09|D20|1-0|B +EUxgDTnf@Okc;Ltk<`qi`Yp`YPgaFNmeU]aPIPwp]fpLCLof=Uf^O^l\UMugMhvnhgng^XgpXIia:=aYIOYPAyPG>Gpy=esd?MdZO`rwGPkbeiyxiYwvPGv^`O^fYXxwXWwxHXfeMFeiX`ieNVefV^bkWgfnGPkOFOn^O]xpPW^>ge|26th European Club Cup|Korobov, Anton|2010.10.22|E12y|1-0|B +FVnfEUm];LxgV^gmGWl\@Osd@tkTcgmRZo_GOmcNcumCSnucNug:;stS[b[;[^VOVwv[SgLF[mu[vLSvdkb?_SZIQts@IphN`ul_OsS`iSs=:bFOGFM:g|Superstars Hotel Bali|Shirov,A|2002.11.29|B32|1-0|W +FVn^@Osd;LxgEU^UOUwSUdkd?Mm]V]vx>@d]IQld=OSnphWiwvM;cZiEZuFWm^OP^dWfofEigpi`uZ`EZuQYugYahaE`go=MvwMOom`iwOHOf^;_mn_fxyipnpPpypf]rt]dtd>^\TKSdb^abJa\JL\lphljL<@HTLjlLDBR<;lD;SDBScRZcbHPh_OWqiBRbhPQhbQYbrZbrjYa_gaig_RZ_WihWOZBOVhgV]GW|World Blitz Final|Chadaev, Nikolai|2012.07.10|C47|1-0|B +FVldEUm]V^t_@Onf?FxnDLqi;E_q>@smCSjZBRnh=KhWF=ZSLSwnHPWQ@HQ`O`n`RZvxKLmsEK`n=FsbK\n\S\bll[LCogF[d[:Jg^>^wgGOrwESmdCFwvJNqhSEdmNKvwESmdKNwvIYh_Ya_qPXxyS>qxNKvw>YgWFExqYPWg^NdbP^goX`i`aiyxipwrKJ[SES`XOWqVHGo_ScbTcf_oNV|FIDE World Cup 2013|Eljanov, Pavel|2013.08.19|B12q|1-0|W +FVl\@OmeEU\UOUxg;Ljb@m\K\e\LRuENE\T?=wuENgmHPnSNESE=Ems:=uE=Esm@GxwGNwnOWphFOtlIYmsDLsdW_h_V_f_RcnwcT_hOVhVNVog|Aeroflot Open|Kulaots, Kaido|2002.02.05|B90o|1/2-1/2|B +EUm]DT]T@OxgFNnf?Tjb>@l\U\w\=uvuTFunCKsmf^UCteO@eTFT]TGOVeNVvm@FmfFLphJRg_R[b[V_h_HPTMC<|73rd ch-UKR|Kuzubov, Yuriy|2004.08.24|D27l|1/2-1/2|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LtmIQqiCKutjZBRwS>=yvFPhW^fmfCpf]piWQ@?]OHOvxiNSe=Ekc:=tk?H|12th Karpov Int|Bruzon Batista, Lazaro|2011.10.08|C67s|1/2-1/2|W +FVn^@OxgO^me^OgV;LVLELwnFXQIe]GOXRHXneI@fpEKRm>=aXOXvV=UrvN@rtFVc[?>]VEV[T=FtsH?nSFEuZLSZSEWsu:;SJKTmc;NMENM|Aerosvit GM|Shirov, Alexei|2006.06.19|E15s|1-0|B +@OxgDTldEUm]FNt_;LnfOY_h?Fsm>@weHPunCKgVVg;Cyr>;nuCBgx;CxnOFumB:nxKJxn:AnxFMxgA:gxHOxnOFnxS[b[R[jJ:JrJCJd[JZxnM[ndZRmtFMonMLnuLKulKClsCLslLEluEMunMFnoF>on>Gno[FtuF[utGOonOHno[FtuR[ulFMogHQgo[RltMFogQIgoI@og@?go?>on>EnmR:mlFMtuM[utELts:Rst[dkdRZlmZjtljrltrtmtLStkSZkjZS|5th Kings Tournament|Radjabov, Teimour|2011.06.12|D12n|1/2-1/2|B +@Om]HPld?Ht_EMnf;ExgOY_XIQXaPXgmEOahFNwe=Fm^Yh^OFOqhrj<;qaFNt_TFwsCKaYFTsS=Eec;:gvBJcZLBSkNLZLBLveLRklEFh`RCe[T[b[:B\TKSlmC=og=LjkFG_hJR[RBJho>=n^]ekcGEg_S[oa=;avLRmeEece[ceuckus;c^VR\VN\fpxf`va`OaOHOxoc[ogOWNF[^sk^FkpJSpPSTPQFGQPTUYQDTPHG?QI?AgfUNHDNODLOGLTAI|UKR Ch U14|Tukhaev, Adam|2001|B09h|0-1|B +FVn^@Osd?[xgEMw\;Ljb[dmdO^uU_f>Nwv=UkcUSbZSRvnDTnm\clcT\c\RZ\TNJmuZjqijltlWluMJrxqlZiaIYf_BRMeZLd\RZehZbhHrw_fbjf]jr2]rwrHGrt|FIDE World Cup 2015|Onischuk, Alexander|2015.09.15|C65j|1-0|W +@OxgHPm]?HtXDTldO^XfT]d]EUph;Lwp=KucKcjcL[sbFnfBJblLBl[BSdZJR[e@meUOt_=gVO^VLCLe^BJSd?Y`<>qa>FumL>^VOW`_CLk[?@xoHXaX@XryFHyqJRdnLZ_aXYaY>YqYZb[RKRm]bTowRZ]aHPn_T\wx\]xw]rworkowktwotTowT?_PIPwnZbaybjYa?Ag_A:aQ|SportAccord Blitz Men 2012|Jobava, Baadur|2012.12.16|A01|0-1|B +FVnfEUm];L]VLVsm@OxgVgmgDLwn?Mvx>@kcO^tk=Fl\U\u]^O]\@yxVNGOldOVZSJSd[=[SCguvgpip=ES\Emp^IYvymj\]jZ]UZ:U]:=]\=M\TMNT]NK]TKcT]OXyr_grRXa^PgoRYahYWhpWopo|It|Olenin,N|2001.08.05|B45|1-0|W +FVn^@OsdEU^UOUxg;LwSUdkd?Mm]V]d]>@vxIQld=OSetu>^a=]TuE^_=D_oDMTfEFogxpgopxogxpgo|Piterenka Blitz 2012|Nepomniachtchi, Ian|2012.12.29|C47|1/2-1/2|B +DTxgHPld@Om]?H]T>@sm;Jmc=DphJTcTDTwpEMvx@sm;JmcO^tf=DphJTcT^Twp?=vxEUutFVwuVO>=WN=?OF?:NWohW`:BFOh_`npineBEe\]mKsmosxEMOHMEHQ_VTV]QXWPXOP>ayEGOX]VX`>LyuL>ueGH`g>YgfHBfmBR^fRTfnYnefVMfnZRmdRJnjTLU]|4. Zurich CC Rapid|Kramnik, Vladimir|2015.02.19|A11|1-0|W +DTn^;LxgHPm]T]g]?H]cFNsd@Fwe>@vxGW^WFWt_EUumCKwv=EeW?W_QHAructGFQXFNtnLDjbDGnhAHXQHOQXOHXQHAQXIYhwNMqi@IwhMEXf>Nh^AO^OGOmoRZohEGhXOHXhGWvnHGuvCJnmJ\hoV^g_PXphYah`W_f_X_oaNQaX_gmqGDxygoXWIHWoQOofHPqoDVypKSoOVOfoOMoWPHWXHGXWG>W<>F@dnMDuc]nmnN]nkDKc\=Oxy]N\NONkc:=yxNMwu=Ec\?=fTMOscO_qi@H\dHIdv_OvfONusKT[TE]fnBRnlIHcd=EsKNFlsGW^WPWskRZK[][b[E]dbW_bZ_gkmgpmfYaxpFOZj][jn[_fV_opxonVnO]no]eoaeuxpuUpqUTahHOh_ON_QNEQITFIWEMW`FVqpVUpqUmqyLTiamUyqT\aYCS`aUVqpVnpinfiq\daOMTYQfmqhdlOFT\FN\[NF[ZFBZcBGckGOkbOgbZg:Zc:gckgOksOPmdhaskPpdOaYOWYaks|Young Stars of the World|Khairullin,I|2005.05.18|B33|1-0|W +@Om]EUxgDT]TFNnf?Tjb>@l\TKk[BR[S;EtkNVwnV^gmETvx@wv@AjZBRkc|CHN-RUS Super Go 2015|Yu, Yangyi|2015.08.01|C65j|0-1|B +FVn^@OxgO^me^OgVEUe]?Mwe>@vx?>wvDTld;LVLCLv>=>qiO^ug:;kcT]d]LTt_;KsmM_g_KO_VONV_NO_VONV_NO|Corus B|Mamedyarov, Shakhriyar|2005.01.20|C42|1/2-1/2|W +FVn^@Osd?[jb[RxnDLphEU^ULUk[RKwp>@vx;LmeU]dZKDl\]dZd@gVEUVe[dmdU^e_=uvu;LuvLVtf?>jZIQf]HX_n@IkcIPvmV`nhOUd\U_qi_Ni`N]mdDTc[<`[T]Lrs:;og^gpg`NweGWyvPOg_NEvyOP_XQXsw>VyY;?wyVfYIPOyQOVhwfeleE]ULVTLCLUL@tfGWulBRkcW_fT@gVEUVe[dmdU^e_=uvu;LuvIQqa<`tfBJwn:=aY?>ru=uvuLVf]@In`V`un>=jZOU_U=UyaGWog^gpgDT|Moscow TCh-Student Final|Amonatov, Farrukh|2010.11.30|C67|1/2-1/2|B +FVl\@OsdEU\UOUxg;Lme<`nf=Ejb>bZCKyxHPvnMTiN?OxX>?rwFWNWOWZRKRmR?MRdTKX`V^`^WT^]MF\cTY]^FMdHYUe]ME^VU]f]E]cl]_woKol^=mnwmu|FIDE Candidates 2016|Caruana, Fabiano|2016.03.28|B67i|1-0|W +FVphEUwp;LmeGWxg@Ovx?Msd>@n^W^e^U]dUO^g]L]p^aYIQlnMLtfL\^UBfnfV^yrAIrBgXUE>EBE?W`q\@xgV^e^O^jb^mgm[FnfEUwnU\n\;LvxFMkc=Xph@me?=jb@l^JRc\K\m]FV^UV]f]\KULCLtXGOXfKUdU=UuZ@ulDFsdtl>=wu=FgnIAngA:gYS;YINGIWGNWINGIWGNWING|5th Kings Tournament|Nakamura, Hikaru|2011.06.19|E12u|1/2-1/2|B +FVn^@OxgO^me^OgV;LVLELwn@m]=Dsm?=vxBRgVE>o_RZne;Lun:BwtZcjc=:bkBrtr:rkrT]VL]fLFDFmwFbrkbcwfKSqi>LnlcZlZSZxoO^e^U^flGWofLSfmH?|5th FIDE GP|Leko, Peter|2009.08.12|E15q|1-0|B +@OxgHPm]?Hl\>@phEU\UOUwpUKvx;LnfFV]VLVgV=uwuHVsdDLf^tfN`uvHdkd>^f]`Wwp^vrvKEjZLT]o:;ZRCKRKBKqiIYvnKSpLS[d[T[nk[coB;[iaEOxoW^L^O^|Tashkent FIDE GP 2014|Jakovenko, Dmitry|2014.10.23|A08|1-0|W +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn>@vxFOtf?>smBRulKErtE?ld?Nk[R[b[N_wv>FnwL]f]V]dkHXph_iwi@wn?>k[RKvxIQtkEMmeBJum;LwvJR[SLFe]V]g]FPnwRZdUOU^U>vrv@vxW^e^GYmf@AxyOFZc:;gxYGcZL]n\G>Zu;=u`=MfXFE`EMEXf>YxiYnwvn\t\]N\l?=yxKfofEmvt=eiomltlefxwA@l\IY\l@GlmN]oef^moGFeT^fTCfewv]NCReUR\N_olFNph_evne[ltUTjb[UtlUK\fTlflK\kc\Rc[R\[SNUbZUTne\ke^kZ^VZdVWdSWPS]lrT[PH[dHQdkQYkrqaDTYPT\aY\dYQ]NPONX|FIDE World Rapid 2014|Yu, Yangyi|2014.06.16|B82|1-0|W +EUxg<`gV`Wm]FNl\?M\UNUsdDLt_@FnfGOVeWeweM_f_OWvx>@wv;EulHPdZ?GZTET]T@?vVF@rv@Old?@k[=?VNBRjbR[b[:=qa?HdVO`N>=>VH@Hv>`O>;GEphU];:OU:ZUdZBdUBZUdZBdU|63rd ch-RUS|Vitiugov, Nikita|2010.12.16|A45w|1/2-1/2|B +FVn^@OsdEU^UOUxgUdkdV^un=Fg]DT]c;LnfFVtbCKwS@]WTfWf:qaHP`X?Hf`^f`fLgux>Vxhg^f\<\]\^WhfVRjZBJ\[|36th Olympiad|Mamedov,Rau|2004.10.20|C45|0-1|B +EUxgDTnfHPm]@Own?Hvx>@]T=DjbBRtmDTmd<`d]TD]VD=l\U\n\=uwu;EVd?dH@Hqi`gmg>M\wGyu?FuUWNf^RcjcKTU=A=bk=;gmL]nu;CrR]LR:HPphIYqaCEovL[kdOWd[T[mgFOulW_h_V_^VOF:AN`l^`g^gEegUGHA@HI@;FavwecVN_gU^cf;CIQ^gfgwngOCKO_ne[c\T_ge^gd^UaoNFdTUMT2:>E>PX>GX`GOaiOWQYcsiqs;Ya;AahAq|Europe Blitz Ch|Sakaev, Konstantin|2002.10.03|D20|1/2-1/2|B +FVldEUm];L]VLVt_VP_hIYqi@OsmYahq?MqM=Mul;B>v_evwmk|EYCC B14|Azis Azizis,Ektoras|2001.08.31|B19|1-0|W +FVl\@OnfEU\UOUjb?Mw\UK\n@wvIQgVLVvVOEVvBRsm:Bun?>kcEVqiCKtb=Dm^>=vwVLo_L[h`GW`WPW^h@IxyFNhY=@wxHApg@xrx@smFVwn=FulEO]VMVf^O`gq`qyqDLjZIYm\?n\LRcdR\m\OUdcU_gVFNch_P\fPV]VMTfWNWVN|EYCC B14|Laznicka,V|2001.09.09|B93|0-1|B +FVldEUm];L]VLVt_VP_hIYqi@OsmYahq?MqM=MnfwvO^neGWruMOd\^mumU]f]>vgvT]ewELveL^lu^eweP_ugOVmuHXk[=E\TEHxwHFwxX`i`W`g`aiTLFH`aHpxwVXaA;DAIXH|World Team Ch|Mchedlishvili,M|2005.11.10|B19|1-0|W +FVn^@Osd;Lxg?[dUOU^UV^UL^gugELw\=FgnFn\n@V]TMsm?>ph=Fe^U^gx=mUVOaXOXl]@GuwXOUMhP]N=EMEGNECO]wv^fslPplepme^RZC[]T[ZNMvfTf^fmqfeMTedqidkiqkbTSZ`qY`p|Match|Nakamura, Hikaru|2004.12.10|B01o|0-1|W +FVnfEUm];Lxg<`]VLVwn`gpg@Okc?Mtk=Fld>@smDTul:ruCSxyVPwxBJnw<=g_MTwiJRWlO^m^U^_W=uxuPac\S\lZ>=u=F=iwagwn=mZumkypkdu=T?ng^gpgde=R\dWOHPRDeug^dl|Eu Rapid Ch|Volkov,S|2002.10.01|C11|1-0|W +EUm]DT]TFVxgV^g]?T]cTKsd@Ft_;Lnf>@umwgGDyw_PlPIPmp?gwg>?g?@?pPDqPNqIstIQNQHQtm?GmfGOf_QYjZCSZROP_VPXVUYaUNai]UiqUMqy2MEyANMA=|Tal Memorial Blitz 2014|Kramnik, Vladimir|2014.11.13|D20|1-0|B +FVl\;LsdGWph@Owp?Tnf>@xnV^me^eueEMn_LVenHX_UDLUO=OqaX`tmmdOGZTMTruGDdrIYnk>?uM:>wu>FkbDKpUNUMP@IPXUNbkKDXYIPYAN@aYPXA@?@kOXYxp|UKR Ch U12|Gajduk, M|2000|B23t|0-1|B +EUxgDTnf@OkcHPtb;Ebk?Hwn>@vxCKl\@uZH@>F|Corus A|Van Wely, Loek|2007.01.16|E20|1/2-1/2|B +FVmeEUxg?Mn^DLe]U^gV;EsdEV]VMVu=>=d^wv:=_eBRxwO^vnCKrv^Mn>=>v>M>wnDMe_HX_iIQo_X`ioQYneGWl\Yakc>OjbKSe]LT]eRZcZS\e\OUphaiouMLZRUOudOYduYOufO^fW^m\dmwRJwqWfqgf`g]`oiqdeLKh`KJ`X]NefJSXPNHfeSZe\Zb\TbcT]cl]Vlm_WmnoyngWOHYOG|UKR Ch U20|Ivanov, Andrey A1|2001|B07h|0-1|B +FVl\@OmeEU\UOUxg;Ljb?Fnf>@wnBRsdnu>FucGYhHFHdOYXOXQXe]AI]UHEULCLktIPtfSep`e^xqECc\Csogskqh^s\NknNWsW`WPWfonlofLTiaXahaT\ah\df]lthodlonty|Eu Blitz Ch|Van Wely,L|2002.10.02|B85|1-0|W +EUxgDTnf;LwSFNl\@F\UNUvxBJSnU]f]T]n\CS\cLRwvRcjcIQmeGNLA@vxEM]UNVgX;EXN=FN?:?tbBRueHP\TKTd\CJwtEKtdV^elO`og`Vg^W^l^J\ru\jbkFGuwGUw?@?^_UGdbj\kVMV_VKEVAG@bg?FgfF=Ar\UpU@UrA|SportAccord Blindfold Men 2012|Bologan, Viktor|2012.12.19|A01|0-1|W +@OxgDTnf;LwS=DvxBJSLDLmeFNkc?Ftk>@jZCKsmu`@AfmNGvfETcT?TfhfofIQhgS[WeGNgwEUe\NE\JUYJ:A@RJYR:CENJBNJCJRJ_;@GwtGNtLJLB:2Ld]UNG:CG@UM[cMEdeCSeuxqckSc|Tal Memorial Blitz|Grischuk,A|2008.08.30|A17|0-1|B +EUxgDTnf@Okc;LwS=DtkBJSLDLvx<`meOEsmGOrtFVqi`Yl\?M\ULUm\MFf^UG\f>@p`YPfU?=gaFMaWG?ugPGUfMDghHPWa?F`XOXagIQf`@Ie]GN]UN`i`=?xp?_wyIHgmEOogQYhi:?yqCSpy?A`YAYiNFNUNDMkbYqyqX`bTMTtT`gNFHGTVgoqpG>pwO`VX`qwn_`X`q`jZS[ng`Vgo>FofPXf]FMmwX`wfMN]T`hZRVET]E;fUNM]f;LfgMVUDL;DU;LUD|6th Tal Memorial|Carlsen, Magnus|2011.11.19|E21|1/2-1/2|B +FVnfEUm];LwSV^l\BJSLCLul=Xo_XPlo@FsdU\tmFUxnU[vx?MohGWjb[ers:;dZEjt;Ste^emdA@xoIYwyHPsuENumLT]TMTZTSTytTSbZScZRDLty@;yt;StrU^rxNUxrUTd]T[]dcdkd[dovd[mk[TkSLSvmS[h`Y`ph\dmtT\rZemtu^gulmu2|Canarias en Red prel 3rd|Sellack, Helmut|2004.05.05|C18e|1-0|W +EUxgDTnf;LwS=Dm]BJSLDLgVLDl\U\sdFNuZFxw<\usA:ZRFMwn:JsC\DCSD\nuO=ulGOlc\[lDBSK>Gu]NV]\<:\Z:@xy;:gXIQ_WLVWOHOwOV`Og`fgfQXuv@HvhGOrwNVfgJ@vxDTldT]d];LVLCLsd:;ul?>kc=DqiIQtkFne;>eWEWlWO^d^F^kdBRwvM[v^>^WgDFxwFXjb[bdRbMRmM_m_X_g_^_wn@?nf_Out?FogFMfeONemNFtT|Eesti EST, Men Ch 2003|Paernits, Rauno|2003.05.17|C42|1/2-1/2|W +DTl\@OsdEU\UOUxg;LnfBJwnFVvxUOkc@rt:tlWN^mCSurLRld=KnuGOdt@AulF?xyKCwxEKkdRLdkLRkdRLdk>=rsN@p`T\e\S\c\K\m\@\lIL]I^\U^UCUf^Ucg]V]xh@]T=DjbBRtm?=md;LdOHOsdOdkd<`rs:@nfT]f]EMw\=K\c;LvxLRwvcTC=^X?>h_W_e_=:vr>=_e@HnvHOX^OF^X=EogF=xo=DX^DKrRQ?Rr?F^XFOrb:>ohO=hoKBbrB;ox;Ayq=Dqx<=xo=Fe_FO_eOHoxA>xoEFvn>:nvF>X^>=rbH?vrDKoh?Fhq:BetNVtcGW^XCUctV]tn]dkdJR[RKTn_U\rvFEbrTovuoaXiaO_POdrtdktlkOlmELi_OdmlS[lt=>_YBRY_RTphdO_Y>nqiOkts\jY_js_nslum[cPFLEFUkH|KM FIDE GP 2015|Tomashevsky, Evgeny|2015.05.19|A11|1-0|W +@OxgHPl\?HsdEU\UOUn^UKm]<`tf>@wn`gngDT]TK\^V;EgC\fof:;TLHVuE=ELE;Cvt?=uUGOyuVqd^IYjbCDtsYauyqVyaDEUE=Esl@H^TEUTeVDa\DKlmUX|KM FIDE GP 2015|Svidler, Peter|2015.05.17|A05|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUgmBRrsR[b[U\e\;EtkE?ZT?NTN?UD=DuMN\suE;Y`IA`W\@o_V_^V|18th European Teams|Borisek,J|2011.11.11|C96|0-1|B +EUxg@Om]DTnf;Lwn@rt?=jbO^uc^dtdW^gVD;VL^LwuFOqiIQcl;Mne=Eog:=eI@AI^LUdTMKk[OFTdJR[RKRusGW^URUbZFOsSUMd\M;lk=@gVEUVe[dmdU^e_=uvu;LuvIQqa<`tf:=wSBJSLCLf]OU_U=Uk[?=vwJRjb=:rvR[b[GWwx:jxqjl|12. Karpov Int|Bacrot, Etienne|2011.10.10|C67|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb@rt=Fvx:=nuGW^WNWuc@AcUTKxyIQU^W^d^=Umn?=gXA@wGFGXG@GtuG@p`LF`XQX^XV^nY|Amber Blindfold|Anand, Viswanathan|2008.03.21|B90|0-1|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWul`gpg=Ek[>rVOQcRZKVHQPHk=MaYPXi`FORLMLlcOkckKZkcCSyu;CnwLQe]XY`Y>YwnY>cUDLUcZKtTK\]ULUTUQq|Tal Memorial Blitz|Ponomariov,R|2008.08.29|B96|0-1|B +FVl\@OmeEU\UOUxg;Lsd<`nf=Ewn>mcT?wuUWrtESu=>=nvWUc]Sek[?Mvu<;jb=?umUYqiHX]N?@NTMTmj@?[TX`i`Y`|3rd UKR Games Men|Miroshnichenko, Evgenij|2007.05.22|B65g|1/2-1/2|W +FVn^@Osd?[xg>@w\DLvxEMme<`un;EduMU\c`YufETldTcjc[RfWRDtXIQXa?>qiYPgqPW^W=Mq`OEwvQY`fMQc[QI[SU]SLCLfw]dkdIWwhWIhY>NahETvuV^h_^engDK_f:=f]I^ghNP|TCh-UKR|Nechaev,An|2008.05.21|C65|1-0|W +FVldEUm];LphV^wpGWqa@OtX?Mnf@i_NGsmLFpwCKwnDTmc?;vwT\cmKSk[\cjcBRwpM_h_OLd\U\c\S\ul\dms;kltFUyvknvnGY|It (active)|Bosque Ortega, Xavier|2005.11.20|B15i|1-0|W +FVldEUm];L]VLVt_VP_hIYqi@OsmYahq?MqM=MnfvxP_nS_ipiDLSJE@clMOog`WweOPm\Welq;:\VPYvxGOV`YWq_W_f_en`O@?xPU]d]T]yp=MponeOIeP|Renova FIDE GP Zug|Mamedyarov, Shakriyar|2013.04.23|B19k|1-0|W +FVl\@OnfEU\UOUsd;LulSnOW^hV^gXLVvxN\n\V\og>PXi?Mg^MhqhW^bZ\Vi_Phl^K\rjA?me<;jn?O_YOwxwhqp`qi^pipnp=epl\ftfef`XfgwngGldCKdfGWYHWXHNXYfdDLdhVPnm;GIUOIA>FXIqickOEIXiqkcEOXIOUA:qickU[:BFMBH[ekleVIOiaHBa_O>MTZR_olcKRBRT]RZ]UZRUN>HNGRBGPHNQYBZPQcdoONTOMT^MedlQPZReURZVgZ\gV\ZU=^oPWoiVPZ\=M\ZMUZ\LTldUVdeWN\tVUefNMtrUVfeMUrxT\emPaxwU]w_V^_?\dmuap?=]\=<\c<;^[;@wv:;jZMDmwBJwfWIneO^gmCSZSJSm^U^ewS[rJ[dkdLFurFUd\U[JBD=vsIPwn[Ls;=;BJ;CJZ?=]UNU\ULFZBC[rVF@wnEMmeDLvx?>tm;EwvE?nw?PqiIQphMUwpRDunFxy`OvoOYrw:?yqN`ndGW[SJSZSHQSKY_f_?:wsA;mtQNscN@tk]_?Qh`Y`_`>?f_?HvfS>fiKSaYBRYPGP_qQX`XS[Xh[dhdU]dD@H>GoG=MGDMNDlk]ljNFH?]T?@VNjnF>@HNFnV>?PXF>2V>?>HP>:|Russie-Ukraine (match blitz)|Riazantsev, Alexander|2003.12.14|D45r|0-1|B +FVl\;Lme@FxgEU\UFUjb?TnfTKk[>@wn=OulOPsdUdld?>tkBJruGOvx=wu`Nd\@GqiN\e\Emum=mgmL=p`DTm^T[b[KDkdCSyp|TCh-RUS|Rublevsky, Sergei|2008.04.13|B87|1/2-1/2|B +HPn^?Hm]EMxg;Lwn@Osd>@vxFNqiBJtfIQum@IruCS^VMVgVLFng:;f_]UQYUNYaNG@GL=G?=N?@hVHVfVkoNX>OXgojZRjZVTO^TDZRgaRTDBJRag^MgmMWm^T\BRWf^O@GOUfwqx\txowmUftdonm^RV^OVWGFWO|Eurasian Blitz Chess Cup|Shoker,S|2016.06.18|A00|0-1|B +EUxg@Om]@tT?;wt;KqaNVn`IY`Z:ZR>NX`NncsphschaRSn>ckqhSc|FIDE Candidates 2014|Kramnik, Vladimir|2014.03.23|D02l|1-0|W +DTxg;Ln^@OsdEMm]T]g]FNwn?Fvx>@tfBJjZ=Do_LRue?=ruMU^VOEfoRLeiL]o]FTxyT]u]E?]eCSZSJSemia:Sh`YWr:AIgX|74th Tata Steel GMA|Van Wely,L|2012.01.27|A28|0-1|B +EUxgDTnf;LwS=DvxBJSLDLm]@O]TLTkc<`tbTRqi`Yl\U\c\:=ucYgpgFNb?>?sd=;rs?Fc[R[s[FMwsMDdZOExwCKwnDLnm;CmdA;suKS\SJSZkETke;:eVLDVGCKux:bdlbj[kjklkHPGXKMx`IY`pMmkdmjX^T^g^DM|6th Tal Memorial|Anand, Viswanathan|2011.11.16|E36|1/2-1/2|B +@OphDTwpEUo_;LxgHPvx?Hme>@ldCKul@\UOUdU=Uul;Ee\UMwuMFtmEV\nLT]SuvIQrt@A^h>vmvaXvmXOh^O=xyCKk[]Ne\?>mfT[\[=F[Z>=ogAIZ\=EjZED\UDtftNTtb|37th Olympiad|Tiviakov, Sergei|2006.06.03|B22o|1/2-1/2|B +FVl\@Osd?[meEU\U=Utm[dmd;Lxg<`nf>vxUEqi`Wf^WPrt<;k[EF[SL]g]V]dmOEul==]VWetD<;VH=EDE?EHEewxwbjp`BJwpjZfB|FIDE GP|Topalov, Veselin|2002.04.03|B53x|0-1|W +FVmeEUxg;LphGWwp?Msd@OtX@uZLFruFU^UNEZ\CS\cE`qi`gpg:;g^OFxp@AueBRcuMQeg?gug;?gnS[d[R[nlFMwsHPscAHiaQYcg?g^gYWg^W`og`EaYEGYP|Vladimir Petrov Mem 2015|Stocek, Jiri|2015.03.07|B09b|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wnEMk[RKvxBR[SIQme;EdZKBl\DLZdETqiTNrsN]tfo_OISLELZK:JucI?ck?NKU=an`a=_WNTk]LU]U>VU]=XwuRZs[J:]o:>omX=m_=R`gTJ[CRde]|Sberbank GM Rapid|Naiditsch, Arkadij|2013.06.06|C84|0-1|B +FVl\@OsdEU\UOUphDTxg;LdU=UmeEf]T]jb@m^U^V\GWphMFt_@sdUDSLELqiT\kc\cjcCKm]umL]m]=]f]>ETLEL]BLSg^S[_W[c|4th Zurich CC Classical|Anand, Viswanathan|2015.02.18|A22|1/2-1/2|W +DTl\;Lsd@On^HPph?HwpEMmeOExnE?n_IYqi?N_N?LD;>pLPODE>;EBMU\UNULU;>nw?HwpO_BTV]TD_opyQOUpopv>Og>f]fDVHPV^g^e^pnsuf_yxPOuUONUSnjSVNVxw_fwvjqvuqiuliqlsqn|Europe Blitz Ch|Van Wely, Loek|2002.10.02|A37|1-0|B +FVl\@OmeEU\UOUxg;Ljb@gVEUVe[dmdU^e_=uvu;LtmIQ_n?=nh<`wn=Euv:=mf`nvn@IqaLVf]V`ruEU]O`OuU=UyvUVnwVNvuHXaXQXwnN>u]IPd\BRkc>N]=DThwRZ=GdUFUf>G@\U`]tk]U[TIY>^U^v^@G^Z:;kd?Tm]TM]UYaqiAYZRYWruW_jb_\d[M[b[;[UM\LME@jb[dmdEMgmNVm\;E\fETog=Ewv@Ak[TNd\DTfUFPldGOtf?GbZN_ZRCU\U:?RKBKrJ_eueOWJKT[K[W^e^PFd\FW\TWfTLE<^fIQvs@l\M[tm[MsdGOph@ArsM;stE>wi>YmfU\iN\cjcOWfXYgugL]gYHPYu]Nu=N=XF?GdU@\VD;Ve?>uZOUZ]U[]V[eV;=;neFbtlBRSJCJwr;KgmbFlLKLpL>=rJ=eJ:e=:=F=|19th TCh-RUS 2012|Svidler, Peter|2012.04.12|D97f|1/2-1/2|W +FVl\@OnfEU\UOUsd;Lul<[SL]c]V]ktGWtQAQvwW^g^QIwpIGyiMbSKBKsKbdljGojoDKihKSoOdLOG=Mhg<;G@;B@jBKg?MO?:LNjNONphS[:rKSrsNO^VO?VNSTstTMt\CS\]MN][?We]NM[kMDksDLskWwklLKlmS[]UKDUMDEm]wxhix`]U`\ih[c|76th Tata Steel Masters|Gelfand, Boris|2014.01.21|B90e|1-0|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tfDLw\;EvxKDf_EK_hOU\ULUbZphNGfTMT[TKvw:Cog>=wnL]nfype^CJh`]Stxpixh=mfmiw`X|Tal Memorial Blitz 2014|Inarkiev, Ernesto|2014.11.13|B90|0-1|B +FVl\@OmeEU\UOUxg;Ljb@smO`ru=;m\CS\m`fof;Kxy?=ldGOgxLRwgDTghRcxg:;mcS[dt[bkbZctkT\e\=unuN\gm\Gqi@AyqKMbZM[mg[bkockulGjgaks2lsjsoWbZWNZ>h`F?aP>P`PIPNLsjiaA@p`jGqh;sL;KGNKD?Fgh@GDC>=Cs=msyF?aYPXhgmlghljytjntd?FdtF[tD[FDdnjdtjbhgbctlF=lLcsgp=FLlsrldrb|15th ETC|Perez Candelario, Manuel|2005.07.30|B90k|1-0|B +EUm]DTld@Oxg;Lnf<`qi`gugFNsm=DphT]f]?MwpIYvxYah`LFgnFPmgM_gV_V]VPVt_OErvGO_qHXo_X_q_A@`X@X_XOXnY>FYXFMvnD=X_BRxy:@]T=RjbRTk[TDtk@mcV\c]=R]l?Glf\MtmRJflM\l[JRrsmML^srRKNG@GMKBKc[^UjZSZrZ>nd\UgZBGO\THQtwKT[TnlBIQ?|67th ch-RUS 2014|Nepomniachtchi, Ian|2014.11.29|A03|1-0|B +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDLg`JDdnIY`iBR[RDSvx=Rn]S]bZ?[xyCSo_[drjV_t_SZ_Md[M[R[jo>@uY[FiWHPWPGPYPFHo?:?w?@?PM?@^VHGM=G?=X@GqaG>X`?TaYZb`P>EYQbjPGE<|Corus A|Shirov,A|2007.01.19|B33|1-0|W +EUm]DT]T@OxgFNnf?Tjb>@l\U\w\=uvuO^unTFtmFOsd^mgmOdkd@vxL]g]T]k]E]mg]Ee]BRusRZnSE`gm?=s[FPrZ:ZSZIYZu`EmcCKuYEiYPGP[\@I\DP^og=@xn;EntO>d\FM_hDLwnMhqh>M\TMWk[=XtcEOmwHPumIYyxCKvtO`mvKTcTWMwmXOxw`qwyq`yw`qwyq`yw|20. Amber Rapid|Topalov, Veselin|2011.03.13|B12|1/2-1/2|W +EUxgDTnf@OkcHPtb;Ebk?Hwn>@vxCKl\\UOUkH@HulFVsdEOjbUdldOUdk=OgmV^kOUOm^O^e^C^wt>=rjBRbZ=Mog^Wxo:=ovWNtdPXphHOjrOVruMunuGWg_X_|Baku FIDE Grand Prix 2014|Andreikin, Dmitry|2014.10.14|E15f|1/2-1/2|B +FVn^@Osd?[phDLjb[TmeEUwp>@unU^e^CKtfT]dund>NpwJwywIQXfNMgpO`qi`fof]dud=Ek[TNiaBRrsR[b[:bduLT[ST\pnNTn\bZ\dT^dVMN|TCh-FRA Top 16 Gp A|Govciyan,P|2006.03.30|C60|1-0|W +FVn^@Osd?[jb[RphIYqiDLmeEUtmU]dnLTxg;LwpRDmX=MvxO@ldGOXm@Fk[CK[SL=d]T]m[MEgaDM[MEMo_@vx?EH`WHI>NIHNKHpK;pqWXYQXPQIPHqaHAa[;KcHPZRPWRJ>=]T=@uYEeYne\n\;Dhv=]^]T]RJCJvmDVwr?<\eNTrt@tXEMsmIQXaDTnfT]f];Lw\MU\eOYvx=Dwv<`ahYhqhQYmwFV]VLVenV\n\U\wfDTuUTUfU?=ru@?UfCSu=:=xw`vuC^gv?Fog^Cl]BJvlF?bZSZurHVwo>;rZCUZj;KlfV]d]\dfUdkUdks2dsKsjJskoxkmJZ?Fxqmuh`Y`g`uephF>|It (active)|Malakhov, Vladimir|2005.11.18|A07|1/2-1/2|B +EUxgDTph;Lm]T]g]FV]LCLwp@Ol\:;vx?F\ULUuZ@tXENsdU]dZN`kc`nwv]eZdF[dn[vrvenBJIQXO=OJn?>pU;=n^OMU\Mbvn>Fqa=]^f]uxpb:f^:^n^@?jZurh`GOaYFEo_V_pgHXYP?Hg_HP^>E]>^]^_^PX\Nruc[us[Ss[^U[ZSKZ[UT[KTKQY`YXYKT|66th ch-RUS 2013|Svidler, Peter|2013.10.14|D85s|1/2-1/2|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQtm;LkcHX_nO`uvGWog^gpg`VvoW_qaX`n_VgmfLFwpgVywVPoxPafTapxp?GrvFWv>@IT]W]d]CKph:C:h`:^ldGH`iHFihDLwvI@vn@GnoG>oq^shg>EqQsj|75th Tata Steel GpA|Harikrishna, Pendyala|2013.01.22|C67r|1/2-1/2|W +EUm]DTld;LxgFNnf@Osm=Dwe?M]TMTvx>@jbTMqiBJd\U\m\MFk[CS\mLVulDlelVgmgnw>VTVLV\tYatv=>xyaiv^>A^_JR_hMUh_UTyxRZsrZb_mTKrbipxpKLogAqpqVg|ch-UKR|Pavlov,Ma|2003.11.07|B90|1-0|W +FVn^@Osd?[jb[Rxg>@wnEMmeDLvx?>k[RDe];E]UBRrsR[b[IQgmEKULCL[SLTm\vnA?rx>Yi`YQc\CKbZMTdmFU\^?>`WHPWPIPxPQA^`U_f_V_nwA]wp>npinmP@me@=]=aY=UywefYQfV`_VW_`WYihYQ|ACP Blitz Prelim1|Timofeev,Ar|2004.04.12|B67|1-0|W +FVl\@OsdEU\UOUnf;LjbUdkd?Mm]>@xg?>wnV^gm=XvwCKd\LRtkDT]UFrx:?luRCuvMVkVFVyaGFa_CMmwWYQHPvdEFbZ>?dV?>Vd>?dV?>|20th TCh-RUS 2013|Ivanchuk, Vassily|2013.04.09|B46e|1/2-1/2|W +FVn^@Osd?[xgEMw\>@dUOU\UDLUc;Jld[RmeRKjZJTcl<`qi`Yp`YPiaGOtfTNaYPGe]?>vwIQlc=DgaMU^ULUaWNXZRKR]V>Vf_:=wpRKulXN_hNTyv@AcjT^hVOVv^U^jGDGruG>u=>=l^=m^gV^ghAIkc^fWfmd|4th Zurich CC Classical|Caruana, Fabiano|2015.02.15|C65j|1/2-1/2|W +EUxgDTnf@OkcHPtbCKwS@rtFVd\V]f]U\]T\cmc?>TK=Kwv:=nwE?ul>vtv?NbkHklkK[vtLUtuUcu=N=jc=CkVCRV>@H>VH@V>@H>V|5th FIDE GP|Kasimdzhanov, Rustam|2009.08.09|E15s|1/2-1/2|B +EUxg@gXHPeiIYrj@HjnEO^VOIXIHIp`?A`YI@YQ\bnjb\j:=:tX@Iig:CgOA@vrLTxpT]d]KSrs\bscblcSCBSRBCRZlvphvlqaCDhqDCOg@@wn?>k[RKvxIQmeDLdZKDl\EUgmBRrsR[b[CKulU]\TKSZKDKTK=Ko_<`mcV_w_`nln;EtkOU_wUdnoGOstdjk]KDtuj[cTET]T:jog[JToLT^VOVgUDGULGNLS>;S\N\e\;kusklstV^qaltwtJ[tw[eaYjlohl\hM\]w?@IMh]U?>T\>@ldDTjZBJf^T]d]PXahOYwvYhqhFNm\=;]UKSZSJS\f:rurETeST^S\^TrjC@n_BRwnRZvxDT]TFT_YOYnY=Frt@Z\@AjZ:>rv>Vn^]fmf?>fmEWvV>VmdVT\GWUGUTUe]A@pg@Gg^GNwvNMdkDLSLCLkbMEbkOW^eK]k]LTe\U]\S][SRHPvVEMVn[cnmMLmlc;|SportAccord Blitz Men 2012|Radjabov, Teimour|2012.12.16|B77|1-0|W +@Om]EUxgDTld;Lnf<`qi`gugFNsm=DphT]f]?Mwp>@vxCSge:;mcOEtfLFwt?@ogCSn^WPum=KrvFOxyIQd[U^[?@?]UNUmULMUc^gcgM=wo?@on@Ik[JRqaQYn>R[b[KM>=O=vuMFuU=DUSFvyqDMSKM[gwvFKCFMwg[TCcM]gwTMqyMVwnGOcf]ryqV]p^]fnYI@YPrxqi@?PWxtWEtw^pwJE=?GpUGP=>PI>fJwUp|19th Amber Rapid|Dominguez Perez,L|2010.03.19|D13|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxEUtX;ohGOg_V_h_;>_M@A^V]W\tWMVM>=vN:;weT\t\Zk\]ke]e;KbZKJe]A@xo@GNFG?FN?GNFG?Ff=M]MJMZRMJfb?FofFMf]MDqaJNbfNJfbJNbfNJfdDCdbCD]^HP^UJMUTMmphmnRJnVT]D;bc;BcCBJCHPXHPVW]^WV^]VWPQJC]^WV^gXahaCDQODEg`EFOwVnaYnp`apqaXqpXQphQIhXYQXpwrFGrBG?BHpoIAoOQIOwHX|10th World Teams 2015|Sutovsky, Emil|2015.04.28|C91c|1/2-1/2|B +FVn^@Osd?[xgEMw\[dmd;EvxETgm=FwvJBDC]U>EUME@me;EgaYnunETaWTNngHPWQ@Adn[TldTKnh=FjZBRtfKfofOEe]FaQ`IY`OEOgOaOwOAHOo?>iaN?xw?Ewn>FneEOrwO`on:>wv`OhyMU^UOUphFNyoV^emNOoiOgnpCSZSLSixgOxiRZi_UKmlK\ls>;sjOMplMJ_U;=U_HQ_iGOlo=Ui_UEoqJKvnEMqyK;yqS[d[;[]U[cnl\flLfWqlW]LM]ljsl[stchMOQHOK[e_eheKN^ftleUNfU]fiHOlsOWsjW`iy`g|WCh 2016|Carlsen,M|2016.11.24|C65|1-0|B +HPl\?HsdFVph@FwpDLn^EMxn@ZRGW^WFWxyEOqiMU\ULUk[=EdZ:=ZTEGtkV^TNGNuc^fo_OYyqHkckYOrtIYkV?>VN>NpgNLh`Y`i`WFn]Ltwt=MqhFL]LMLtLCLe]O>gn>Dhg@GgfGO`XOGneGHfgHGg`|Tal Memorial Blitz 2014|Svidler, Peter|2014.11.14|A00|0-1|B +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn@Zl?=kcEFd^M[h`OW^hW`og`gwg@Al^GOuw=?hY[mgO?O^VmfxyNUVOFOwOUpypA@pgfXOWIQYh@HWRHPRB@rtBRmcRZcTFTfT?>wnNcumK=mlM>gaScTU=U^UcdldLFdVJOV^>M^ZOkZ`krxqrOf]|Corus A|Smeets, Jan|2009.01.18|B90l|1/2-1/2|B +FVl\@Ome?TxgEMnfTKsd>@wnDLe]V^gmKRul?>qi@jb:un>:_h:>h_>:nu:>|2. Governor's Cup|Komliakov, Viktor|2001.11.20|B50|1/2-1/2|B +EUxgDTph;LwpFVmeGOvx@gaHXuYXaYP@AmQ?@PY@HQXA@XOW_p^N`^I@?OH?HYPHAog`iPYAHYPHAPYAHYPHA|Renova FIDE GP Zug|Giri, Anish|2013.04.26|E81m|1/2-1/2|W +EUm]DTld@OxgFNjb?MtX;EnfCKsm@wn=;\UCU]g?@gVEUVe[dmdU^e_=uvu?=uv;LqiIQwSLFp`HX_nFPnhPatf@jZBRsbOHgm=Fng@IucGWf^V]^W?Wd]H]rvWVg^ETc\]ko_MU\lk]xyV^m^T^bS]KSd@ng?=dnCgwgHPkb[bgbDLbc:@e]IQwe?>ywW^e^^_DL]g]^]DK]MKB:BruMPu=@IwuBD=MPXuUX`U]`]M]DTpgTRh`IPg_PO][RV[KVNZRHX_gOVKNVNg^NG^gGPgfQY`YPYfgYagpa`pq`gqiX`iqgoqyoh|Match|Nakamura, Hikaru|2004.12.13|B23e|1-0|B +FVl\@OmeEU\UOUxgGOn^UKjZ;Lsd@vx@AkcKEm\DLn`N`u`CS\b[drsBJo_ET`u:;blSZtbZcbTclul?GljA@jJ;xo<:bTdRU]RD]a:jogjle]ldg^dlaIln^UDRIA>EF>2n>A>E>UN|Pedro Zabala (6eme memorial)|Zhang Pengxiang|2004.10.12|B54|0-1|B +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn>@vx<`tf`gngBRsdL]g`RZrtFXdsXfof]ctdDLsmcmum=Fws?=moKE`E=Ek[ZcscIYqiYaok@IcK:=knEMdc=EbZHPZRIHxqFXKCXhqyMeceECRJCkemksmusunuhfurfBrVGOVRHGRZBfZjGHjrfB^VOVrVHGVnB]njGOjs]ZseOHyxLTxoHQonPXeMQYMT|XIII TCh-RUS|Areshchenko, Alexander|2006.04.28|B92j|1/2-1/2|B +EUxgDTnf@Okc;LtkBJm]T]g]FNph?[ld[MwpLRul>@vxNV]WMDd\U\c\@wn;Lvx?=uckH>HskJR|Corus A|Kramnik, Vladimir|2010.01.31|E15|1/2-1/2|B +@Ol\DTsdHPn^;Lph?Hwp>@meBJxnEMvxO>tfL]rs>Dk[:;jZ@gVEUVe[dmdU^e_=uvu;LuvIQkcFTHX_YWPYhGWuMW_T]I?hY>FYO@G]VFVO`VF`QGHQ`FEME?Eqa:AphPYaX_g`OEOXOHOh`gn`YOXvnXQnfA?yq?>d\>Fc[CKf]FE]fEuqaurf^rj^ejbldbjo_BR_Wjo\TR[|Tal Memorial Blitz|Kramnik, Vladimir|2008.08.30|C67|0-1|W +FVphEUme;Lld@vxBJtk=>jZ>Y[SJSZS:rkrLFcRN@tXIQqaEMug;Exn?>nhMUhWQXaXHPXO=OWfU^g^EKphAvxAY^gOFgdFNwu=AuvGOdRNFvuYqRJFDpgV^g^LUuUDFJLqy|4th ACP World Rapid Cup|Shirov,A|2010.05.28|C69|1-0|W +FVn^@Osd?[xg>@gV?>VeO^wn[?e_DLd^>^me^>vxEUe];EneEO_n?Mt_=D_MDMogFm_M_n_HX_n:>xoEWeWFnoxOYWenmphYHwomoxoIQryHNldBRjZCKyv@?vV>FeWNHWeGOVfFfofOWd\?Fg_X`\U|40th Olympiad Open|Polgar, Judit|2012.09.01|C67d|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;EZdU]duCKtmE?bZBR\TKTlT:twHPWiT\e\:Rlm@HrRDRo_RTme?IipIO_WPXwvT[pgOEewEOh`O>wp[\pl>MvtLTxy\[yxT\trdSru]elp[TpoS]xp\duedleulu2guM^ofTUug]gfg^OgUOUpgUOghH?qi?FhgFM|Kiev Diawest|Shredder 7.0 256MB Athlon 1200 MHz|2003.06.20|C98|1-0|W +FVl\;LmeGWph@Owp?[tm[Tsd>@xgV^gaO`nfEUvxU]dZTFf]L]e^FamdaOqi`Q^VOVwvVOpU@Ad]O]u]DLvnLUrvW_h`=XnVXPog|Sportaccord WMG Blitz|Nielsen,PH|2011.12.13|B23|1-0|W +FVn^@Osd?[xgEMw\DLvx>@meIQdnMU\c?>e]O^gV;EVe[?ldCKwvBRnh^hv>=>qhNtf:>cl?Mf_EO_MNMeVOEVEMEleJeueHPem@Hrv>NxwQYm_NvwvENvmNO_OHOmfOXk[XWfePXefW`feYahaXad\U\e\R[\[GWZRKR[RW_RK_gpg`gKLai]UiqUMqy2MEgoLDytDCtkCDkVDTV>GVMG>MN>=f]=DNF|SportAccord Basque Men 2013|Le, Quang Liem|2013.12.18|C65j|1-0|W +EUxgDTnf;LwS=Dm]T]u]@O]_DKsd@qi?=h`FNxqCSjbO>qh>MVH@HvVEDiaLCruHOVYOH`XQXaXM^e^=uduC^ldDEufEmYa^Lk[HPa_mef`PH_GHG`VGHVe|SportAccord Blitz Men 2013|Mamedyarov, Shakhriyar|2013.12.14|E34|0-1|B +FVn^@OsdEU^UOUw\Udug=Ekd?Mxn>@vx;Lm]EWgWwvGOxo@Gv>G>tv>Eh^CKd\IY^dYavf:A]UA>f>P>ULELofLMjbMVdnHXn]OW]gVOphahqh>Lg]LC]SBJSMCLM@xgEMvxBRjbDLme?>\jIQdnMUnh;EldT?bZU^e^=DtfETulCSZSLSk[TN[R:RjN@wnEMk[RKmeBRtmDLvxKDwv?>[S;ErsE?nw<`qi`YwnIQgqYPq`?EngRZSLCLdjDKj[=D`fE?f`?EutKRvuO`g`EO`gPYp`YPgpOEmfGOtkPGkrE?[jQYjdY`i`DEogMUdZU]fo?NZKRKsKN_us_nxwndKCE;CS;S\Sftwotlohlm|SportAccord Rapid Men 2012|Aronian, Levon|2012.12.15|C84|1-0|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LuvIQwnHX_YOYnY?=Yn@Htf@JZ`gpgFXvx@AxyLFe]FU]VMVZ]V]f]Udn\XOtfdS\S;SrsSRf_O]_DRWbZIQs[]T[S?GDhAIwuTKSWGWypWTuEIPh;TXpiXRg_RZ;VZbipPWEGW^GHQYqaK=HI^WIGW`GH`WHGW^GIbjphjbhpbj|World Team Ch|Zhang, Zhong|2005.11.07|B97d|1/2-1/2|B +EUxgDTnf@Om];Lld<`qi`gug=KgnFV]VLVnSVLSKBKp`IY`XO^wpGWXOHOp^U^smOWyx?Qo_KSk[T\jZ>GtkAlk>DblNGmv;=vm=MktMelvDUve^etuYapxUdmdOdxXGNXPNUPKU^KSdkST\d[S^f|10th World Teams 2015|Sargissian, Gabriel|2015.04.26|D43q|1-0|B +EUxgDTnf;LwSFNvx?Ml\@Om]>@]TMT\UNUjbBRsd<`qi`YSn?>tm=Fg]YPnS><]nO^d^F^mdTMrt<=uZ^ZSZPewvCSZle\n]L]d]RZvuHPle\cuwc\e\U\]O=>wuMVOV>Vxw:;wn@?u]IYnmVWog;>tvWVp`Y`i`PXf^?Fvy>@SnBJjZCKm]FNwutswu>=\^DLUf=ufucs^]LT|TCh-RUS|Iljushin,A|2008.04.12|C11|1-0|W +@Om]DT]T;Jl\JTsdHPog?Hn^>@tfEMxnTNn]=K]WKkWF@Autk[rs[RsSR=F<:wnHQd^O^g^=afoa^tdQHdgTevweogo<\og\twoH]|2. Governor's Cup|Miroshnichenko, Evgenij|2001.11.23|A09|1-0|B +DTxg;Ln^HPm]T]g]?H]cEMwn@ld=Km\KDtXCS\mIQX_OEqi<;rt?@me?=jbUKulD\NV_VkpFO>OaOPOVOphgphb\@smCKl\@uc=FtbBRm\R[bk:rkrOUce[c\MFMecpq>=qp=@wn;Evx?>jb[Rk[RKdZDLZKBKl\E?qiIQwvHXe]=Ftk?P\TKT[TMTgVPV]VOEbZEVZRGOul?RJCJ\NFNlLNOog@ALC?;CU;CD>?EMOHDKAIKJQYJL?GL>X`i`Y`g`H?>?G?MN?_NV_`xoIPphPHog`PVFHOFBPXBJOGg_XSh`ST^VTt_WtwWXwvVNG?XOvwOPwv`XvnJ:?FPHnN:BF>XPNvH@vxPHxsBj|3rd UKR Games Men|Vovk,A|2007.05.22|C66|0-1|B +@Om]HPld?Ht_EMnf;EqiFV_q>@we=FxnOYp`YOsmCSul:;vtDT`XO>ia>De^MU^pEKf^V]d]K\mcT]n]=>n>H?]LbTLF@HFUT\UO\[sl[ZlmZauwaX|2. Norway Blitz 2014|Topalov, Veselin|2014.06.02|A07|1-0|W +EUxgDTnf@OkcBJtk;Lm]T]g]FNph?[ld[Mwp>@vxLVulktJR[RKRuvIQrs^hsc>vqh<>cgW^T^U^g_vwpwRvtf\fof>@wvEWmwO^bkL[wf^dumdnvnBRld[LfWPWjZFNkb?>rt@AgX=ObMOPtv>@o_HQXiPYxy@`me`anoQ?eJ<=MD=EJ<|World Rapid Final|Gelfand,B|2012.07.06|E15|0-1|B +FVnfEUm];LxgV^gmGWl\@Osd?aYEKZcPYwyYahoIHpiH`rxFGcu`xyxKUxX?FoaF>uZ>?TE?FXHFNHGNGEVMVZEGPEU|6. World Blitz|Andreikin, Dmitry|2010.11.17|C11|0-1|W +FVn^?TxgEMsd@Ow\DLvxTKmeIQdn>@nh?>\c;EqiMUwvKDldE?tm?Pul?me;LtfTKsmEUp`@OYaIYqi?@`XO>fKBKxg>MXP=OaOHOmsLFsdDLyx@He]V^gaFWaWMWvtWakcagxyYatkHPdZKSZK:;jZSZcZ@ph;LwpEU\U=UmeCKsm@f^T]d]NV^UL]g]V]qi?=m^OUtXMFrtDKwv@vx=EsmBRrt?=ulRZwuE>qi=Em\K\e\EutuCKld:RuUGOURLR\T>Ld[NEgmFTfTLT[TKTog@?xo?FofHXmsIYsdELp`YafeRcefc]n\FMfoLE\wELw\MEofE<\J<;J\;BfoBKofKRfoLE\GENG>DLofNc>ERKfoKDEW]SdsSMsmcjofT\fnMSnf\dkdSbfebsmwjcwfZbflclelbj|4th YM|Naiditsch, Arkadij|2003.09.17|B92n|1-0|B +FVl\@OmeEU\UOUxg;LphwW`VLVK]nf]VxwDlwnlkneAYAVAmRAOaYkqUgqaguMURKELZRayugyieniqnwOXwxqkxwkKgULURKULwnLKf^KTngTMg`Xt`WMFWPFNYQtQ^VNV|FIDE World Rapid 2014|Carlsen, Magnus|2014.06.17|B78|1/2-1/2|W +FVn^@OxgO^me^OgV;LVLELwn=>v>^EMg_YT^]TU]^GW^>U]>@]_@H_`H`W`xpMVphVWc[LT[SWXjZXWldWXd\XWo_`ghgWVgfVWfgWV|SportAccord Rapid Men 2013|Wang, Hao|2013.12.13|C42|1/2-1/2|W +FVn^@Osd?Tw\CS\SDLSnEUdZTMmeU^e^O^xg>@vx=Dl\;Eul^TZTMTneIQwvtQHQlmDMmMTMWE>FEW?>W^LTruC^v^GW^aFNgXMFXNFaNTV^phaOkcAHuEHPEB^fof>fxwfdTNdlqiOVN_PX_nQYBRVOwolmofmuRUuyfoyqogOF\TXOTL|FIDE World Rapid 2014|Kryvoruchko, Yuriy|2014.06.18|C51|0-1|B +FVl\@Osd?[ph>@wpDLxg?>vxIQuc[?me;JtmEMruJTcl=]L=euvkowoKovwonZ\IPL=ef\nfnpU@I=GnkUjP^yxkp|WY ol|Gareev,T|2002.08.21|B31|1-0|W +FVldEUm]V^t_@Onf?Fxn>@d\DTsdU\]UFM_M=MnhMVw\BJjZ;E\c:;ZRCSRK;KvxT\c\Kku]V]f]EK\JLTlmdSHPqi>nSdn>T\@HdS>nSdn>wsIYst>;]UOU|5th Kings Tournament|Carlsen, Magnus|2011.06.14|B12t|1/2-1/2|W +EUxgDTnf;LwS=Dm]T]f]<`l\U\qi`YvxFNp`YPgV@Osm?Fm\>@SLCLt_DCucCScSLSVLS\LF@AwtOUFUNUtv?>ogA@xoGOv>:>rv@Gv>|2nd FIDE GP|Gelfand, Boris|2008.08.13|E35|1/2-1/2|B +EUxgDTnf;LwS=DmeBJSLDLsmHPvx?HjZCKf^@OwvU^e^>@un@we<`ulLVeI@AIWVgmg`gpgDTvtFOts:=qaCSumS[d\U]W^=>aYBRlZMJZE>NESJBf]NMyu?<]TMmumBDTL<=SCOVmE=ELED=CU|41st Olympiad Open 2014|Iotov, Valentin|2014.08.06|B01c|0-1|W +FVl\@OmeEUxg;L\UOUph@UMCS\cBRjbu]LT]_T\cZJSZSKSyuEVgV>VMEVUuUSU_]UWox?=r:WX]VXaV>|Europe Blitz Ch|Nielsen, Peter Heine|2002.10.02|C54|0-1|W +FVn^@Osd?[xgEMw\DLvx>@meIQdnMU\c[Mnh?>wv;EldE?e]<`]V>Vqi`gugVNt_M_g_?P_mO^h^N^v^U^mn=aphaFn`@?xw:>rvFMv^Me^nPV`_>FcleU_^Uj^IVPlPFnIA?FwnjNngNPA;PWgpWUpxUS;BSkBTFNT\NO\]OP]`PI`WI@W<@I@gVEUVe[dmdU^e_=uvu?=uv;L_nOUtXGOXmLVru<`kc=>yxBRut:=jbRZd\UFn_FWmfZclcW]f]=]_UDLUf>=f`V`wn`Vtu@Gu]=]nuOWvnLTulGOxsHXluIYc[T[s[]\[CW_CKOWuc_gpg^gnm\^|65th ch-RUS|Grischuk, Alexander|2012.08.03|C67v|1/2-1/2|B +EUm]DTld;LxgFNnf@Osm?M]TMTk[TMjbNVd\V^\UL[b[^gpg>@uc=Ftb?=rujcLpO]TMenp^og^WcU>FULS[LZWNneGOZSPX_XOX]HFGH]Mqg_QYe^X`]T`h^g[cT]N`gpYaSLGNLCNMC^MN^C`nf^aipinwi`hpCUNF|It (active)|Dreev, Aleksey|2005.11.19|D49|1/2-1/2|B +@OxgDTl\HPsd?Hm]T]g];L]lBJphEMwp@tmLVkcCS\SMUo_VEflNWl]O^p^W^d^H]md]d^dJSu]EOvx=RdUOU]U|Eurasian Blitz Chess Cup|Svidler,P|2016.06.19|A15|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljbrt?M[SL]f]V]bZW^m^M_tsN`ZRKUg]UOn`=]`gO^g^_mlm]^vw>EyiA=md^]SKDKRK]eKB;:ieEede=esreEwnEMo_HPYPMPngCS_WPKg^S[^VKSVNSKNGKCGPCBrsBJWO:Cs[CDPHJj[`DMOGjBH@|ISYG-M14|Lanin,A|2002.06.22|B90|0-1|B +EUxg@OnfDTkcHPtbCKwS@m]=Dsm?=vxEWgaW@HrwXY>VGWVUQ_U]HO\f_V]ei_fU_UeUVqypq_wyYXpwIYUEBREU_VURW_c[XWRTOHwpWXpiHQ[S|World Blitz Final|Jumabayev,R|2012.07.10|E15|0-1|B +EUxgDTnf@OkcHPtbCKwS@m]=Dvx?=smBRd\;JbkDCgVE>ngFNjbKSrs:Zut;Mm^W^pi<;kd=?dRT]f]HQ\TQtstJTtT;sRvMKnf@HTtKktDHAVPA@iN|4th ACP World Rapid Cup|Drozdovskij,Y|2010.05.27|E15|0-1|B +FVl\@Ome?TxgEMnfTKwnDLvx>@sd=Fkc;EtbKDulBJgm?>ngE?m^?PruPagnO^d^GW^mW_phaWm^_fltW]tf?gpW^p^DK\TKTbTMTt\@Avt:=\TFTtT?>qaHPxwAHwnHOnf=]jb]EfmONc[NMbZEDZR>;mdCKRK;Ko_V_h_KSe]JR[RST]TMT_WPW^WTSd]LT]USRUMRKaYT\Wl\dYQDLMVLQV]QL|Premier|McShane, Luke J.|2002.12.30|B50h|1-0|B +EUxgDTnf@OkcHPtbCKwS@sdEWdZ:^gWagi=XihXQruaWhg]VphW]gp;@nf?>wnEU\ULUe]V]g]=KucF[sdO^X_;Lru[dkdKcjc^duednvn<]LEL_VCSedRZrtLEd@wnEMvx@sd=F\U?=wnNUvx;LdS<`wvO^g]`nvn:@me;Ejb[dkdMU^ULU\c=DwvIQgVEVt_<`_VDVvV`uru:uv>VvV@?xwOEVSCKwn?FnmGOSsEV\cFMo_VLld<>swLRcjRCwsCTs[>F[]MDqaF>aY>F]\DM\[MD[sDMj\F>sv>vmvOWvmTE\cEOcuKSugMTmlOElcTKe]E?gU?Ed\S\c\EOUgBJ\[O>bZJR[\>O]UOEUMEO\]KB]VBKVWKTWN|VI World Blitz|Movsesian,S|2010.11.18|C65|0-1|B +EUxgDTnfHPm]@Own?Hvx>@]T=DjbDTk[TDtk@tXENsdU]dZN\XOFOwvV^p^]eBfO]fgenrt\jvn=OgO]OZTjNtl?=xpIQo_Njk[jsl\s^T^OFnkGW^T=UTN;KNDUE[SF=DJ=O\<@IJTEUknKSTNIP@tX;Lrt:@wS=F_hNVvxTMhaV^g]L]d]FNwvO`ahMhohRZSZNOmwOoxyokuc`oyxoeckekZc@uZTM>=M[=>[dI@JR>YQHQaiGvaA@ihIAhHQYyqGNqp@HpHAIkc|FIDE World Cup 2013|Andreikin, Dmitry|2013.08.21|C10c|1/2-1/2|W +EUxgDTnf;LwS=DvxBJSLDLme@OwvHPunCSf^U^e^X`>:hd:@dlqx`h@`|65th ch-RUS|Alekseev,Evgeny|2012.08.10|E32|1-0|W +EUm]DTld@OxgT]d];Lsd@vxO^dZK=k[HX_hIYqi^hohFMuvGOiaX`gm=DwWNWxq<>mwLFZTMT[TCKjlD;ne>e^UGTLf\]fFlTGjWeFfeljGTWGNWIH?]=|4th ACP World Rapid Cup|Grischuk,A|2010.05.28|D13|0-1|B +EUxgDTnf;LwSFNvx@Fm]BJSnT]f]FWwv?Mne>@eWNWsdLFgVTM>=MT=@sm^mnm?=wuTFjZGOmn:@xgEKsdKUdUOUwnDLelTKvx=Otm?>wvIQruFg]K]f]:>n\Fvuv>vmvO]\U]UcULUvdGOd]BJog@GxoQYqaHXphXa|4. Zurich CC Rapid|Nakamura, Hikaru|2015.02.19|C07|1/2-1/2|W +FVn^@Osd?[xgEMw\DLvx>@meIQdn[RnhMU\c?>tmRDwv;EqiETm[OE^UTcjcLUl\U]gmEOugFWF=FgCF=rB:BCBEWmgWevVDVgVePVL=>|World Teams 2013|Khenkin, Igor|2013.11.30|C65j|1-0|W +EUm]DTldFNxg?Mn^;L^VMDweGOvxOVgVDV]VLVeSGNv@OtfCKsmA>ogOEf_BRmwRZwf>NfWE?_D:JDVHPWQGFg_?EVHZbkcJ:p`FMc[T\_WLZ|VI World Blitz|Caruana,F|2010.11.16|D10|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtkEUwv;EnwO`vnU]dZKDldCSZTET[T]dkd`Oqi=Frt>=ulBRlkOEe]:;gVEV]VS[b[R[d[@ld=DsmEWkcT]d]?@ulCKVL=Eog@]T=DjbBRtmDTmdVH>Hws?;gVHW]mWMVECEk[R[s[;[m[LT[T:ZrZEZTUZlUelteutkne@HqaIQ|76th Tata Steel Masters|Giri, Anish|2014.01.25|E05m|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBR[S;EvxRZtfETrs@sdUFwnFPvx@Ak[BJtkGWulPawv@m]=Dvx?=smBRd\T]g];LrtDCbkU\m\EWuvW^og^Uvo:<]LEp^O^uUENUuA@sdBJSLCLulEHyxonPHVHxHiY>EkcHpnep^em^_mv_^vm^]mn]^nm^pmfpX|FIDE World Blitz 2014|Laznicka, Viktor|2014.06.19|E59|1-0|B +EUm]DTld@Oxg;LjbBRnfHP]T?Hd\>@\UOUsmUDw\DNm^=uvuRZrsLR\SGW^XNTtmIQm[CKXiPXgmW_f_@xg=Fm]CKtkvxHPWiV^gmL=d\GWwuA@ld=G\TKTm\T]u]GVruV\]\FVdVMVkV>V\DVUut?=p`Uutu=uxpW_`XCJiN@?DG?>G_JwphweqaurN@rb@IbJaYPYXPJrhq|19. Amber Blindfold|Ivanchuk, Vassily|2010.03.15|B46|0-1|W +FVn^@OsdEU^UOUxgUdkdV^un=Fg];ErsDT]SEOd\HPnf?Hwn>@tkCKvxqiCLnw:=krLSsSFEvuOYSsH]r]T]fQEDsS>VSVDVuvYHp`HNwpNTme=>p^VHQmHO^U>VxwTEvVEVmnPXn^VPwp@H^gPa|ch-RSCU Blitz|Nepomniachtchi, Ian|2011.01.09|C45|1-0|B +FVphEUwp;LldGWm]V^xi@Oog@smIQi_NGXOFOg^U^nfLFh`HP`WPWun@AxyDLwxFU_UGUrwOXd\UNms=Fsd:=kcCKnmBJdnKSmdAIn_N@qi;EsmEK_hBRn_RZrtDTwnT]d]FMvxHX_YOYnYMhoh=Mh`@HulwGNGFGHAsb>?GF;:bS:jSMK@l\U]tXMTgmIQXO=OrsOMblBRmcTBumRZcRL=k[DT[TMDsSBTl[:B[UDMwsBJmk@AUKTKSKJKkKMbK[b[s[?G[ZGDZ[=L[SLRSRV^pi^eneHPRUDEUTE=ipW_p^_hqhAH^C@wn?>meDLtXEMvx=vu=MpwRZumP?nuMmum?EwnTLn`@I`NLNmUNUfUETogTeUDekDSIPxoPOonONSDNMDUkeqaMTaYetnmtcmlcRUfHPh`RL`XPYXQLFQIFPfWPAlmTLmnLEnoENWfNOf\OP\VPHd\GOVEHI\TIPEK|6. EICC playoff|Aronian, Levon|2005.07.02|C87|0-1|W +EUxgGkdCSvVGOuv:F>H>l]>HjbRZo_<>v>H>]LONL]NU]SU\S]\d]NdcNTcbpib[TZ[ZiaZSaYSLYPLE|World Rapid 2015|Safarli, Eltaj|2015.10.12|A45|1/2-1/2|W +EUxgDTnf@Okc;LwSFNtk?Mvx>@m]T]f]BJSeCSjb=Kun:;wvIQsmJRgVL]k]K]VL]KL;K;qiS[b[R[mg@xq=MpiOWi`W`ru?=mlMOn_Q_h_VDu]CSwuOMqhDTlcGWbZ@GZSJSurGOrR=;cjTLRBS[BI;:IQOFQMFMjc[dkdMNd\:=c[LD[SNO\U=;SJ;KJrOP]u|Aeroflot Open|Gershon,A|2002.02.06|D97|0-1|B +FVn^@OxgEU^UV^gV=Um]^eVe;LsdUWe_?[weWV_n<`t_V_n_`uvu>^LCLv^[?_eVele>^d^=etlefruGW^d?MqiumLTkcCLleM_mn>=el=]nNLENnT\dZ\cjc]Uld_Vd\ELc[U]\cVMnlLUZdUVlnV_[S_hclPXduM_uk]UkeIYiahae_X_nFah|38th Olympiad|Polgar,Ju|2008.11.17|C43|1-0|W +FVn^@OsdEU^UOUxgUdkdV^un=Fg];EtkHPphDT]c?Hwp>@vx?>wvEOd\CKme=p^=eleC^m^:=vu=]um]rxprvmkIQkcvncbBR^MnkMSGWpgkmqaPXaXQXgpX`SDmkbckjcKjnKJW_DNHGN_nj_UjrUKrbKEGFEVbrVLFNJRruRTueTVNOVfe\LV|ch-RSCU Blitz|Nepomniachtchi, Ian|2011.01.09|C45|1/2-1/2|B +FVn^@OsdEU^UOUxgUdkdV^un=Fg]DT]c;LjZFVtk@gVEUk[RKm]U^tf;EwnDLvxKDo_EKumKUdUOUl\UfmfGOV`BRruR[b[<`n`OW`n@AfcCK]ULT[TKTckDMur:;kdMFrsFOs;=;dlO]xy?OlZOKZEHPnuKCEN;=NJ=KJ:AHphCB:>Kkh`W`>^]O^pkpypIYucO]wv|GpA|Fressinet, Laurent|2006.10.28|C83|1/2-1/2|W +FVn^@OxgO^me^OgV;LVLELwnS[F^[c>Zck^nkdnfdkZ]klfnlt]m|Tal Memorial Blitz 2014|Mamedyarov, Shakhriyar|2014.11.14|C42|0-1|W +FVl\@Ome?[sm>@xg?>jb[MulDL\TMDk[CKnfBRrsR[b[;Jwn=FTKDK[SJ[lcKRvxEMtb;\R:Re]V]f]OUwvFBb[U[]TMTkV[UgXBFV;|67. Blitz 2013|Glek, Igor|2013.09.01|B51|0-1|B +FVn^@OsdEU^UOUxg;LwSUdkd?Mm]V]vx>@d]<`ldLRqi`YwvDTSe:@meGOVOEOt_FM_MDMgVU]V\M_dn_aognha_Z\WN\TNUVLULTL>fhwO`qi_Vvf`fL^VSwfSkrv]f^N@AvfIQxqJRjZkmNV?@]gCSjZ@dZCKkc:@^O=OpU@An^IQ^WQXqaOWtX:>uYWIYIAIU^IAaYMFXmL=rvFMxp>Fwy=Gh`FD`XMFo_V_m_FM_mGVkcDGvwCKwG?GXPGFYQVPQHAHmQHGywM_^PGPQ_FnwonF_hFC|UKR Team Ch|Mukomilov, A|2000|D80|0-1|B +FVl\@OmeEU\UOUxg;LjbGOn^UKtfbZW^e^M_ph>^h_^nwuaixwn^_WBJSJCJWO^_OG=?u]_G\lG_]E?ne>=ef=UV>?Ia?HVWloW^HP|Amber Rapid|Morozevich, Alexander|2008.03.26|B90|1-0|B +DTn^;Lxg@OsdHPm]T]g]?H]c>@wnBJvxCStf:;ogEMdUOEldEVwo@gVEUVe[dmdU^e_=uvu;LuvIQqa?=wn<`tfCKaY@?jZBRya`ruOSn=u|74. Tata Steel GMA|Ivanchuk, Vassily|2012.01.29|C67|1/2-1/2|B +EUm]DTld@Oxg;L]TBRnfFNd\?Tsd>@wn=F\UNUvx?=g]FV]gVYdS<`qi`EkcO^tkEipiYigqTMSM=Mn`iaugMQgpQPwu^OkOaOpiLVxwPQihQPhiPQipQPpi|19. Amber Rapid|Grischuk, Alexander|2010.03.21|D16|1/2-1/2|B +FVl\@Osd?[ph[dmdEMwpIQn^BJxnCS\SJSvx>@qi@gVEUVe[dmdU^e_=uvu;L_nIQqi@p^W^mwBRd\CK\ULUlLX=_U:@w\DLk[RKmeEU\cld]dndOYdZ>PZKBKXaKSahYhqhPYe]V]g]YGbZSZrZ:=urEVZbGO]gVgpgNVrdIYdc?Gwu=?xpHXuE@HEG?GcfX`g`Y`[SOQfTQOSLCLbdHITKIHpxGEdLOGKfGYLtYPxpE]tDHAfc]=cCPQD@wn?>meDLtXEMgm:un:@tfTfofLRgX=MXNMNk[Rcrjc]jkNMsmCSmc]cucOEwtBRklMQe]R[b[:=lDEOceV]f]?>ngQ_ph_MDTOETUM[^VE?tT[vxpS[U=>=gU?NUNGNe\v^px^]\]=]TD[cDC]exoIYonednmdlmelke^ks^_@I_XsvXYvVY`VnCcnqcfqQ`XQOh`I@fbOGb:G?:B?GB:@I:>GOXYOQ|Sberbank GM Rapid|Areshchenko, Alexander|2013.06.06|B90|1/2-1/2|W +FVnfEUm];LxgV^gmGWl\@OsdRKDKtL>NLNUNrt_gpgGg[Fg`xwN\t\`uwpu`pw`uwp|66th ch-RUS 2013|Goganov, Aleksey|2013.10.06|C11n|1/2-1/2|W +FVmeEUxg;Ln^@Osm?Twn>@vxBRldTBjZIQ^UOUwv?>nwNcSUOtfKfofO>e]>MScV]f]Nvuv=>cuGOwe>vgvLFeIAIvgENqiNfxqCKulOWhwf_qxFUln_tgVM^ngHPVetrxqrZwhUOg_ZEeVENh^O^p`^MiaIH`XQYqxNjVgjsxpskpikn]Un^_h^`|World Rapid Final|Kazhgaleyev,M|2012.07.08|C41|1-0|W +FVn^@Osd?Tw\>@xgEMvxBRmeDLjbCS\j?>dn;EnhMUldIQ^ULUgVTowoEVe]V\qi:Jt_O^h^U^uYJOj\S\rvOWYn=UvwWO_VOonoGOV_@I_f>Foh@wn?>k[RKvxDLmeIQdsEUsm;EtkKDwvBRnwDMld=DrtR[b[CSd\S\^U\dULdkLEDEtsM[uc:;ck[Mkr;svsFqiE@gVEUVe[dmdU^e_=uvuIQuv;LqanSHXaXQX_nGOSLCLfB`Viy^fBfWlk[l^yxV\n]OWfXLTog=;]c^gvog`cT>noh;>X_@Gru\MjZ>@um`Yhqnm_mM^T^W^xv@>ZRGORJYGvwOPmfG\wr|FIDE GP Beijing|Giri, Anish|2013.07.04|C67w|0-1|B +EUxgDTnf;LwSFNvx@Fm]BJSnT]f]FWld?Msb>@blg`>Gph<=flFWlfWFfl?>wvFFrv=>lfOWeVGOxyMDh`FohM^hDFDnpHXfWNWgW@AWUDFUWQIW?I@?g@UxwAIqaXad\UMgYMQYWIAW<|SportAccord Basque Men 2013|Le, Quang Liem|2013.12.18|E46|0-1|B +EUxgDTnfHPm]?Hwn@Ovx>@]T=DjbBRtmDTmd@rtBJ\TO`dZvmEKRKB:ucHP_i>EaYO>YPIPtxPXp`W_i_X_f_GPcf?G_WPIyYGHxy>OYQO`WO`fOHf\mdEWKDWon\ofdlU\Qi|2nd ACP World Rapid Cup|Polgar,Ju|2008.01.05|B28|1-0|W +FVl\@OsdEU\UOUnf;Lul?Fjb>@xg\UDLU\>EogOXxoED[TXmonmdg_V_h_IYngDE\GYag`dO^VOFTFEFG\|2. Governor's Cup|Vorobiov, Evgeny E|2001.11.22|B85|0-1|W +FVl\@Osd;Lph?[wp>@xg[dmdIQgmEMmwLFn^BJjZ@vx;L\n?=me@vx=DbZtX<;XOHOedDVnfIYdcYa]L|14. Ordix Open|Petrosian, Tigran L|2007.08.19|B09|0-1|W +FVnfEUm];LxgV^gmGWl\@OsdEtj:JqaA:ytJKtl:JjdENdUNUmdKcrxJLnmL\xtcKdRKLl\L\Rd\LtxHPxsU\mlLKsuKSumSUmuMFusUSsuF?um?MmuIQumM?muSUusUSsuDLum?FmuF=d[=R]U|UKR Ch|Nalivajko, Evgeny|2003.11.05|C11|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb@ul=Fk[L]g]T]tk]klkOEsm?=wtDTqiCKmgGOnu:TUedxq>PBRdlRvPXphl\UeXPef\]vnPGiaGEaY]mngE]qpmkfvk;vu]ZueZSgWIAeESLEG;@WPLNh`N>GO>FONFbNVbZVFZSPWS[FG[MWPMVPWVM^VMUpqUT`XT[XQ[aWi|FIDE World Rapid 2014|Polgar, Judit|2014.06.16|B90|0-1|B +FVnfEUm];LwSV^l\BJSLCLuZ@c\?;yuE>ndGWrs;sdsVRumRZml>GsmGNia@GpwF[wn[mnmN\jbGNtkHPmd\eltZRdcRScjNUtde\jsJRdtRZtd\esrLTdtSCkOIQOkT\kdPXaXQXd[CIrkIq[vULkdLTtrW_h_X_vm_gmvqIrjIHjmTUmjH@jmUVmjVUjmUNmj@xjrNWd[W`[Z`iZ[ip[dxvrvpovyofbZgoZRfgRJ^fJBe^yigp|World Cup|Zhang Pengxiang|2007.11.28|C18|1-0|W +FVnfEUm];LsdV^jb@OogLFg^U^xiFWioWMphIYwpmnYah`WIts<;sjGWywQOdUOGl\DLU_HP\TMS`WPWnYXgpg^goeGFeVEDYgDRutI@wx?HgYSbkbRmjsHV]Vmfbkf_Yu@Ukd_fskfiumFExPigmqW_VN>NPNUNqaCSTKBKaONUtl;COVg^VAEFdOF>AHCJOd_glq^_qo>fHAJSAH_^omfnHBnmdmgoBr^V|31st ECC Open 2015|Bauer, Christian|2015.10.19|C10c|1-0|W +FVl\@OnfEU\UOUjb?Mw\UK\j>@sd=XxgXPme@Af^;LgaPOuYHPYXOXtXL]rtAHXfKEagETj\]gpgDLqaIYdnTNe]V]n]N_yxMVtu?>um=clLTxXHOf_V_XTBJTL=MLM_MvwMVkcJRc[R[b[|40th GM|Caruana, Fabiano|2012.07.20|B42g|1/2-1/2|W +EUm]@OxgDTld;LnfFNsm?M]TMTk[TMjbNVd\V^\UL[b[^gpg>@uc=Ftb@ruBRjb[dmd<`og`Nwn=aphaivo?_XCDPHDEXPEFRJ>:JB|2nd FIDE GP|Radjabov, Teimour|2008.08.14|B78e|0-1|W +FVldEUm];L]VLVt_VP_hIYqi@OsmYahq?MqM=Mnf@wn?>k[RKvxBR[SEUmeU^e^;En\RZqiIQue=FtfETen=gVKRVPGPfTFT\N@IdZTVNc=]Zk]^ngVSk\SWgWPWcjCKsSRdSW:Z\fZbj\^>fUOUWU>FiabRwuRU\UFvuvdvxwvdaYHXYPIP|67th ch-RUS 2014|Svidler, Peter|2014.12.06|C88k|1/2-1/2|W +EUm]DTld@Oxg;Lnf<`qi`Y]TFVp`YPk[?FsmU]d]V]mc]fu=:=tfOUjbFOvt>@w\Udu=?=cmdZtuZkutk\m\P^\m=mfm^gyvIQvfL]bZBJ[SJSZSgUTL]SLCUCtuSMunM\fcCJc;@I;:JS:;SJ;:JS:;\MnvSe;celc[M^vn^TmflengTN[CN=CK=NKCN=CKOagp=NKMe\oga=MEI@EB\UBEU\EB=Dia\UaY@?po?>op>=po=a`CUvuEFuvFGvf>O`aG@fbUGb:@I:BGYahY>h_>LBJLUJMI@MJ@?JBULBJLEJB?FBJOU_^UDJKD>^V>OKJESJBOEV_FOBRS\R:EK_`K:|Corus B|Nielsen, Peter Heine|2005.01.29|D43m|1-0|B +FVn^@Osd?[jb[dmd>@ugEU^U<`ge=UeUOUtm;Log`Nvt:=uv=Exn?=nhUFh^IQwSCKmf=:SJ:?JS?:SJ:?JS?:|65. Ch|Andreikin, Dmitry|2012.08.11|C68|1/2-1/2|B +EUxgDTnf@OkcBJtk;Lm]T]g]FNph?[ld[MwpLVvx>@ulqiIYwvM;^UNUmwYah`VPv><>uv>vsvP_vuO^wm^XxwXipi_iugi_ktKP|SportAccord Rapid Men 2013|Grischuk, Alexander|2013.12.13|E12|1-0|B +FVldEUm]V^t_@Onf?Fd\@cC=>\UNUdUOUwSU[SL[Ljb:;CJ;kxnF[vw[MrtLF_MDMph>Ewp?;yvIYnxYavnHPnl@HJnklnlEWts;@wn?=sdDR]gOYph@bl[Tg]?>ogBRjbT]l]Ufmf>fvofFyutuT\c[R[b[J<[SLDi<>=u=?F=A|23rd ECC Men|Simacek,P|2007.10.07|B22|0-1|B +FVn^@Osd?[xgEMme>@tm?>phMUwpU]ds[msmDTvx;Lqa<`uvCSgq`Ejb:;vuHPo_V_h_OYuvT\e\S\m\ENkcN\c\LRq`R\^VGWvn\M`qYhnehwrwM^aY^dYPIPq`@H`O>Apid^O^W^eh=ahaAaiE;Axpaqphqlws]esCHQ|Vladimir Petrov Mem 2015|Sakaev, Konstantin|2015.03.08|C65h|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQgmEUngBRtkU]dnR[b[:rur;JkbJDm\DS\K=KbtOIphGW^W@tkwvF?gVHPo_OYphGWmgYOVLCLgVLCeS>FkbFHb?=?nfO^utPXSeD=_X=XfXHXvwW_h`IYqi^mwom^ow^mwo|2. ACP World Rapid Cup|Gelfand, Boris|2008.01.06|D45|1/2-1/2|B +EUm]DTld@OxgFNjb;Lk[CKtX?Fnf>@smZlHP[MKMVMBCSKIHf^>LofH?^V?>f]>E]TC;kj;@wpNVf^U]mcTKtX:PM]L^fZRMmnvmUvn_^L[UR>L^][l]TLgRjneW_lvjme^m]^VJRvl]mlvfn|18. Amber Rapid|Carlsen, Magnus|2009.03.24|D43|1-0|B +DTnfHPm]?Hxg@O]T=RldRTk[TDtkBRsm>@jb;LwnEUvxO`qi`Vg]?=uc]=@I=;IH;hNPhV>OnwPXV_HP_;QY;qXWwvWgqxO`xKPXK]gfvwXa]UGWU=ah=XYaX@ai@Hfg|68th ch-RUS 2015|Khismatullin, Denis|2015.08.09|A13v|1-0|W +FVphEUwpDLme?Mxg@Fvx>@n^IQe]V]^ULTldFUd];LsdUdkdT]g]LRrsBJue=DpUMVd\?=]g@vx@AkcBRtkGOsm@sd?>k[TKdZN`ZKBKtk`gngL]rtDLph=MgpKSo_OEpi:=woGOxpE?_V>VkdV>um?Pmj@ApyPVtuCKowLTjkIQip>FumFBws=:[TKTd]M]k]T]sSBbpwbjmk:bypVewejkSkbek;AI;=HX=EIPh`QY`YPYqiX`EUYai`a`UWefpof^WO|63. ch-RUS playoff|Nepomniachtchi, Ian|2010.12.22|B90|1/2-1/2|W +EUxgDTnf;LwS@OkcFNtk?Mvx>@m]T]f]BJSeCSjb=Kun:BsmBFc[OEgVL]k]K]VL]dLFMFmcNVbZF[ZSJRnfdDeWU]fn[drjHPW^EO^L<`ne`NjZOUcTNWegUKZbd[TJDFJ[F[wrWlbR]eL^K\^eleRBeWgLWNqi?@m]V]d]IQrs=Otk<`qi`gugOgpgLFSeFPktCKwv:=xwGWeS@Isc?OcePav>=>S>ON>ENPg_PO]UaPegBRjZP?ESOGtk?ESLI@k]ET]TKTgcGFcSF^SR^_R:@GZR_\:>\l>nltnvtvwvT\RJMTvnGOLS\dogOVneV_SLQYLEHPE>_g>PW_PYgpedpid\Tf\SiaYuaXSLXOLD|4. Zurich CC Blitz|Anand, Viswanathan|2015.02.13|C47|0-1|W +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeDLvx;EdZKDl\?>ZdE?wvIQqi?NtfOIe]=O]UN_nwIXgXQXrtOPog=uc:;TMDKfKBKvuE>dn=McdPOULMLdfLtut;=n_X_fdKSdT@IwS>STS=mSwOMwvM]xqmovd]MtlowltwodvM]vd]Mtl|World Cup|Timofeev, Artyom|2009.11.26|C90l|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQmeDLwvEUtkBRqiR[b[:rkr;JusU]duOI[SLSsS@wn?>k[RKvxIQtkEMm]V]g]O^dU;El\BR]W^OkOEOUKDKWf<[SLFulIYe]?Q]VX`i`Y`VOFPg]`hmghovoP?yQAQf^UOtQO`ox`QlZEMZBMKBKDKwnNEgV=>V\:rwDEwOQ@Og@Fgh:ZngNUg`UN`gNUguZ]u`UN`gNUhHUgHFEFMWFGW]gUxoGPp`|24th ECC|Ivanchuk, Vassily|2008.10.23|B80m|0-1|W +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBJvx;LtfL]dUOU^U]gngKfofGWl\=XumW_rvqi`aNFaObZDLfBOdvfdtxqLTBEtfE>@I>GfV|WCh 2016|Carlsen,M|2016.11.26|C84|1/2-1/2|W +FVl\@Osd?[ph>@wpDLxg?>vxIQgvEU\ULUvl[Rm]V^k[RKjZ;Ltb@ga@IaWF=ugO@tfTcjcRDfmHPWf@^UOUwvGOld@Asm<`qi`YjZ=Dm\:=ZRCSRKUK\RLRrRYPucPecj=EiaFMgmOWmgEFtXFGvrIQXtBJaYW_h_V_kcGWd\WYRJK@_qEKjZBRnhHPwnFMvx?>ulIYwtAlmOEmvDMrsCKkcA@wpCKvx@gVEUVe[dmdU^e_=uvu;LuvIQwn?=_YOUYhGWqa@l[JR[LELneS[gVL>b[R[r:=:wv[dkdGOeWNWVeHXo_IQeT:Gum?>phG>of>f|Sberbank GM Rapid|Tomashevsky, Evgeny|2013.06.07|E46|1/2-1/2|B +FVl\@OsdEU\UOUxg;Lme<`nf=Ewn>dU]nxyPMU[MQwo=MveQq|Keres Mem Open|Metsalu,Tauno|2001.07.27|B64|1-0|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWsm=Ful>@vx?=^OFOo_V_t_OVumL]mfV_f_f]?GVYNEgGEL]U|FIDE World Cup 2015|Svidler, Peter|2015.10.03|B53h|0-1|B +FVl\@OmeEU\UOUxg;Lph@vx@AkcGWtkFOsmW_c[BJrtHXtLCLgV=>nY>Ne]JR[R:RulOV]VA@qiKZkrLTmcR:cTZTlTNQVNQYTV|It|Ushenina,A|2002.08.03|B92|0-1|B +FVnfEUm];LxgV^gmGWl\@OsdGc[R\m\U\S\=U\UOUtm?FvnBJjZA;ysGNscF=og=DqiIYrsHXsw;Ag^W^csX`srA@ia@;rsDh[SJSZS:j|Corus B|Ernst,S|2005.01.15|C11|1-0|W +FVl\;Lme@OxgEU\UOUjb@ulTKtfOYphNiwv=EgXYOXiEismL]f]K]ngDLmc?=ruO`g`i`c]=]ut`NvfIQxp:=lTBJtd=Eqa@ITKNMfgMNKcNcdcLTcdCKaYGOpiJRi`RZ`WEBgfBRfnRSnl]MogSRkcZcdcRZg_Z]_VOVldMOWV]=ckI@dc=MbZ@GcbGFZRMNVUNMU\M]\SKRSTOMkCFNbR]eRBedT[MeCKNVBFV]KM]fMede[Te]^Vf^VN^VFH]UT\VNh`UuHPNV\TV_TLumPQ_`QA`XYQXP|World Rapid 2015|Guseinov, Gadir|2015.10.11|B90|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb?Mn^UFwn>@vxGWsmFP^WP_m^_nun@tmDLxnEUnhU]dsRmsmLTwn;LvxHPmgO>um>MmQGOqi@wnO^ulDVsdV]du]mlm^mvm?=mtHQuf;Lyu@\UOUtmUOjbNVulIQwe=FvxTMd^O^e^GW^U@wp?>f^DTvx;LmeBJjZOEgvE?o_V_h_?NtfN]xy:;vl=pLKLohNH@>F@HF>H@>F@HF>|2. Norway Blitz 2014|Svidler, Peter|2014.06.02|B40|1/2-1/2|W +EUxgDTnf@OkcHPtbCKwS@wvBJl\U\c\O^bkEWsm^TmcTZkbKS\SJSnSZdSLdubF=KL:?:ru:jcTIQFaW`ah`gpgPXxpKL]ULTUMX`ME`gpyHOhV@IV]TXvxO=xXQXqi|FIDE Candidates 2016|Caruana, Fabiano|2016.03.17|E15o|1/2-1/2|B +CKn^?k[TFd]Paga=]tbFart]VZLCLtLaFugVUgUNULDBRwvF[b[R[qaHPvF:jFG?>GF>=FE=>EUjrxqA?DI?oUMoGIA>FMPrJAQG_qh_]PKJbhqF=QM]MKM=FMKbeK[em[_FNqiNVphm=aY=Aia|WICC qual Moscow 25'+10|Rossello Padron, Carlos|2002.04.20|A01|0-1|B +EUm]DTld;Lxg@OjbBRnf<`sm=Dqi`YuZFNgV?Mo_>@weT\esMV_VOEvxGOVOEOwo?GmwCSZlO^oGDGp`YPlp:?sl^Xf^Xg|49. TCh-ESP Honor 1|Van Wely, Loek|2005.08.27|D15|1-0|B +@OxgDTph;LwpFVmeEUvxIQn^U]gaHPun<`og`Eg_V_^V=FwvE`noOYh_>@p`;Lyw?>vu?g^W^um^U\fLR_X?wrw=EfWR\mvIQXtem|It|Nakonechny,S|2001.08.10|C50|1-0|W +EUm]<`qi`Yld@OucCKt_FNnf?M_M=MwnYnxnDTvx;Lsm>@cb?=wu:fUm]yqIYh_]_U_>:qh:j_e@?eT?FhgFMTejbetMTg^T[^]b:te[ce_:=_UYa\TclTLlm]VmnUF=uLDutD<3t@vx;Ejb[R\jIQqi?>dnE?nh?PldMUgqF`YXWhgFIwuIYt_D_xwYigpWY|25th ECC|Wegerle,J|2009.10.09|C65|1-0|W +DTxgHPn^?Hm]T]g];L]c@Osd>@wnEMvxogPXxoW_ZbQYqaXau]OXbc>;][TR[C;CcCEVd\RjwnaipiXa\TMTUMjZCFGOFNaXiaXWN>Z]>=WNnJ]M=;MmJnT\owml;KNUwvltvmtyKOyamdaqnuYaO_aiulqol^UM_OMFOQiqd]VGQIFO]\GXIaok\eX^g^OXaAX_e]km]dmndenp^V|SportAccord Blitz Men 2013|Wang, Yue|2013.12.15|A29|1/2-1/2|B +EUxgDTnf;LwS=DvxBJSLDLm]<`l\U\]ULDf^FNqi`Ywv>@nhFamephEGlkKZksW_h_V_fTZT[TMVgVLVmgGOslVLyxNGxyL]g]=]og>VtsVYyYGYlkCKvmY>kdQYstO=txHPnw>GwiG\iw\Gwi]\dHG>TKBKiE\Te]TRE>=>xPRbH@>@P@;Cmnbfnofe^VCL@?emowmuwoumowmu|Corus A|Topalov, Veselin|2007.01.15|B90n|1/2-1/2|W +FVn^@OxgO^me^OgV;LVLELwn@sd=XxgXpyxpid^iQm];L^XQOf^V]XI@IgXI@uYOQYQHQXG@Io_L=G=?=^VMFVNFavuaO_WKUtQIQxPQYjU=UPOYXO?UWqaXPNFW?F?5PHumH?rxsvVM^>A>v>E>o_>GxoMF_WLTogHXWPGPg^DLl\FMjbBJmfMFf_F?_m?MmtMFbZFMtbPX^gOWbtXPtmM?mv?FvoPXofXPf_F?_D?Fg_FX_gXFg_FX_g|Young Masters|Dominguez Perez, Leinier|2006.02.04|C42m|1/2-1/2|W +FVnfEUm];El\V]u]@O\U?T]e>@xgEKsdKUdUOUjb?>el=FqiHPk[TKweBRvxR[f^UdtkDTb[:rldrwewGO^VT[d\FG\SKDVOIQS[Na`@IOGNv`gKTgd|World Rapid 2015|Kovalenko, Igor|2015.10.11|C07|0-1|W +EUmeFVxg;Ln^U^e^=uvu?TtfTfofGOsd@n^EMxn[TqiBJvxCSmeS\e\?>xqL]tf]nunT]dUOEf]V]ruDLU[LT[UJRnm:;kcVfdcdtdVnqxnmpwEVUM@GwJmUxoGNJ@vx=EsmKZulDTng:hVFOo_IQlmCKmoEFxwBJVOFOvN>NrvNvwvKSZSJS\VOJog|WY ol|Barnaure, Vlad-Victor|2002.08.22|B92|1/2-1/2|W +EUm]DTld@Oxg;L]TBRt_O^sbFNbS?Tnf>@wnGO_D=FvxLBSB:BDh?=d\U\ul^hqhCSjZSZrZT[n\BDln@AZrNVwu=?gv@]T=DjbBRtmDTmd<`d]TD]VD=l\U\n\;EVdO^dH@Hsm:NV>@PW@?WN?>NU>=U\=E^]EF\UFH]ZH@ZjofjbfobZofZ^fe^[ef[cfocgopU]@`V^`_gbh`]e_?^fpgem?>be`XeU>fUX|20. Amber Blindfold|Aronian, Levon|2011.03.24|E05|1/2-1/2|B +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDT[SJDvx?FbZ=Mtf>@g`:=f]M]uc=Mrt?=wuMOtlHPphIY`i@Hxp][c\[RdnBJusOKlkD>|World Cup|Timofeev, Artyom|2009.11.24|B33m|1/2-1/2|W +FVl\@Osd;LphEU\UOUwp@vxIQmeDLdn?>nh;EldTK\cE?e]<`qi`gugV]d]K]hW]VtQHQWQ@HQWHAcG>FWF=FGc?PgWFHiaPaWiH`i`O`phagxpg]cu:@wyAHu`HO`u]Nuc@PcNONruVkusk]sCLTo_P@|World Blitz Final|Bologan,V|2012.07.09|C50|0-1|B +FVm]V]u];L]eEUldLVef=FxgGOphHPg]DT]SBJSbU]d]T]fc@]TMTjb?=k[TMulTV>GVXn\XWGPW_\NahPY_]Nch_YPqhcj]MPWMQW^QYjnYanwa`^e|KM FIDE GP 2015|Jakovenko, Dmitry|2015.05.25|D46|1-0|B +FVl\@OmeEU\UOUxg;LjbBRn^UOwn?Tvx>@tfTBqi?>sdFowLVwtDLTRGOxo@GR:FEovGFvmCS:iaIQun>Gp`G>`XQXaXOXtTVE;>F>TL>FLPBCPXS[b[C[XHFMHPMTPXTKml[SXPKTPJEKnYTMY>STlmMDJBD;BH;GVSmlS[G>C<^VG=FLDFOG@|Corus B|Ramirez,Al|2005.01.26|B90|0-1|B +EUxgDTnfHPm]?Hwn@Ovx>@]T=DjbBRtmDTmd<`qi`gng;LdOHOld:=smOHgnFVucU]m^TBf]V]ruB;wv;Dn\LV\URZcCDCUCV\d]\kusH]vnk\s[]Vo_V]xq\f[ZfwqyGWnvW^vw^fCg]TwtTMphPXt\X_h_=<\@xn;E]UEVnhGWULCLwn@wvO^bk^MjZEWld@smOEucBRjbEVvtFayqR[d[L]f]Vewe^emgaXgX=XtsX_qy?>sr>n[SnoyxP^`XemTLCLSL_MxhMLhdLJrjHPdfow|Tal Memorial Blitz|Mamedyarov, Shakhriyar|2008.08.30|D43|1-0|B +FVl\@OmeEU\UOUxg;Ljb@phDLjb[RwpEU^ULUk[RKvxU]dZKDme;LZT?>l\]dnd:;qiL]tfCKT^O^e^^YG|World Blitz|Aronian, Levon|2009.11.18|C60|0-1|W +FVn^@Osd?TxgEMwn>@vx?>meDLdZT[jb[Rk[RDl\;EZdE?wvBJqiIQnwCSe]V]g]VWVDV^U;kmfVfofO^yxkKutKcbZJRUM@?tuc;uU;=ME^dUTdZTVZKwS|GRENKE Rapid WCh|Bologan, Viktor|2010.08.08|C90|1/2-1/2|B +FVldEUm];L]VLVsmV`xg?Mnf@Owe=Fqi`VgVFVul>@kcVXvwCKtk@tmDLphEUwp?>xgU]dnRmgm=wy:@ZuOIuvXQxyGOdn?GmRENvm:?_oHXnxQPk[OW`WNWmnX`i`W`nvIOo_OY_G?GwGYhyqPGxi@?i_?>qx>EvohWjbGIxqIQovQXbZ`YvoYu[SJSZSXhohahqiWfSLEL_Nu`|3rd ACP Blitz Prelim3|Psakhis,L|2004.06.02|C18|1-0|W +EUm]DTnf;Lxg<`smT]f]FNld?MuZ@Fwe>@vxFPqi`YZlGWwv=OgqP_mgHXgVLV]VMVewVMtfX`i`W`ph_iwi`ilmOPqw?gxq:?m]Y`wmgGvxIY]BNVBKU]d]Gofo?oqyPGKcGcjcomrwV]wOMVOw]ewtmltlelxt`uyqVkqiktc[tm|Simultan|Garcia, David|2003|D35m|1-0|W +EUm]@OxgDTldFNjb=DtX;Enf?MsmT\XOEOphCSwp@bZBJZR:U^|6th EICC|Eljanov, Pavel|2005.06.29|D11s|1-0|B +EUm]<`qi`YldFNucCKn^@O^UOUwnYPxg;Evx?Msb>@b\M_wvDTnwT]g]ETcu:<\V_VvV=OVv?=ugNVgOHO]gTewePetQUFruFWQte\jb=uvu\nuEBRtfKSgmS[b[R[d[@wn?>k[RKvxEUmeDLtX@SL:JrtUO]UNUwuULm=@=u=LSqaSeaXQXfWHIh_X_ogOYg^e^=MYhWhJMh^|World Cup|Navara,D|2009.11.29|C91|0-1|B +FVl\@FmeHPxg?HsdDLn^EU\ULUtXGOXmU]dS@k[;LrsK=Sb=Mb\ME[SL=m[=GgmOWuc@Acb?>vxF@wt:@wSBJSnNV]VLVgVMVsm=ZROWRJqxvnxpnvp^vo^lovl^vo|FIDE World Cup 2015|Onischuk, Alexander|2015.09.16|E21|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtkEUwv;EnwU]dsE?smOIqiIXld]dkd=ObZBJm\XgugOgpgKDe]V]d]=\RN<[SLSZSJSvsS[R\X`w\PXVN`hqxY_>@Xaxwfd@AaXA@XQ@hdhwohH|GMB|Naiditsch, Arkadij|2003.01.15|C92n|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;E\ULUZdEKbZ@I>;UgpgOPxwPM;cMqrZQYZ]YacCW_]_ai_`IACHqVH@|FIDE WCh KO|Kobalia, Mikhail|2004.06.20|C99|0-1|W +FVn^@OxgO^me^OgV;LVLELwnLD|FIDE GP Beijing|Mamedyarov, Shakriyar|2013.07.10|C42m|0-1|W +FVn^@OxgO^me^OgVEUe]?Mwe>@vxDTld=DsbBJtXO^X_CSog^O_h;LVLMhqhDL]TLTxqS[d[T[rs[MblOYg_MQ_Wl]>VutXYg_O`]g:>_`Y`gV`]xq]Vt_VOk[ESeSJSsu>=_aOMa_MF_aGOa]IYqiFV]eU]h`V_`Y=>ec@Iue>v|14th Ordix Open|Meijers,V|2007.08.19|C42|1-0|W +FVl\@OmeDLxg?FtX>@nfIQXaEUgVU]Vg]fofO`aF=Ff^GW^VW_sd`fum<`e]`gpg;Jd^:=rtfW]UFVvoWfmdVFqaJTweTedeLU\U=UebF=bdUed[BR[S=]ST]k|10th Petr Izmailov Memorial|Morozevich, Alexander|2006.07.15|B50s|1-0|B +EUm]DTnf@Ol\T]f];LsdHPxg?Hwn>@vx<`\UOUqi`NwvUdkd:@eWNWtm?>gVO^mvGOVLCLsm=KucKJm^W^vo:;cl>@ge:;k[BRjbRZwv?ia>Mh`M\f\<\pw\Lvf=?Q_;CaY?HYPIP`XFWfiCDxpW]weNV_q]NeSN_pwLKSZ_iqiKJZcU]bZV^[SJMihH?SKDdtd]dZRM]hd?[d[][cU@HKC|Tal Memorial Blitz|Ivanchuk,V|2008.08.30|D43|0-1|B +EUxgDTnfHPwS;Em]?Hvx@Okc>@tkCKl\unEOwv>M\JCJnJ?>rt=@kcT]f]OUtkU_nf_efeEUwv?=mwBRwfRZphLRel:rvC?>_VOVnV>Ve]`i]VHGV_G>tl[TxqTxqiLy|6. World Blitz|Grischuk, Alexander|2010.11.18|A11|1-0|B +DTxg;Ln^@OsdHPm]T]g]?H]c>@wnBJvxCStf:;ogEMdU@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvBRnwDMldCKul=Drt@ogCS\SJSiojmGOc[R\f\S\h`Jbtb:bml>Gum=:wo:Bxq@?lj?FmkbjkjBCjRI?oj?ERBCTVFEV^>GWOGj^njcnfcjfbj\XPEMbd\jdljcOGcGPGDTGOMUOWU]W_T\lm]d_fdcf]|18. Amber Rapid|Radjabov, Teimour|2009.03.17|B31|0-1|W +FVmeEUxg;Ln^@Osm?Twn>@ldBRvx?>kcU]d]L]tkCKrt>Fm\]gngT]umjb[SwuDTum>=gnS>c[T[b[RZfWFBo_V_^VZbkrHPVOPWxy>fmlJCnwbjrd_gtr@Admf]rjBjlj=@mvW_|Young Masters|Felgaer,R|2006.02.06|C41|1-0|W +EUxgDTnf;LwS@OkcHPtk?HSLCLvx>@meU]sbOUf^U_kt=Db\FVt_V_qiIQwvbZAaem>FmeD=\MFIyaIaMG|FIDE World Cup 2015|Mamedyarov, Shakriyar|2015.09.25|E21|0-1|B +EUm]DT]T@OxgFNnf?TjbTKk[BR[S>@tk;Ewn=Fl\?=smRZvxKT\UNUulTMg]ET]WwnLVm]T]nSVLbMEMd]BJSnLFcmFWngCUgUMUldWfvnf`yv>nvn`qnVULVNLDNFDLFHIYHPLDm\KS\VDCVeJReTCD]Uq`PLD;UMA=LK;BKCB:ME`fCD|Aeroflot Open Rapid Final|Wang, Hao|2013.02.16|C45|0-1|B +EUm]DT]T@OxgFNnf?Tjb>@l\TK\UNUsd;Lwn<`vx=EdZKDk[:=tkU]f]?>rtD_tlEWgaWYn`O`qiYau`a`i`L]k]=]ph_M`XBRZd]\[RMbwrbFrsFXsC>:RJIY|78th Tata Steel GpA|Mamedyarov, Shakriyar|2016.01.31|D27h|1/2-1/2|B +EUm]DTld@Oxg=D]TDTt_HPnf?Hsm>@wnFNvx?=ul;Lg]O>]LCLf^NV_XHOmcTFXf>McTMCTCFCfTf^IYyqLD|Sportaccord WMG Rapid|Mamedyarov, Shakhriyar|2011.12.09|D23|1-0|B +FVn^@Osd?[xgEMw\DLvx>@meIQjb[dkdMU\c?>^ULUe]V^gVF]K=KfKLEK=FG=RHPuU^fUTPW`WGHxwHXwnEWnfIPR=XYTLWlLOPHOoYif]ie]TlZ=OHPO]PXopXWpoW`op`gpPQYqag^PXZuTSe]d]\dXT^]S[dlTD]f[bf_|65. ch-Playoff|Jakovenko, Dmitry|2012.08.13|C65|1/2-1/2|W +FVn^@Osd?TxgO`m]V]dZT[ld]dkd[Mwn;Lvx>@qi`OtXIQXaMF^VO^aF=FuU^XwvEMVMFMUMDMgXQXru?=n\@[SLFbZFPwnW_nYOYuY=OYn_gpgOgng?gtbgiyiNidUipUD:<\U^mtmRUmd?TruUXdmTKlZN`utA>qaKfwJfmvwXPaYP^|TCh-RUS|Rychagov,A|2007.05.02|C10|1-0|W +EUm]DT]TFVxgV^g]?T]cTMsd@FtXGOXf;LumLVf]@dSM;]dBJS]NGvtCKo_V\mo=Dp`JR]SD@dUEWU_T]g]L]k]^dumH]f]dsmk=M_esbvxbS]UMUe_U]k]S]n\:=wuWluvlWvuWluvlW|Vugar Gashimov Mem 2016|Mamedyarov, Shakriyar|2016.05.26|E15o|1/2-1/2|B +EUm]@OxgDTldFNjb?MtXT]d]=Kul;LXOHOnf?nmE>gwAIwtDPxqBJtlDLavLKrtKcvucKeTKLkc\T]TMTdnTflLCLtdfKc[ZJNVbZU]ZRKB[SB;SKDEdhHQJ:EMRJV_hg]eJB|65th ch-RUS Playoff|Alekseev,Evgeny|2012.08.13|D11|0-1|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQuv;LtfHX_nOUfmGWqaW_aXQXyY?Wn]L]d]UOYyV]og^gngMO>^]d\TKT^\dk\Tkjc[|FIDE World Cup 2015|Mamedyarov, Shakriyar|2015.09.25|C67w|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWuc=McC:;CJW_sd_fofUdkd?Fwn`EJ\LR\jENd\>@vxV^e^RcrsctstMbjbFbtrbTg]?wxwNGrRTKRbKTbRTKRbKT|GpA|Negi, Parimarjan|2006.10.29|B97|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb@sdFNwu=RjbOEtmRDdZ?=gnBJSeLVmdETZTDTd]TD]VDVldIYiaCSbZ:;ph=MumS[eJ[dkdVdruMLJSLTnedRml;m\<;wuCKf^UCnY>@phGNogOW^WNWe]Wltl@?]U?OlnCJn^J\^\DT[TMTxp;C\`IQqaPFaXQX`XFUpqOQh`CLkVTbg_bMqhUOYPMFutLEtDENDLFMVM=MPWNFXHF?LM?HMuO>uEH?`XQLEB>Mh`|FIDE GP Beijing|Topalov, Veselin|2013.07.12|B48g|0-1|W +FVxg;Ln^@Osd?[dUOU^UV^UL^gugELg^[Fm]>@tfGW^guvS[qaIYfhMV]VBR_WGWeW|UKR Ch U12|Blednov, Alexander|2000|C48m|0-1|B +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDLg`JDvxBR[R:RbZ?Ttm>@rsRBxy]Nul=Mdn?=mdN]n]T]d[MO[mOFo_V_m_DN_m]V`iN]luCSZS]Sut=etLemsSHPSUmU^U@HphIYL\BD\^FMipVO^_OV_^VO^_OV|KO|Radjabov, Teimour|2006.11.02|B33|1/2-1/2|W +FVl\@OsdEU\UOUph;Lwp@vxTKmeIQtm?>rtGWgaUFag=EZaFPaYNGYiL]wv:=mfDLkcKRgmR[ds[Rf]V]jbPVc[RDm\V\e\DVsm]eneEemgVktskb[SbTSLCLia>^v^W^gvTo|29. ECC Open 2013|Maki, Veijo|2013.10.22|B35|1-0|W +FVnfEUm];LxgV^gmGWl\@Osd@wpO^\ULUvx;L]ZFOsm?>nf@l\TKk[BR[S;EtkNVwnV^gmETvxKD\U=USKDKkOHOsdUNulOWm\K=ru:JdUTeU_e_f_JLbZCKlc@wn@AqaGWgXN@meBRtmUKp`W_d^RZmd@clmKEnucUulIQXg_fmfMTfnU^e^=OyiONaYN`ih`_ruL]d]T]g]V]u]EV]UDLUu_avma_md:Rnf_Od[RS[dSkf]LT]MOohpkl|VI World Blitz|Mamedyarov,S|2010.11.16|B48|1-0|W +FVl\@OmeEU\U=Ujb?FsdUNxg>@tXDTph;Lwp_\@?\D>fDG?>GI>?IA|World Blitz Final|Gelfand, Boris|2012.07.09|B53|0-1|W +EUxgDTnf@OkcHPtb=Rbk?Hl\U\c\>@wn;Lvx?=uc@jb[MxgDLk[MDtk?>rtBR[SEU\ULUulDMgV=FVgMbnfbklk;EwnRZvxEKg]@wu=Fkc?>]VEVg]:=tkMTdZT[jb[M]NFNrtV`nfMVZTNFqi=utu`okVou|Canarias en Red final|Wojtkiewicz, Aleksander|2004.05.09|B27|1-0|W +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn>@vx@AsdGWk[FOdZKZuZ=>ZlBJtk>PxylsPQbZ?G[SJSZSL]g]V]o_OayxW^e^G_k]_wnwaO]OQOtDNUs[>?[?O?^UHPDlAHph?MloMUqaU]xpIQwn]TnwPXaXQXwnTUpxHPnwX`o_UuxoulwnlTowTtwptf_`PQ|UKR Ch U20|Kovchan, Alexander|2002.03|B92|1/2-1/2|W +FVn^;LxgHPm]V]g]?H]LCLwe@Ovx>@sd:;qiEMrsOYtf=adnGW^WPWn]H]f]Y_]dsv>vwvUjvrjcrB?GdRcle]l^xo@HiaIYRmH@mX^Uk[U^Bj@Hof^UjnU^f_G?nj?;h`^UjBW`BDHPDEUpEMPGMQ;[QY[]_hp^|Tashkent FIDE GP 2014|Radjabov, Teimour|2014.10.21|C26k|1/2-1/2|B +EUm]DTnf;LxgT]f]<`wnFNvx?Mtf@Fsm>@ld=DwvFWmwWfofGOga`nunOWphHXapDHwm?Omg@Axo:@vyHDrxNVpvV^gmDGvp@>ovW_h_X_p_M_f_^fmgO_xhGWvw>?wp_gngWlpi?ghgl^ywfng?AHwGHPGOPXOW^W|ch EST 1/2-final|Keskel, Marko|1999.03.13|D35j|1-0|W +EUm]DT]TFNxg?Tnf@Ojb>@l\BRsd=Fwn?=vx;LulIQkcU]f]L]g]T]tkNVruwnfTdSHOpL>Hh`YaSDOVLUGWngW`g`HWUGWQ|Europe Rapid Ch|Milov, Vadim|2002.09.30|D27|1-0|B +FVl\@OmeEU\UOUxg;Ljb?Tnf>@k[TKwn=OulOPvx@l\U]blBRkc=>nf]fofV^g]LVe^W^tk<`um>Y]S:=mdVgpgMhqh`gwg^grwY`|5th Kings Tournament|Ivanchuk,V|2011.06.20|B09|1-0|W +FVn^?TxgEMsd;LdZ@Fwn>@vxBRZTMTmeCKgaL]nYFLag]gYgovL\me\ZvRZRed>EjbDTdeELl\RZedZBxoBEonE]dtLCtdCJdtJRtlRZld]EnvEMvnM]nvKS\SZSvnT\nvHPvnQY`YPYph]=dt=@ty@hyYhpnuSZYQZbQO\dutpoOKbZK;ogtlgf;Cf^|7th-8th|Bologan, Viktor|2004.07.31|C28f|1/2-1/2|W +FVn^@OxgO^me^OgV;LVLELwnZR`gm[MT[T<`TXGOX`g`og`Nk[=>qaIYrbNFbdFvr;Cf]WP]dP>p`CGonGPnmPG`XENXOHOl\NWxHFEmdGNHxE=fo=ExvEHv^NEofHGfxENxqGE^_WP_]E]d]KR[RNWqDBJ]dPGD=GNe]Wid[iw[TOWg_NE=OENOANEAHwn]ULU\UneT]en]Vn`H?`i?[i`VO`iOPi`PXE>|Superstars Hotel Bali|Karpov, Anatoly|2002.11.29|C42m|1/2-1/2|W +FVl\@OjbDLnfEUm]V^tm?M\UOUsdUdmd>@xn;EnhEOul=Fwnd[M[b[BJlTOUrZ@AwtGWhYFXZbHPYhIYn\W_h^XQ\ULU^M_fof>fxyfnMCYatxaibhiphpnpxp?wpxwxyxQfxyfgyxEi|3rd ACP Blitz Octofinal|Baklan,V|2004.06.05|B28|1-0|W +FVn^@OxgO^me^OgVEUe]?Msd>@wn;Lt_=>nS>NSLCLvxO`wv`V_VNPvf<`umGOVMDMrv:>f>?>v>P>og`Wxo>Ym_Wldnle_MYaMhahnh@GofesjbGNfmHXhnsjphj\nd\cmfNMfmMDdnc\ntDKkc\wtjKDjdwSduDMufMNmdSng_X_h_NMd[ne[de^dmMNc[NFmdFMdcIYcZYaZR^ebZai[SLT]TMTRJU]f`elJBlZSKZL`oTUB;UN;DL:oiNWioW_qaOWKC:CDC]eoe|GpB|Bologan, Viktor|2004.07.23|C42s|1/2-1/2|W +FVn^@Osd?[xgEMw\DLvx>@me;Ejb[Rk[RK\cBRtm?>dnE?nh?PqiMUmXR[b[:rurIQXO=O^U;J\iE\^;>hYOMwrENcNMNYhP_rJ_Ul\N<[SLS\SogFaphaOloE?h`?NqaK\kc\Mtk;:jZ=V^OVvuv:;vV@vx?>e\V]d]LR\eCKf^GOtmNtdcmgmDT]UNFbZMVdlV]xyBJqiKSZSJSmcF^|vs World Rapid|Mamedyarov, Shakhriyar|2009.05.09|B46|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWucUKsm?Fwn`gng=Evx>wte=tlVe[m=MqiOVphHXm[MQ\Ge[s[>FGcQilTiQclQO[\IYTUVMxp;@jb[dkdMU^UOUtm=Od\U_m_V_rsHXqiIYwnX`i`Y`gq?>vx`hohO]xy_hn`]A`Y>VugAYghYXhgXPe]VWgf;LwWQaF?aA?FVLNLUVF=V>L>AO>FOA=E]UFb|19th Amber Blindfold|Aronian,L|2010.03.13|C65|1-0|W +@OxgDTl\;LsdHPm]T]g]?H]lBJphIYqiEMwp@vxLRdU:kc>Lwn;@wv@An\<`qi`gugV]U_LVgn]dkdV\n\OY_eCS\LYOtfBfvfO@LU@FUNFPjZ?>NU:;ZS;SU\=FuM@sm=Dmc;JphJTcTDTwpEMvx@]TMTjb?=ulTMd\IQrsBRqiRZwu|36th Olympiad|Purnama,T|2004.10.16|D46|0-1|B +EUm]DTldT]d]@Oxg;Lsd@weWeueLRvxR\tl=Kentraiph>^e^U^og_nxo^govgd|Corus A|Ponomariov, Ruslan|2007.01.23|B90m|1-0|B +FVl\@Osd?[ph[dmdEMwpIQkc>@n^BJjZ;EtfCKogETxnfoEO]NGNulJRof>Pc[TEru?Glc@I\TKT[TMUTLEKpiK\fTOYxyYhqhPhipG_^UNUwvV^cl_ayxhqxwa_uU:>To\MUMDMLDMUd\_W\U>Edn=@n]N]tf@Ih`W`Y`EDqiR:wx:@xh]W`WIWug@hgWAiWihiypiafTKTstaZtTDMTdMUpgLTgfZadbT\|1st Asian Clubs|So, Wesley|2008.12.28|B33r|1/2-1/2|W +FVl\@Ome?[tm[mum>@xg?>sdDLnfEU\ULUe]V^gV;EVE@gVEUk[RKm]U^tfvxBR[SEV]V=mfm^fmfKfVOfTSLCLng:vuvT[vfHOd^OW^O@HOYHQph<;qa[MY_;sxpstgL\wpgtlLSwSZSRZfeMT_nZbedldndQPgnPOogIYneToe\ohSKONKCNE\cEDdUDCUOhaOYCLcbLUbcU]YH]VclV_leaOHY_XYhX_hY_gYOW_emgpOY_gY_ph_eGWmvhpe_px_ixpi_|World Blitz Final|Ivanchuk, Vassily|2012.07.10|C83|1/2-1/2|W +FVl\@Ome?[tm[mum>@sdCKxg?>nfFtuWNutNEZlELls=>qaHPkc?HseGWjbLCewFfmnW_tdfnwnHQ\T>FnwQYph_hohPXaXYXc[R[|Alushta-100|Zavgorodniy, Sergiy|2002.04.19|B52|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvBRnwDMldCKulVkV=XckU_V_X_k[CptspL[c_`ch`^|39th Olympiad Men|Tomashevsky,E|2010.09.28|C95|1-0|W +FVl\@OmeEU\UOUxg;Ljb@ulTKtf=MwtOYphN`smKfofMQmwYOk[QYwmYQmwBJga?=n`O`lnQNag`OwmO>rsGOmcCKe]V]f]LF]UN`c]FP]N=Eg]`n]nPVn]IY]LVLtLJR[SRZxoOW^WEUNDUWop>DLD:=Dl=eljecscZcjkWSpg@Gg^GN^]NWqiHX]\ST\]TS|20. Amber Rapid|Anand, Viswanathan|2011.03.17|B90|1/2-1/2|W +FVnfEUm];L]VLVsm@Oxg?Ml\>@gVMVmg<`\UOUwnVOvx=Muc:=wu`NcZM[Zl[KtmDTf^U[m[T[^V[cl^OFjbHPn\N\^\=<\n@wpDLjb[RmeEUtm?>xgU]dnRmgmNxgCSvx:@me;Ejb[R\jIQdn?>nhMUk[RDtkE?wv?PqiBRjcvmvOUcULUr]=FvrGOr:@I:CM[CUE@wn?>k[RKvxBR[SEMme;EdZKBl\DLrsETSLCLtm=DZTBTutDBmXO`Xa>Nqi`fwvNPahfpe]pv|Vladimir Petrov Mem 2015|Schlosser, Philipp|2015.03.07|C88|1-0|W +EUxgDTph;Lm]T]g]@smIQXOFOm^OFue:;kc?>wuFbrsLT^mb[mg=Fsk;KgaKNapHXxwBRo_N^_XQXkoFNeg>FgWNWoW^VWVFVqaGOwo@HogV>h`HPuy[dgo]eaYPIogempfd]fl]VlfV]flOW`WX`gh>^yu]VhoV_uyIHjZHGWO^>|8th Tal Memorial|Nakamura, Hikaru|2013.06.15|D85b|1-0|B +FVl\@OmeEU\UOUxg;LjbIQn^UKtfng^VqaLTxq>=m=D=wt=DqxDKxwJRgnT\wvKTtdV^phcZdgZSvmGOgd^]mvSLkcLSdtHXaXQXtdX`ogOWg`W`dfTMfdMUdfSJvo]movmjc\J\n\U\f^\e^`jbvoRZ`@bc@:Zbogelg_c[_Wlc:bcbh`[s`Xb[XP[TPHsxWOTMOGxwG>wv>Gvw|67th ch-RUS 2014|Khismatullin, Denis|2014.11.28|B90e|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb?TnfTKsduvGWrt_imc>?wiaicT?GTN=ENXipywGHo_`gXgW^e^L^lpHpkVEFVOF>gVpqtdDLdf^Uwx>Nx@g^e^vo=;k[OWd^>^nd^NdULUphIYtl;AqaN^ogA@mv^NvoDLytMFov@;g_HP_g;KldFMgnN>ne>:dl:voEDdeDEov>vm>^bZK;TR;KmvEDRTDCTtCDtTK;TRDKRT;@TtPXaX@XtlKClqCDqlDEvoX@lT@;ovYaTlahvh;[lq[ZqIE>IDZ\D<>E@wnEU\U=Uvx?=meCKsmslIQru:=lsENphPXwpGOkrC:f^UDc[T[b[DS\fNGpwL]g]V]fWH?ut:CslCvtvSd[S=UwpUTpLGDrd]de]TLSLDLJj@HjBH@Bj@H]ULDjZ?TZLDGUMdlME|67th ch-RUS 2014|Lysyj, Igor|2014.12.02|A30s|0-1|W +@Om]HPld?HtX>@smEUnf;Exg?>wnFVvxDL]VEVucVgngIQXOHOjZBRwu=DphFewU]f^]elcPX^VOVaXVhvFDFcKhMwpFXm^X_og_qxo`g|vs World Rapid|Radjabov, Teimour|2009.05.09|D02|1-0|B +EUxgDTnf@Om];Lld<`qi`gugFNsm?F]T>@phLVgnO^wpGWmc=>vxIYia?Otm:Zc]FTkcZ>d\U\c\T]f]V\rtCSjZBJZSJSv[<=p^W^n^=Utr>PwvP^v^\M^VU][T]UTMUMVSMUS;@IrjUWjnHXaXWX;KYaKNON|68th ch-RUS 2015|Dubov, Daniil|2015.08.12|D43t|1/2-1/2|B +FVl\@OmeEU\UOUxg;LjbGOsd@R\@A\KBKrjKSdUF=vtCKqi<:k[T[UK=KfK[btdS[dcEZKTZcjcbjcj:jT?[cnujr|Ciudad Leon (simultanee)|Llamazares, Julio|2003.06.04|B90d|1-0|W +FVn^@Osd?Tw\EMxg>@meDLjbTK\j;EvxIQdnMU^ULUe]V^gV?>t_KDVEE>wOAHON>P]U|Eurasian Blitz Chess Cup|Onischuk,V|2016.06.18|C50|0-1|B +FVn^@Osd?[jb[Rxg>@k[RKw\DLmeEU\c^ULUdS=Fl\BJSdU]dnIQwvKDnhCKcZ:;ZL><[SJRbZDMqiF=kbMDrj@IjnHXgVEVnVDVvV=Dun<@VNGNnN;?bFD_FM_mL^IAMVmvhw|5th Final Masters|Caruana, Fabiano|2012.09.25|C78k|0-1|W +EUm]DTld@OxgFNtXIQXO=Onf;Lsm?MwS>@vx?=wvOFjbZl:LunKDphCKneFWgvWMvpLCenQYngCJp_HQ_eYae[JSbZS>m^M^l^ahqhQ?[LBRk[>L^LDLgLR[d[?[h`|19. Amber Rapid|Ivanchuk, Vassily|2010.03.15|D11|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wnEMmeDLvx?>wvIQnwLTgm@weEM]LCLvxO`f_:;rs`VumVeme?>wv=a_fBRf]HQkcaY]fQ?su;:e\Nc\J\d^\U^MQ?vuU:og?Ql<;;M^Qfxqf_qx_fxqf_qx_f|SportAccord Blitz Men 2013|Leko, Peter|2013.12.15|C26|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQtkEMmeBJdZKBl\;EZdE?ktDLtfBfofCSe]?Pul<`ru=F]ULU\SFB^UBfxy>nuZueuOUveUfWf_fuv:=e_=]_n][p`[KypKOphHPn_OMhg@H_pMOghfnp_>f|2nd ACP World Rapid Cup|Grischuk,A|2008.01.07|C88|1-0|W +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBR[S;Evx?>dZKBl\DLrsMUulU^e^ETSKTZKBZTtf=Fgm:BmcOEwuB:cTETfTFTle:BbZ;eMTMuMI@\T;>n`N\ME\J`uB:uc>?suHXEF@HFV:>V>?>og>VutGW^WVWxoW_of_[tdHOfo|Piterenka Rapid 2012|Grischuk, Alexander|2012.12.29|C84|1-0|W +FVn^@OmeEU^UOUxg;Lwn?Fvx>@l\UKsd@]T=DjbBRtmDTmd@vx;Lsm=Dwv?=mwO^bkE@tkTcgmRZo_GOmcNcumCSnucNug:;moFTwt=Msr?@ulL]g]T]sm=Mmg]KtmOErt?=m[DT[dGOgmE?m\MF\fNGn`?NfUFMphNDUDKDwuMFqaCKlnBRaYIQdm=Mmf:=xpGN`NMNn`@Ak[R[b[NL[TKTt\DR\ZR[urLMZBMEBEFE`P=?rJECJNCENJECfQHQJO?OPOCHOWHXW?AI?GIApiXHG>AI>NHXNGXHGWIAia[dW@kcd\EV\U=Um\UNulV\n\NOwuLFln:=u=>=tu=unuFUqaOrbtHOxqUFgXCU\UrVo_VUunFWf^W]neUEphKSqpE@gV?>jb[JVg>vgv<`vgJTtkMDul`gpgDRsmRmlmTcm_crkr=Fr]:=]B=eBfeb_;F>;Cbfof>fxpfmpxmtxpt\Ck\Nk]HPqiOE]UNFUm@ImnEVnfFDgnDLpxLUxoVLngUjfnjBopL]noBEpqEMg^IHqpMVo_VR_oRdpq]SonSM^ed]qpQYiaMCn^]k^nkde\CT\UTeU^eV^UV`Ug`fpqdVnoGWgnV^qxHOng^]gnOVngW_h_]_okVNkKNFKCFOCKOHKkHIkCIQC^_^g^fW^WPWxoQPogPGgfGNf]NM|AZE vs World Rapid|Gashimov,V|2009.05.08|A70|1-0|W +EUxgDTph;LwpFVvx@Ome?Fsd>@n^U]dnCSld<`tm=Kul?@vx?=rtTKldE?nuRZd\Kfof?Eul@Ae]EK\dGOle=Ewv:uv<;eTLVf^U^m^W^T^O_tlGW^T_ZTZVEv>=>kc>vZkYakev>eoEOwe;vmvEFiXY_ewFOXIOHphahqh_NvmHImfIPc[POwpW_h_MWf^Wh^fhYf^N_pwYh^_hw_^wh^]hn]enteltj[SOV|UKR Ch sf Open|Eschenko, Vadim|2001|B01j|1-0|W +@OxgHPkc?Htk>@nfDTwn;LvxCKm]FN]TKTl\nwO^SdU]d^F^f]L]g]=]kd^Uuv]^v^>^dTUTtT^vc[vrogCJ[SJCjZrZw\BJTDZ\D\JS\TIYTSCLSTLExo@HohHOh_ENTLOH_VNWV_Wep`Y`g`ewiawpLKpUKMUc_XcjMEjcEDcNaYPY`YNUDBUNYQHIBrNUrZUNXONEZjENjpNUp`UN`xNUxXUNXpNUpoUNomN\mM\NM]Nc]`cN`xNUxHIQH`QI`aI@aqUNqp@IOFIQpxQYFOYaOVaYxw|World Rapid 2015|Kryvoruchko, Yuriy|2015.10.10|A17|1/2-1/2|W +FVl\@OnfEU\UOUsd;LjbUdkd?Mm]>@xg=FwnCKtkf^=EvmlcneEIrOIqmfZkOkqk^VPXg_X_|World Blitz Final|Svidler, Peter|2012.07.09|B46|1/2-1/2|W +DTn^;Lxg@OsdEU^UOUwSHPvx?HSLCLd^=Kme>@gmBRm\KBjZUK\KBKrsIP?Gl\EFqaUgkdgnPL>?L=LP@?dR|TCh-UKR|Kryvoruchko,Y|2008.05.24|A28|0-1|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;L_nCKt_OU_h?=ut<`n]LFqi`YwSBJSLFL]L=Ed\UFLFEFh_DTjZJRp`YPyuGOuMFCkc@GtkGFru:f]>?WO^f]de\ck\Gd[?>HhLOhfONfeNLkbG\e]\J]UJ\UV>E[T\Jb[LNVXELTK|Hotel Bali Stars|Vallejo Pons, Francisco|2003.11.28|C67s|1/2-1/2|W +@Om]EUldDTnfFNwe?Mo_>@xgCKunxqSLbgIAonLDph>F^XFnvnEOXND\h`<>`XO@_W>FkbFGnV\lqhUdN=GE=NEGWOHOVfdufnlPnmOXgnudnVAIhqPWVfdUfvU_N_W_qx_gvsIHbkgfxyfm]UH?|CHN-RUS Super Go 2015|Wei, Yi|2015.07.29|D30k|1-0|W +EUxgDTnf@OkcHPtb;Ebk?Hwn>@vx=Dm]T]f]?=sbBJutE;l\;LblOYph@]T=DjbBRtmDTmd<`qi`gng;LdOHOld?=bZCSZSTSrjFNsm:;gnSKuZKDnSLBSnBLnSLBSnBLnSLB|4. ACP World Rapid Cup|Jakovenko, Dmitry|2010.05.29|E05|1/2-1/2|B +FVn^?TxgEMsd@Own>@vxDLmeTKe]=FtX<`]VMVga`NaWNW^WIQXOFOn`OFd^;Eun:=ruEO`g=uwu?=u=F=ldO^g^@?phBRjb=Mk[?FxwR[b[MOnjOMwnM;[S;MSLCLj\MbogbknukS\LSL^LQYunYahaKxqixqneGOe\FM\Sqxd\xfaYfoL^of^UfoSJMDJSDMS[ofUNfm[SmfYQHQS[QY[dYadef_e^|TCh-FRA Top 16 Gp A|Belkhodja, Slim|2006.04.01|C55|1/2-1/2|B +FVl\@OsdEU\UOUxg;Lme?TucUKnf>@wnTMjbdS@AvxV^SMDMgmOPtkLVluVek]>p`KUscPwhWfmMYa_WPXWNahNFXFMP?on`opxypq|ECC|Kozul,Z|2002.09.27|B82|1-0|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LtmIQqiCKd\L]ld]Wp`@oT[Txy?>dZTF^VOEl\GOvaIQVOFOai>Frv:>elNVlWE?_VFVvV>VieOF\ULUe]CLWeJRZTVvjbvwewFvyxvtc[R[b[?PTet\]KL>eo\t[SP_ph_nxpndKN@?NM?@SKtsM;d^;>@I>G|37th Olympiad|Harikrishna,P|2006.05.28|A25|0-1|B +FVn^@Osd?[xgEMw\>@dUOU\UDLUc;Jld[Rvx<`qi`YwvJTclTNp`YPm]V]g]N]u]RK]m=axpMUvnU^mXaXtXGWXF?>`WPWFa>VahVFrv:>hMFEMh@GjZBRl^W^n^>^v^Emk[K=hVHP[R=R^aG@V]mna_CK]fLT_O@HOLnjfXjZX=Rd=KT\LDH@KfIYpgdOD<@G@wn?>k[RKmeDLvxIQwvEUtk;EnwBJumKBphCSwp@wnBJvxCStfEMjZS[dU:;UOHOrs=Do_?=xyOHneJRun@wnM_h_[c=[c=Dc[;<[cD;c[[SBJSTLT]TGOog>Dk[DSdk@tk=MkbMDbFDFum<`qi`WmRFNxqU\sm\cjc?=RBV^rRIYBf;SRSLSwtNMmwWNtTS[TSMufK=@rs?>k[ZcscLRcsDTtXIQXO=Ogm@IsKO=us:JKJCJskMDws=Mkt;s;M;lc;DcCDCUCEZCJRdJSZubZunrcnecTel|67. Blitz 2013|Korotylev, Alexey|2013.09.01|B09|1-0|W +HPm]?HxgEMld@OtX>@sm;En^FVweIQXaPXahOYvxY_e\=FwvEOjZ<`mw`N\NFNulOYwfNPfW?>]VHVgV>Vog:>d\CKvfBRhvX`vd`gdV_pxopfof>Vfg@?lmVW^WPWgnY_nuW^kc^ymvygulgelkeWvm_ekje[jkWVksV^sk^VksVOmnQYnpYap:?H:pH?p:?F:^FE^`E=`@=E@`EF`^OV^aF>ahVnhdnqstqndA>EAdGWtsW_\TKTdHEL|6. World Blitz|Mamedov, Rauf|2010.11.17|A07|1-0|B +@Ol\DTsd;Ln^FNxgEU^VO^qa?Fwe^dmdU\e\=uvuGMEGPaYPYEIYPIE=GutGVEMPWM]@cCL]f]=ao_?>CgE`ge>NphaY_W`nelNFwongtXGOXa:>lc@?rwFfclY`ds`]smgUmc]Klu>Vh`U\u]\w]KDKxwV^opfecm^]mc]ZwneiaoZjo]ic|Artek ol U16|Samakov, Nurdin|2000.09.15|B45|1-0|W +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn>@vxBRsd?>dSFOulFqiFEtfK@gVEUk[RKm]U^tf;Ew\=FVErsOUscKDmn\nhnCSnhHPuvGWftBRtmRZcsUKldK\mtDhqh@GsrGNxwNUwn=Enu\KulU\tmKUvnIYryEFyvFNvy^fofUf|14th Ordix Open|Prill,G|2007.08.18|C81|1-0|W +EUxgDTnf@OkcHPtb=Rbk?Hl\U\c\>@wn;Lvx?=uckH>HZdR[m]FNqiIY]TEuru=unu[cjcNVgmWeugHNdZGWgU@GmgGOgvV^ve^exwW_wvBRvm_fofOViaNHZKVWK@wn?>k[RKvxIQmeDLdZKDl\EMZd;EwvE?qi?PnwMU\ULUdUOU^U=UtfFpLCLvtFNd\GWe]V]\]M]fN]utu=uxputNVtrVfLT[TKTfdHPia@GaYrjYPGPpgPXgfQYogT\g_X`f]jpbZpjd\`h]Vh`\@wu?>nfLRmkDTgm^pxp:=rsFNklCKbZR\m\N\u=>=su=uluHduE\^pxT\EBdHB;@I;K\dZR^\RJdlf^H]|4th FIDE GP|Bacrot, Etienne|2009.04.27|B90i|1-0|B +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBJvx;LdsLFl\FPsdDLrsIQbZJR[S?>tfKTqi@nfEMm]FV]VOEw\MVf^=Fun?>qaEK\SDLSe;EkbFOsmE?bk<`nfIYjZKEm\?NgVN_V`_pvmOk\kpf`fHkrskVf\V_mnETngTN\R:;e\_D\N>NR\;>svCSZSLS\fN^vu^_gpDKfU_ophoWUKBKue>^|Tal Memorial Blitz 2014|Kosteniuk, Alexandra|2014.11.14|A05|1-0|W +FVl\@OmeEU\UOUxg;Ljb@tfTKsd=FdZ?=ulL]g]K]rtDLZTN`f]=]wu:=k[`@vx:<]cTKjZETtXTclcKTugT]ru]dkdIQXO=OgUOdUCBRCUphHPef>=gO=?O]TW]dldfd?=dl=ews@HxpWgc[R[s[eb[kgOkjbclkcdZROJkSQYqaGWSCHOjkdLCKOVKLJLkjLJpgV]g_]d_XdcjrckrukduUd\UV\]o_JLV>LJXQJRQPRbPYbh>VhxVW]^W?xwYQ^U?OwxaYxpQI|World Rapid Final|Radjabov,T|2012.07.08|C54|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxEUdUOU^UV^gvDLUL;Lme=Otf^ve[Ue[Ud[UdUuUOLUc^\rj:@vxEMulKEbZ:cNFNmcE?tv<=e]V]c]NOd\@A]L=ElnW^n^>^\^AHqaEG^\?EL]ET]NTNvNOkxqGE\_k]|10th Petr Izmailov Mem|Kasimdzhanov,R|2006.07.15|B91|0-1|B +EUm]DTld@Oxg;Lnf=K]TKTk[TMsmFV[SLRuZCKd\GbZF[gv^mvl[RogFrRBJtr@O^TU[TJ[JRJ:JrJOEJBGOgmFMBJMFm^A?d\O`qaXaf`W`phMhohahLp`N\]?>mehepL>?]e|40th GM|Bartel,Mat|2012.07.14|A15|0-1|B +EUm]DTld@Oxg=K]TKTt_HPnf?Hsm>@wnFNvxTFul;Lf^IQwvNV^UOU_haWH?WfULogBRhoRZru>=jbQYfl=UlfU=xwGPflLUoKU\wo=;Kf;=fK=;Kf;=p`\cu=:=l[?[b[=uvucu`YPYd\S\[S\dkdZbSKbjKCjr2C;2rjohYP;>jG>GPGd\GP\TuZg_PWqaZ>_VOVfo>LovL>hg>YgfWNfeNUvoY`ed`Yd[YnohUN[RV^RKn`TL|Sportaccord WMG Rapid|Ivanchuk,V|2011.12.10|D11|0-1|B +EUxgDTnf;LwSFNvx@Fm]BJSnT]f]FWwv?Mne>@eWNWsd_fNGn_FM_e>^ld:>f_GYgqYn_MneM_eSkcJRjZSJvfIQrvHXf^W^aXQX_XOXmX@?q`EHX_HG`O?FO>G_h_F>ogJexoLFg^U^of>GfmFWvxeJxvJevxeJxvJ\|9th Masters Final 2016|So,W|2016.07.19|E46|1/2-1/2|B +@Om]HPxgCKph@sdEU\UOUnfUdkd;JtbJTun=DrtFV]cTcjc?=f^=Ed\:=tuBJuUGWwuDLbFEFU=@GuUW_=MLDngHQg`G>`aQ?h_KS_VIYaO|UKR Summer Youth Games|Kovtonjuk, Natalia|2002.05.14|A07|0-1|B +FVnfEUm];Lxg<`wSV^qi`ESLCLgV=Xph?MVE>El\IYtmYah`GWsdW`u`X`i`EN`XMF\ULUog^gvoF[og:?g`?omvop`gpXya@QdU[MU_M_a_QW]UNEvoAig^WM^]MW]TWf_GE@m]V]d]IQld=Ors<`Se:;qi`WtfLFd\DLwvCS\SLSsS;SeS?;SeWNgVFUfm;kV\km\mU_enNing_pgpOXv>@IusGWsCipCpXmpUmXxwXtwptXpwXt>vt_vN_twptXpwXtNvt_jZM[vf_XUVXP|SportAccord Blitz Men 2012|Giri, Anish|2012.12.16|C47|1-0|W +EUm]DTld@Oxg;Lnf<`qi`Y]TFVp`YPk[?FtkIY`XO^ia>@sm=Dm^P^wi:=vxGWgvHPogW_g^U^ul_fw?F?l^@Ivg?HrwCK[SLFTLFUiEU_^fDMd\_ekbMbLD|1st Asian Clubs|Mohammad,Sam|2008.12.25|D43|0-1|B +FVl\@Ome?[smEU\U=Ujb[mtmDTxg;Lph>@wpUMvxBRrt:;md?>gmCSmcS[dmOEmfL]cRVc]JC]gCgngVvmv|FIDE World Cup 2015|Svidler, Peter|2015.10.05|B51f|0-1|B +FVl\@Osd?[ph[dkd>@wp?>xgV^g]DT]lEU\U=Uvx;LlfUYogLVg^O`f`<`ul:=m]T]d]=]tk]Ew_IQldGOrv`Njb>=dtEmtD=ED;@IkVYV;BCSBfmj_gEmqimkf_N\_VOVpwkcgc\cnfcZvsjbwSZlsvl^xoHXSwIPvnQYnmPWwnX`i`Y`m=bj=?WNovjrvmrj|6. World Blitz|Radjabov, Teimour|2010.11.18|B31|1/2-1/2|W +EUxgDTnf@OkcHPtb;Ebk?Hwn>@vx=Dm]T]f]E;wv;LnS<`sm:@k[aYP?gVDV]VJRlnR[d[<;XOHOn`@AVO?PYPGPOG>Fe\U\vNFN`N|FIDE World Rapid 2014|Milov, Vadim|2014.06.16|E46|0-1|B +@OxgDTkc;LtkEUnfBJm]<`wnFNvx:@sbO^\UNUg^U^b\?>wvGW]ULVkVMVUM;ZR;=u]IYph_MvuE>UW^f\fMDc[=]u]LNfUDMxpA@Wg@I]aNQUfQOaYI@gU>GUG@G[SONYUM[pgNOgnOMSJCJUWGNo_MmngmeWVNGg`[vfWv[V^[TWaebagbRgXG?`YTFYPFX_XRSiaJRPI|74th Tata Steel GMA|Carlsen,M|2012.01.24|A15|0-1|B +FVl\@OmeEU\UOUxg;LjbGOn^UKtf@YQHPvxKZulCSwv?=ms:<^VOWlmT\e\S\nw]esdZTts<;mf;KphTcwpc]fm]gpgFTbZBJsrK[ZREFgpT]rj@Gpg[cxw=;gpPXpyGPo_X`mq]dkdcd|Human vs Computer|JUNIOR|2004.10.07|B90|1-0|W +@OxgDTph;Lm]T]g]IYqiFV]LELu=>=tX=Dsmd\DMkcMNlP>LPYFIY`NOXWOHaYIQWVQMVTMu`WutfmtyW^|UKR Team Ch|Eljanov, Pavel|2001|A16|0-1|B +EUxgDTph;Lm]@Owp<`l\U\uZ`gpgT]vx=Esb:=b\OU\RFVtmLRZRCKRJ?[m[U[J\[UnfUFf]V]ru>@wvFPgpEMumMOv^]eo_=Mpw?=^fIYfeMeme=eweYa\dONd]P?jbNvxp?N]oaipgvygfNTelytomtxfgxwg`TNl^HP_WPW^WwpmQpn`an\h`N?QX@AXOA@aY?NWNGN`X\UOFU^F=@G=DG>D;>E;BE]A>EA]E>]Vlp`a>EbZEFk[FEZRKR[REFRJpoaYFEJBo?VS|ECC|Hernando Rodrigo,Jo|2002.09.24|D91|0-1|B +@Om]HPld?HtXDTnfT]XOHOd]>@sdEUxgFNwn;Lvxo_RCrtCMneKSun<;dsBRkcRZcZSZsmOFtsGOVg>Ep`MG_WNW`WPXqaX`gvIYvpFMeS=>|Piterenka Blitz 2012|Jakovenko, Dmitry|2012.12.29|A11|1-0|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWul`gpg=Ek[BJtk?Fqa>vw>Vi`DLlcK:wp:DbZ;BtlVXpwMFc\OVTcB;yxF>wn>FnmVMcTMT[TDNxsNTZRFDsK;:\[DFl\XVmnFM[kVXk[XVnmMFmlFM[kVXK[MDkrTE[ZETZ[TE[ZETZ[|Supreme Masters 2013|Topalov, Veselin|2013.05.18|B96f|1/2-1/2|W +@OxgHPph?Hm]>@wpEMvx;E]UEKsdDLULCLg]LT]S@l\TMsd;L\UNUwn<`vx:DLJRLTRZ_WbeTV>EVRZbRBE>B:>E:BE>B:>E:B|MTO|Riazantsev, Alexander|2003.07.31|D27d|1/2-1/2|B +FVn^@Osd?[jb[RxnDLphEU^ULUk[RDm]V^wp;EvxIQog^gwg>@uw?>qi>Nn_NM_eO^dSMOSD=Dt_D\eo\lo^U^goldwuO_o_dhuwEOwoherv@sdEKjbKUdUOUxg<`w\DLmlTM\n=Ovx?>qi`YtmU_mdOPlP_nxyYPdm:=wvPeruMDm[eJp`CKu=>=[F=EFaLTypGOk[nd|World Blitz 2015|Socko, Bartosz|2015.10.14|C07|1-0|W +EUxgDTnf@Om];LldFNsm=DweCKvx?Ff^T]d]L[eS@rtD=XgEO^O=Ot\?@vx`YZlYPluKJkc?=dZTFtkO^rt:owjJwrJCTRC;k]>Miw=EmdGO]TPWd]MGRBDBTB;>BTGX]_>Vr:@IqaV_f_XgxogmwpW^piOW:BEBTBIPiw^lwJm^oglugpPYJeY`e^W^poHPBf`Wf]WNofNE]HQYH]EDfmuZmdDMdmMDmdDC]fCJf]JS]fZuf]SZ]fZbftbjtfu`fm`WmfjsfmW`mf`ifmiWmfU]f]st]KtuKTunTK^fKTngTKWtTKTZRAYvxS]wv>SRS]Sog`gpgYIvrS]gu=?_hNiu`i`V`IErbT\e\]gxpEm`ogXbfmj^VjJha?Wo`XN|TCh-RUS|Efimenko,Z|2008.04.02|B90|1-0|W +DTxg;LphEUwpFVme@OvxIQn^U]gaHPsb@vxBRtfRZum@vxMDsdEU\ULUe]V^gV;Lt_@wnEMk[RKvxBR[S;EmeRZrsETqiIQtfDLutMU^ULUe]V]g]?>wuVs[Kftf=Du]E>]\DFSKFM\DVFf_M_n_FDKD>L[]OE_U|World Blitz Final|Svidler,P|2012.07.10|C84|0-1|B +@OxgHPm]?Hnf>@wnEMvx;El\FVsd?>k[V^gmE?[SIYjZEunBRkcCK|4. Open|Milov, Vadim|2004.04.01|C11|1/2-1/2|W +FVl\@OmeEU\UOUxg;Lph<>|3rd ACP Blitz Octofinal|Petrosian,TL|2004.06.05|B78|1-0|W +FVl\@Ome?[tmDTsd;LphEU\UOUwpUdmd>@xgGOvx@wn?>k[RKmeDLvxIQdZKDl\EUul;E\ULUZdE?^UD;e]V]g]OUdU=Utk?N]WN_WF>Fl<@IngUXph_P@l\CK\UOUwnnw>VwpKSvuS[b[R[dU_?kc?@n^FVwn;LmeEMvxIQrsOItmIXutXgng@ImfGW^WPWgLCLo_VdPeZlel|KM FIDE GP 2015|Giri, Anish|2015.05.15|A05|1/2-1/2|B +FVn^@OxgO^me^OgV;LVLELwn\UYajZGWo_W^_XA?w?>?xyFVfxE`XPaiPHVHU^`uluHV^gipgp?AqiAipiV^|Aeroflot Open Rapid Final|Frolyanov, Dmitry|2013.02.16|C42|1-0|W +DTn^;LsdHPph?Hwp:;jZBJmeCSZSJSo_EMxg<`qi`gpgL]gp@Ovx>@dnOEh`=D_WT\n_EKxy?@smIQXa@jbBRsmIQm^MDgaGW^mHXagFPrs\U|Keres mem op|Tsiganova, Monika|1998.06.21|A65|1-0|B +FVldEUm]V^t_@Onf?Fd\>@sdDL\ULUxnvxGW_hEOtcCKjZBRdS>MrtO>cmMSnSF[ms>Msd:VdT[dl>=hVXPlnPNVhNOtlIQqi@IltOXu][TnmXOmdT]d]O]S]HP]L=@wn:;jZEMvxavR=ZRBJS]L]u]ETrbT^br^TrbTEbrE;]Z;LgnLFc[FWvo=F[SJSZS@S\=FmegmLR\N>NvxIQXfCKm\RLftMF\fFXfUXtrt:=d\GW^WNWuZ=MZLMLUF@IFW?WwvLMvfWGxwGEtdIPwnPOfgOFgfFOfgOFgfFOfgOFgfFOfgOFgfFOfg|TCh-RUS Men 2016|Grischuk, Alexander|2016.05.02|B44f|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBRtkEMme;EdZKBl\E?[S?NktDLtfBfofLS\S@sdEWdZ:kO>N\NEMOHAHN\;?ofSdjZJRfFMFvFHQFV?_VT_]xo]aTRaqRVqyZRyrRJduoguk\nrbg^QHVSbcSR|Supreme Masters 2013|Hammer, Jon Ludvig|2013.05.09|E15o|0-1|B +EUxgDTnf@Om]HPwS@ld=Dkc?=smEWtbO^rt;LbT^T]TFVc[BRjbU]d]V]f^W`[S]eSLDLqi`N^VLJwvenunJnvn=enf:=m^HQfe=ets@HTLCL^TebTNGNg]RZo_LT]NHGNTQ_swPXTZbZphZ^h_X_wrGPxo^VogPWrbIYia|78th Tata Steel GpA|So, Wesley|2016.01.18|E11i|1/2-1/2|B +FVn^@OsdEU^UOUxgUdkdV^un=Fg]DTtbCKog@vxFOrv^LgVLpxp?=meOVvV;LV^GObt=>wv>^v^@Gqi:=h`=EjbHXtkL=d\=Nph|Alushta-100|Ovsejevitsch, Sergei|2002.04.19|C45m|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb@mcRZcTFTtTNcutK@weEMumO`]LCLf_:;qi`Vrs=RvxVelexoFNUO>FO`@]eBJSZCSZc=Rvx?=rt:UC?EBTXxwXYuE?TcG@IB:TtwntlEmlmnm|Keres mem op|Martonov, Anatoli|1998.06.17|B22|0-1|B +EUm]DTld;Lxg@OjbFNph?Mwp>@vx=K]TMTgv?=veTFtXNVsmV^e[BR[LCLk[RZd\IQXfU]f_@IU=PWh`ko>@IP=MWNMNGNL^PX@HX_HQ_VQXV]X=]f=RowiawO`XOkRvf]vx]dxTdmTomdok|Renova FIDE GP Zug|Kamsky, Gata|2013.04.29|D15g|0-1|W +FVl\@OmeEU\UOUxg;Ljb@tfTKsdN`dZ`gngK]rt=Mk[BJuc?=wuOEg`E?ZT:;[SJScSLBSZBUS;SsS>MSTM>aYbeNHP?H>F>TD?EYQe]`W>=DB|It (active)|Valmana Canto, Jaime|2005.11.17|B90k|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?PldCKulVUVDVwJlj|Amber Rapid|Anand, Viswanathan|2008.03.21|C95|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBRtmDLvxKDwv?>qi;EnwIQdnMUnhE?l\U]gq:ZSLSY`RZrbN`u`E`i`HXph@H|8th World Teams|Leko, Peter|2011.07.18|C84f|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn<`tf`gng=Msd>pg>@rs@>srKCry>:yrC@agO^vxGWgv=aog^hnhMhtmHX\UNUcuEOulOYm[?>[mW_f^U^g^X`l\@H]U`ivga`pi`iULHQLD;<\U>@UM@P|FIDE World Cup 2013|Andreikin, Dmitry|2013.08.22|D03d|1-0|B +EUxgDTnf;LwS@Ol\HPvx?H\UOUm]T]g]=KuZ@SLCLtb?=Z\FVbTKR]cRS\a=>d\SZwtENTFNWFM:=MF=@sb@vx@bZBJtk=G[SGXqaXNph?OkbFbSLCLrbHXaXNXwsOQcCECsCU\m\XgxpQqpwW_f_:=\Vqywpyqpwqywpyq|63rd ch-RUS|Potkin, Vladimir|2010.12.11|C11k|1/2-1/2|W +FVm]V]u];L]ZEUld@Ot_?M_M=MZbMbsbng>NruA>xXM^e^N^u]DM_W^V]_>FWPVXPGFGaXGH_WMNg_YaWONF_`aiOQHGo_|8. Tal Mem Blitz|Nakamura, Hikaru|2013.06.12|B01|0-1|W +EUm]DTld@OxgT]d];Lsd@vx:dUEUNXOXn>|Moscow Aeroflot op-A|Atalik, Suat|2005.02.23|D13n|0-1|B +FVsd@OmeEUxg;LtX@n^DTm]=RweEU\UT]uZRZdZ;JtmCSeSO^SL:;m_J[_;[lvulr;h]TtvVev^e[>=\e^ae\ay[e=DeVE>VeyreVrRT]DM\c>SVGMDGVSwVLRbclDMLVbjVGMDlcjoGXoWX^wp^dDKclW_l^_a]Vpi^giEd^aigpiYV]EW^dYa]Va\VW\dWNdhpyhfNEKTypfhpyhHENHxygxwgpwopyonNEnvypvnpynVypVfpyfiypiIENIHpyHxygxwgpwopyonNET]UMFVEFnqMEqIFNIANFV^y^]^E=2A=F=|TCh-RUS Men 2016|Kramnik, Vladimir|2016.05.07|A05|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeBR[SEUvxU^e^;En\=FqiIQunETtf=vs=]l\:=rj]es[eb[ZbZjZT]phHPxp@HZB=EB:E=:B=EB:QYia]V:ETvwGW>FH?fUTeFCkowxokCKeV\TksxoVeofeTf]Tc]V^fVO?>KMsuUD>?Mu|World Blitz 2015|Dominguez Perez, Leinier|2015.10.14|C88|0-1|B +EUxg@rtCSZcEKmgK\g]=EkrDT]g:@gv=Dm^RZ^OFOtmLRm[?>vgRLgmDKm^L[\TKSb[OFnmNVwvWPqa:JrtZbkbJbt\PWmtbc^mWemce\cR\NtmF=vV=R[R>=o_Scxq]eVvNWTLCLRJcZvVZlmR=:VTlnTVnlVT:JR=@I=FJjTlelFTWeTdlt2dte^tfjpqiGWaYpkh`ksihsufTuehaW`a`eUT\^W`aUM\TMOT\IAahWIh`I@\T@N`hNUh`ON_WNOTFAI`_U\Ff\Jf>Je_hLT>fT\f]OWhaWX]fXUfmUVmdVfdRfgRdgwdVwtVUtuUVuya`ytV]tu`auv]TvwT]wga`gW`aWX]dI@d]@G]MG@M=@I=]XW]dW_ah_?ha?YX_fXUf_\d|18th Amber Blindfold|Ivanchuk,V|2009.03.26|A61|1-0|W +CKn^@ul=Ewu?=^UEUtXIQXFLFjZ:V]>=]\=:aipi_o:Z\eZbe]iho?bZ]eZbembjmdjbd\|FIDE World Blitz 2014|Wang, Hao|2014.06.20|A01|1/2-1/2|W +@Om]HPld?HtX>@smEUxg;Enf?>wnDLvxFV]VEVgV>VXOHOn`=K`<:uZ>^Zl@HwuBRgv<>veYaqiKDeT^\Tc\^cT^Fk[CKTeF^et^\tnR[s[\TjZTRlcRJn]OFclF[d[LT|World Blitz Final|Le, Quang Liem|2012.07.10|D02|1/2-1/2|B +EUxgDTnf@OkcHPtbCKwS@rtFVc[?>]VEV[T=Fd\U\m\V\t\KS\[:=ulBR[SFXphXUf^U^l^>^SK^nKLnjbt=:wujrLKH]KS:@vxDTld?>wv;LVLCLv>=>qiT\elO^smGWmgW_gVMV]V>Pt_@vx?>wv<`tX;Egm`NunIQXaHXah:=ru@Hn\EK\N>Nmg=uvuK\kc\fueflhVX`VOHOgmOFxoNVqi`ieiQYonVXnulbd\CSphBRutS\c\b\m\XTtkT\iYRZYVFMVWMNW_GOh`LTjbNF`XOX_`FN`X|6. World Blitz|Aronian, Levon|2010.11.17|C63|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQwvEUtkBRutO`duKDnw;EldCSufEKgmKZf`<`tlZklkDKmcR[b[:rvrU^e^=Fwn`NphHPcmGW^WPWklV^mw>?rJFCJbW_d\CGl^S\h_NUbh@A^VGOwfOV_V\dneUcxwdlelclwnlZ|NH Chess Tournament|Nikolic,Pr|2007.08.25|C92|1-0|W +EUm]DTld@Oxg;LnfT]f]=Dph<`wnFNt_DKuc:E_fLRqaIYne<:kcKSjZSZrZCSZjRLyr:jrjA;jJFMc[EDmcDCJr;:cTMTr:C:[T:CogCJh`HPfmJCefCDf_GO_fDEfeEFm_FG_MGHefHGf_G>_h>EM_NV]VOV_mENg_U]d]V]hgY`g`S[`gNWgnW^nu^U_WPWaYUNulNOlc]ec\W_m_OW_mW^YQLV\[VgQI|Internet Section 06A 8min +2s|Ferhat Tamur Ali|2004.03.06|D36e|0-1|B +FVn^@Osd?[jb[Rxg>@k[RKtk?>wnEMmeBJvx;EumE?du?PufDLl\MU^ULU\TKDe]V^gV=Fo_>=bZO>[SJSZS:rkrGOVPIPmjOucFGdvPX_XGYqaW_XO_fOH@HvdYaph;hcu=AjpNipn|World Blitz 2015|Kravtsiv, Martyn|2015.10.13|C88|1-0|W +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDLg`JDvxBR[R:RbZ?TrsRBxyDN`N]NdnCKo_V_n_N]tk>@st=M_Y?=qiMPY_PXt\BEktXVtkIQ_YTMw_M;\LVXiaXFu`GW_W@AYHFHLP]WkHWHPQA@QPEGyx=eaYed`X;_PHGHX_dh_ohXog@IxoIQ^VX`VNQYph|Corus A|Topalov, Veselin|2006.01.24|B33r|0-1|W +FVn^@Osd?[xgEMw\DLvx>@wv;Ejb[dmdETgmCS\e=Kmw<`um`NwhOEewMUmnU^tfKDfTETh^TEbZBJZSJSnfGO^TNWd\S[Te:rvr?;kcV^eTDVrR;@I>^HP^FIQCMuwxqwvMGQYF[PX[TrtTWt_W_X_\Tvnl\noTL_gqh|FIDE Candidates 2014|Aronian, Levon|2014.03.21|C65j|0-1|W +FVl\@OsdEU\UOUxg;LnfU[wSBJSL[Lm]V]f]?Mvx>@]ULFtXGOXaCSucFWahWhqhOWg]=O]N?Gwv_aF^aI@?vw?FIHF=|MTO|Raetsky,A|2003.07.27|B45|1-0|W +FVn^@Osd?[xgEMw\DLvx>@me;EdnMU^ULU\c[MtXIQXaEKe]V^gV=DndMV]VDVaOVOdUOkUKBKuMkOru:JMOHOog^gwgKSuUJKUTOWgh@AcG?GTZKBKyv>FvyF>yv>FmdFavwaYtlW_cZYWk[_fofQq[SLFf^WidV=EVqiqe]FP^VP_n\qilm?TwuTFZcE=bZiWsjIY\eWEe^Ya]UFTUMDMVMaiZRKRmlCK^LEWlm_NMENXmUWOckXgkOHOUTKTLg;Djc=ESKD=KCEuC;2=Fgu|3rd ACP Blitz Prelim3|Paehtz,E|2004.06.02|B97|0-1|B +FVl\@OmeEU\UOUxg;Ljb<[SLFulIYe]?QmcCK]VX`g]OV]NENi`Y`ph<;wpA?l^NGrjF@jl@O^\GE\LQXLE=EvnEGcmUFtkO>m^>MnvM^p^XOyYFEpUGUdU]lvmlrmdBRtf:JyrJMd\CS\SMUS\UMh^ML^T?TfTQYe]Y`i`Aa]ULJogJ:\e:AbZA;k[R[ZR[cRJckrsaAe\DLULELT[;:sk:JkmLD\eDEefENfoA@tm?>wh:;utCSnuO`e]NEucT\clS[v>;>tw>;wuBRhwLFqi`OwfM_uvENfw_MwfNEvu;>usENxyDnyxnm]dmuofGN|8th ch-Euro|Orlov,And|2007.04.09|C42|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxEUtXU]dZKDutIQXm;Eld]dtdE?wt?PnuP_m_V_ZTBRqi=FulCKTcRZc]LTlsDM]LFD[SM?sj@V\MFvx@]T=DjbDTk[TDtkkVDFphZclcE?^pFEbZ?NpiHGuvDtkt@phEKbZGOvx:=kc?>tkYGrt@AgaNVapGNnYHPYnDGxyNin`i`f`KEogV]d]OW`oW_h`E?oe?NpvA@eVMV]VU]veNDwvDUv^UfunGce_>V^VLVtDcKDF]enmf\_U\mUKmg|10th World Teams 2015|Erdos, Viktor|2015.04.23|D15n|1-0|W +FVn^@Osd;LxgEU^UOUwSUdkd?Mvx>@m]V]d]IQld=Owv<`rs:=tfLFSnFUfmCKgV`WsSMV]VOPutDTd\UDScWengDNmf=EgUEU\Ue^og^UcbUgtkg^bB?=vwT\ko=?fKNXBb^eofewxwPswoX^ogGW|4. Zurich CC Blitz|Kramnik, Vladimir|2015.02.13|C47|1-0|W +EUm]DTld@OxgFNjb;Lk[CKtX=EXOHOsmgY>?YgE>vu>Gnp?>ulFDwrQ?yvM^pn?Qgp>@pg=FrsD@meDLvx<`qi`Y\cBRrsR[b[;J[SJTSLCLtfKRdZTcscIQunRDZdMUfT?>TbOIp`YPwsGObTPGcCI?T?@?gm:;C;D;du;DufDRfW=Dxp>;s;D;mw;[wh[mnmRmpg|WY ol|Zhao Jun|2002.08.25|C77|1/2-1/2|B +@Ol\FVnfEU\UOUsd;LulvnHPgVeSkSLSVPS[_W[cWO>@PF@?^VBRFP?G|Tashkent FIDE GP 2014|Giri, Anish|2014.10.28|B48c|1-0|W +EUxgDTnf@Okc@sm=DqiMVkVDVvx?>mgVMumIQaWNWwvU]f]T]nwOUph:<>rv>vgPQpwONgqN^mtdnwn^ntbnvxpv[bk>nqg[dksdlsyQHgXnopxlu|World Blitz 2015|Navara, David|2015.10.14|E12|1-0|B +FVmeEUxg;Ln^@Osm?Twn>@ldBRjZ?>vxIQqi=xpEOfuFEuk@HlnEMsr=ErsHIsrE=rsMEsrEDkeT?rsNTeT?TtXIHsuDAHGNHC>EC:NG:AE>AIGNIC>EC:NG:AE>AIGNo_V_h_>G_WPW^WNFIGFGpgGFQ_FEgnE<_h@wn?>k[RKmeDLvxIQtkEUwvBRnw<`qi`gugK]rsR[b[;Jdn]kskU]vsJDld]dndDNgf=Mfm>=kjN][SOESLCLj:=:duETm[:Z[kZRufRSkjHPsr@Hj:Tcf\MOruQY:>cRurR\r:HQe\Sk>AOA:AQHA:ksphsviav^:r^vrjV^xpHO\TvtjZtuw\]g\nuxpiOVng^giqxpqipoZBGW|NH Chess Tournament|Beliavsky,A|2007.09.01|C92|1-0|W +EUm]DTld@Oxg=K]TKTt_HPnf?Hsm>@wn;Lvx?>gVTKucOYnYPYmgGOVLCLclFV_h>FgaFGwutXWPgaK=Xh>N][=F[;G?aWNVWFVF;?@?hMP>Mb?GbT|38th Olympiad|Khenkin,I|2008.11.19|D11|0-1|B +FVl\@OmeEU\UOUxg;Ljb@tfTKsd=FdZ?=ZKDKuvO>gX>Do_GOXNDN_VLVruN]voFMf]M]o]=]xo:=ofKSutS[tD[bkb]ZwsCKsc@?cdIQqa=Mp`MEDEVEe]ZRbZ?FnuFMdBF|KO|Carlsen,M|2006.11.01|B90|0-1|B +EUxgDTph;Lm]@Owp=K]TKTvxFVjbV^gmIYmcT\tX<]dJLpiA@k[OWi`Y`d]CKsdVHC:nfU]u]=]H]><_V<=[SL<]Z=mrumudu@vxRLo_KSm\GW`hW^rsSJsrJSrsSJ|Dannemann Match|Kosteniuk, Alexandra|2003.02.02|B32q|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQtkEMm]V]g]O^dU;L]S^]eDLvf^fefLS\S:tm@IbZ>Nk]Nc]KcZmMZSKf|WCh 2016|Carlsen,M|2016.11.18|C88|1/2-1/2|W +FVldEUm];L]VLVt_VP_hIYqi@OsmYahq?MqM=MnfjZ<;vxO^ruMFnSGWwvBJSE=Ed\>=\UEUm\FNZRPF\KUMuM=Mk[T[g]NGlk[c]cFLvtW_c]_fofG>]LMLtuLMuM^Mk];D]HDLHdLSKU>^dm^VUdSLdnM\n]LUmo\f]cU\cm\SoaSRa=CK=eKSmcR[c][T]cT[c][T]c|Amber Blindfold|Topalov, Veselin|2008.03.23|B19|1/2-1/2|W +FVl\;LmeGWph@Owp?TsdEMnf>@xn=>vxW_h_>P_VMVnh<`og`WhWPWd^O^e^WGuUTFtm:=UG?GruFTmtGEuUCKwuEMjbBRxoLFUM=MuMTMtmHXpi@GiEIQk[R[b[DT[SF@EL@OqiGPopMDg_V_f_X_pgPXm_D_iaXag_QY^VO@VN@FLgF<_W2WMGFM>Y>|ACP Blitz preliminaire 3 (3eme)|Macieja, Bartlomiej|2004.06.02|B23e|0-1|B +FVl\@OmeEU\UOUxg;LjbGOn^UKwn|19. Amber Blindfold|Grischuk, Alexander|2010.03.21|B90|0-1|W +EUxgDTnfHPm]@Own?Hvx>@]T=DjbDTk[TDtk]SD;ruEV\cW_SM>?nm_gphVele;Me^MVwvVYiaY`c\F^v^`^\w?>md>Fue^vegvdgdBR[RKRdTO^TRFGRV^ownIYbZo`n`Y`VfPXaXGBfbBRxoHPofPXf]XW]\WN\[RBZRNMRJMD[TD;bZBHTU;BUVHGZ`BJ`_GHh`JKVOH@`X@?OV?>VW>?W`?@_]KL`W@?WNLT]u|19th Amber Blindfold|Ponomariov,R|2010.03.20|E06|0-1|B +FVn^@Osd?[jb[Rxg>@k[RKw\DLmeEU\cBRrsR[b[;JvxJ[^ULUtX:Rwv<`qiK]XOHOi`]dvf[LgaL]aW=EW]d]fi?:umRrsr:rxqV^e^U^mQ]ophoxqp^fQI@?iYEmpgrwg^m[^ewu|MTO|Tkachiev,V|2003.07.28|C78|1-0|W +GWm]@OphHPwp?Hxg>@l\EMsd=>]U;JvxJTg]BRkcFVUNDLtbNulO`rt:>qi`VwuW_h_?_lmNWmMTNogH?d^?M^MW?M>?btl_?>MbTxyN_M^Tf^h_pypVg|Moscow Blitz Final 2014|Paravyan, David|2014.09.06|A03|1-0|W +FVl\@OmeEU\UOUxg;Lphp^UD]VMVRVOV^P>AZ^=Uo_`gagAQgVQPVPNWPFW^FUDUrZUOxo;Dof^lZ\lc\aDMf_MF_XcGa_OIXQI?_gLTqiT\h`Y`i`CS|38th Olympiad|Le, Quang Liem|2008.11.13|B78e|1/2-1/2|W +FVl\@OnfEU\UOUjb?Mw\UK\j>@xn=FsdtXON`nTFXF|EYCC B14|Predojevic, Borki|2001.09.08|B42|1/2-1/2|W +FVn^@OxgO^me^OgV;LVLELwnwfPY_`Y`f`GW`fEVo_VgxogqfWq`og`q|XIII TCh-RUS|Erenburg, Sergey|2006.04.20|C42m|1/2-1/2|W +FVl\@OmeEU\UOUxg;LphxoBJT\=Uk[;Cg]>^nfHXogUV\dX`goVYop^>pxYVxo>EM_EN]MNFM]A=vm=UhfUW_hWRogOWd\RZfdKSdcBJc[Zb\SbdSJdlmfCJf_@ulTKtf?>wtN`smOEk[BJmcE?gv=En`E`vg?Nlk:=cTKT[T=ekCL]f]N_gv_nxwntog`EveE]rt]ewvefvu>=ul=mlsfe|World Blitz Final|Le Quang Liem|2012.07.09|B90|1-0|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQuv;LqanSHXaXQX_n`fif@HSLCLru=;k[HPu]LT]\>Vjb;KnhKJogJbhWPWf^V^g^W_vobjph_`^V`i\TjlofX`TDihDGldf]dc]\cf\UfeU\ef\UfeU\ef|Aeroflot Open Rapid Final|Grischuk, Alexander|2013.02.17|C67|1/2-1/2|W +FVl\@OmeEU\UOUxg;LjbHPn^UFsm?Hk[IQtkPX[SL]g]V]wnFPvx>@n`<`u`P_`gGWbZW^m^CKgu=Ukt_Pul:@wnEMk[RKmeBJvx;LdZKBtfCSZdL]dUO`f]V]gm`Vo_VE_WDLU_EVuvBKvhGOnYJRmg=FbZR[ZSUCT?rB@wnT]f];LvxL]g]=]tf]angFVd^DN^MBRrtaFcKN]f]V]tDFOD<:]O>=U=nN=MN>M=>N=MNM|Corus A|Van Wely, Loek|2009.01.28|B90l|1/2-1/2|W +EUxgDTnf@OkcBJtk;Lm]T]g]FNph?[ld[MwpL]f]>@vxCSsmtlRZVeZcjcS[d\U\c\D=vrIQqaM?eV[clt?MtdM?ru=Rh`OIdhR=`XQXaXIX]UNUpU=FnYXNuvN_YW_U\UGOUMFMV`@G`Q|SportAccord Blitz Men 2013|Radjabov, Teimour|2013.12.16|E12|0-1|B +FVn^@OxgO^me^OgV;LVLELwnEFpLnoLO|Tal Memorial|Kramnik,V|2010.11.13|C42|1-0|W +FVl\;LmeGWph@Owp?TsdEMnf>@xn=>vxW_h_>P_VMVnhIYd^TF^OHOuYPYhY@Gtm?=pU@wn?>k[RKvxIQtkEMmeBJgm;LdUOU^ULFl\KBrtFWxyCSmcWFum:>m_A@_VNPVhPNhVNPtdB;dhDLhP;VPNVOyx@GNM>;kd;:[S:bdvG>SLO]xybJvRJRLD]OM=>GwtOdD<2F<=@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?PphBRwpDMldpLM^wv>N[\OFaYFTyxHPYPIPxyBRyQ^M\dM@gVEUVe[dmdU^e_=uvu;LuvIQqafT>MTMLMgfMUfgUMgf|40th GM|Naiditsch, Arkadij|2012.07.15|C67w|1/2-1/2|W +EUxgDTph;LwpFVme@Ovx?Fn^>@sdU]dnCSga?>jZSZo_O`aWVp^T\`n=>kc\cZJ>SJOHOtkSKxylfkV@m]V]g]IQ]cTKt_KDumCS\n=FjbBJru?=wv:BmfLTfh@AdUOU^UF?hdAIneGWcR?GewDK_mBFdhFvuvGPbZSZhPIPvr;ErZEOl\PGogHXZbW_bcKDwe=>xoOERLEVLV>VcbVFmdD=bc=DcbFfdmf>bcD=c;=Oe^OVqiQY^lX`i`Y`g`>AmdVdkdA@`X@>lZ>@XPGHZlHO;KOVKsPH>NHEoge\g_\dp`d]`XT\XP\d_W]UWOdlNvU\PHEHOHMUv>U]><\c<;cd;@sdIQn^@dU?>jb[TmeL]g]V]phOU\UEMqiFwx:>luGOo_WPpgPGxoDLuxHPxp>poFIm[ECjkCKov<:st:ZwpT[k[KRtsIDpo@?g^?FvmDBscZ[c[Rr[kBD^pDtm[rZ[mZrm[rZ[mtuml>EkjZljlurp^OW`WPW^gF=nf]fofrsf]s[]f[sf]S[gY[cl\sy\[yi[cihc;EtsIQfKBKcNFNn^L]dn]g^gGWnt=Ugn>=qiNOldQYtcOXogYaslUMnmXFmoFEoaHOaoMeowV^g^W^ue^elsOXwgDTg^EW^WPWjZ=@p`XavuW`i`@`ctT\kcaOc\`\teOdut\LsjdRjc@weIQXaBJvxCSrtQI|GRENKE Rapid WCh|Faqiry,R|2010.08.07|D10|0-1|B +FVldEUm];L]VLVt_VP_hIYqi@OsmYahq?MqM=Mnfog>V\cOW^W]\>G^UG>\cbZBR>Ec[tlUcltcZENZcNW[TWET]E>RZ>PZbts]fsrfmPWc\Wl\n|WICC qual Moscow f 25'+10|Novik, Maxim|2002.05.31|B19l|1-0|W +FVmeEUxg;LphGWwp?Msd@OtXV^XOHOgayxHXahU]d\;BxvFDf^MVmcOYnmY_vx_PctCSml=;srS\e\N\l\;[\lT\u]P_xuV]u]>=ld=]d][KjbDM]dKLqaGOrjMuaXQXdfBCfdCsj>GtnMen_edkdLM_UM=jk=AUfAqf`qi`figf\gokcGN\fonfUn^UDNMDJOWJ[W_[e_gclgo|World Blitz|Gashimov,V|2009.11.17|B01|1-0|W +FVnfEUm];LxgV^gmGWl\@Osd@utkKtTLFwn?;vxKkTtELnuLtmtksrs;sulsrtmrjwtFLp`HP`WPWxpW_piGNiaLFaXFUf_@H_WIQX`NGm_GY`hjb_fUfofbdhaYgtxHOlZOWZEWOxvdlvrOFEWldrBFMBJDLJBMUahdfh_fvBEU\EMgpML\ULQvw_X^fQNU]W`p^NJ^eJNwoqafn`nenaYopXa]UNfU]fFngFNp`ai`xYQgUNJ]VQIxyihyIJRIGRrGHhoHpofphfohirRieonednmdimnV]RZU\noidZr]^r:dgop\wpxwi:>^_>@i`@?`Wxpgcpockowkj?G_^wxW`Gojbxp`gphbdojguho^_ovugvmdTjZg^ZjTDjkDEmd_fk[^U[aEDd[U^[Sf]SKDCKJCsa`]UJR^e`[stRKtLKCUT[aLOaYeWYXOGCJTLJRLT|20. Amber Blindfold|Nakamura, Hikaru|2011.03.23|C11|1/2-1/2|W +FVn^@Osd?[xgEMw\DLme>@vx;Ejb[Rwv?>k[RKtfE?\cIQqi?PfKBKbZOIumIXgXQXogP_dnNe]N>]U=Dl\LTn_X_vs:Jxq>:mlDE[TKTsSCKrsJZSKE=lZ:ZK;=;s;@I;KZ\KM\]iaGOqi]mMLmlph_hihIPg_V_h_lo_foq^VqifniaVNPWLTWVNFaATDVMDBA>ng>FBRFVRBVWg^WV^gHPBJMFJBFMBJMFJBF>UMVNBHPXME>=g`NFHPFG`W=EP@EF@:G?:BFMBC?@WOX`Cs`hsuMTOVhputT[tx[dV^dm^g|World Blitz|Dominguez Perez, Leinier|2009.11.16|C65|1/2-1/2|B +EUm]@OxgDTld;LnfFNsm=Dwe?Fvx>@]TFTjb?=k[TFulNVf^HPwvU^m^<`^OFOgXLFqi`WeWFWX^OFtXFX^X:@XOFOuc@cC=>\T:;CD;kwSkSdSF=DM=Rvw>:_X:Crs?;XORDOFDMFMBJM;JS;hCJskS[knNWqiIYyqJbh_W@ywFV]ULRC[<;[TRcTBcrk[rctkV^elcmwu=aonESnmQYmtHQtsaoktSnuynele^eB]Qf]folsr?>fm>nmlnlyuldtkdluelpUMpoME;=kV@?VM|World Blitz|Grischuk,A|2009.11.17|D15|0-1|B +FVn^@OxgEU^UV^gV=Um]^eVe;LsdUWe_?[weWVunvw[dmdOUdmU_m_X_ogBJrvESv>Se>nenwn=>no>=on=>no>=on|Blindfold World Cup|Bu, Xiangzhi|2007.10.16|C43|1/2-1/2|W +EUxgDTnf;LwS=DvxBJSLDLm]<`l\U\]ULDf^FNqi`Yun?Fwv:=jZ@Osd>@UM=M^VMeVOYgOFgnF?2@?vnCKtfDLnlNVlnIQo_V_f_?@_feMf_Me_feMf_M]_fKSZSJSrvS[f]T]d^\dkd[d^dLdvuHPnmdfxy@H|6th Tal Memorial|Nepomniachtchi, Ian|2011.11.22|E36|1/2-1/2|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvuIQuv;LqajbU_t_FU_fUfifHXaXQXd\DL\T@Hk[HOrsIPfiOV[S=USLCLsCUTl\TRvm>=mtVNCDNMDC=ECEMEicEDtmRVmfV>c[BR[Z>Vf]GO\TVU]\PG\dUTd]TV]fDKZ^GU^VOVfeLTedV^nuKLdmLSmdSLdmLMmfMVulT\ls\dslULlcLEcuENulN`l^`W^LdlfmV_LUW^|SportAccord Blitz Men 2012|Aronian, Levon|2012.12.17|C67|1-0|W +EUm]DT]TFNxg?Tnf@Ojb>@l\U\w\=uvuTFun?=sm;EkcO>tk>MyuM\m\GO\METM<:U\dv\S>ELREDCK|4. Zurich CC Blitz|Aronian, Levon|2015.02.13|D27|1-0|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu?=uv;Lqa<`wnLFtmFWru`nvnO`yiHPuw=Mmt:>wvGOnw@GjbIQ_nPXaXQXnhWhih`QhiQWiIWHwn>FvyGNyQHWIFNFQIF=phMEIA=FbZFNkcWFtmFPAQEHmfCKZRPVQAVgA:DLRKBK:>HF>FNFfKOWKfFOd\OVc[W_h_X_fBg]nm]NmdNXB;VW[SLS\S^fofX^de_g;q^TemW^SKTCqxCMmv^Wl\MC\TCRvoW^xq^UqMU^TL|World Rapid 2015|Radjabov, Teimour|2015.10.11|C67|0-1|W +EUxgDTnf@OkcFNtk?Mm]CKwe>@vx;Ljbo_>Fh`FDldP?`XO>wgGWgiHPmgDHiQM;qa>MnqM^rt;MaY@wn?>k[RKvxBRtkEMmeDLds;EsmE?m\KD\RDR[R=Rqi?NwvNTnwTZktZdumIQvfLTmvdStmR=mt=RtmR=mt|20. TCh-2013|Kamsky, Gata|2013.04.11|C88|1/2-1/2|W +EUxgDTnf@OkcHPtbCKwS@m]=DsmEWvx?=rt;LuvFV]THQqiOEc[KT[TQ?mcBRnSRZcm?Tb[DKSLKLvn=>wv:<[TLTf^WN^UNUd\ULm^L^n^@H^lEKgm>=lkT]k]=]\T]mTKkC>Vf_VRCsxpskpxknRSnmSRmnRSnVSV_VxwVUwvUVvwV]wo]eoge]go]eoge]|5th FIDE GP|Eljanov, Pavel|2009.08.11|E15q|1/2-1/2|B +FVn^@Osd?Tw\>@xgEMmeDLjbBRqi;EvxIQwv?>tfTfvfCS\j=De]EKk[NfeK\utN>gaV]e]DBaWR[]e[deh\mWHO^|42nd Olympiad 2016|Navara,D|2016.09.09|C50|1-0|W +FVn^?TxgEMsd;LdZ@FZTMTme>@wnBRvxRZtfCKldGW^WFWgmPO>@f]V]dnDLwp=a^VMFut:=vxJDnhGWVO?OwvFMv^O_t\@A\]_^]^aOrwDSbZS][SLSZSCKws=?^fM_f^_hoh]S^CSdswO]xy?w|IV Open|Barrientos,S|2004.03.29|B33|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBR[SEUmeU^e^<`gmK]tk`nun;Eru=Fm\RZds]k\kETogIYn\YasdTNkeFburbMrZN]Z:>:g_]l_VMK\TKTeTO`VNGNTNDLSK:bdnlfwsbjn_`Vqi@Iscf\NTjRTCRJCTJKcK\KxoK\phHX_NIQN]ahohQPiaXaha\M]LVLa`M^T^|SportAccord Basque Men 2013|Ponomariov, Ruslan|2013.12.17|C88k|1/2-1/2|B +EUxgDTnf@OkcHPtbCKwS@sdEWdZ:@gV?>VeO^wn[?d^>^vxEUng^>e_DLm]?Mph;E_eEOt_FwvO^gp:>vfGOe_HX_e^ofFouF>@G>vudkdWevfeWrwWEpgCSgYGHwvH?vsBRYnEWswW^ngMNgp?HfnIYqiHPnoOWxqRZjbX`ia^ewuNfo_eluwfdwoS[on[b|WCC|Balogh, Csaba|2005.11.29|C67d|1-0|B +DTn^HPldEU^V;Lm]T]d]=KsdK]u]L]dU]lvulrUD>=D:@m]V]d]IQld=Owv<`rsLFSnCKgV`nvnOWsc?=V\FLulWYqi=>ckKS\MDMn>:>t_>NxqYUleNP_hBJjZLBZSJSksQYia@IogI@srBLr:@I:JGWJKLBefBW_;<_hqi|Qatar Masters Open 2015|Piorun, Kacper|2015.12.23|C47u|0-1|B +FVnfEUm];Etm@O]VEVmd?Msm>@xgVPphDTwpU]f]?>vwOUwx=DmwUdkdDRueT]d]=CL?Po_A@rs@?sC;MCBPFWFMFypFTBC?HpgHOCSTMSK=;KJIYLZOFJBFOBEMTZu;sgns[EDTMDLOFneYaha[_aY_OL@qi;EsmEK_qBRntO>wnFMqM>MtcGWcTW_f_?_ph_Omw=?yqK\kcCKc\KTwfT]u]U\ru@wn?>k[RKvxDLm]V]g]O^d^>^ldEMne^>t_=Oug;EghK=_MEVMVOVhV>VwvVvrv@?e^=OvuHPo_<`um:>^g`g]gOdmedkxoIQph?FeckOon>=gmO]mg]KgV=UcsQYVgK=gmFEm^=F^dUMd^MNneCKswGW^mFOm\N^wtYa\m^]efaitl]UmgBRlmEM[RKRbZUmfmMTmeT[gxLTxiT\el[ZioZ[ouO]qiRZ|World Blitz 2015|Nguyen, Ngoc Truong Son|2015.10.13|C89|1-0|W +FVnfEUm];Ewn@OxgV^gm?Ml\DLsd>@jZBRkc=FtkE;\ULUdSM[kbogGWxo@GluESZS>MunHXg^M^m^U^nuW_f_X_ph_gulGNl^Rc^Ic]qa[cofckh`NO`XOVIe]WfgWagfapfmp_es_NXPVOmdNDdkDS|World Blitz Final|Topalov, Veselin|2012.07.10|C05|1/2-1/2|W +@OxgDTl\;LsdHPm]T]g]?H]l>@n^BJrs:;wnCS\SJSk[EMvx@n^U^e^W_m\<`\M=MuMDMld:>gmHXkc?GwvGEpw@HjZMUog`N^UNUc[IQrb>=wnUGmcLFcTEDnwFPd\CKTeD\tk\lkrG\[Slme_P_w\_ixyioyxoixyioyxoi|8th World Teams|Ivanchuk, Vassily|2011.07.23|B09i|1/2-1/2|W +FVl\@Osd;LnfEU\UOUul@dl=Ert:=meBJxgNWgmWeweEele=evn?=m^OFp`GOtl@GyteEqa=^hED[TDTlm<=hW=mnmV^W]N]k]TWmnWYx`OW`x|SportAccord Blitz Men 2013|Wang, Yue|2013.12.14|B49|0-1|W +EUm]@OxgDTld;LjbT]d]@vxLRt@dUOU\U;Eld[RmeRKvxDLUcETcl<`qi`YjZTNlcN_t_V_e]@Awv=O^VMVvVYPclKDVn?>lPOPZR>NnNPNul:>gXNPlPGPxwIQXgBJk[A@rv>?vF?GF>G?>?@?wn?FneFNe^PXgmDMmcMFcTFT[TQYd\NO]UHPph_hoh|World Cup|Matsuura,E|2007.11.25|C65|0-1|B +DTl\HPph?Hwp;LsdBJnfCSdSJS\S:;SL@Oxn>@vxELm]lmIQnv]fef>fvfgWmM;<[TWUMUTU|CCM4 Ordix Open|Ehlvest,J|2004.08.07|A36|0-1|B +FVl\@OmeEU\UOUxg;Ljb@vx?=mcRZcTFTtTEMutKETdE?gmNGn`?NaYN]YQHPwv]SfTSdTMdjts=Mm\M=\fL]fU=U^UGUo_DLsu|It|Bologan,V|2003.12.20|B90|0-1|B +DTxg;Ln^@OsdHPm]T]g]?H]c>@wnBJvxCStfEMjZS[dU@ldCKvxg`>G_WMhqhIYWNY`NGFGvrOWrRGDxpHO]UKMnmOVm]PXRZDC]mCDmnVOZRW_nNMNUN_gpwDIwvIyvmywRVwomvOV|8. Tal Mem Blitz|Kramnik, Vladimir|2013.06.12|D02|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;EtmE?ZT?PphCKTc=l[RZng=utuGW^vV^gYBR[eP?e_Z[vfRZh`NcusW`Y`<>`u>;ul?El^[TfhTX^LET_n;=hXQXndZbLSbjstTetre[dj[jrscGSwjdstdUtTU_TX=uXWGN|10th World Teams 2015|Sethuraman, S. P.|2015.04.25|C97j|1-0|W +FVl\@OmeEU\UOUxg;Ljb@sdEOdUOUng=Fun?=wu:<]SBJSdUdkdIQu=<=ruCgng=uguFDueKSqiGOjZDLZSJSxw@GdmOWmdTFdkFOkOGOo_OFwoLTonTLnoHXp`LyeSyqovqiSTFG|41st Olympiad Open 2014|Fressinet, Laurent|2014.08.14|D30r|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb`W>SlkBJkpx]pPOG_g]dPMd[MU[Re]FDW`Ddg_RD_XGF`YSLUWdhXahH^VDRWwRmwumXa`Xf`afoaiHI]UIYipLSpoYVuvFMvVMV|10th Petr Izmailov Memorial|Ponomariov, Ruslan|2006.07.13|B90u|1/2-1/2|W +@Ol\DTsdEU\UOUxg;LnfBJwnHPucU[d^?HjbLRcZCSZu[ene=e^TeUm]>@vx?=tmR\md<`qi`gugUgpgFV]VHVdV\Vg_VeTe=ewu:=ue=ertemtLJRkcmeLJecJR@HbZSZRZcSxpIQiaQYZBHOBJOHphSTf^TdogdTJMTDMUGO_WPWUWHPWUDLh_LJU]JK_fKJg_Jr]MPGMEGP_WPQEMQHf]rZ]UZRULRZLUZRU]RZ]fZrMEHQEmQHf]rZ]UZRUMRVm]HG]\G?\Z?GZ[G?[\?GMEVFEM|4th Open|Illescas Cordoba, Miguel|2004.03.30|A33e|1/2-1/2|B +@OxgDTl\;LsdHPm]EUnfT]g]?H\UOU]LCLdU=UuULUwe>@rsFVkcPKJf_JSP>S\_fNWXPW`f_`W_fW`f_`W_W^fPHfn>S\SH@2nv2@USZU^vt]UZSUMtQWVQAVUA:U]:^]^SL^VLEVUE=UL=@l\DLsd;J]UFVtXLTn^IQXO=O^WPWgaJDo_V^unwsEH;:OF:;FD;s]Oappw]kwn>DbsD>nmkOsdOdmdBRlf>DiwRZcZEZqiD>wn>OiaO>dk>DkbZEnuD>uZEZbZ>OZSPGfuO`SZ^fudGFZc`oclFOdnOFndFEdnEDndD@xnEK\cIQvx?>n_[MueDLtm=Dph<`wv:=v>=>rtDEmf`WemO^d^W^muM_f_KU_mEWun>Ntv^gnwNvwvUOm_HX_VO`VM`OMVOUc\g^\n^gnwGOVM@GvmWsmeg^ecGPog^lc\skwele\ePGeIGNMTktxotm|FIDE World Blitz 2014|Fedoseev, Vl3|2014.06.19|C09|1-0|W +EUxgDTnf@OkcHPtb=Rbk?Hl\U\c\>@wn;Lvx?=ucZTV^g]L]k]EDTcH]f]CK\TWNTKBKmeNcjc^ene=]e\DEu]E]wn>M\e]UtLKSp`Y`i`@?o_?F`XFELtMWeWUWnfGOXO|21st TCh-RUS 2014|Smirnov, Pavel|2014.04.13|E15j|1/2-1/2|B +FVl\@OsdEU\UOUn^U[me;Ljb[JwnJTk[TNxgHPvx?H[SL]g]N]n`<`u`>@rs=MbZBJtfJSdS]SsS:ZSCMeCDZ^`EeEDE^\ws\@phEU\U=Uwp;Lme?=smm\YAwtHkrkAklk>M\MFMog`gpgBRqaKSxo@HofHOtwOFf_GOh`=A_h@meCKsm@ulVFngFDd\U\l\O`\`Hkru:=jZLE`\kVphEWg^WN\lVOm\@Hu=?=wuBJu=D=\mKSZSJS^e=Km^OF^dT\c\S\e^KRxpFOdn\dqaR[n_Ncls[Z^edlstZj_nOktmjsm[cNndsr[]GOelkd]Kr:px:U\pL`ivd\wdOwpLEiq>FqyFMpgMVgpV_p:_h:C|4. ACP World Rapid Cup|Grischuk, Alexander|2010.05.28|E15|1/2-1/2|B +@Om]HPtX?Hsm>@ldIQXaEMn^=>weFV]VMVxn;Ek[OYogGWvxW_aoPXd\YOnd@A\T>Pm\X`xy`hoxhqxqOYdUYhyxhwewDLUFP>FWBRjbEOWHAH\R>FR\?=ulOYru=ulu@aYPXgmX`phOXdU@HnNtlqiW_NPlPYPHPh_S[_WPH>VHIVUIHUVHIVNIHNPH?PQ?@QP@?PM?HMT[bi`bjTbG?bZ?GZjG?`X?GWOH@XP@APG|UKR Ch U20|Yarmysty, Mikhail|2002.03|B23a|0-1|B +EUm]DT]T@OxgFNnf?Tjb>@l\TKk[BR[SNV\U;EtkV^gmETwn=UvxUXxy@wnDTdSMFvx;Lt_BJVLCLSd?>wvT]u]^_m=FneF[ld^v|Corus A|Smeets, Jan|2010.01.22|C42|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWuc=EcC:;CJV^e^W^gmLVqi`YJB;=BCENw\?FsdDLCJ>@vxVgmgYgdU=U\UNUpg^gJZIYxqFMZ_?>wx@IbZHX_MUMqy>^xX^aXhMuyqun|KO|Radjabov, Teimour|2006.11.02|B97|1-0|B +FVl\HPm]V]u]@OtX?H]f>?sdIQXaEMxgtLX`LMFMj:>F:^F?ga?@^>M?>SHOf^?MSTM=^VOaha=aqx`hWiAQTUQNwGDLUca]xw]rwnrVngVng_nV_gVng_nV_g|Eesti EST, Men Ch 2003|Paernits, Rauno|2003.05.17|B20|1/2-1/2|B +EUxgDTnf@OkcBJtk;Lm]<`wn=RkdRK]TKTjb:=c[TKsmFNvxKDqi`gmg?Fus>@sk=f^U^e^=utuFOdO>O^eLFkVFUVDfUtugoS\MTuUT\UWkKWo\doWd]ZRKP>GPJia]^WS^]aY]^GF^]SW]^WS^]FE]\SW\[EF[\FG\]WOJRGPRrPQrxOW]^WR^_QIxsYQsCIPCKPYKCRXCsX`_WQI|Sberbank GM Rapid|Korobov, Anton|2013.06.05|E12|0-1|B +FVl\@OmeEU\UOUxg;Ljb<`nfGWuc=EsdUKgXIQcNENXN>EN?A?qi`Yp`W`wn:>n`Y`i`>Fd^KU`XQX^XUOtmF>vn?ArxEFk[BJbZCSyA>AxtFEZSJStTAqTSqpX^O^e^pxmdxsdVL[VHDLSCEGk[A=ucG?aWT[WFDFb[FGcs?@[SJSr:=:sSKMh>=KCE>cNH?hM|Eurasian Blitz Chess Cup|Svidler,P|2016.06.19|B41|0-1|W +FVl\@OmeEU\UOUxg;Ljb@m]V]d]IQld=Owv<`rs:=SnCKgm`WsSBJSkKSmcLFngDTkmT]c]WPphMTtkF<]c=mumOgcT@IE?I@?E@IE?I@|67th ch-RUS 2014|Morozevich, Alexander|2014.12.07|C47u|1/2-1/2|B +FVn^@Osd?[xg>@gV?>VeO^wn[?d^>^vxEUng^>wvDLv>=>e_NrvNWguIQog^Op`WExp:>qa>vuvQY`XEWvnOE_hGOXOHOe_@GneWe_e?Qh_Q?_h?QjZGNpoNWonE?h;?N;BN_e_Q_no_tkctkd\WNonkdBTNE\ULUc[ED[SCKneKTedT\ZRDCd[CBg_OW[ZBCZ[CB[Z|Aeroflot Open Rapid Final|Frolyanov, Dmitry|2013.02.16|C67|1/2-1/2|B +DTl\@OsdEU\UOUxg;LnfHPucUOm]FNwnT]f]?Hvx>@wuCKtXIQX_rtH?bZBJqi:@l\BJSLDLZLCLkcJRtkRZwt?;xw@?wn:JkdMbtlbMltMbtlbM|66. ch-2013|Vitiugov, Nikita|2013.10.09|E34|1/2-1/2|B +CKm]@Ol\FNsd?[xg[dkd@phCo^EWnYWPY`PW`YHPYuIO|4. Zurich CC Blitz|Nakamura, Hikaru|2015.02.13|A06|1-0|B +FVnfEUm];EsdDLf^U^]V=Ft_EVu]VP_h@QvtQW]^F^d^?Fxg>@w\Whqh<`\c`gpg:=g_=uyu?=u=F=^M@?tuCSMG=Kun?FGXIQX^P?_W?Eo_ET^mQYmgT^gV^hnghWVLFMLVBRldKTclWFleS[V\MD\R[dkdFUd\UdRcTFc]dj]NDENHYag`j[e^[JHWFOWaJT^UTeagEF`WOkU^eTgVkt^UtmVgmtgVtmVPFMWOTe_WmdOGekP_MV_ndRGPR=nhV]hn]Tn_=a_NTMWOkeOGaFPHMVG?2F?H?ek?Fk\U\V^FM^fMVfmV]mlNTlk\ckb]\bk\[ks[dsrTNrsN]sr]lrsc\st\jtul]ut]ntudeuvefvujcuvn_vwclwv_pvwfgwxghxwlewxp_xyenyx_i|Piterenka Blitz 2012|Grischuk, Alexander|2012.12.29|C03|0-1|W +FVl\@OmeEU\UOUxg;Ltm?Tsd>@phUdmdL]wp<`d]V]vxDLrtTKgV`NV\?>umNUpU=UwvKDjZ>Nn^]fvf:=fNUNtvNmf>FfF<=F=D=\MCKMpg>Eg^EMh`HPUfKSZSJSo_=OkcO]fl]dqaIY`YGW^gPYlfMNfldOghNUhiOkihkt|2. Governor's Cup|Kupreichik, Viktor D|2001.11.17|B57|1/2-1/2|W +EUxgDTnf;LwS=Dm]T]u]@O]_DKsdGpoXYopGNwuYXpoQYuwX`wy`^on^`neYakc\@wvNUeWDTtXIQXa;Lsm=Dl\]dkd:=ulLVahVgmgUgpgOYWN@AlPY_h_?OPYM_v^=?ruDKN`HPYiQYxpAHuE?GEGOG`NGONUOWUcKMia_XahX_haHQaFMeqa_mg_edc@dA@NWOFMm[MVA?NUOWVNW_^_?_U^_`N`Y`^CQYCUYaUGaXpw[dwndVnf`hohVhf^hDG>DK>GXOG\PX\nONn`NM`nKRnSRmSnML^emve^LK^UvonwKRU\RZ\dZbw\X`dl`h\Uo]leBRemT\mlb[Up[TlmTMmlMVlmV_pU]OmnOaUL_VnfaXfgX_LZVWZS\dSeWVelV]lP_MPWMVWP]\gn\[|Rapid Match|Short, Nigel D|2008.06.06|C32|1-0|B +EUxgDTnf;LwSGOl\U]k[FVvxV^gvOWf]T]me@O\TBRsm?FucR[vl=Utk@lfUYm\:;\KF=[Z=DphO`f`N`ZL?GKU`iUd;=L^G_^ni`og_]g`YTnfDKxyT\rvIYfN\NvNKRdn]`n_YaypahqhRDpi`XN^D_^_XRjZ=e_`ebw_RYipbj_ojbokYRk[RJ[;@I`aIP;[PGpiG@[;@G;CG@a`JQipbjpgjb|FIDE Candidates 2014|Mamedyarov, Shakriyar|2014.03.27|E20|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb@smRZk[ZcmcN`tkFMwu=FbZ?>qi`YutOEtvYgngETe]TclcV]^VM[vn:=gLCLceLTZRFNRJT\eg\dJBdknk[dB:2dk:ZkrZr]eruemg`N`i`>V|14th Ordix Open|Scholz,C|2007.08.18|B90|1-0|W +FVn^@Osd?Tw\DLxgEMme;EjbTK\jE?dn?Pnh>@vx?>wvIQqiMUldKDul:rb[bvr`OmtOErb:;hWETwnCS\jS[bB[cjsDKBb@?WMKDM\TNbB?>nw>=gmP_mgGOgxQYxn_nwnYangHXg`=FtbFEbt;A\KEF`iFGogGPK\OW^WPWBCA:Cc:rtmNTckr:slTNluNTun:rklryipyrpqrJnwX`g`W`\kV^qx^elTJjk\aiTLiqxyjrLD|SportAccord Blitz Men 2012|Bologan, Viktor|2012.12.17|C54|0-1|B +FVnfEUm];LwSV^l\BJSLCLxn=Xvx?MsmXYn_Yuwu@O_n<`uvJRnd`EkcIYtkYaqiHXog^gmgX`i`O`\U>]WCKWM>EbTKJM\`OtvP`TFO^FMESMqip\f`alp^Xf`XgxogvovSE`OaqpqYqOEqjUMJCEVGOV`CL`OLMO^MV^TV]TN]dNTjrvnd[TN[cnm|Moscow Blitz Final 2014|Savchenko, Boris|2014.09.06|C18|1-0|W +FVnfEUm];LwSV^l\BJSLCLuZEvu=Oul`QrwNiyiONwyA@phahihQWhiNOmvWao_^gvh:@e]T]g]L]f]=DbSD;unBJSdJRnf:J\T?>ruRZpwJRd^NV]dRTuE=e[ES[lSco_FMvuV_h_@G^UcUuUGNlf=<_WNFUSMbkb|FIDE World Cup 2015|Svidler, Peter|2015.10.05|A30c|0-1|W +FVn^@Osd?[jb[Rxg>@wnEMmeDLvx?>wv;EnwE?qi?Pk[RDdnMUnhCKl\U]tmBRulIQvs;rs;CsCEGag:=d^KUwn?HrtA>gmLFnYIPYPGPvnFWqi>NmgPGt\G@ytCK\LNLtLWFL\DT|Baku FIDE Grand Prix 2014|Gelfand, Boris|2014.10.08|B90e|1/2-1/2|W +FVl\@Osd?[nf[dkdEMxn=FogOYphGWwp>@vxDTme;Lrspw>Mw\M\uUFGUG?GkjGFvuHPiaBJ_WPWhWFDjoLVo_:>xpVP_`P?aYDEuw>VXPIPYP?NWQ@HQWH@WQ@HQWH@|18. Amber Blindfold|Carlsen, Magnus|2009.03.24|B30|1/2-1/2|W +FVl\@OnfEU\UOUjb?Mxg>@f^<`qi`gugU_ph_Nw\;LmeL]guDLtfMDvxNXsmXixpi_h_V_f]=XpiXQi`QP`aPp]Opqa`qp`apqa`qp`a|6th Tal Memorial|Svidler, Peter|2011.11.20|B42h|1/2-1/2|W +FVn^@Osd?[xgEMw\[dmd;Evx>@tXIQXaETwvNEQiCpihp^_g|World Blitz Final|Carlsen, Magnus|2012.07.10|C65|1-0|B +EUm]DTld@Oxg;LjbBRnfHP]T?Hd\U\u=L=tmO^sd^dmdHdkdEvtENw\NOu]p_Ya[\LJnfahqhOW_p=MrvJRk[R[\[]fvf>?p_?AfNME_PAQN>;BPaEe[_euxpQK_WKs|WYB12|Wu Li|2001.10.24|B79|1-0|W +EUxgDTnf@OwS;EkcBJSE=EvxFNjZCKm]@gVO^Ve^Mu`NVruC<`nDLetM^T^U^nm<`og^gpg`iwoFatn?FsbEKrtBJnfKZkcZdtlNWlmA=o_V^blWEl]HPwvdSpwS]m]ESvuSwxwFN]Z=Mum@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvBRnwDMldCKphnonM;ZROWp_H]xp;_N=eWOegOPmu2NH>=|31st ECC Open 2015|Inarkiev, Ernesto|2015.10.23|C95j|1-0|W +FVldEUm];L]VLVt_VP_hIYqi@OsmYahq?MqM=MnfjZJNtkPXd\U\m\O^g^W^u=>=og=eclNOkjeb\b^lbl|WY ol|Wong Zi Chuang|2002.08.27|B19|1-0|W +EUxgDTnf;LwSGOvxBJSLCLga@Qo_FNme?Fl\>@sdHX_XOXagQGqiNVf^U]dnX`i`<`uv=MvhMPtm@AwoPYrw:>hqYqgq`NnhGMo?>?w?F?qgMGhWIYWhN`gq`uxoAIqgIPhWPOmRGQR=ONWhQ`ov`fhYulvmls=Xfpjb?MYHNEmnJRnoseope^HY^PYhV^gm^fm^Mh^hPepge\g^ENX=\c=Rcl^gNUgnT\hYLTYOULO`LSR=lP`f]f=OPY|Vugar Gashimov Mem 2014|Carlsen, Magnus|2014.04.22|E27|1/2-1/2|W +EUxgDTph;Lm]T]g]FV]LCLwp?Tl\@Fvx>@sm<`qi`Nul:c[TKgXFPuMNEwuFM=@XOFOe^U^nf;Esm?>qiBRjZHPulETmc=UcTUTruDL]cTVcmCSwn:;iaVFphSZurFCrjZbkcOFvx=slEelZedmgdtxptsjn=;g];kZLbjnkskL>|Rapid Match|Short,N|2008.05.04|B05|1-0|W +EUm]DTld@Oxg;LjbBRnf<`bZFNsb?Fwn>@vx=KbSLBSB:Bgm`nunB:]TFTkc?=tk:V]fp_g>=]V=>VMpfgoxpow2|CHN-RUS Super Go Pt2 2015|Wang, Yue|2015.12.16|D15n|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUgmU\e\CKtk;EulE?ru=F\T?NmgKSZdN]le]nen=gaHPag=uvu:=nf@Hu=F=dnR[b[=uxqN\nhOEktQYgaE?hWPWfQH@aW|Tal Memorial Blitz|Mamedyarov, Shakhriyar|2008.08.29|C96|0-1|W +FVphEUwp;LmeGWxg@Ovx?Msb>@l\U]tXMTblIQXO=OjbBRkcOMnfmgGYum>fc[R[b[:rwrL[lf]fmnMene[exwYGrZetwvGYvufnumToZ:@ImtYg:>g^|25th ECC|Chatalbashev,B|2009.10.04|B09|1-0|W +FVl\@OsdEU\UOUn^U[meDTwn;Ljb[JtfJDn`?F`<=@vx?=ul@wn?>k[RKvxBR[SEMme;EdZKBl\DLrsETZdIQtfO`fmGWskRZusTcmvW^e^;uM;>wv^fof>fxwjlMLlWngWegneWngWegne]phf>vu]kLgO^ge@AuvkVefVWwx^OfoW^qi^VxpA@ogVkge@ApxkVxpVNegOIg`Nf`_fd_odmpwmdwpIOvudlngl\um\SmkSRolRDl\DMkl>VljV>jl>@qi;ExnEKntun>PV_NUmgPNgV?;p`;?xqSZ_hU^`W^Wn\N\V\W^w_?_h_:?\RHXrx?WR\WSiaIQaXQX_MFM\MSkqi^pi`pUf^Ucxrkjrsjp`WX`W_pld\ld]ULU\UZbMSdg_`bjsrgeUM@GrteutDGP|2nd FIDE GP|Cheparinov,I|2008.08.12|B12|1-0|W +FVmeEUxg;LphGWwp?Mvx@Ol\U\sm\ene>@wvIQk[L[gVMVvV[eVnetrt?>n>O>uc@Im\>M\M=MtvvsBRpgMTqa>NC:N>:CRZsuESCU>VU:ZbaYV>:UTUuU>vxqDLUTvrgLSLTLrjqpjkLJbjpgI@gf@GogGFf_kq_VqY|8th Tal Memorial|Mamedyarov, Shakriyar|2013.06.17|B09i|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?PphBRl\U]\T<`qi`Nia=Em\N\e\ENrsP?kt?EtmR[b[:bscbjus>:seD=wp=FvsFT[TETenTcscCSpwjZm[S\n\N\w\LTgVZ[\G@?cg[sxp:rgW]eGYsxpqxyqprxpgemgfmu2YuxuVg?FWTutTStdf_ywSCF?CkOY_`YO`_d\gV\^_Wwvk;O>VP?@o_^NPVNOW`O?;C>O`WOE|2. Norway Blitz 2014|Giri, Anish|2014.06.02|C95|1-0|B +EUxgDTnf@Ol\;L\UOUwS@tk:kd?OgaONmgF=c[MFp`_hohT[b[FagaNMrs=Xxp>?slMOaWHPdmYgpgXYgpPW^WOWmfWglLYGtlgfvfGwpq?olowoqyowyqwoqyowyqwo|Sportaccord WMG Blindfold|Le, Quang Liem|2011.12.14|A32|1/2-1/2|B +FVn^@Osd?[jb[Rk[RKdZ>@meEU^UOUtkDTl\U_ph_Pqa;LaYPFYQHPZK=K[SL]k]V]wpBJSJ:JxgFWgmogQWpiWfiE=E^OENO>N>sc>Nh`NEvsENsvN>vs>N_^NOg_Oa^VH@V>@H>VHQVXaX_XQXcKJbKSbeSTX`TDGW\TedTL]exoW_DEdloxemLDmu2|World Blitz|Mamedyarov,S|2009.11.17|C70|1-0|W +EUxgDTnfHPm]?Hwn@Ovx>@]T=DjbDTk[TDtkmcT?wuUWrt<;dRCKn\DTuUENUWN\Rd;CqaHPWX\NdO=UXUNUp`BRtuCLctKSjbU\`XS[b[R[xp?Mo_^gpg\UgoIY|Supreme Masters 2013|Wang, Hao|2013.05.10|B65g|1-0|W +FVldEUm];L]VLVt_VP_hIYqi@OsmYahq?MqM=Mul@vxNVldV_t_;_w_=Kxy:>umLVrwVeme>fem?>c]f^_^U^mX@A]WKDqaO@Wf@OfWO@wvDVv^|SportAccord Blitz Men 2012|Ding, Liren|2012.12.17|D20|0-1|B +@Om]HPtX?HldDTnfT]XOHOd]>@sdEUxg;LwnFNvx@rs;ExgFVvxV^g]DT]c?>me^eneHduldHtf:;cTETlTCKTb@smCKtk@gVEUk[RKm]U^tf;EwnDLvxKDo_EKumKUdUOUl\UfmfGOV`BRruR[b[:jumjmfmOW`VDV_VW_]U_gpg@wnEMvx;EsdFV]VMVf^DLjZ=DtfO`fm?=gX`On\=?utBRqiETmfDFkcCKwvOYXg@AtbY_f_V_^VGOVNOWdnHrbrFHn]T^]LHrvr?>NFF]NDCN_YX_PFfg_XYPVCFSL@QLgfgVgF^gm^fMKfbK[QG[SGMSUbZwnZb\TMSUWYPWXPGmgSdnedUe]|4. Zurich CC Rapid|Aronian, Levon|2015.02.19|A07|0-1|W +FVl\@OmeEU\UOUxg;Ljb<[SLFulIYe]NWf^WI]VX`i`Y`yIAI^UIyg]EUtkOV]cUSvtSKkVFLlW<;tl?bm\L[ld[jdlj[ld[jdl|FIDE GP Beijing|Grischuk, Alexander|2013.07.07|B80m|1/2-1/2|W +EUxgDTnf;LwS@Ol\HP\UOUgV=MVLCLSn@p`W@xnDTnh=FwnGWvx;EjZEOtb@iaIYwi:J`XFMts?>iWE?e]V]g]L]f]?N]dCS\MDMle=;yv@IWNGNo_>?vw;@smIQX_FM_hMhqh=MwnT]d]BR[SLFvxneQYrsFWtlDlelMDluWMbZHPVeM\m\D\eV\dkdPgm^Mmcd\cm\dmcPlcmluvu@GrtdeunebtLGFLDF=DL=FLDF>DL>ELKbjnvjrvnrjnvjrvnrZmcZjnvRZcTEFKJjrvmrjmvMSJZjZTZNV]VOVZTSMvnFOogOW|Aeroflot Open|Aronian, Levon|2004.02.20|D15i|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wnEMk[RKvxBR[S;En\ETmetf@ArsOYph>PgaPGxqIQapTEfKEKdnGPpaPXutAItXQXap?Gpf:?qpY_n_V_f`IPl\KEwuNVskETkmTcmkc]uv?Ah_X_og]NvyAaSKDLkmLTmkG?yqPGkS?:qyGFysFESkEL`oN?ou?Nud:AsyNXkSaiyiAidUihpohgongiSR_gnoiqohqphagoUfpxR:Xg|SportAccord Blitz Men 2012|Leko, Peter|2012.12.16|C84|1-0|W +FVn^@Osd?[jb[Rxg>@wnEMmeDLvx?>k[RDe];E]UBRtXIQXaHXahE?gm?PULCL[SVZk:JkeJKeVMVmcKMunRZcTCLTCLCsC;Dvu=@me@wn=F\UNUvx?=g]@vxOEk[ZcmcHdrsEVg]V\uld]c]\btb:bwu=RltbdtkRT]cT[uUdckc[cscaY>Ep`=LxpEDph;:gUFNUp:jScjlo_lTYQCSp^LRc[R\ho\M^eDKonTt[ktyngyQgpQaenGW`XIQphQX_XaZhgM\klKTf^ZbgoW^n`NV`NT]NGbg|8. Tal Mem Blitz|Gelfand, Boris|2013.06.12|D15|1-0|B +FVldEUm];L]VLVt_VP_hIYqi@OsmYahq?MqM=Mnf@tXIQXOHOn^EMsmFV]VMVm\;Ewn=Fvx?=utQYwu=>\fEKjZBRk[DLtkFD[R:Rk[RBZRKEf\OF[kFTgvEOveO^ng^M\VBRkmRrurTKrv@wn?>k[RKmeDLvxIQdZKDl\EUul;E\ULUwuCKZd@Bf=DkcU]feLTn^]ftfV^elEWsd;=ru=ed^O^ueFMeU|Ch Ukraine team|Sinzhuk, Pavel|2000|D85l|0-1|B +FVn^@OsdEU^UOUxgUdkdV^un=Fg];EtkHPvt?HuvEOogDT]c>@g^?>meOUnmUKqaKZe]Zktk>=w\BRmXFXaXT]c]H]d]=]kd]Mya@wn?>k[RKvxBR[SEMme;EdZKBl\DLrsETZdIQqiMU\ULU^UntvnvwvWev>@I>=DLR:esxqUFmXsW=AIPiaLN:ZFUZuUOogWVqiOYueGWAYPYe\YPX_Vv\Tvy_qysbZPIq_sy_qysq_sy_q|75th Tata Steel GpA|Aronian, Levon|2013.01.19|C88k|1/2-1/2|W +EUm]DTld;LxgFNnf@Osm?M]TMTk[TMtkNV[SLRd\V^g]>@\U?>ph<`uZOErtETtTMTwp:^p^=F]l`i^eTKZ_<=vn=UyuU=l]HX]WX_WF@?kb?>h_iNF@GW@O>GOINjIXG>qaR\btjcuyBRSJCJaY>FYQJRQI=AogRZno|Blindfold World Cup|Carlsen,M|2007.10.18|D47|0-1|B +DTn^;Lxg@OsdHPm]T]g]?H]c>@wnBJvxCStf:;ogEMdUOU^ULVf]l\[dkdFNUNCgpgGNc]=E]S;=rjOYu]NV_VMVvVE]d]>V]V=UjlY_lDHQqaUVSMVfM^fgDIQI^XIQXg_UgVUKVLPXaXQXLRKZ|2nd FIDE GP|Navara, David|2008.08.02|A29|1/2-1/2|B +FVnfEUm];L]VLVsm@OxgVgmg?Ml\@wnU\n\N`vxO^gm`Wm^W^ln:=ogFVph^U\UVUf^UctfGWruW^g^MVw?=?nece|TCh-FRA Top 16 Gp A|Pelletier, Yannick|2006.03.31|C10|1/2-1/2|W +FVn^@Osd?TxgEMwn>@vx?>meBRqiDLgqRZjb?hoTowoQYe]V]u]O]n]YarvIPyxMUomLT]SU]^V:JSMJKM\KJ\MJKM\KL\MLK|FIDE WCh KO|Kobalia, Mikhail|2004.06.19|C55|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb?TnfTKk[<`wn=OulV^tk^eneONe\>^>f\oh=>h`\kdUkeywGO[SLVgV>VUKBKbZVX`geVg^XYZRKRrRV\R:NW>?\aBraic[Ve[RiqRKqlrue_|Amber Rapid|Ivanchuk, Vassily|2008.03.18|B87|1-0|B +FVl\@Ome;LxgEU\UOUjb?Fn^UKwn>@vxwu=utuGO\TLRgm>LogCKutKSldLJg_S[b[Jn[R:=mw=etvedvnN\nmdc_VOVTL@GfBZbkbcsmoGNph\eogsuRJeJxpJegoe^piFbwfut|Corus A|Ivanchuk, Vassily|2009.01.25|B92n|1-0|B +EUm]DTld@Oxg;Lnf<`qi`Y]TFVp`YPk[?Ftk>@smO^wp^mgmPejbCSpwewywV^o_^gmgFXue?>ktXOrjBRjpU]d]O]pn]Oe=>=[R:RvoS[b[L[opRT|ETCC|Miton, Kamil|2007.11.05|D43n|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQwvEUtk;EnwBJphKBwpCSbZU]dnNvtDEmv:vd]\dv\t|30th ECC Open 2014|Svidler, Peter|2014.09.17|C92p|1/2-1/2|W +EUm]DTld@Oxg;LjbT\smueEMeM=MyxMmxpmpwp>npxnkrwIYiWPWwWO`WGkqX^qkGIBJbZCSZSJSIYS[d[k[^o[sxpskYAFstTKk[F=]N=@wnBJvxCStf:;ogEMdUOU^ULVf]l\[dkdDKd\K[c]@f]V]dn=a^VMFwpDLvxJDrtDN_WN_wvBRnhR[b[F[v^aQtsLTug_pxp:jsw[m^`CSgUT\e\S[WOHPVNGNUN@ANF?:`]Q?]E?@h^mQ^M:?MG?GFG@GEGA@GCQ?wujJOG@Hu=JO=EOWEUWOU=[cCcHG=<|Dortmund (groupe B departage)|Leko, Peter|2004.07.27|B33y|0-1|W +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBJvx;LdZKBtfBfofCSZdueIQgmLFbZ:;ZSJSwsFP]UDLULELrR=Kxy>=dUOU^ULEl\S\m\ES\KSene;K[SPFf^=;st@?tDGWRBW^e\FBD;:qa^fGH>?\n:ryqrtDG?>nY|SportAccord Rapid Men 2013|Dominguez Perez, Leinier|2013.12.12|C84|0-1|B +FVl\@OmeEU\UOUxg;LphpgDLgf;D_V>VvtDMk[BRjbR[b[VSd\EF\]MDtTDKTSKSfmCKmdFBdcBF]=OW^WFfcdfh=ALT[TKTAYh`YX`aXHa_HGSLWOLUG?UN?:NO:?OV?_V_d\_f\Tfe|FIDE GP|Carlsen, Magnus|2008.04.30|B78e|1/2-1/2|W +FVl\@Ome?[smEUxg;Ljb[mgm>@nf<`ulU]f^BRqi`YphOEwpETmcTNvxRZcm=Mk[ZcmcHXbZL[lmDTZRCKRK:rcr?:tkMKws[LrlKcsr:rlrcumuYupwIYxpL[ktGOogYah`@GpoGFwnuZov[jtmjdmtFMnwMLvmdsmvLKwnsdnwKRtbdsbkR[vnsdnvduktN_wnuftm[bmf_pvmpfmtbj|FIDE GP|Topalov, Veselin|2002.04.03|B51h|1-0|B +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn>@vx?>tf=v^=UsvXFguLTo_HPh`NHugFNxoCKRKNKcmKN^nJjm^jnvnU=^O@?OI?FnkT\kC=EIOECgCF?C;?F;DF?D=H>O>|UKR Ch U12|Kononenko, Dmitry|2000|B92j|0-1|B +FVn^@Osd?[xgEMw\DLvx>@meIQdnMU\c[Me]O^gV;EVeEKldK\nh=ac\U\eVMV]V?=un^hqha`n`<`og`Nh`=ewv:=tfCKxo=Uf_BRvnHX_qKSqxS[rtemtv[cjbmlowLTxfUVwoGWnlclvtW_fmQYphVUtlY`g`N`mv_gow`Wlq@HvmW`mfUuwousfTskoxksxoHPofsvfovtT]PWoftvfmvrmfrvfmvNbZWPqoPWoqN>mtWPqo>vtmvrmlPWom`Ylkrv]ovVo]VN]oW`kbNn|FIDE Candidates 2016|Anand, Viswanathan|2016.03.24|C65j|1-0|B +EUm]DTld@OxgFNjb;Lk[T\smBJbZ?Mn^U^gX^fofOUm\MFXG>GweHPvxGHtmf\Xm\mA^OAQ`gFWOE|Aerosvit|Eljanov,P|2007.06.19|D15|0-1|B +EUxgDTnf@OkcHPtbCKwS@ul:=jb?>wuVN\ULUqiUgmgO^c[=<[TNuwRTZRKSRJO]g]NKwrS[bc^mckm\kc\bxwblrZl]f]T\wn\]nf]\ckKNfg\dg_[cogdlklclZ\Nnp`HO\LOF_XFELdEMXQMUQIU]dD]eIHno|2nd Norway Chess 2014|Aronian, Levon|2014.06.04|E15o|1-0|B +FVn^@Osd?[jb[Rxg>@k[RKw\DLmeBRrsEU\cR[b[;JvxJ[tXKD^U[UdULUXOHOga@Aug:Rsre\V^gW?GCG>G\T]eW^em^lGUluAHTLULum|Corus A|Anand, Viswanathan|2010.01.16|C78j|1/2-1/2|W +FVl\@OnfEU\UOUsd;Lul@dl=MxnBR[SL]f]V]me?>rtNUqa>FlTMNk]CKTdUp]OpwvwNnwpHOyinVdL:>ifVWfgWNLNGNgO>=td=]phFHhg]aONHGgha_dD_ghpgopxoONOGOxpIQe]@?ph?>DI>=h`OM`WM]WV]eIQ=DQID@]TMTsm=Fkc?=\UNUtkU]SL]fkOHOofCLulrtF^loJnOLvu>=XU=U\U]UrtPeweUeunei|TCh-RUS|Riazantsev, Alexander|2008.04.06|D43n|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvBRnwDMld=DrtR[b[CSul@d]D_f^_XiaX=TLCG^_GN]oPX_^NUol|Supreme Masters 2013|Carlsen, Magnus|2013.05.13|C95j|0-1|W +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDLvxJDg`BR[R:RbZ?TrsCKxyDN`N]Ndn>@o_V_t_N_w_TM_gMDucKSZSRScl=M|NH Chess Tournament|Khalifman, Alexander|2007.08.30|B33r|1/2-1/2|W +@Om]DTldFNxg;LnfCKsm?]ga_OE?HuM_^v^C^MJS[EV[dkd^gpg@]T;Jk[O^g]FV]ckr>Nm\U\uZWewpV^rkQHkbNKvuIY[SJTbT@vx=DgXNES\IQXg:;jZBJtfCSZSJS\c?=gmE>ulM?cULFd\FU\U;:qiS[wt>Slc:rtrDCm\=:rsGOo_V_f_@Ixq:JclC:skJr_D|CHN-RUS Super Go 2015|Ding, Liren|2015.07.30|A33a|0-1|B +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[`gpgL]g_?Mtf>@f]V]dn=a^VMFwpDLvxJDrtDN_WN_wvFXtT_nun:>ngX_qiCKTL>VvV_Vg^a^p^?=bZVML\@?xpMVZR?Fpg=E\@wn?>k[RKvxDLmeIQwvEUtk;EnwBJqiU]dsOIsmIXphE?xqXgmgHXgm=OwpAY`AiqiP_h_O_ip=AwyN`ktAyuy`gpwgyt_V_cT_gTCypwxKDCTD_TJHP^VX`JTPYrvYav^_XVNGNTNXfbZ|17th TCh-RUS Premier|Motylev,A|2010.04.01|C92|0-1|B +FVl\@OmeEU\UOUxg;LjbHPn^UKwn?Hk[>@smnuKEtbEKbkKErtEKcj=EtrKEnmJRonRZcZCByoA@txWfnfBZxsZbscbcjcM[mn@poipnfnGOioENo`[MnfDLqiMD|NH Hotels|Jussupow,Ar|2006.08.28|C18|1-0|W +FVl\@OnfEU\UOUsd;Lul?Fjb>@k[UdmdGWtkFOw\@AxnW_vxOaxy_gnh<`\egpyp`gpxahoh=XrvX`f^?Ovf:?engnwO?Oln`nfnOMxoA@nlBJon@GktGNtfMEltLFtu|Aeroflot Open|Goloshchapov, Alexander|2002.02.08|B47u|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb@ulTKtf=FwtN`sm?=k[:<[S`gmgL]g]K]f]=]lTFTtTOETdDTSL@xnEU^ULUm]V^tXIQXa;LvxHXahOYZc@wn?>k[RKmeDLvxIQtkEUwv;EnwBRqiKD^ULUdSD;l\U]gm:Jo_OImgJO_VEVS]IXxyVvV;V]LELkVOWVhXiu`=O`iLEiWEWrvR[b[Odyqd[e][m]UQYvVWPwnYahaGOVF@?FCmnC;?G|Corus A|Bacrot,E|2006.01.19|C92|1-0|W +FVn^@Osd?[xgEU^UV^gV>@jb[dmdOUw\DLvx?>o_GOV`<`u`=Kxy;J`n@A\JCJd\UDkcLT_WJRtfKLbZDJw_>VrwJ[_aLEp`A@npIQfQHQaQVF`XFIXO@AQPEGwx:=PHIHOHA@piGHxH@Hi`|AZE vs World Rapid|Guseinov,G|2009.05.09|C65|0-1|B +EUm]DTld@OxgFNtXIQXaHXahO^nf;Esm^hqh?Hh`>@we?>vxNV]VEVgV>Vug@k[RKmeBR[SL]dZ]gngKBvxEMrs@k[RKw\DLmeBRtkEMvx<`qi`Yp`YPdn;J[SJTSLCLrsKDnhMU^ULU\jV^ga^eaPGPkO?OsSDhST@ATU=Kuehoxy:?USoTwOKOSsOoj\oasw?=egRZ\SaFSZTbZLbMg^Fa^gaXL^=>gpXV^eMDe^VM^e>fenPXwgf>gwHPwgAHgw>fwgf>gwHQwg>^poMVnw^vopvugoutoGtuiaDMl\MDaXQX\TVTpgTVGIutgeDKIEKfypVkpitdeUXQwekoU^deEeowihwohiowihwohiow|5th FIDE GP|Inarkiev, Ernesto|2009.08.18|C78j|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@w\DLk[RKmeBRtXIQXO=OdZKD[SO=usEUSKU\KD=DZK:JK\?>vx;EbZEK\fFDUFEfVOVoTEMuvYavwKLTRa\UFMmwv\a|Aerosvit|Shirov,A|2007.06.22|C78|1-0|W +FVmeEUxg;LphGWwp@Ovx?Msd>@n^W^e^U]dUO^g]L]p^?k[OIXTIXTX=Xd^X`^MDM\U?Ftk;SK<=eS=EKCpCVNGNSVxym[y^V^C^wm^Lvn>GnfNVm^E]^h]_hwPXwmX`[dGNd[NW[TWNT[LS[dNWdk_ZogSLg`Z`mwLSwm`pktpxtkxvfgV^ghvf|42nd Olympiad 2016|Atabayev,M|2016.09.03|C18|1-0|W +FVn^@Osd?[jb[Rxg>@w\DLk[RKmeBRrsR[b[EMvx<`qi`Yp`YPtXIQXa?>um;E`XQXaXE?gaK]dn]KndK]dn]Knd|World Cup|Alekseev, Evgeny|2007.12.08|C78|1/2-1/2|B +FVl\@OmeEU\U=UxgV^sd?[uZ;LZ[L[dUOUe^[lvmlr^UV_CKphHEeJE]_X][RK[KJ\K[\N[sXO|Karjakin-Nakamura m|Nakamura, Hikaru|2005.04.29|B53i|0-1|B +FVn^@Osd?[xgEMw\[dmd>@\e;EtXETgmIQXaHXah@HunTNvtOEqaN_ngEOaXQXux?Ah_<`gfV_fvAyxy=Fog`EvxF>ph_hm\>Fxh:@hXH?XaEN^VMV\VOUaQ?>e^FXQX@XVeCKd\UO^L>FkcFML^O^g^X`yvDTtm`hvfhpmdpqjbBRe_qa_UMLdeaAfhRZedAahfLCcZCJdcJRUdaifiNi^ViEdSEWSMWPMCRJC=PY=LYgLFg^FUJRcd^PUFP^F<^PdcPWVNGNON>=NMl^kZ=FmtMDu]A=]^F?gX@k[KEmc]Krt?>n`EO`nOEn`EO`nOE|65. Ch|Jakovenko, Dmitry|2012.08.09|B92|1/2-1/2|B +FVl\@Ome?[tm[mum>@sdCKxg?>phDLwpEU\ULUe]V^gV;EVE=Evx@_ULUkc\cuc=Ewn;LZR?@xgVPwn?>dO=OldDTvxCKuZ>FwvBJnwZ`IQphKSwpJR`YS[utPVgVMVmc[dkdVdvuT\cTCLYaHXa`d[TJ[bts\d`nLZuUdlswlt2wtbtJTZLUuLpxpOL|World Blitz|Gelfand,B|2009.11.18|C10|1-0|W +FVl\@OmeEU\UOUxg;Ljb@ulTKtf:=_VctstCKVOHOZR=FRKDKxoA@gVEUVe[dmdU^e_=uvu;L_nIQqiLVkcCKtmd\DThWVLmdL]WfOEtkEVru=MumHPwnGWyu>=nw@GuvGOkt=EjbPXc[QYvuONuvYatkCJ[SJCktBJbZJRmuNOumONmuE=umMEmuEMumNOtk]NmM=MogN]g^C^fu^CuoX`i`W`ktOWou`hdmMPufWNweVeleNGvyPQmvaiywG@pihpfpCpwopitkiWop@GphQq|Aeroflot Open|Kobalia,M|2004.02.23|C67|1-0|W +EUxgDTnfHPwS;El\BJSE=E\U@Okc?Htk>@kOFOsdOWvxCSrtRW>fg_LTWOMUOWULp`fe`XeuXPuw_VwxWOLSV^BR^U]ebZS[O_[cUTem_gclgoxP|VI World Blitz|Gelfand,B|2010.11.18|B90|1-0|W +FVn^@Osd?[jb[Rxg>@w\RdmdEMgm;EvxETwvCK\e<[SKRgmL]k]V]f^U^e^F^un^ln`GW`uA>wn]eulelvxRmnglt2rtmtwt=ebZeb|ClubCh-EST|Rauk,T|2002.03.10|B89|1-0|W +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDLg`JDdnIY`iBR[RDStm:Rn]S]mR=RvwCSbZS[rsHPph?Qwp>@yw?:pyRZuvLTo_ZlvoV_ol]lh_:bwol]iwbd_WQfopPXsvf_wnYan`[c^Vdtvt_tVNGNWNck|6th EICC|Radjabov,T|2005.06.22|B33|1-0|W +FVn^@Osd?[xg>@gV?>VeO^wn[?d^>^vxEUng^>wv=>evDLm]?Mph;JldJDvp>Et_M_p_DN_NENunNngn:>nw@?ogHXxoIQrv>vov?FvmFMmfBRjbGOwn|WCh 2016|Carlsen,M|2016.11.28|C67|1/2-1/2|B +EUm]DTld@Oxg;Lnf<`qi`gug=K]TKTsmFNph?Fwp>@vx?=gnLVwuTLmcL\c]:DGYGHG>VGOVRjt]\tnRJOH\[n_[T_ic[X`Jbi_[S_NTMN=SKIYME=CEDCTDLTNbeYaKC|14th Ordix Open|Sargissian,G|2007.08.19|D43|0-1|B +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn>@vx?>tfFObZBRsdL]f]V]dSDLSbvmflml`gpgL]ls]ceW<;rjcmsrmcrscmsrmcrs|19. Amber Blindfold|Gashimov, Vugar|2010.03.24|B87|1/2-1/2|W +EUm]DTld@Oxg;Lnf<`qi`gugFNsm?M]TMTph>@wp=Dgn?>vx:=kcBJtkNVruV^c[TBd\U][S]envL[ut[lvulfofBfxqf]k]=]w_>Vmg^g_]Vn]enpqyIYugpjSJD@mcO^ue?=ws:sk^TcTFT]T:kSTSeSESsS:bSUbrxqHPUSrjSCjlqxltxqtlqxltxq|9th Masters Final 2016|Nakamura,Hi|2016.07.22|D37|1/2-1/2|B +FVl\@OnfEU\UOUxg;LsdU[meEdn=@n]N]tf@Ih`W`Y`EDqiR:wx:@xh]W`WIWug@hgWAiWihiypiafTKTsvaZvVZ]VT]epw|4th FIDE GP|Ivanchuk, Vassily|2009.04.26|B33r|1/2-1/2|W +EUm]DTld;LxgFNnf@Osm=DweHXqiIQjbT\el@vxO^e^U^rt?=wu=emv:=tsD\ut=McRZlR\ls\MVMtsCKbZGWxweUd\UeZRKRvRebsSbrwnrtSWt\RmMDWO@HOJDKmR\lnvKTp`ltvntlnvltvmtwmnwtRDtlnwltwptlJLHGDM|World Blitz|Mamedyarov,S|2009.11.16|D45|0-1|B +FVl\@OnfEU\UOUsd;LulSZ>Gm]N\[SLRrsFU]VUKn]KZlZGPskOVgVPpZRpyvm?TV\T]f]=]mdytd]A=|2nd Sanjin Hotel Cup|Zhang Pengxiang|2005.07.14|B48|1-0|W +FVn^@Osd?[jb[Rxg>@wnEMmeDLvx;Ewv?>nwIQk[RDtkMUdsBRsmDMld=DulCKphfofMhmghagaO^[RKRd\U\l\DK\SKOSCOawpEOtwa`xy`nkt=>bZ^oyxoeCgetwtngpg>fgLfetTe]TRHXR:@HZR]mRJmjLSOUSLU_:BX`L>_ixwiX>LQYLUjZwnYanfHOB:OVJBZbfnV_nmGWmlXglkbRULg]L>]S>SRSkdSCdmCF|SportAccord Basque Men 2013|Ponomariov, Ruslan|2013.12.17|C92o|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUgm;E^ULUZdU]d^BRrsR[b[OI^hHPmgQYqaCKgXEOng:Bh^O^g^IO^L:st@HtL:j_Xjrur]rLtrOXhE]tu][ue[syqOrhosyqhrVg_V^o]^]e]ys]MschoH?MEKSECS[phcsog[cgpGWpqskqx?>xw>=wv=@]UNUumSL^V|World Blitz 2015|Lagno, Kateryna|2015.10.13|A31|0-1|B +FVn^@Osd?[o_;L_VLVxgVgug=Fwn[dkdO^vx>@gf?>nY^OfF>FYgEMmeIQd\:;jZBRtmCKrsOEwvFvsv@?e]v>?>g^EO^W>Fp`HPW_FNqaMU_gQY`YOY\TNEgfELTKDKfeKSmRSZR[Y_edLS[M_pMFpfFXfu|TCh-RUS|Zvjaginsev,V|2008.04.10|C63|1-0|W +FVl\;Lme@OjbEU\UOUxg?Fn^UKwn@vx=EsmBRulRZrt?=wuFOqiKKfcZgmGOm\brxpM?CDZunw=w\|Open|Herndlbauer,M|2003.08.16|B92|0-1|B +EUxgDTnf@OkcHPtbCKwS=vm=DmlA=qa=Md\IQyuMunuQYbkDMunVklkMVkdGOdmL>md>GdmG>mdPXph>PdmXahaOWo_^gngW_guP>ug>GmnBRneG>em>PguPGug|67th ch-RUS 2014|Grachev, Boris|2014.12.05|E15r|1/2-1/2|B +FVnfEUm];LxgV^gmGWl\@OsdGtk:wtIYdnOUkdUdtdYaog^gpgDTSL;rjHPqiMFxoFXg_XFofGN^VNE|FIDE World Cup 2011|So, Wesley|2011.08.31|C11k|1/2-1/2|W +FVnfEUm];LwSV^l\BJSLCLxn=Xvx?MsdXanh@OulEo_A@dcGO[SFNioe\ck@Hv[:@SLEFo^Ni_oif^XQ`[Cft|5th Final Masters|Vallejo Pons, Francisco|2012.10.12|C18p|1-0|W +EUm]DTld;LxgT]d]GwSBJSnGHucX`gxPaphW^yqagng`gcuLVT@l]W^wi?>vxF?]WJTgX^WiWHPWiDLul=Fwv?HipBRXgT^nfRZgmZbm^O^p^F^l^>^vubktk^ZjbIYqiCSxpH?u]ZBrt?T]_GWh`TM_gBG`YPYtr@IpwIPwnMVrxPOia:AxXONXPGOPHAQHBO?bZS[ne?;BJNMgWQPo_VOWYPpYQ;?krMDQO?Od[ONrVDC[SpqV]qaJBC;SKayZRyueluyRJLTBC;:]TNLCDLDKDyA_WA@]T=DjbDTk[TDtkVeTDbZO^ZRK\m^U^e[@?un?FxwGWqa\MjbM\n\D\wnHOphOVnm\@vxIQmeDLdZKDl\;Ewv?>nwE?qi?PphMUulCKwpU]tmVu]aW]=AHTeVRygRb\TbjovWagCjqeoOY=]aW]`HOTLOFLDWM`]|It (active)|Korneev, Oleg|2005.11.20|C84|1-0|B +@Om]HPld?HtXEMsm;En^IQXaDTxgPXahOYweT]d]CSvx:;mc>@jZSZrZ=KcRYhqh@ph=Mo_GO`i?=uYRBYuNDip]N_WN]h`KS`XS[djD>XP=;PI@Apg[cjd]lgYT]Y>]d>YdmumBZYGl]qaZjmfMFG\F>wx>YxpYayxjpxp;:|Keres mem op|Shevtshenko, Robert|1998.06.20|B33|1-0|W +FVmeEUxg;Ln^@Osm?Twn>@vxBRjbRZqiIQwv?>^UOUm^T?l\U_nw_NtfN]^d]gugL]f]=]v^]KrsDLe]>=\TKD]V@meIQdnMU\c?>e]O^gV;EVe[?ldEOclFwv:>vF>F_MPMrvFvmv@?vfGOe_?GfeE?elHPlZBJZcCSclQYlmGHmfMEk[HG_eEWon?NfQN?nm?NmfNHQ_W_h_HNfoYaphahohGFh`NH`hHN_WPWeTNT]TFGh_GPjbPH_WHGg_GFWPFNPHNWHGW_GN_^NMOWMLW_LK_gTLgoLDow2D<2wOKR^e@ndDLsmBJjZLTZRT]f]F[uZ[dkd?>wnU\Z\CS\c<\VPVMVOIg`<\V]GO`a\lahIXqaXN|World Blitz|Karpov, Anatoly|2009.11.16|B12|1/2-1/2|W +FVldEUm];L]VLVt_VP_hIYqi@OsmYahq?MqM=Mnfk[T\ruMJg]PFlkHXjZFPmcPVcTJMZR<;RJCJurEFJTVene\eTeBJ]W@rj?OxyOPjmEim=F=woiaBZ@?Zuaou=?G=DGOD=OG=D|It|Korneev, Oleg|2005.04.07|B97v|1/2-1/2|B +FVnfEUm];LxgV^gmGWl\@OsdEqaCKphBRctKSbZA;ZS;SrjRZnuDT]TMVulSTls:;tnZbytTSmdUdndSksrks||Kiriakov, Petr|2004.05.09|C11|1-0|W +@OxgDTkcHPtk?HnfEUwn;Lvx=Dl\U]f]T]g]DV]SVksd<`WBJ|8th ch-Euro|Bindrich,F|2007.04.13|E17|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?PphCKwpU]rtO>tr>Dk]DN]fMeqaWPxqP^rweUp^U^wuGWuE@IEG^UGBN]f]U]qx]uxpuUpxUuxp|FIDE GP|Kamsky, Gata|2008.05.05|C95l|1/2-1/2|W +EUxgDTnf@Om];LldFNsm?M]TMTk[TMtkNV[SLRd\V^g]U\m\R\w\>@\n=FucO`qi`VruFOkb?=vxOPxyPQyx@]V?ogF[rtOEVE>EvuE>xo[dtdGfB<\t\G\jb@GBKGNKBNGBKGNKBNG|30th ECC Open 2014|Roiz, Michael|2014.09.16|E34|1/2-1/2|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;L_nIQqiiaOUaYGWyaLVtmDTkcJRruUFnwRZwSNESnENnSNESnENnS|2. Sanjin Hotel Cup|Motylev, Alexander|2005.07.10|C67|1/2-1/2|B +FVn^@OxgO^me^OgV;LVLELwn@l\NVk[TMtk<`wnV^g]`n]n;E\UEVkVMVrjBRjmR[b[=MucCSn]OU]SM[c[U[vnGWo_^gpg?>no:RSdRTdnVOg_Oaog[lnh>fgof^yt^_ox_\hWaXtwlfWM\`xyfwmjIY|Open|Loeffler, Stefan|2003.08.24|D27|1-0|B +FVn^@Osd?[xg>@gV?>VeO^wn[?d^>^vxEUevU]n\^>me;Lt_?M_M=MvgLRwv:>umR\e\DTrvGOv>E>kcHXgv>PveCKjZ@GZRMNxwIYRKBKmnNLogYawoPWphL:ovaivoWPovPYvoYPovPYvoYP|8th Tal Memorial|Carlsen, Magnus|2013.06.14|C67d|1/2-1/2|W +FVn^@Osd?[ph>@wpDLjb[TmeEUunU^d^O^e^CKxg@vtOYuxYHts?>mt@IsrEWxw=FxyF>yqWEqy>FyqI@qy;:yq@IqyHNnxNHxnEWnxWExnEWnxWE|Vugar Gashimov Mem 2016|Radjabov, Teimour|2016.06.02|C18b|1/2-1/2|W +FVl\@OmeEU\UOUxg;Lnf@gVEUVe[dmdU^e_=uvu;LuvIQqa?=wn<`tf=Eru:=uE=EaY`nvnLFf]OU_UFUphCKjZDT]fGWZR@Gd\UOldECRKBKk[CByuBjnwjluMldMKT[K[OYf]dl\TYO[CGPwpl\]OPOCD\lpxHPTLOXD@gVEUVe[dmdU^e_=uvuIQuv;LqanSHXaXQX_n`fif@HSLCLru=uvu>An]WPp`LT]LHOfhBJLROVR\V_\fAyumDLfp_VpfGOd\PGjbGNkc|FIDE Candidates 2014|Anand, Viswanathan|2014.03.19|C67w|1/2-1/2|B +EUm]DTld@Oxg;Lnf<`qi`gugFNsm?M]TMTph>@wp:\U=UmcT?tm?[wuUVjb[mumLRc]R\ml\MrtHPl<>DdH@piBJk[GWiw@GbZGOZRIQdTPXaXQXTKW_K=OPxq_hohVO=O>OqxOU[SJS]SMSwSUfxofWSL^fovW]LCPWRJ]SvnW`nf`hfeh_e\SDJBX`\T`hTK|18th Amber Blindfold|Leko,P|2009.03.25|D43|0-1|B +FVl\@Ome?[tm[mumDTsd;LxgEU\UOUnf>@wnFo_X_f_V^ph@nmgmlm>ETfNJmeJjqaGWf_ENe]jZ]fNOfgOP_MZ]MD]\DMPGMVGNV;\[;D[CDRCcg_cSRDSTD;T<;B<\_g\tB;twgfNOfnws;_scnoONopIYpoNU_DU^opckpi^gDMksiqg`MVsvVDvnqx`g|Hotel Bali Stars|Radjabov, Teimour|2003.11.28|D45n|1-0|B +EUxgDTnf@Okc;LwSFNvx?Mm]>@tkT]f]BJSeCSjb=KunS[nuJRb[L[en@ul=Mqi`Em\MNe]V]f]FOwu?>neHP\fNMf\MFtQENe^F=\VLFQXDLlmOHVeGOeTN=vmq`ml`Qdv<`nm=ExiQWudAQrs`iyiP`c[FavaWaiqaWjZWFskYaqiGOlsHX_XOXmoQAowA?wv?Oiy`Yyw;?wO?O[SJSZSLSdSFLSdYGvnOwduwxsjGWudxtduWNnmt\js\ZudZ:muNWuv:?sjLFvnWNjs?:nYNJY`E=dSJrsl:jkjrjltj\tm\emvefvwfe`nenwn=EnoFWSdDLdnENoxWhntNWxq^f|WY ol|Sengupta,D|2002.08.25|C18|1-0|W +FVl\@Ome?[tmDTphEU\UOUwp;Lxg>@vxGOsd@vxGWsm@Ak[BJm\FPtfW^e^@mel\OYphYOfB:BgmB:unCKxy>Pmg?GgaPQnfHXagGHyp:?qiQYgxX`iaHGfXYXaXO>ogGHg_V_h_NVxnV_n_HXZd?GdUEV_NXYUF@AwGVGrwYVwGVNG?AH?>HG>AGFAIF=phNOh`Ooe]om]Um]\TKT`W=@meDLe];EtXIQXa?>]VMVn\=FqiF[un[kdZk[ZKEK\eOYjb[TnmGOm[T[b[=wsBJxw=]wn:=hq@GmcNcscY_q_V_iaKEaXOXrR=>csEVogQYnmGOmd>=enYasy]ERrEIyiIDrRDEiyEmyvONRrm]vy]MrRMERr=AyiLT[SJSnSE]rBA;iy][SnVLBrL]neNVrRCSRJ[ZJPS[dm[cPXVOXUckysZrld]cmuT\el;@UWOF|18. Amber Blindfold|Radjabov, Teimour|2009.03.17|C55|1-0|B +FVn^@OxgO^me^OgV;LVLELsdqiOUf]GOyvUF]TFPgYWNogNGYPIPv>=>uvRdmdCKTo>vdvEN|2. FIDE GP|Ivanchuk, Vassily|2008.08.03|C42|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tf;EV\DLwnKD]UEKUMD;\KBKf_ph:=UGFG\G@Gh_GOvfOWog^gfgHPghIQhi=miQ>fQIfbIGWNGCbjCKNGKCG@wtmp|NH Chess Tournament|Jussupow, Artur|2007.08.23|C83|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@k[RKw\DLmeBRrsEU\cR[b[;JvxJ[tXKDXOHOgaOWaW@dZTMkc=En^Ni^UipxpLU\U:@we;LWMDMd\LVvxCKtb?>ZdNqiO>MhS[b[R[dZ>Om]EU^VOEo_NJZk=K_WJr]mrukuETho[cWOHXiackukTcmuK]ke]rurcraXQXfh@IeT<@VNIPNFPOo]OF]rGWrVW_V_FO_fOWf]X`hf@;fVWPxo;[TNPGN_[cVfcsohsu]VumVdmuh`U]f^\N^N]dNL|Sberbank GM Rapid|Zhigalko, Sergei|2013.06.07|C58|0-1|B +FVnfEUm];LxgV^gmGWl\@Own@bFLFsdDT]TU]f]=]dS]Tc[TVutFLtdVdSdL[rs[lvul]sC?=yv:@dSD;phUF@?FLktLVt?Eejqa`HP`g??^oFOh`WXfiXH|Premier|Barsov, Alexei|2003.01.05|C18|1/2-1/2|W +EUm]DTld@OxgFNjbCKtX;Enf?Msm>@d\IQXa@gVEUVe[dmdU^e_=uvu;L_nIQnhLVqiCKtm@wnEMk[RKmeBRtmDLvx?>dZKDl\;EZdE?wvIQqi?PrtDKdZKDul?vfiXtdMU\U@AePLUdqp;CpoCKn^LTg_V_h_P`aXKSogBRtyS[yY`xXO[cYTRZTDZbDCclCBlcBCclCBlcBC|8. Tal Mem Blitz|Morozevich, Alexander|2013.06.12|B72|1/2-1/2|W +EUxgDTnf;LwS=Dm]T]u]FNl\@smELrt:Vg>LgVL>Vg|68. ch-RUS 2015|Lysyj, Igor|2015.08.10|E34|1/2-1/2|B +DTn^;LsdHPph?HwpFNme@Fo_EMxg:;jZBJvxCSZSJSdnS[ld[dkd>@tfGWgm@Aul2AIfoRjsu|FIDE GP IQT Final|Zeliakov,Nugzar|2002.04.02|A25|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;E\ULUZdEKbZ@sdUFtmIQrtBRjb@IdZGWk[R[b[V^gvL]Zd@xgT]XOHOd]EUsd;LwnFNvxumIYjbYatlF=wtLFcTCKTeFWevWMnJ<;JwKSveM\mvBReTOFdsNVkcV]f]\MsdMWdnS[bZFOtu:Bvm;E_UFWo_XaloPXhaXaUFWFvF@?FfQHTXH]fvEYPIPgu>Num?Aqp=?mROWRVNE`WPW^W?>VTHY\VEIogX`V`YO`oO`ia`fpx>@wtIYTD;:D_BJtDfU_^UDxpD>^]>H]OY>o^HYOM>Sk[@=MTSZTd=<^TZLd]YOTNOYh`A@`XLlgoluNT<>TN>ow>npxumwoYhWOmvxphWonvh|Hotel Bali Stars|Polgar, Judit|2003.11.29|B92g|1-0|B +EUxg@gaO^d^P^ph?>ngV]f]=OtkIQwv^gugOgagMDxwEKrt:=gaGOaW@GWfQYtsKG>md>GsvUEvfHXqiOWh`Y`i`W`wpD_fvEFvuFn]Unld[LUuU`hTLlopioqi`ql`glLUSLN[TNVSCGNT]VvC[_M[Zvwgpw_pi_aipNUZRU]|World Blitz 2015|Grischuk, Alexander|2015.10.14|D02|1-0|B +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn@vx=MsmL]f]V]wvBRrtRZnwDTphKE^VMJm^CSgXNWo_:@wnGWulBRkcFOtkV^gm^eneOklkUfof=ekdeUvx@tm?>ZRH?gVFNvt?MVEA`WNWxpYayxA@RbBRmvE>cmGNmg@AbZ>GkcAQtuG>un>GnwG>pnQAxp:Jwx>GxyG>px>GnpAQZbK=gXFX_XQAbT=FT]A=]fLTpm=]voG>fv]_yq>Lof_gmoghxhahqhJ:ia:=omFIvuL:e]T]m]IC]MNFuUCU\U=MfT:UVMFNh_ULjZL>_f>Lf_L>_g>EghELh_|FIDE World Cup 2015|Eljanov, Pavel|2015.09.29|A40w|1/2-1/2|W +FVmeEUxg;LphGWwp@Ol\U\uZ?MZ\=FtX@vxLFrtDLgm@AZl?=m\MDtu:ruELUf=Xf`XmumQIygLZmnahohZE`f>?fW@Ank?OgpPXqaX`koEW^WIHog`hgYA@xq@?p^|UKR Summer Youth Games|Maletskij, Igor|2002.05.21|B09p|1-0|W +EUm]DT]TFVl\U]xg;Lk[V^[S^gSLCLng?Twe=FunFnvn@Fsmg_PFvVHPrv=EcTED_WGOVN<=|WY ol|Nasri,A|2002.08.22|D20|0-1|B +FVn^@Osd?[jb[Rxg;LwnRdmdO^gVLVuU>@U^?>vxEU^]=>u]CS]BWlBE>NEmletvPXvfNfmfXfofe^xo@IhMI@Mh@IhMI@|SportAccord Blitz Men 2013|Dominguez Perez, Leinier|2013.12.14|C77|1/2-1/2|B +FVl\@OsdEU\UOUnf;LxgU[wSBJSL[Lm]?Mvx>@]ULFf^FPqiIQjbGWk[Patfagug=axqW_fTHXp`QY`YX`wx`h|Superstars Hotel Bali|Amura,C|2002.11.30|B45|1-0|W +EUxgDTnf@OkcHPtbCKwSc[T\[SPXkbF^vxX`ga^VphVdrjDVbkdcuc\ckV>VjkENwt<;kcU]ce=Exw]fefVfofEDtuOUapUdu=D<=]dnwn@vx:;ogEMdUOEldFNU[L[d[EKumKZc]@wnEMl\FVsd=FvxV^gmDT]UIYxylm]fwfOPut`QmoPYdOWEOX@PonYnvnQ`f`E`nfGOXaCKxoPQtv`Wfb>FofIPvsW`_W`WswFGw_W<_^QAfo@wnGWme=>vx>PdUNUk[BJtk:>e]V^n\PN\UNUgVLV]VDLog^gwgHPruUNf^W^l^?g^g>=uv=mkdm=dk=mkdmUdkNWgnWNngUm|World Teams 2013|Korobov, Anton|2013.12.04|B85|1/2-1/2|W +DTn^;Lxg@OsdFNwS=DSLDLunBJm]EU^UOUdULUl\UYtfT]g]Yn]n?[fm[FogNVvoGrt<:ndFbtsb[dS:joxjnfoA:srnmut:rtrNcqiGPrtmeov[FtdedSdPWd^clvmWNxwNU^olZo^ZSwvU\^hSEh^\emROW^oelRmESmRFToyHPyoIYoySeyhTFhyFTyhV^g^W^hn^fphe\n_TM_nleiae^n_^gRdfn|Corus A|Ivanchuk, Vassily|2006.01.29|A28|1-0|B +FVn^@OsdEU^UOUxgUdkdV^un=Fg]DT]c;LnfFVtbCKwS@SMhYNQYhZatfaqxoQP|It|Radjabov, Teimour|2005.04.05|C45k|1-0|B +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBRtmDLvx?>dZKDl\;EwvE?ZdIQ[S?PrsMUulNPWNVWiUCsCXamdV>iW|SportAccord Blindfold Men 2012|Grischuk, Alexander|2012.12.19|C84|0-1|B +EUxgDTnf;LwSFNvx?Ml\@Om]>@]TMTsmBJ\UJSULCLulTFlL:;Ll?NV[mvmCc\cUFyraiph=EcNECNWAQW^CkmdkorBF@VWQOB:?G^UGPWoOo:@PY@AY`UN`gAigfiY||Kiriakov, Petr|2004.05.09|C11|0-1|W +FVn^@Osd?Tw\CS\SDLSnEUdZTF^U=UmeUpngpPunPWtm>@vt_PGPhPoidU>nPhioUO@?OY:=Z_?>YH>E_]EFHWFO]=nvtmvumnu=hgouWf|6th EICC|Beliavsky, Alexander G.|2005.06.30|C51|0-1|W +EUxgDTnf@Om];Lwn@tk?=utDFtdF?wtO^dvIQ\m^mgmNVngGOgLCLm\RZ\R=ec[TKtLKR[RecLK?Tf^|18. Amber Blindfold|Kramnik, Vladimir|2009.03.16|D37|1/2-1/2|W +EUm]DTld@OxgFNjb@wvRZ\UNUmw?>tXIQXaE`rtDKes:=ue`gegL]geHPwf]ctuU]f\KJ\VOUeJCJah=vuvMhqhTlJSlmv>@H>@wn?=sdDR]gOYvxY_m];LdU_U\URUn\URutL]g]H]k]=]tfFVwv@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?PphCKwpU]unLTl\BJ[SOYnuY_h_P_mwJS\S=EbZ_pxpEipy<`wmGWvxW^xhiYm^>?uc@Agm?_rx:>ZRKRSKD;og`NcS_axpNipoYGkb>@bTG_SR_fRbiWm\f_yxWNTM|ETCC|Roiz, Michael|2007.10.30|C95l|0-1|W +FVldEUm];L]VLVt_VP_hIYqi@OsmYahq?MqM=Mnf@me?=jbHVqiMOsm:;ulVDm^Oang;SwuUOtm@wnEMk[RKmeBRtmDLvxKDwv?>rsIQnwR[b[<`qi`Yph;EwpE?sr=Er:>:[SLTh`YPusDRskRdmd?NdmOIgaQY|World Cup|Timofeev, Artyom|2009.11.25|C84f|1/2-1/2|B +FVl\@Fxg;LmeEU\UFUjbIQnfHXe]V]g]FDFDLF^LD|2. Governor's Cup|Kupreichik, Viktor D|2001.11.21|B90|1/2-1/2|B +FVl\@OmeEU\UOUnf;LxgHXjbX`gmIYk[BJmcYatkAQun`hog=Xf^U_kt@ru<`wn`nmn=Ovx[dkdOduU:=U=?=wtd[qiIQt\[SnlSUc]L]\]UR]ZRKjbBRZ\KM\]MFbZ=]f]FNld|8th ch-Euro|Zhigalko, Sergei|2007.04.06|B22u|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBRtkEMme;EwvDLnwKBumE?ph?PwpIYvnYamX<`duahqhP?uf?NXa`YnvHPgXBfofNXaX@He]O`X=>=piGOi`Y`xp=Al\AYvx:ApoRZ\TMU]VOV^UYWovAq|FIDE World Cup 2011|Kaabi,M|2011.08.29|C88|1-0|W +FVn^@Osd?[xgEMw\DLvx>@meIQdnMU\c?>e]O^gV;EVEfnh=awv:>vf>fhwfNclHPk[QYleCKjZLT[TKTeSEIQLtewtwowyqr]>?QY|Supreme Masters 2013|Svidler, Peter|2013.05.17|C65j|1-0|B +EUphDTwp;LmeFVn^U]o_V_h_=avwGWxgaF^V@tXEUnf;Esm?>wnFVvxV^gvDLd\U\m\EKrtKUvl;R:;:K:Ya:KaiKULUbZX=n`WM`i=RsjM\i`H?`n\bjcRvnSbscUsmS\m\U\?[\lGWxp@HqaHGljGHjNvnaYnYN\Ygpx[v\lHQwqgYxpv[lj[RjURvUjvRjlYXlTX=]URKTLKDqwQHwmPXm\W_UM_gpx=OLD|VI World Blitz|Radjabov,T|2010.11.16|A07|0-1|B +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBJvxKBds;Esm?>l\E?qiOYgVYhVghwmw?NwhN]tk]gng=Xe]^wf;_uv=>dmIQtr_fof^NrsPXseNPenXWngWlmt>^gnlcnuc\un\cnucsum^NmnPhyqNPvxs^tmhXmvPNvo^]f]NnohQYbZnkhMYaMFXPFak[aoCKxtPLtrKT]TU]ov[\rsLTZR]eqhTVhg\lvhVns;@I;=np=epmeclkcdmUdbUSbrScg`kp`_ph_^cbrsbR^]RZ]UhXUMXSstZaMLaQLDJRtuRZurSRrbRBD;QJiaIPaYPYbiY`ibJRbrGWrx`gxwgnwrBGrjnejbe\brRVrt\ct@wn?>k[RKmeDLvxIQtkEUwv;EnwBRdZKD[SLSZdEK^U;>L[U^uwDM[j^ljd>:sklekj:jdjemjdM[|Corus A|Adams,Mi|2009.01.31|C92|1-0|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;L_nIQnhLVqi?>d\@ItfHXwnVPyvPanwIPut^weLU\U<>ogaWe^>^g^W]kd]Sd\SM\]POl\EVrtQYjZM\t\V\]\OV\eBJ|Tal Memorial Blitz|Leko, Peter|2008.08.30|C67|1-0|B +EUm]DTld@Oxg;Lnf<`qi`Y]TFVp`YPk[O^iaIY`X?Ftk>@sm=Dm^P^wpCKTKBKvx^Pd\V^g]L[\U[ersDE]LFMjZ:Jk]MDsc?>ZREMo_^gwgeT]TKTunMUnJUcf^cuJwuZ^VDVLV>VRJVNwoZJoTJZToN^giZuxq^n|2nd FIDE GP|Grischuk, Alexander|2008.07.31|D43l|1-0|B +FVld@Om];LxgV^gVEUVLCLnf?Md\>@sdBR\TMFtmO`wn`QuZ=EvtENqiQWn`NPuxIY`nWaZuPOuwHPo_^gpgaWwoRZjb@gvT\ve\ek[=EwvGWZSV^SZFOtkEGZuLVvwNcuvVgpg^gxy:>wxGYducuvuOkrs?OqaY`xpgpyp`usuOL|?|Seidov, Zakir|2004.03.06|B38|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLm]V]g]O^d^>^ldEMne^>t_=OuYHPYQK]d]O]ru]HQH@H_MFxo:>vF?FuvF=v>=>p`>FofFNqaEVenV\n\U\bZIY`YPYZRCKRKBKd]|1st Asian Clubs|Kobalia, Mikhail|2008.12.30|C89i|1/2-1/2|W +FVm]V]u];L]ZEUxg@Old?TtXIQXad\U]f^KDtsD_meFVnwZEiE=EwiEFeuOW^WVMWOFViaVWyv>=ueCKcmMOaOWOmwQYwh_Dv^=A^F;slNvxXvwdUwolcDhcbW_ec>fX@=E@HENUf_fHBfncKhMBJogbZnv2KMNFMKF?J:?HK;g?|GMB|Rogers,I|2003.01.21|B01|1-0|W +FVl\@OnfEU\UOUjb?Mw\UK\n>@meDTxg;LsdGWkc@ul=Fk[TKtf?=wtN`sm`gmgO>[SL]g]K]f]=]lcCKqiHPt\FMrtBR\]M]t\]Mcd:=\LMFnu=ML\MEbZ>M\LM^e^EuxquEphIYia@HqpGOd\FG\dGFd\FG\dGF|FIDE World Blitz 2014|Andriasian, Zaven|2014.06.19|B90|1/2-1/2|B +FVl\@OsdEU\UOUucUKxg?Mme>@phDTwp;LtXMFXF=Fcb=Ntnxwnhwv^yvmyUN]h^|Young Stars of the World|Andreikin,D|2005.05.24|B32|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtkEUwv;EnwBJqiU]dsOIsm=OutE?ld]dtdIXvn?Pe]V]g]P_nfOPxyED=A=;cNWxglnvwnjgVEDogIYVG=;c;D;GVBRyxRZudjbdsbjsdemdu;DwnZbf^W<[SL]l]V]nf]VqiIYul?[lcVTdnWNcZN\jb\nvnT\nuOUpwUduv\wywdZb[ZKtkGOrB<;BjK\k]CKog^gwg\MvnMS]r;Cjl=Ug_A:rd:=dkUXh`=Al\SM\]CLkdAI_wY`]`XYwgLUmeUNf^MGghYXdmX`h`HX`hIamdGMdmDT[TKThgT\^V\eneOVmXV^efaYgONViaMWfnWaXaYaOJ|vs World Rapid|Guseinov, Gadir|2009.05.07|B27|1/2-1/2|W +FVnfEUm];L]VLVsm@OxgVgmg?Ml\@weU\e\N\l\O^md^dkd?>vxF^\^>^wt^Zxw:>tlGWph@GrsCKsuGOqaHPu]ZJwnIQ]UONUuJRg]NO]cRVd\PXaXQXuyW_h_X_yi_fifVfofM_ld_VdlV_|NH Hotels|Andersson, Ulf|2006.08.19|C10o|1/2-1/2|W +EUm]DTld;Lxg@Onf<`qi`gugFNsm?M]TMTph>@wpNVvx?>f^U]wu:=mvKBrtBKtrKBrtBKtr|68. ch-RUS 2015|Motylev, Alexander|2015.08.13|D43|1/2-1/2|W +@Ol\FVme?[sm>@jb[MxgDLk[MDtk?>rtBRn^R[b[EUwnU]tr:rur;JkbOYph<[CN>CD<:BCETCL>LDLTEqiHPm\:>LDPXDB>Nh`@?BRNLgVEVRVL]Ujn^]>?UM?>CF>?]UnmULmlLEljF>?HEF|2. Norway Blitz 2014|Grischuk, Alexander|2014.06.02|B51|0-1|W +EUxgDTnf@OkcHPtbCKwS@wv:;l\U\c\O^bkEWnw;Cwe^MsbWeueMWe^CDruLR\T=Ep`WQqiGW`WEWTKBKxpW^v^QW^nWMgX?WXNDE]UHQkVR\b\M\o_PX_XQXNXWXVh@Gn^\M^_G>iaX@jZED|FIDE Candidates 2016|Topalov, Veselin|2016.03.16|E15o|1/2-1/2|B +FVn^@Osd?Tw\>@xgEMvxDLm]V]g]BRjbRZk[Zc]cTKtX=FxyNE>?Veow^vwpvfSW_gphgohpfvWgvxpqxuqpEFgGFNGoeopouUofUW?WNWf]WN]^MU^]NM]eMTedU]deTUemU^mn]enm^]mu]fuvemvufe|9th Masters Final 2016|Giri,A|2016.07.14|C50|1/2-1/2|W +EUxgDTnf;LwSFNvx?Mm]@Ol\>@sdBJSLCLul@wnEMvx]A?FA]F?]A?FA]F?|FIDE Candidates 2014|Topalov, Veselin|2014.03.17|A29|1/2-1/2|W +EUm]@Old@gVLRngRCV`OEf^U^m^W^g^GW^CZ\t\U\aYLFgV\UVEUG>G@GogBRxTHXYPFPE?P?ph?NTM_hMhN]ypGNhvRZphZb|41. Olympiad Open 2014|Nezad, Husein Aziz|2014.08.03|D02|1-0|W +@OxgHPl\DTm]T]g]?Hsd;Lph>@wpL]u]EMvxOH[CH?C;FN>S?H;:U]oglcZRcU:BNVRJrRSeHOBDONh`GW`WPWJBV^g^W^e\U\D\RB\]NV]=V_po^fopBHpwH`=?_h|Tal Memorial Blitz 2014|Leko, Peter|2014.11.13|A30|1/2-1/2|W +FVnfEUm];Lxg<`wSV^qi`ESLCLgV=Xph?MVE>El\@Otm:;\TMhyxhovoXaop;kuwA;wWE=xuaQWoQXohXhphOYhoGWsdHXdnW_mdklutltrt_gnhYHty|GMB|Stellwagen, Daniel|2003.01.25|C12|1/2-1/2|W +FVl\@OnfEU\UOUsd;Lul@wePVgVMVvxO^ruENo_VWd\?>m^U^enWPxy:=bZPh_WN=u`=mwxhMxumucuMu`u@m^U^sm?>]THrurEiwu=Xnw:=m\KTbk=uru>=uliWldGO\mLVdR=mkVmuVhW`RJXUqiUexqew|5th Final Masters|Aronian, Levon|2012.09.24|E15o|1-0|B +@Om]EUxgF]T=RsdO^g]^dum;@wn?>ulFVkdRJmeV^e^O^dH@HvxJRwtEOZd^dldRdtdFxw:=wvO^ru=unuWNun^McbCKgmPXbdGWo_HOvoX`qiIYdtNGi`Y`tyOHphFEytM>ov>OtdE=db=E|Tashkent FIDE GP 2014|Gelfand, Boris|2014.10.22|E15d|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb@sd?>k[T?rsN`gX`N_WN^e^hiyx]ewo?Tt_en|Aerosvit|Van Wely,L|2007.06.25|B90|1-0|W +FVn^@Osd?[o_;L_VLVm]O^]V^du`=FxgGW`WEUWed^ld[TtfDLfTFTe]TKweKkvxkd]d^dgXd^e^U^VNIQX^=TC=Ew_\j_oj\omEDvFDKmk\SCMBRMSLSFNKDkSRZSTDENV:JVUENUVNOVWOPWoA;ojZbTl;cqiPWlnQYjlJRxqHXljYajlceltRJtwWPwsJLsSeuScurnoLtcKPYp`ahqhtdhpruK;ue;AYPA@PQoOQI@?emOomo?odDiaDB|5th Kings Tournament|Nisipeanu,LD|2011.06.17|C63|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtkEUwv;EnwBRqiKD^ULUdSD;l\U]gmE?o_V_v>=>k]:J[R?I]KJKRK>fxy_gmgOYp`YhypQYumfKrv@In^HPph|Premier|Kosteniuk,A|2003.01.01|C92|0-1|B +EUxgDTnf@OkcHPtbCKwS@rtFVd\V]f]H]mg]H\ULCc[:@g]T^tm=EmvGWp`W`u`FTru:>va@AxyKSwx?G`Y>?l^U^_WCU]NTfN?G?VNELNF?@uULU|World Blitz 2015|Agdestein, Simen|2015.10.13|D45|1-0|B +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBRtmDLvx;Eqi?>wvOY[SYhSLCLdZKBgq=aqgaOl\MUulOPnuU^e^hY\TY_m_V_ld?vu@AZKBKTKGWgY:;uMJ@wnL]g]H]vxDL_mBRnuCSdn]He]=Krt?=mdck>;U\OL\eLMenMmnmh`mtphl\o_\d|Norway Supreme Masters Blitz 2013|Radjabov, Teimour|2013.05.07|B30|1-0|W +FVn^@OxgO^me^OgV;LVgEUwn?Mvx>@wvLFsmFPmwDTe]T\tXIQXO=OwfldCSgmO=jbPFn`@A`NGNo_F@uY@OYi>Ff`=>mgO`i`HXgVMV_V>PvwFG`nAHwG?GxpX`bZSZrZQYZrPene\erwGWwrHPrBWgBrgfrufn|75th Tata Steel GpA|Wang, Hao|2013.01.14|C42m|1-0|W +FVn^@Osd?[xgEMw\DLvx>@me;EdnMU^ULU\c?>tXIQXaBJjb[?wvV^g]ETcjHXah<`e^U^qi`Yk[TZut:=TLYPldOFLD=@nhU]ds[msmLTwn;LvxHPqigqGOum>Mo_V_m_@Aq`N`n`=FhnIY`gLV_hFIn_:>rvIQguQXhoYald]dkdVLoaAHaoT\iaXQoTMGaYGVe]Ve_e\eTSemvn>FSeQYnoYao_aX_`XQ`h?>hiQXihXQhiQXihXQhiQXih|Moscow Blitz Final 2014|Dvalishvili, Pavel S|2014.09.06|C60|1/2-1/2|W +EUxgDTnf;LwS=DvxBJSLDLm]@O]TLTkc<`tbTRqi`Yl\U\c\:Fo_VEm^|FIDE World Cup 2011|So, Wesley|2011.09.01|E36|1/2-1/2|B +FVn^@Osd?[xg>@gV?>VeO^wn[?d^>^vxEUng^FkcF>wv=>un;Ltk>ngnBRjbHPp`Wene?HkH@Ho_L]xo]NogNTew:>ruGW`WPWc[R[b[TNldHOur>@rBCKd\@xgoxH\UN_UMDMB:_U[SH`:;`_ov_[;?OV?>V_>=[^vo^]=M]movm]MQ]^vo^FwpUdQa_Xa\duohufqaXO\LOVpgFNaYIQL@meIQjb[dkdMU\c?>qi=Dwv;E^ULUd\U]ld]dulCKldfvfDLfhGOxqLM\TKTw\CU\UMUiaXah`UMl\_No_MU\dN]di=;k]T]iaUMaQ;CQPCF`a]ePI@GIYGNaiM_qy_wyqw_qy_tyqtDqyFEifNMfeMFefDVfVOV|Aeroflot Open Rapid Final|Grischuk, Alexander|2013.02.17|C65|1-0|W +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDLvxJDrsIYgnDNtf=Oum:=nu?MdnMDf]N]n]=][SOMSLCLscDKbZHPml>@un?>cd>NxyNOph][d\[\e\M]le]TogOMelYaypahqh@HltM=g_T]_V]^ng^VwvVTtkH@vy=]kn@?nf]\fQ?FyvFEvuEDuw\ZQHZjpyTWh`W_gpjowoKoHd_QpiQfdfofypDMpgfXg^MT^eBRelRZldXOdlT[`XOXiELTE>XO>GPXGNZblsT\sj\djsX`|6th EICC|Moiseenko,A|2005.06.28|B33|1-0|W +EUxgDTnf@Om];LldFNsm=Dwe?Mvx>@]TMTk[TFtk?=ul@wn?=cTFTtTGOvxRZutK?vntbucbFNWHPW_?HqaA?mwFM_tM[tuIYwq[bp`bknwY`q`OW`VW^e^:>VekrurdrgV?Ao_rdwodmogmfV`DLSLCLeVA?`f>VfW?W|WY ol|Nguyen Huynh Minh Huy|2002.08.26|B90|1-0|W +FVl\@OnfEU\UOUjb?Mph>@wpUKmeDTxg;LsdMFulleFa|World Cup|Bacrot,E|2007.12.02|B42|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBR[SEMmeRZtf;EqiETrsDLSLCLut:uvNVvnGWtv:>bZW^l\V]vt>:nm]VmUVNt_:JZRIQ_mNOmvO_Uu^fof_\usMUsC\^CKJKRKU]xo^lvn]foflcf^cK^UK[nN@INW|14. Ordix Open|Sebag, Marie|2007.08.18|C88|1/2-1/2|B +EUxg<`m]FNl\`gpgU\sd?[nfDT]T;Ew\@Ovx>@dZ:<\n=Dtm[mumDLm]ETZTLT]Twn>MnuGWiaBRm]M\kc\bgnbsjZsduvd^n\TLvnLM]MFMog^dnedUe]U[]d[UdeU[em[Ume|WCh 2016|Carlsen,M|2016.11.11|A45|1/2-1/2|B +FVnfEUm];LwSV^l\BJSLCLxn=Xvx?Mo_^gwg<`f^XY^V`gpgMFuZYPxy:=sdPeZL>?t_HX_hIYrwe\L\U\]UFTd^TfUMDM^M@FhvfTM^Tf^MfTM^=Ug_Tfv[JR[bX_^O?HOUFUypHPwuU[b[R[pgPWuUA@wnDTdSMFvx;Lt_BJVLCLSd?>wvT]u];>dnLTnhWPgnOUn\U_hn_n\nMNneNjePGPkcjktu@HphJRuv>vmvklvF|19. Amber Rapid|Gelfand, Boris|2010.03.23|C42|1/2-1/2|W +FVl\@OnfEU\UOUsd;Lme@jbIQd\TMqiLVgVMV\UNUmgO^ulDlelVOg]tX;CXWL[WV|World Team Ch|Erenburg, Sergey|2005.11.09|B90u|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUulU]tmCKZk;EkuE?gvHXph?PvpOIogGW^W?rs@Hmt=Fsc?;tbF=ws;cscO^g^Wilu=EcCE@tsnw@IwnFMnwUFldFUdlUFld<:wu:JucFUdl>:kdI@dm@GmvJKvm:>mvGPvm>EmdKJdkDEd]T]rj]VsmA@sd=KuZKJZl<`gV`Nn^;Eo_:=VgCSwvEKgVS[dnJ@wnEMvx;El\FVsd?>k[V^gmE?tkIYul;uZ;KRcDFcm:;ZlPXdVKsts;slsN?Vd|KM FIDE GP 2015|Dominguez Perez, Leinier|2015.05.16|A08|1/2-1/2|W +FVl\@OmeEU\UOUxg;Lph^UhpUT>@k[RKtkDLgVEUdZKD^UOUl\U_m];Eph_PwnEV]V=FvxDVulFOkVPVldngIYZT>fu=@I=efFxoCKTcO`g`i`c]FEofEFfmLT[TKT]cFnmd`WemnfdkWecTe\m]\w]EfnkdnqEGqiT^wp^XIPXiPGioGNd]NW]fHX|GMB|Hector, Jonny|2003.01.24|C78s|1/2-1/2|W +FVl\@OnfEU\UOUsd;LjbUdkd=Mm]MPxg?F]UV^gmLVuZDLULVLZ^@k[RKw\DLmeBRrsEU\cRZcjIQvxwvE?^ULUvV?PVn=Euw>@nJkKJZENw\LFvxU\t\FU\TKkmtkCZ\?=tmIQqi@Im[=ETLNG[RW_f_G_\lCSwvEFRm_WogUOm[F>LDWPg^O^DLPWLTST]TWUvuULuMLDM]DL]MLDleIAMED_eg_XEBXUBGU]xqA@TL^OGC>@gVEUk[RKm]U^tf;EwnDLvxKDo_EKumKUdUOUl\UfmfGOV`BRruR[b[<`n`OW`n@Afc=M\TMQphHX]UX_cdQHdHAHUMD=w_=X_w:ZqaX=[SZbSLCLxqbjwojlu]lTnwTt]\tuwiuMoWMmqy?WiW^fW`fn`nmn\L=OLtHPtxPYxpnvyqY`pjO]qpvfpq]VjZ`g|Vugar Gashimov Mem 2016|Hou, Yifan|2016.05.30|C83|1-0|W +@OxgHPm]?Hld>@tXIQXaDTnf=Kut;LwnEUvx@n^DTo_;L^VOEmg:@wn?>k[RKmeDLvxEUtXU]dZKDutIQXm;Eld]dtdE?wt?NZTN_m_V_qiBRnuCKTcR[b[:rtrF^V?HO_D;BrLT[TKTrs;=c\Cg_gHVph=MxpMOg`@I\UF>sC>FCFOF`WIHUGFOWOHOG\V]o_]dpgdvh`vag^ah\cha^UaocuofU^fo^goaucavc\va\UavULvag^ahLEha^UaoiaoaUTah_WhoTUofE>foe]oxU\OF>LFMLgxfgpfX]UXOpgO=\S=XSKXOKCOXC@gVOVphCKruumHXlWOHagIQWlHOgvCJveD;lZJ\wuONet;VkcKSZRNOc\VdRSdmumU\m=>=S\OrpwrbteBReV=?\U@HVE?>w\>FxpbdETdVf^VU^UHOUMFB\SB:MEOFTCGWE=2:=C=F=SeW_h_X_pgRZg_=Fe\FO\w|Hotel Bali Stars|Azmaiparashvili,Z|2003.11.28|D11|0-1|B +FVn^@Osd?[xgEMw\[dmd;EvxETgm>@wv@AjZBRkcHPmwT^ogMU\e^dumU]vVOEVvETtbCKbTKTwhdUh^GWl\U[^o=Mewv>E>xo>GskA@qaLVQmVewe;>mRM_kn>fRm_aoxW_ZRaOnvOJvrG>e^>Gmk]ekdemdmfcm_J\ru\N_DNORJOJ^UGUuUcgUEJwxqgGEGwGDTG_qy_wyqw_qyIYTBYaBF_wyqw_qy|Renova FIDE GP Zug|Caruana, Fabiano|2013.04.24|C65j|1/2-1/2|B +@OxgDTkcEUnfHPtbCKwS@m]=Dsm?=vxBRqi;Jd\DCbkKS]TJT\SESrtTeneSewvRZkVZctDC[uc[cjcFNvtO>VH>DtD@HgVenc[=?mc:LVeP[S><]L@HVPIPLVho>?oh?>ho|76th Tata Steel Masters|So, Wesley|2014.01.19|E15q|1/2-1/2|B +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDLvxJDrsIYgnDNtf=Oum:=nu?FdnYaqi>@mt]nunN_tlFMn`MD[S_ewue_SLCLfB=usu?:Bf:=u=D=bZOMld_N`NMNdTNETBEuxqGWB;@I;VW^V^I@^>@I>^IA^L=OL>AI>^IAZRur^>AI>YI@Y>@I>^IAfKrjo_jcKocj^>AI>YI@Y>@I>YI@oaOaY>@I>YI@YajRaXRmiamfXWfvWXvfaY@IXWI@YQHQWP@APQA@QX@GXUG?UVfoqiowV^wyi`yQ^W|TCh-RUS|Yakovich, Yuri|2007.05.05|B33o|0-1|W +FVl\@OmeEU\UOUxg;Ljb@Xg?>sdFOvxIQaYPIwvOdkd=Ors:;g]L]d]CKZB>lD?DG?GB;|Wch U10|Berczes, David|2000.10.22|B90j|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQtkEMmeBJum;ErvJRdZKB[SE?nu?PxyDLSLCLl\<`kd==u=D=\ZbZdZGOyp@GpgGNgnOWneFLogL[e\X`g`W^Zd[lrklf\Sf`d^`qTLqgS\RZkb=Db?HP?QZb^dNMQ?ML?bgXbtXNd^N]tf]WfTDMh`MT|6. EICC playoff|Aronian, Levon|2005.07.02|C88|1/2-1/2|W +FVl\@OmeEU\UOUxg;Lsd?TucUKnf@jbBRkcGWqaIQwn=Ors:>aYOFgaFXp`V^e]TMtkW`d^XYvmNU^MDMyqU^neMUsxHXe^>^|Artek ol U16|Primbetov, Kazbek|2000.09.19|B57k|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQtkEMwv;LqiBJn\L]dUOU\UDLUj]gugVfVMVvVPemf|TCh-RUS|Harikrishna, Pendyala|2007.05.04|C88h|1/2-1/2|W +FVn^@OxgO^me^OgV;LVLELwn@tXE`qi`NsdU]XOHOdUNUpU=UBF@HkcU^wv?@og:g^U^wWIQXaK\n\<\]U^fahFMugO`dnMhqh`VgfV`fg>fgwfhWY`f|20th TCh-RUS 2013|Jobava, Baadur|2013.04.08|C54k|1-0|B +FVl\@Ome;LjbEU\UOUxgHPn^UFwn?Hvx>@k[IQ[SL]g]V]smBJSJ:Jo_GW^V=O?@qa`ipi@_h;ExiDTwn=KrsKLvxT\og^gngCSioEKf^^VOEoiE?i_NWst?NmwFX_NGNwfWeqaXQtrKZum>?kcZKmkBRf`Q_h_?_km:?`O?OVO_Oc\S\vfLMrvKEmkIQkSE?Sk?Pkoe^aYPFf^U^v^FUovRZ^VU_v^_U^lZbgUNUlnO?n`?;xq;?qi?O`h@IhfMEiqEGfiO_ihGOVU_aqxa_UV_wxqwrh`OL`WIAW?AIV>LDphrjqiDEh`E>?>jk>^IA^:|Tal Memorial Blitz|Carlsen, Magnus|2008.08.30|B12|0-1|W +FVl\@OnfEU\UOUsd;LulSnOW^hV^gXLVvxN\n\V\og>PXi?Mg^MhqhW^bZ\Vi_Phl^K\rjA?me<;jn?O_YOwxwhqp`qi^pipnp=epl\ftfef`XfgwngGldCKdfGWYHWXHNXYfdDLdhVPnm;GIUOIA>FXIqickOEIXiqkcEOXIOUA:qickU[:BFMBH[ekleVIOiaHBa_O>MTZR_olcKRBRT]RZ]UZRUN>HNGRBGPHNQYBZPQcdoONTOMT^MedlQPZReURZVgZ\gV\ZU=^oPWoiVPZ\=M\ZMUZ\LTldUVdeWN\tVUefNMtrUVfeMUrxT\emPaxwU]w_V^_?\dmuap?=]\=<\c<;^[;|TCh-ESP Final|Movsesian,S|2006.11.03|B48|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBR[SEUmeIQ^UOUdZKBl\UKZdFfUOU\UV]j\]KufMV\cV]U\@HclFV\nVTljTdjU]OU^Kfofdc^]O]f]cd]UHOSK|SportAccord Blitz Men 2013|Vachier-Lagrave, Maxime|2013.12.14|C88|0-1|B +DTl\@Osd;Ln^HPph?HwpBJxn>@vxCSm]T]n]L]u]:;\SJS^VO>]B=DBD>Dt_DNdU?>wvN_U_ueCKecFN[eH?n^EUVM?Mjb>F^]K;qiIY]^@dZTFxgEMvx=>Zd>YdUF=rt@Ak[OU\UL;t\;EulEK\D=DlDYPwtW_DF<`FC:;CBKUBRUFtDPOh_FP_VPVgVMVog;:DB:@tkT]f]BJSeCSjb=Kun:BsmBFrsNV]V?>nfKfofLVgVMVk]VM]OHOwOMbc[FfmgfNO_:gXNFXI@HIOELOYH?YhJRhWFD_a?@scbtenGOciDB[RLEaA@GiIGNn`ELA:BIW]NM:J|World Rapid 2015|Korobov, Anton|2015.10.10|E52|0-1|B +@OxgHPl\?Hsd>@n^FVwn;LmeEMvxBRdSOEqiETtX=EXmL=wv=NnwDLSdGW^WPWmfEGfTNTe]V]g]KR>Yue;:R[LT[bMUeUOLgVLZbZ:ZVE?=weYGe^W^ETGUTZULZT^fvf=uxqH]|FIDE World Cup 2015|Eljanov, Pavel|2015.09.29|A05|1-0|B +FVldEUm]V^t_@Onf?Fxn>@qi;EsmEK_hBRn_RZrtDTwnT]d]FMvxHX_YOYhM=MnY@vxTKmeIQtm?>rtGWdUNUn^W^e^UGmd=Oxy:=gaONkcL]tv>?aWG>Z\>S\N]NdVSwpwKovt@Iw\N]VH?WH]W?]V=m\NDLNWI@WN@INW|Sportaccord WMG Rapid|Vachier-Lagrave, Maxime|2011.12.10|B35|1/2-1/2|W +FVn^@Osd?[jb[dmd>@tXIQqaEMug;Exn?>nhMUhWQXaXHPXO=OWfU^g^EKphATLAqohqy|4th ACP World Rapid Cup|Shirov,A|2010.05.28|C69|1-0|W +FVn^@Osd;Lxg?[dUOU^UL]g]V]wn>@vxDLme?>ng[MphLTg^CKu`NipUpxp@GpgBJvr:>jZNnruPXqiIYh`Y`i`W`g`M_m_X_utnmwymoyIGOIQOFQK>@`W_gtvonvw@?W`np`i?A|SportAccord Blitz Men 2013|Ivanchuk, Vassily|2013.12.14|C48|1-0|B +FVl\@OmeEU\UOUxg;LjbIQn^UKtfFld[evn:gm=Dkc>:msDMsd:RwnMVogQYdsV]ce]VecV]ce]Vec|Vugar Gashimov Mem 2016|Mamedov, Rauf|2016.06.01|B90e|1/2-1/2|B +@Om]HPld?HtXDTnfT]f]>@xgEMsm;Lw\IQXOHOvx=D]UL;un;Em^OHwvCS\SEKSL@vxGW^WAIi`HO>YOQYGIAG>AI>FIPFNPHNVHGVXQJXWGF`XJnWOF>O_npXO>E_WED^VpkOGkcVNcfNFfcGHchWPhVH?VTPhDEheEL?GToG>oOeJ|WYB12|Susilodinata,Andrean|2001.11.02|B92|0-1|B +EUxgDTnfHPm]@OwS@ld=Dsm?=kcCKtbBRutRZ]TKTd\EW\UOUbkHktk;LcZUKktL[ZR:RmcRjrj[jtTDTcTjdnJW@vx=Dd\FV]TETc[LZuvTNbkU]f]V]nuZLul?>vs:=wvN_v>=>leOYew_nwn>nphDEsw]ekHYHrvEFvnenwsHWgvW][SL:seFVogVTxpPXmc]cjcTFpoIQenFTnfT@xggmcNm\N\e\>FtlO^ru@Ang^dSdV^gnLV\TVgngMqxqFaqx^gu]W_l^gp^p:JdnHXwuaY]=JO=?O?ndYau]DLdZaYZd_fofYG]uGFphFTuw?>wgX`goTfhf>fonfndnAHxpHOphOWn]WV]cIYcRCKRLVUL[U\[j\cjdckdZkb|FIDE World Blitz 2014|Maletin, Pavel|2014.06.20|B85|1/2-1/2|W +EUxgDTnfHPm]@Own?Hvx>@]T=DjbBRtmDTmd<`d]TMl\;L]d?=uZO^dH@H\UMUwuUTZ^=unu`W^ZTtZcGOp`RZsdtrcCW`xp:=CL=udurug]FV]N`NLNPXNFHPF>PH>FHPF>|40th GM|Leko, Peter|2012.07.19|E05n|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtkEUwv;EnwBJqiKDdsCKsm@gVEUVe[dmdU^e_=uvu;LuvIQqatuQYihHPunEFmf>L|11th Karpov|Jakovenko, Dmitry|2010.06.09|C67w|1/2-1/2|W +EUxgDTnf;LwS@Ol\HP\UOUgV=MVLCLSn?HsdU[vx@meqikbuebT|20. Amber Blindfold|Anand, Viswanathan|2011.03.17|E20|1/2-1/2|B +EUxgDTnfHPm]?Hwn@Ovx=Dl\>@\UOUf^U_]U_nun<`qi`gng;EsdT\gnEVt_DT_VHVxyCSo_V]ru:;nm]dkdS[d[;[wg?;m]T]u]\d][;[gd[^db^_bB@?B:?HUMFMjZHOZR_ZRJIYJBOFyxZjxwMUwvU]vw]ewvYavuFOuvOFvuFOuvjnvwnF:=FB=eBjeUjlURPXRSOPSRlmRSGWSKPGKJm]wo]_of_^fo^NJBGOB:OV:bNMbfVOfbMmogm]goOVbf]^fb^\oxV^xq\]b:^f:bf_b:_f:bf^b:^_:BX`i`W`phahqp]mpxhpBbmnbZ_gZbnfbfgf|29th ECC Open 2013|Wojtaszek, Radoslaw|2013.10.23|E06|1/2-1/2|B +FVl\@OnfEU\UOUsd;LxgU[wSBJSL[Lm]V]g]@tf?>o_M?xyL]f]ELue=aru:=elIQ]V=uwuaFdULU^UGOVdFnln>nuvnlph@GjZCSZSJSv^?Td[OW|Moscow Blitz Final 2014|Popov, Ivan RUS|2014.09.06|B45|1-0|W +@OxgHPm]?Hnf>@wnEMvx;El\FVsd?>k[V^gmE?[SIYjZ?IwvYaqiIXnw;cjWNkrDLvuOEdUNU\ULDrH@HbJ:JjJEVJb;KbZGWurD;Z]K[]dHOrJ[sJr;kdkskrJksJMOGphV\MEG>ECsCw\ahoh>FUMFMiaMT\NCKNGKOG@T[xo[donOK@IKknwdeIPefPWko|FIDE World Cup 2015|Svidler, Peter|2015.10.05|A08|1-0|B +FVn^@OxgO^me^OgVEUe]?Msd>@wnDTdSMFvx;Lt_BJVLCLSd?>wvvuvO`_hWele=Xqi`OvVXPVDOYhV:>e]T?DCJRruIQCJ>NJePXegYOdnOEVhXFndEKkcKn_PIutGOtLWFVMFLgU@AUL>=M?=?aYIswp?=_N=@N_@;LD;>DGs^pxAI_P^:]U:=jbTD>vDGW^GPI@P^v^qp@Gpg^VgpG>pg>EgpEMpgVvg`vV`gOWgpV^og^ZpoMVofZbfnV]_N]UNHUVh`W`g`V_HWbJ|16th Ciudad|Topalov,V|2003.06.06|C42|1-0|W +FVnfEUm];LxgV^gmGWl\@Osd@k[BJucL=bZDLZR=GdZ:=tkFMZTEFTNFN[SW_kb_gpgNig_U\c\JS\c@AogHXbMGM_X?@g_IQwoQX_WOUWOifcfUfrbfWm^M^oW@?bf=]ne^OWX]afFaZFfZrxprjpxjrxprj|World Cup|Rodriguez Vila, Andres|2009.11.22|C11i|1/2-1/2|W +EUxg@OphDLwpIQvx@sdBRjZ;JmcTBwuJTcTBTe]TF^VOEtf=;rtEKkcFbts?@wp=aqiDTf]V]dUM_u`a`i`_Mo_T[^VMTp^IQvn[byq?=UO@?OI?F_WJDWOHOVOFMqQDN^W=@WN:>no>N`XNVogCSg_MNrtS[XPVW_^@PQPGPI?T?|Canarias en Red prel 3rd|Milanovic, Danilo|2004.05.05|B33w|1-0|W +FVn^@Osd?[xgEMw\DLvx>@me;Ejb[dkdMU^ULU\c=Dwv?>d\V^g]ETqi@wn?>k[RKvxIQtkEMmeBJwv;LdUOU^UL]g]V]ng>vuvv>E>xwGOe]XWp`Wswn>Snm@?guS\ulsjbZKBmtCSZRB;`X\UXQHQdij\iQ?FQfFGkdDTfiT[iEG?dm?@mQ|XII It I|Campora, Daniel H.|2003.03.28|C88i|0-1|W +FVnfEUm];LwSV^l\BJSLCLuZ@XOFORYDTd^T]vxEL^O=On_HPY`?>wv:=aY]eYPGPv>=>ruL^`aPXa`>?`NON_N?WN]WT]cTDog^guegneUn\UX@Gxp\cjcDCXWGPWgJRgdC[dLPHLdRZcZ[Z|23rd ECC Men|Zhang, Pengxiang|2007.10.09|C18b|1/2-1/2|W +FVn^@OsdDLm]=RogEMtf;Eum?Fxn>@nh?>weMUhWF?vxV]f]EVmX=`^=U^VUVgW@HogVfg`YhWTh^TL^o`_oeleHPLJfeJRei_`]eRSemSUibUmbcm]cs`_sy_`OW`hPO[Sys]Us[aYOXhgXYUWYPWTPOgfONfeNM|Piterenka Rapid 2012|Nepomniachtchi, Ian|2012.12.29|C44|1/2-1/2|B +FVl\@OmeEU\UOUxg;LjbIQsdHXucUKnf@mcKEwn=>ph>GcmBR[SLFvxQYbZDTSLFLrtEKlsL[kbGFm\K\e\W_dUNU\U_fofV^t\:>b[R[\[?wnwFT[^>?w\@AsSTbUMbtxptlpxlo|4. Zurich CC Rapid|Caruana, Fabiano|2015.02.19|B90|1-0|B +FVn^@OsdEU^UOUxgUdkdV^un=Fg]DT]c;LtbCKvt@gVEUVe[dmdU^e_=uvu;LtmIQkcBRjZHX_nO`mvGWqi`OphCKut@]T=DjbDTk[TDtk@vxLVbZ:;ZSJSulOUphU[lsDTo_VLkcMFmg[UtmFOslOrwrUOlT=UTUNUrtHPc[O^mv?@wpUKxn;Lsd<`qi`YmeBRkcGWh`YP`WPWnhWNia=Od^OGrsMFulIQvw:=wx=Eyq?=pwG?srKUtkUO^O?OktOGrsEUh^US^mSTlkTUm^GPqpPGpqF?tmUSc[R[b[?[klSKwn=:qp:jlu[msKDK^mGFm^Fan`NUpqa=^djbdU=U`Wb:qp@AuYLFW^UNYgNOgi:?iEF<^C@vxDTulOW^WNW_h:@tmJRwtWV>EV^Jravks^VsvwovyVYrsYIENIYscopyvYVNOpgc;iavyaY;@]Uyig^@AVNOG^]AYf^ia]fay_WYQNVyrf]rZ]TQaUMa^ME^V|Pedro Zabala (6eme memorial)|Moskalenko, Viktor|2004.10.12|C18e|1-0|W +FVl\@Ome?[smEUxg;Ljb[mgm>@nf<`ulU]f^BRkcOEqi`NwnGW^WNWm^W^e^ETne=avx?Ors:?ogahxyOgpg?glphipigiypiec[R[b[T^[SLRsrCKwW^MWVM\Vvect_cS_D]ev>@G>=empoSkogklDKltrRmu2=utuRBGPKTuEBZ\Vg^V`T]PYZrHX^WE]ry`qyq]aqoayW^Ya^gai|Aeroflot Open|Vescovi, Giovanni|2002.02.07|B51h|1-0|B +@OxgHPm]?Hnf>@wnEMl\;EsdFVvx?>jZBRkcV^gmE;og^gng;Lm^O^d^L[^dDLdj[Jxy=mfCKdUNU\U:[kMJd[>=kj;:tr:;ru=M[M|FIDE World Cup 2013|Sasikiran, Krishnan|2013.08.14|A08|1/2-1/2|B +FVnfEUm];LwSV^xnBJSLCLl\=Xvx?Mo_^gwg<`goXapha=uZ`Esm@O\TMFndO`onGWmg>@tmJRrwFOdu=mdJSZSLSgVOV]VDLd]ENxwIQwn@IqaQYo_IPvxPIxvIPvx|5th Final Masters|Carlsen, Magnus|2012.10.11|C18o|1/2-1/2|W +FVl\@OmeEU\UOUxg;Lnf?Fjb>@wnBRsdvw>NTlNPngPLSTLTlT]ebZeMTSK@n^DTm]T]g];LtfEMwnOEvxETum@meCKxn@gVEUVe[dmdU^e_=uvu;LtmIQqiCKd\@sdFNvx;LwvU]dZOUtmNVldMF=F[UF=|Eu Rapid Ch|Ruck,R|2002.09.30|D76|0-1|B +EUxgDTnf;LwSFNvx@Fm]BJSnT]f]FWld?Msb>@bld\>Ytk=EgmYnun?>mgEGneGPru:=jbM;lfU\c\W]g]L]k]PeueNVvu=]e]V]u];B]EBfofIQ|42nd Olympiad 2016|Nisipeanu, Liviu-Dieter|2016.09.08|E46|1/2-1/2|B +FVldEUm];L]VLVt_VP_hIYqi@OsmYahq?MqM=MnfnvGWvn>AphahxhP>hXAiXHD=HBW_kc_fnfiq]nVfmf>EBR=d^>L^OLCOECgETJB[SgYTNY>ST>GN=G>T[B;RJ;B[R>E\TE<=LB:L]@qiBRxnRZjbDLp`O>d\FMulGW`XU\m\MFiaDXPIQrtFMVG=O\UDU_ULUaY?GPGOGlnGEyx@IxP:?vmMFmlW_ls_fof?gnqESsrgGqVFXPHGHVWIAt@rtBRph=EaYKrsdcstcdtsUcQH>VWOVWqoWovodLohLOst@HtTIQTSONhoHPS[NM[;QYngX`g^PXohYahoMOonai;AX_nocuAaOKaAKkovugA?_f^g`g?>fe>?iq?ge\giqy2iyksvmsymlyilmibmnbcnmZbmnbj|Karjakin-Nakamura m|Nakamura, Hikaru|2005.04.29|B90n|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUgm;E^ULUwvU]ng:;rjCKqiE?m^NuYWP^PaPY`;?lnOFo_GW`gPagCV^e^?;CU;=^W=UnNFEN>@IWOD=\U=OkeEU>nUceVaWnkcdVgWavwagpgdbxp]ekmb[meBRphRZwuKStbOah`QY`W[\bMS[e]\lWN[cMVckuxks2xHIQ]MlTH@TMNMsKMEKC|Corus A|Short,N|2010.01.24|C96|1-0|W +@OxgDTkc;LtkEUnfBJm]T]g]FNphIYwpYasm?M]LCLf^NVun>@vx?>wvJRjbMTldaipg=rsT]dvLTnl;:xwKCbZ=MwxMKljO>\UCBgn>OU\O^n`^X\UT\xw\do_KOvoXN_V:=U\]V`i=mjmdm\<@I|66th ch-RUS 2013|Andreikin, Dmitry|2013.10.05|E12s|1-0|B +EUxgDTnfHPm]@Own?Hvx>@]T=RjbRTk[TDtkcREK]VHVrV:BRLDLf^>O^UOUjrBDg]LOVOUOwv?=]cKZphFNxp=MrtDdts@?qaIQpgOEgpEKvf?HpwGWfvHOvudDumNVwvV^enMmvmDEmvZdsrKZo_PXaXQX_XOXvoEInwW_c]_g]g^gogIGgfGFf]FE]VZkVNEmrvmlwik\vwlnNEnfw?djiNfbEFbh?WXQWOhPOoj[NGPKoW[LF?K;G>;>|76th Tata Steel Masters|Caruana, Fabiano|2014.01.13|E05s|1-0|B +FVl\@OnfEU\UOUjb?Mw\UK\j>@sd=Fme|65th ch-RUS|Vitiugov, Nikita|2012.08.07|B42g|1/2-1/2|W +DTl\@OsdEU\UOUxg;LnfHPucU[d^@^d:;CJKSe]S[d^FVgVEWVL=Dng;KJ\DL^TW`un`gpg[cjbrltm?>mdKSytHQbZlf\SfWnwLSZSQt|Hotel Bali Stars|Romero Holmes, Alfonso|2003.11.27|A33o|1-0|B +FVsdEUn^@O^UOUuY;LwS?Fxg>@SLU_YVFMVXGOXRCLvx_pxp@ld]KuYGW^mYgTFf]L]d]DL]U:=UL>LgnLpxpW_h_X_py=UogFTruUX\mXHm^ONn\N\c\TfuM?<\TfTMQTfwuHDyp@HQY@vxEMl\;L]ULRsmDTrs:;kcCSulS\c\;sls=Ksl@tfKC\UNUSe?>rtFMnkE`gmLFcTC;qi`WenP_ngFPf_P_mc;=wv=XxwWeTe_ev>:>klXtltetctMFte>:gU:=Uc=]wnHPph@Hnf]=iaFMfn=>ngGWgpHOpg>^c@IQ@cPXaXQXgp^]cl]\lc\devX`pwOVwndDvlMTlvV]nmDIcN[cvecjNjTMjN]^mnIqNgq`OqgX`ga>@rsDEnu=@]T=RjbRTk[TDtk@tfT]f]GWvxW_SLCLogFPumkc>FwoXantT\owPVmoaYoBHXtnX`g`V`BxFGdm`qxqYnm_n`phIYrvMUc\U^woYavfN\qpGIpq`u|Corus B|Kosteniuk,A|2005.01.28|C28|1-0|W +EUxgDTnf@Om];LldFNsm=Dwe?M]TMTvx>@jbBJd\U\e\CS\nneUNoh>Oh_W`i`OET]PX_hNUeWE?WXPL=_V=LVO|NH Hotels|Jussupow,Ar|2006.08.22|D46|0-1|B +FVn^@OxgO^me^OgV;LVLELwn@gV?>VeO^wn[Md^>^vx;LldCKev=Om]umF^kc>NwvJCnw^ao_NQqiQPeoLFd\Cg\TWU_WFWTMWMoeM^mlUWlDIQD=@I=aPhxqHXfXhXa_|2nd Sanjin Hotel Cup|Ni Hua|2005.07.12|C67|0-1|B +EUxgGnw?P[SP_fV:?kt_PVOHOZRPFRJLSwSFWJCW]rB?;SZA@xw|FIDE World Cup 2015|Andreikin, Dmitry|2015.09.22|A45g|1/2-1/2|B +FVn^@OsdEU^UOUxgUdkdV^un=Fg]DTtbCKvtHPp`]U>^v^GOBL=?geDCd\OXbk?okVY_econVMn^LRCBMTEDRLBCjZ_NLRCBRLBCLR|11th Karpov|Rublevsky, Sergei|2010.06.12|C45m|1/2-1/2|B +EUm]@OxgDT]TFNnf?Tjb>@l\;L\UNUwn=Fvx?=k[TK[SLRtk<`smO^m^U^g]K]k]`nunRc]HcrHr=Mwt:=r]FXtdCKphXWqa=@k[T\elGWjZKDZRIQgqNVo_V^h`LFphPXxyQY`YX`yp@Gwy?AqwAQsr@vxU\e\NVulV]g]EK\nKUdUOUwu=Fph?=]W@mfL[jb[edU=UndUN]UNPog^gwgFagi?>um>fifaoxyofmfekfnkerueTUMPNnSCKqiIQbZ:=SLNcLgTZdZcZgUZEuv@IUeGWvuBReURZU]KS][EL[bLEb[=:ue:<[myx>YumY>xo>EmnCKnmck|Rapid Match|Short,N|2008.05.05|B12|1-0|W +@OxgDTl\;LsdHPm]T]g]?H]lBJphIYqiEMwp>@tmR\>N\mNUDtUSmgxpgvpytlSnl^ogvgwp^snw|2nd Norway Chess 2014|Caruana, Fabiano|2014.06.13|A35l|0-1|B +FVn^@OsdEU^UOUw\Udug=Emd;LghE`h`<`tf?Mog`EvtGWxn>fxHXnhIY\e>?k[BR[SL=d\Yahn=NndCKdUN_ew_UuUENUu@nfCKwn@rt=@vxTKm]V]g]IQjZBRdUOU^U?>rb=a]S;JbhVe]@I_OV>aXUNXQNOwO>@OGIQh@:@SDJ[GOQXOM[eDNXWNT|World Cup|Gelfand, Boris|2009.12.06|C55i|0-1|W +FVnfEUm];El\V]f]@Oxg?[tm[msm>@wnU\m\OUphEKvx<`\V`YgaYnun=OngOgagGOVeK\rt\Mwv?>v>:>jZDLZRUFe[>trMSrZEDZ\SM\tDCtlMWltHPtr>=rZWMZr=>rZMSZ\CD\ZDEZ\SM\ZENZrNWrt>rt>Nt\PXaXOXRKBK\tN^tLS]c]^]ev]mvlWVk[UFLdFWlfX`gpV]dbWfbfKSpwmkfFk[FI[\IYS[og[cYS]dg`ckSkdkwn\`ng`@h`kdg_d]_W]U`X@?WPUNPI?:XPNOPHOG|26th European Club Cup|Vallejo Pons,F|2010.10.19|C08|1-0|W +FVn^@Osd?[xgEMw\DLvx>@me;Ejb[R\jIQdn?>nhE?ld?Pe]V]g]MU^UOUwv>vuvRDtm]W>vsv?Tv^TV^VDVjs@?WfVDxwPVhn_nwn?FqiENo_V\f\N\noDKmfKfofFMphGOf]\NiaNGslGN|4. ACP World Rapid Cup|Jakovenko, Dmitry|2010.05.29|C65|1/2-1/2|W +EUxgDTnf@OkcBJtk;Lm]<`wn=RkdRK]TKTvx`gngFVc[TMsmMNjb:=us?Mf^U]dk>@gnCSl\]dkdM;bZL]d]V]ne=@xgV^e^O^mt=Onf;LwnEMvxtdPXg_XFwgL;ghGWnYHPYgDLd];EsuBJxo?OqaONuyEOaYN^]m^\YPIQhiO^g^F^yt\tmtMUiQ@HQIHPIE>FEMFNtTNMTMPGMEGOECU]CcLTcKOGKBG>B;>Ef]T];V^loh]eVWEDWVDEV]E<]^lu^L<=LM=>MN|Corus B|Smeets, Jan|2005.01.23|B52n|1/2-1/2|B +EUm]DT]TFVxgV^g]?T]cTMsd@vx?>qi`EmoBRtfL[]gRZc]Zbkc=FgV;V_VFVf_VY_M[L]LELoWYWwWO^M[HPWwGWru@Hl\U\e\IYwvYa\eHQe^>^v^L^xoPXuMQYMm^s[FCSF[s^of:JfoX`i`W`mn`hox^snVYPVvsjvrjc|Blindfold World Cup|Bu, Xiangzhi|2007.10.16|D20|1-0|B +FVnfEUm];LwSV^l\BJSLCLxn=Xvw<`XQArtjZ>EcbMNdsNMsmMLmcE>cTLKTN>EZRKLNTE@vx<`ld=OSnIQqi`Wne:=rsCKsSLFeWFWulWFwv?>SsDTtbT]bMOMd]FPlZ>vsvMEZcP_|It|Slovineanu, Viacheslav|2001.08.08|C47|1/2-1/2|B +EUxgDTnfHPm]?Hwn@Ovx>@]T=DjbBRtmDTmd<`d]TMl\;L]d?=\UOUdH`gng@HsdUdkdMTucLVcC:;C^;cbZcdgn=mnSdlqiTMrtljtul?[sm>GfT[TlTG?TdBRmcNcdc?[cl<;wt=EnwA=ldEMgmM]mc[dkd]ZcTZrtrK@m]T]f]O^smGWl\tfX`g`OEw?>?VLCLry?O`XO?yQNVQLV]f_HGLDGWTLETnVW^V^U^_M]eMTemDE|66th ch-RUS 2013|Shomoev, Anton|2013.10.11|E52|0-1|B +@OxgDTnf;Lm]EUld<`qi`gugFNsm?M]TMTph>@wpCSvx:@l\U\w\;LvxNVu=?=k[TMtk<`smIQrtBJ\c`Wm\WN\M=McNMNwu:>xw>FwnOEgmEKm^KZkrGOp`FDqa@?^hNFhWFEo_V_f_EutuZK`XQXaXOX_XHPWfDFrOFIfpIEuwK\p_Emng?GwymjyIG>ICjbgobjov\VvuVg_NgVNTVgT^>?OH?>^M|Ukrainian Games|Kalinin, Oleg|2003|D27l|0-1|B +EUxgDTnf;LwSGOm]BJSeFV]VOVf^U]vx@OtXIQXa?Me\HXahMDwv<`qi`YldCS\n>@jZO^ZS^hohV^gmYnunDhSLhvnv^fmg=Md]T]sb:>bl]elfMTxoTVru?gpgVqowqywoyqow>?fWqiwoiqowqiwoiWvfWOf^Ok|Tashkent FIDE GP 2014|Mamedyarov, Shakriyar|2014.10.29|E20|1/2-1/2|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;L_n@]T=DjbBRtmDTmdPH>FHPF>PH|12th Karpov Int|Caruana, Fabiano|2011.10.07|E05m|1/2-1/2|B +@OxgDTl\;LsdEU\UOUnfHPucU[d^=X^[lvulrGU=D^TFVTNDKUEBJEDKBDRLRN?A?k[Rcjcrctk?okd:=wnoOulcmyuOL|4th Zurich CC Classical|Nakamura, Hikaru|2015.02.16|A33o|1-0|B +FVl\@OmeEU\UOUxg;Ljb@tfTKsdN`gm`nunL]nu=Fm\:=xyIQ\KBKo_V_f_=E_hFNhaO`dU`VahKShoDLo]LUucVL]T?>cSU^e^N^ruEuwu^lux>nk[LVSCVeC<@I@tbCKng@vxGOVOD_OH?Gwv@smV^l\MVus^e\UOUseVkpU@Aru=OxgLFUjW_vx@|VI World Blitz|Mamedyarov,S|2010.11.18|D11|0-1|B +FVl\@OmeEU\UOUxg;LjbIQnfHXk[?Htk>@[SL]f]V]wnUduldnvnX`gm?>nw=FlufktfNuc:>tm]erjWT|Amber Rapid|Van Wely,L|2008.03.20|B90|1-0|W +FVn^@Osd?[jb[Rxg=Fk[RKwnDLm]EMvx>@tk?>wv;EnwBJumKBruE?qi?P]U>=ULCLdZ@vxOUm\M_\VLFn\vtGH\l>NiaIYlmEFxwRZmlKSleDLwxU_|67. Blitz 2013|Demidov, Mikhail|2013.09.01|C10|1-0|W +EUxgDTnf@OkcHPtbCKwS?f]V^gV?Hum=DVEDEsdIYrt:>duO`ufGWl\U\t\EMn`Y`fWPWmXHGXWGHWXHGXWGHWXHG|74th Tata Steel GMA|Gashimov, Vugar|2012.01.28|E15o|1/2-1/2|W +FVnfEUm];LwSV^xnBJSLCLl\=XulXpyxpq\U@FULGWtmqMn_MLsd:;rtaXOX_t@PjZPYZRKoxp\V|75. Tata Steel GpA|Van Wely, Loek|2013.01.27|B76|1-0|W +FVl\@OmeEU\UOUxg;Ljb?Fnf>@wnGWvxV^e^W^n\^g\U@AUg@wn?>k[RKvxBR[SEUmeU^e^;En\RZqiIQue=FtfETenDLSLCLgaHXaW;f]DVZdV]u]FVnfET\wVW]\TN\L;kL\kld^l\^OWOw\N_xqOL\w_NphQYwpL\p^YahaXaqp@H^WN_pg_PWe\Ue^U\g`\Z`YZRY`RZfdHQ`gZugpP_pq_PdOuZ^UZbUGbeOP|TCh-RUS Men 2016|Svidler, Peter|2016.05.06|C88k|0-1|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;Lqi?=uvIQjb@mXV^Xf:;f]?=umO>kc;MdZ@m]^eweUftfWesmL]rt]WmwHPtdewu=:=ywWfdf=Eog?=fnEevoecwtDLtlIYnF=UFn@HovHOvoUVnmOFm]VU]^FM^nBRn>celnem>=MD=>mn>nDMnlRZofCSf^LTloU]^fMUolT\lt]efnU]tyecyu]Tum\dkdcdmjT\nm\cjrdlmelprspke]|It (active)|Contreras, Henry|2005.11.17|B40n|1-0|W +FVl\@OmeEU\UOUxg;Ljb?TnfTKk[<`wn=Oul>ZRK\uZ\fof?TxoL[e]V]f]T]g]=]Z>A>sdBJng]m|Canarias en Red prel 3rd|Morkore, Thomas|2004.05.05|B90q|1-0|W +EUm]@OxgDTldFNjb?MtX;Enf>@sm=DwnCKd\@smCSld=Kc[BRjbRZph:ktQtaAHAvtAH`X>Dty;KgfDJfmJ;ya;EaiK;iy;KyaK;ay;K|FIDE GP Beijing|Ivanchuk, Vassily|2013.07.16|D58m|1/2-1/2|B +DTn^;LxgHPm]T]g]?H]c@Osd>@wnBJvxCStfEMog@jb?>qiE?\j?PtfKfvfMUe]O^d^U^gVPV]V:>rj>vxqBJl\vnqhHPhgnl[SLS\SJSjBlkBC@Hp`kcgpYa`XH?pxS[xpcspg[cg`?>`acko_>=C;=F;CFMCKMUKSU]SC]fCcf_cksk|Vugar Gashimov Mem 2014|Radjabov, Teimour|2014.04.26|C54d|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb<`nfGWuc=EcC:;CJV^qi`Ye^W^g]L]f]^ftf;kweUfof?FvxEUwokoxo>@oxUXJNYGN^GP^NPGN^GU^I@GIWXWeWFXsdXfxyf]ruUpyp]duEGOEDdVD@ulTKtf=Fsd?=rtN`dZ:tTGOTUL;SdDLUE;E[SLSdS@GneGNfmE;g_HP_VOVp`IY`XNEe\ENqa;EmRCKR[E;bZ;L[vL;vo;Eof>MSMNM\SMDfmE;mf;EfoDCovCDvdDMdmMDm[E;[?;E?FE;F?;E?FE;F[;L[dLBS\DMdrMNrkNMkdBLdvLBvhBLhoMD\UL[UN[eofDLNO|19th TCh-RUS 2012|Frolyanov,D|2012.04.09|B90|0-1|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LuvIQqaLFkc?=tbFU_UOUd\U_bF=EFT_NTfN]rtCKld]NtuEuvu@wnEMk[RKvxBR[S;En\IQmeDLrs?>wvRZ\jE?dn?PnhMUqiKDl\U^e^DMtfMb\T:RulLSjG@Glj=MKVrEVhWbjogQYTLV\LD|74th Tata Steel GMA|Aronian, Levon|2012.01.14|C84f|0-1|W +EUm]DTld@Oxg;LjbBRnf<`smRZqi`gmgFNwe?Fd\T]f]>@vxU\e\OUueFOwu=KrsLR\jKJe^R\gVCSue?=kcZcjc:EvxAt_BJrtIQqaFTnfT?jbW`og`YdZOE_D?TZTEtDEDutDKxoJRpwGOweNVeWY>t<:Yg_Yn_VOV@sdEWdZ:ng;Frv@f^EMtXRDunIQXa<`wsPXah;ESEDEqi`gng?@tfFTfTET_fTZkcKfofZTwtCKc[Tetde[jbIQg]?:qaJZrs[jdDZ\]L:baYbfsKfVD<@ILV\p`I@GVjdxod^of^XKC>:CF:?VP?=P_=:_N:bf_bg_VXNFN@GNMgfVWfgWVgfVW|38th Olympiad|Bu, Xiangzhi|2008.11.20|D38f|1/2-1/2|W +EUm]DTld;LxgFNnf@Osm?M]TMTk[TMwe>@vxLVgVMVtkCKjbWX>?vsCLsK:NF?FogAYvmFTweEVyvVemeYVfmCUjZBJmfHXfoUGvf:ha:jmvS[aX[d|Human vs Computer|FRITZ|2004.10.06|C45|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQtkEUwvO`vw`Owv;EnwBRqiKD^ULUdSD;l\U]gm:J\TR[b[OUrJCJSM;MTMU[uZ[UZLU_m\GOk]V]v>=>\K>vL<@IKE_nxqvwE?IA?PAIP?IA|2nd Grand Slam Masters|Shirov, Alexei|2009.09.10|C92u|1/2-1/2|B +FVl\@OphEUwpU]me?Fxg;Lvx>@sb^M=Ml[L=SUMFo_GO_VOV\TDLUM=G[UFXkKBbKD>?UF@AF@\UOUf^U_]U_nunCStf;EwtDMsdS[dZ@wp=a_WDT[TMTvx:@gVEUVe[dmdU^e_=uvu;LuvIQqa<`tf?=wnCKaY=MruMunu:=un`WyxO`ftLVxyDTkc`Oya@?nuO`un`OnuO`un=Md\`OtkVLkOMO_UOMUfWIjbGWld?GfUGNaiLFihFU\UNOd\HXYPIPo_^ghgKSgiOXifXOphPGvmMJ\SJMngGUfeONgUMUeUNUmeUMbZBJSJMLe\QYJBLC\TW_h_Ya_WaiWOiqOGqy2B:2|74th Tata Steel GMA|Navara,D|2012.01.17|C67|0-1|B +FVn^@Osd?[jb[Rxg>@wnEMk[RKmeBJtfKfof;EvxDLum?>duMUuoU^e^=Fl\LTwuCKmMFne:xn>MutT[b[EOnhHP\TKT[TMShnOEeSJSsSCJSRNLwvIYvmGOqa?GtrJ\rZETRBGNZ\TcmdL\dc\lBJNGJBGNBJNFJBF=BGlnGO=FOg@um?;duJRbkRZ\SLScZ:ZndZ:pwS[dSMUjb:RSDH?b[RZudF[dZ[ZDJ;:JTZLwnEKvwO>wp>MtrK\ml:;ysGWkt;slsLsj>LtbLSJB\Kb[S\jlMSBr?Mlu@Gn\K\TJM[J[SdrBGP[UdUunUdBD@SLCLp`WPqaIYyxT\e\F[\TKDunPlvwU]f][mnmDVmlVq`YOYl^=Urvqixpicktc\wx\]tX]^v^?;Xf;sxqUupXYO^]OU]usuX`GW`\NVfX@G\lusqps[ZRBJogW_poGNX=Uflm[kmkfuonukaYk\no\f=XNWXFfUF?WOopUfpif\i`\R?MRC|World Rapid Final|Mamedyarov, Shakhriyar|2012.07.07|E12|1-0|B +FVl\@OmeEU\UOUxg;LjbBRsd?Fn^UKwn<`vx>@tf`gngL]rtDLg`RZds:RsmRStsFTk[Zcmc]cscTfofKZcSZdurdSbZSBrV=eVTB<^VCKTLefxyfewuePL\@wn?>V\DLUL;LvxL]\fCKog[Td^O^g^>^ld]nunTfmfFwvA=_XCSZlIQXOHOV`@ruLRcZ^mgmR\m\U\u=?=ZBPlBC=uvnD=C:umnvmuvnumnvmuvn|2nd Sanjin Hotel Cup|Zhang, Zhong|2005.07.18|D43n|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtkEUwv;EnwBRqiKD^ULUdSD;l\U]gm:J\TR[b[OUrJCJSM;MTMFJrFDruOWn^gX^nXiuwiXo_V_w_W_n>@Ih_XNp^HP_WPW^WIHWNGN>NKUNMU[M][e]eHPkdPWypD\dvW^ei\Lia^evhLNh_e^_t^UpgQYt_NK_fKSaYULYALUA=UVf]VW=?WNg^NF?AFE]VS[^W[KAIELIyLTytTUtuULVMKSWNSCutLKNUKStdSKdu`QO^pIY`nX`xwOPw?>?f^apypYa^VMF]Uaipx`hUMDMn\BJtfMV\D;:D<|Tal Memorial Blitz|Ivanchuk, Vassily|2008.08.29|B66|0-1|W +@Ol\DTsd;Ln^HPph?Hwp>@meBJxn:;jZO>tfL]rsEMvx<`og`Ek[]ndnT[s[CS\SJSZS;S[SESuc=En]SZcj>DwtDJpiJ[iE[jtDZEDEj[]nHOe]?XmFNofNU^U=CfeCTe\>EmfTZ\cZTfTMTc\EMh`HVg_Vknhkth^MF_WPW`WtfUMFE\UT\^OE=U\f_\U_qOIq_IO_XO`X_`VGOVe|SportAccord Basque Men 2013|Leko, Peter|2013.12.17|A37u|0-1|B +FVn^@Osd?Tw\DLxgEU^U>@UMCS\nS[dZTMme;EvxEKld[dZdIQd^MDulwvU_nwE`gm>Nph_ixpNPog`WpyKUm\=FkbFalpa=pmU_bk=Uru:>mfU=e]_UfmV]k]PN]BiX^XQXvN>NBo=FuvX`vNFNg`W^wp^pypN`\f`^px^smusjfULUuUjrxprkU:@I:^HP^fDVfeIHe\Vdpgkmgpmk\UdOh`H@U\Odpgkmohmugpumhomkpgkmqimugpum\TmkT<@H<\H@phkmiadVhgVdgpmkaY@HpgkmYQH@gpdOc[mQ[SOVSKQqpwqywnyCofCpfoVh\ThoTop`ne`[o][cem@I]TcgTDgomdovd\vN\SNUDTUETLEeSTedTMdhMEhiEFifFGf_GF_fF=fX=]Z>?Z_?@QYF=_\@H\dHIdl=;PXIAldA@d\@?\w?Hwr|FIDE GP|Smirin, Ilia|2002.06.01|C54j|0-1|W +FVnfEUm];LxgV^gmGWl\@Osd@vx=G\ULUdZEMo_HXZdGAdnAPph@AtTX_f_?@m\M=\f@HxyFMwtPF[SJRbZIYtw=@TlYakb:=bM=McdahnhCKhYHPdDNElp@=mg=Diy?=wuHPgaPYaWFW`WU^yY^eueMele=AcGK]kcDMYyMFGP]kyskbsyBRngb[gnCSPY[TYPT]PYFM|UKR Ch U20|Zubov, Oleksander|2002.03|C57d|1-0|W +FVnfEUm];Ewn@OxgV^gm?Ml\DLsd>@p`U\m\M[\m?>ulEKqi=Fjb[dkdLTbZT]d]BRtbF=bTIQrsKUm\>N\VCKTb@rsBRwv=O^VOPxyPep^e\st\Nm_:=vfHPfeLT^C=ECpGOVONO_hOWd^EFef?>^MFfof|73rd ch-UKR|Kuzubov, Yuriy|2004.08.25|B33x|0-1|W +FVn^@Osd?[o_;L_VLVm]O^]V^du`=FxgGW`WEUWed^ld[TtfDLwn<`vx>@rv:>fTFTe]?_]T^Tg]_wnwHPd\TN\UN]v^]gpg`g^[gU[CUjCBjUwp>VpUVUk[U]|8th World Teams|Radjabov, Teimour|2011.07.20|C63u|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@k[RKwn?>meDLvxIQqiEUwv;EnwE?tk?PdZKDZTCKTc?kb[brbGW^W?WYnNPm^@wnCKl\_VIQqaQYtLH@LD>FDF=F]UOEVDNUgUFvxqEVqhvnUgVgpgnkDBkVhpVOB:@I:^OMbZMT^_IH_^HO^_ON_^NE^CTDCUEFU^F?^UDBU=?H=]HI]OBDg_DEogEmpimEihENONGNhoIHofH?f]?>]\>E\SEDS\DL\]LM]^MT^VT[VN[ZNOKSOPS[_W[cWOckOGks2PHskH@kp@IpgIHg`HI`^IH^VH@VN@ANOA@OP@APOA@OaG?2a`@I`^IQYaQXai?A^pX_po_`iqA:Zc`iox:;c\;qxqiq|SportAccord Blitz Men 2013|Le, Quang Liem|2013.12.16|A07|1/2-1/2|B +@Om]HPld?Hxg>@tXEMsm;En^IQXa=>weFVvxOYwvBRjZY_eS@I]VMVm\>NSE@wuHOng@wpUKxnDTsd;LvxMFul@wv=O^VOPxyPep^eim_]W_m:=rt=]ulHPvx?=mX[FX_]\ogF[lcCSVNGN_VW]cs]g^PgVPWV`W`if`N@AN\[dxhfotdS\dgo]sl|It|McShane, Luke J.|2003.12.22|B33x|0-1|W +@OxgDTphCSwp@m^O^X^;Ltf=KldGW^TFTe]L]pCKCf]:=unT]nNCGNG@Gd]=]wu?=u]=]rt]mtDGODB|ECC|Novkovic, Milan|2002.09.25|A15|1/2-1/2|B +@OxgDTkcHPl\?Htk>@nfCKwn@vxCKl\V\OUrt>NM=:=\KBKd\NM\UMUxwHOwvOVn\Uutu=uvuGOulCLldVMc[KS\@IQ@GPXGPMUjbUMPGLEGPELPGLEGPEL|Vugar Gashimov Mem 2014|Carlsen, Magnus|2014.04.28|E15f|1/2-1/2|B +FVn^@Osd?Tw\EMxgBRjbDLvxCS\j<`qi`Yme;Eun>@tf?>fTETnfS[dn=KnhYPgaMU^ULUwvU]fm[cjcTclcKcaPIPrtRZtTOUh^U_vu:;ph_UTlUO^OHOut@Hia>FmuFCaYcUYP;AogHPunCclTUNh`PHtlAQn^c;TLNj^n;Anpjc`XQypyAyxyOXlmcULlUgyxX`mnGOlmHPnoghxw|Eurasian Blitz Chess Cup|Ponomariov,R|2016.06.18|C50|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUulU]tm;E\TE?ZkOIbZGWk\HX^W;s;:;RJ;:lZPFg^N@wn?>k[RKvxIQtkEMmeBJdZKBl\;EZdE?ktDLtfBfofCSe]?P]VPVgV>Vu]=FruO>]KFBKB:Bu]@?ds?Fsm>OwuaXQXetc[tnJRn]>EmqRZqIF=IA=DA:DC:R[k]WkK|5th FIDE GP|Bacrot,E|2009.08.13|C88|1-0|W +EUxgDTnf;LwS=DvxFVm]V^gV?Ml\@O\UOUsm@\MDMkcT]u]?=V\MP]VU[tb[eVhPNbM=Eru:=MD=@tl?>leYqnd>=ef=>fe>=ef=>|KM FIDE GP 2015|Jobava, Baadur|2015.05.21|C10c|1/2-1/2|W +FVl\@OmeEU\UOUxg;LnfS[>F[ZFECSEBZ[BFlTFvTdvF[\FG\eGPemYQckQIdtxpks2PstsIA2s^px^]AQmlQIlkIakdaQdkQa]dxpS[a^[ch`kt^_tu_ZdeZrulrOckOLlmLQmuQyul|Corus A|Movsesian,S|2009.01.27|B80|1-0|W +FVl\DLxgV^g]@OmeEU\U?T]cTKsd^eue>@tf;JUL=FfKJ[esBKn^[UogCLvoUdkdFVseEogIYxpomELpoLSvx>F`XPWiaOXxXHPXxS\_;FGof\cxtKL;VJRtxRZxtCStxL\|Tal Memorial Blitz|Movsesian, Sergei|2008.08.29|D38|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQwvEUtkO`vw`Owv;EnwU]dsE?smOIm\KDldCS\m]dkd<`ul`gmgIXgXQXwn=On`DK|25. ECC|Fedorchuk, Sergey A|2009.10.10|C92|1/2-1/2|B +EUxgDTph;Lm]T]g]FV]LCLwp@Ol\:;vx?F\ULUuZ@tXENsdU]d^;kjZknZR?>RJO^XF>FBF=FJBNUB:2U:r:F?:?@?pg^dgndnxpndwtHXqiIYpwYahaXatr?Hr:GO:=d^o_^T=MT^M=^hwohY_VOV=>HO>AOXA@XW@AY_AaV^aA^fogfnA?WPgoPX?_X_on_hnehie]|Vugar Gashimov Mem 2014|Caruana, Fabiano|2014.04.27|D85s|1/2-1/2|W +FVn^@OxgO^me^OgVEUe]?Msd>@wn;Lt_?>VLCL_M=Mvx>FjbrvLT]TMTneFvwv>vmvWeleU]dnTln]lk]LkbvsHPqiBRs;@H;DbtxqRZDCtde]dcCBZbLVbjp`O^qp^M]UcUVgM\|CHN-RUS Super Go 2015|Ni, Hua|2015.07.31|C42s|1-0|W +FVn^@OsdEU^UOUxgUdkdV^un=Fg]DT]c;LnfFVwSGNFGFTKFGKBtfldrwGNwsdbs;NE;CELC;LE;CELC;LE|Renova FIDE GP Zug|Kasimdzhanov, Rustam|2013.04.25|C45k|1/2-1/2|W +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[Jk[L]wn`gngDLg`JDrsBR[RDSdS]Stm?buZ=esceM`nS]cC>@Z\:=RJLTmXb[C[T[X=?=vx[cneIYqi]gpgMe\e=eJBe=ws=:sc:BcSGOST@GxpGPTSBbSCbdCBdeBCedCBdeBC|FIDE GP|Radjabov, Teimour|2008.05.03|B33p|1/2-1/2|W +@OphEUo_DTxg;LwpHPvx?Hme>@ldCKjZ]N=Mp^MNWNU^eE>NrutfUf\fOkrsk]l\]KRZE]vtGWZl]TbZHXlkBRtuW_e]=]u]T]k]K]gL_fL>foxyNW|ch-FRA Top 16 GpA|Milliet,S|2005.02.05|C42|1-0|W +@OxgHPl\?Hsd>@n^FVwn;LmeEMvxIQtmOEdUBRUdETdSGW^WruLTkcHdedCKjbGPv>?>uv>vdv@Gc[R[b[PO[TKTv^OP^sWFs;POxqQYiaXa;DG>D;>G;CGPqiOWiqWOqi|4th Zurich CC Classical|Kramnik, Vladimir|2015.02.17|A05|1/2-1/2|B +EUxgDTnfHPm]?Hwn@Ovx>@]T=DjbBRtmDTmd<\TMPuZFVk[<;]V`gpgLVtkV\m\U\rt?FZlPQwpFOkO@OnfA>vx=Ul\UXwuQi\wigxygWu]O`]_WNtuXYyxYXqaXVwSDLpLNLSLCL_`HPxp;DuMGW`]>FpgBRjbFGg_V^]^W^_hRZM]GFh_FG_hGF]MFVMOVUOGD;GIUeIHebHP;C[SLSPKCBKSBJS[JR[\bcTLc;LD;tl;CphIY\wYam\ahohHPiaGNlq>A\VEHw\A>\UNUvtOV]VUcqkcZksHEtLEesr>@bMDMrZMVZ\@HLNeU\LUSNPHPLPRZxpCJP@JR|It|Nakamura, Hikaru|2003.12.23|B97i|1-0|B +EUxgDTl\U]nf;Lf]T]weFVvxGWgVLVwv=FewHXme@QtXFXvV?FsmQGmgXOVn>@g]]gOKclELrvFOn>?>v>L>e]O]g]K]lW>EWe]eweGVe^EL^W@HkcIYogHOWlYaxoaipiVglugXu`X^ofOVia^O`gLgfgCKqiBRgfOYfeY_ed_iaYiXYQVMd]XIjbIOc[R[b[OI]^MN^_NO_^ON^_|Sportaccord WMG Rapid|Nielsen, Peter Heine|2011.12.11|A60|1/2-1/2|B +FVn^EU^U@OsdOUxgUdkdV^un=Fg]DT]c;LnfFVtbCKwS=tbTXb?A?g_XUvtSEyv?>tk=Dd\UTkcTYqiYTvf>F]nENu]GWjZFEfdTRc[HP]ENEdbRTn]DM]SESZSTDbrIQiaMN[dNOphPXaXQXryOPd]DF]fFDf]X_h_DIyrPO\TIE]\KT\T^frvEFT]F^]e^_vf_[l\[ce]cf]fOV\TVUSKBKTKW_f_UL|6. World Blitz|Carlsen, Magnus|2010.11.17|C45|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@k[RKw\DLmeBRtkEU\c<`qi`gugU]dZKBgW;Eo_HPWXCSZTET[TOEX=:=_VEVbZBTktT[vn@Ht_=>p`GW`WPW_V>VyxHQxw?>w_W^_aQXa`XOrwVWe^Wwnw>VwnVT`hOVh`Td`a]enuemZSLSaYV^YIdhld^fulRZ|3rd UKR Games Men|Fedorchuk,S|2007.05.25|C78|1-0|W +EUxgDTnf@Om];LldFNsmCKwe@t_=FwvL[^CFC_MOFMFCFjb[Urt:W_fFG?FN]r|4. ACP World Rapid Cup|Drozdovskij, Yuri|2010.05.27|D45|1-0|B +FVnfEUm];El\V]u]@O\U?T]e>@xgEKsdKUdUOUjb?>el=Fw\DLk[TKvx<`tk`gpgFa\ULUlW>NkVHPW_a_V_PX_hGWg_X`xp:=qi`ipi@GipU]f]=]rvNvwvKDvyGPyv]EvNPGNQGHQNHGNQG>haD_QN>?[S_MNO?HOWMbo_EGWXH?XYbFaoFM_WBRSJCJYQGEov?>pg>=g^EF^UM_vR=E|Vugar Gashimov Mem 2014|Radjabov, Teimour|2014.04.20|C07t|1/2-1/2|W +DTn^;LsdHPph?HwpFNme@Fo_>@xgEMvx:;jZBJqiCSZSJSh`GWwvS[dnNV^WPW`W@vx=RSEOEtmGOjb[dmdRDV`EK`fgh<\_YWPY_PW_YWPY_|World Blitz|Tkachiev, Vladislav|2009.11.16|C64|1/2-1/2|W +FVn^@Osd;LxgBJm]V]g]?[]LCLweEU^U=FunFnvnLUjb[dkdDTyvEtfELogA;vs;srsOEf_EKp`IYqiY`g`KZ_mGW`XT\en:AwpW_syNWiaWlaYU]ngLTd]T]m_\dyvZT_V]\VHA@YQlIgYTeYG\SvsSLG@dlsrI@XPe_po_Prt@cQI|Moscow Blitz Final 2014|Motylev, Alexander|2014.09.06|C47|0-1|B +FVl\@OmeEU\UOUxg;Ljb@smN`qi`Yp`YPm\OEtf?>rtFTlc=O\mOMcSTfofEKm\K\t\:J\lGOSUPGUMDMe]J:]ULFlD@?gmCKwt>D<:EMCRZUMEJ;>=MES[b[BSonSMne=D[SMC;JDEe\CM\[HXJTED[R|TCh-FRA Top 16 Gp A|Guidarelli,L|2006.04.02|B90|0-1|B +FVl\@OnfEU\UOUsd;Lulrs>PgaPGSLN\m]CLtkGYaWYPWhOW^m\SlWPWhWSeWhesmsKZkrV]r]LT[TZTvnTN]d=Uh^?FsmA=m\HPytNT^TFTbZ=>og>Nf^TFdvUYqiNJtrYSneFOrjSsvm@m]^ene<`umVYe]TKsd;EmXIQXY`YtfO`f_HX_M?>qi`O]ULUl[>Nh`NM`YU]dSMNruOYS]K]u]EV[U:cTMLTNLKNH>GHWG\WfKJ[T|ClubCh-EST|Danilov, Nikolai|2002.03.09|B19|1/2-1/2|W +@Ol\FVme?[tm[mum>@xg=Fsd?=rtDLnfEU\UOUwnUOmlLTjbCKgVFVng;LgL:;Lg@H>VH@fdu=o_KS_WS[dDPKDF@?FBGOVh=MhMKMBCM]CI]^IC?>CK>Fp`FEKOEDOGDLG?LD?GDLG?LD?:[c:rckrs^[qhDMhgMVgf[cfmV_WOciOGiAskA?me_`ko`Xe^XP^V?GoGPG|76th Tata Steel Masters|Dominguez Perez, Leinier|2014.01.26|B52n|1/2-1/2|W +FVm]V]xgEUtXGOX_?[smDTnf]f_fU]f_@_M:>JS@AldBJSJ>:J\?>d]T]tsEWogFP\S>NWHPWl>FvxGOSebdrtd]g]:foBJXY>Fh`FGYaGHof|UKR Ch|Troshchenko, Vladimir|2000|B22k|0-1|B +@Om]EUxgDT]TFNnf?Tjb>@l\TKk[BR[S;EtkNVwnV^gm?>vxEV\UKDsd=MphM>e^|Superstars Hotel Bali|Vera,R|2002.11.30|D27|0-1|B +EUm]DT]TFVxgV^g]?T]cTMsd@FtXGOXf;LfTMTcT=KTc@um?=dSFWld:VhaWh_BJc]W]S]PYrb>?_WYabcGPWNPGNV<>Vhahoh>Fxw?ypEGZR>LrwGwpwIYwn\T]LTLKLCLd\|TCh-RUS|Onischuk,Al|2007.05.07|D20|0-1|B +EUm]DTld;Lxg@OnfFNsm?M]TMTk[TMtk>@jbNVd\U]ul]fofMD\T=FweOUm\GWf^U[b[L[lc[eceW^e^?_^nFT\mytELfo`ZV_IQqaLSgVHXaXQXtTX_TSZjVg_hoh>Fm\FHh_jZgVHD_WZ\|Aerosvit|Onischuk, Alexander|2008.06.10|D48g|1/2-1/2|B +FVn^@Osd?[xg>@gV?>VeO^wn[?d^>^vx;LevL]ne^>ld]NenDTvlEUmeHPng?Hph=Me]T]d]CKtf?dnCJpi=MwvJnmnN_f_G_nFMOFOHOvn@HiNO]tl?=l<=@l\^e\ULVnfBR[S=>rsV`kO?Om\W_ue_fof:>vmdsysOQi_Qqmeqjsc>@[S?>_VEV]VOEe]D;SLCLrs;[;E;Zk@?yx?FxwGOkeOVgVDVeVFOo_OWwnW^Vg^Wp`WOgVHPiaOH`XQYneHIe]IHjbHIVe;Ee[E;]VBR[eIHVN;JNMJ;MD|Ch Ukraine (juniors) (under 12)|Tishin, Dmitry|2000|D02o|0-1|B +EUm]DT]TFVxgV^g]?T]cTMsd@vt?>weBRldRZ]LCLcTZbkcE`uvQWqiWfi`f`eI@?v>=>IW`QTE?@EOHOyQU]mo||Dreev, Aleksey|2004.05.09|D20|0-1|B +FVl\;Lme@FxgEMsdHPph?Hwp>@rsBJvxe]V]^VOHiw]eVNEC[b>DJMDSMECENEFLbFS]xp]gpgLVgpVEwe@GFbEVenHObkVLngL[ktO]tm[egneTh`GO`WPWmRTNn\OV\NVNpgNV|Rapid Match|Short, Nigel D|2008.05.05|B23|1/2-1/2|B +FVl\@OmeEU\UOUxg;LjbngX`g`cUmR>@`gUgpgGEwsELs[=EWOIY[ZLJRJCJxwEUZJUTJN@?hV;IYiy^_yx_g>GYXxvg_vwogwyX`yi`HG>HE>E_XiyXPyxPGxyaYyYGP|36th Olympiad|Quezada,Y|2004.10.26|B90|0-1|B +FVn^@OsdEU^UOUxgUdkdV^un=Fg]DT]c;LtbCKvtHPog^fnfFfmf?QwSjZPWcm\memHdmMLCMECLEMLCME|ch-RSCU Rapid|Nepomniachtchi, Ian|2011.01.09|C45|1/2-1/2|B +FVn^@Osd?[xg>@gV?>VeO^wn[?e_^OvxEUm]DLne?Mwv>vuv;EtmE?kc=Dph<`vw`grvIQeW?I_eIXeVgYqaXgVgYgweg`xp`WeWM[ds[m|FIDE World Cup 2015|Andreikin, Dmitry|2015.09.21|C67d|1/2-1/2|W +@Ol\DTsdFNxg;Ln^EU^VO`\UNUwSU]SLCLdZ?Fvx>@qi`QmeQWkcbTFTZTGOVO=OT^OPumIQm_>?_`PGgVGDVP?GP_:?_ULU^mDRmgGOvnRKrvOP`YKJn>PO>?O?g]Je]N?ON_edY>@I_UdLUOLO>^QYp`|Eurasian Blitz Chess Cup|Arutinian,D|2016.06.18|A04|0-1|B +FVn^@Osd?[jb[Rxg>@k[RKw\DLmeBRrsEU\c;JvxR[b[J[tXKD^U[UdULUXOHOga:RugV^e^U^g^OW^\CS\dS[dLDqxq=aqxRJLDJQDhahohQPxq?=w_@gV?>VeO^wn[?d^>^vx;LevL]ne^>ld]NenDTvlEUmeHPng?Hph=Me]T]d]CKtfBRgn@^VO`SLCLwvGOVNEMm]=RqiT]g]`Vo_V\_W@wpEU\U=UmeCKsm@vx?>bkFVgVEV]V>Vd\VFngFEut=D\ULUwu:=tlUgmgO^kHEuru=ulu@HxwDMuM^MgmGWjZHOwnONneBJm\KSZSJS\MNMqiMUogIYiaUVedVOdeONedNMdeMVedVNdeNVedVUdeT\c\S\edUTf^W^g^TS^VSTVNTMd\MN\]NW]UW`UV`aV_PX_gX`g_`h_W|31st ECC Open 2015|Brunello, Sabino|2015.10.20|E15r|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtkEUwv;E^ULUgmE?dZKDng:;l\U]ZTCKT^OI^h?PktIXgL>?mgPFtXQXgXGOuYOXL^?_YX=?rj@phDLjb[RwpEU^ULUk[RKvx;LdZKDmeIQl\U\e\=uwuSM>vuvCKMC@HC=:=kZ=M[S`NdVMmZKmlKUNU\UlnVOHOvsn>SK>;xwOVsSV]wv]\Ss\UvmULmf;KsKLKfgGWh`W_g^KT^WT]WP_gPQ]eQXenqanoaYohYQgoQIow2IA2w_|19. Amber Blindfold|Smeets, Jan|2010.03.14|C60|1/2-1/2|B +DTl\@OsdEU\UOUxg;LnfBJwnHPm]?HvxT]f]>@wvIQdZCKtf@wn?>k[RKvxDLm]V]g]O^d^>^ldEMne^>t_=OuYHPYQK]d]O]ru]HQH@H_MvsvEKMT:=ewcNxoKZTfBJvtGOtl=ultZktlkeweueftHGonecnmPXldcsphsrmfNUqaIYfnrjtmGPdfPWnvXahaW_fe_hmdOWdVhae]ai]_UNVOihOVhp_apgVMjrvmrjmdjbd]braYru]Vg`YIN\IH`gMTuUVOJRHCRZCB\SBFW_FvUT[TgpvV_gVXpw|World Cup|Shirov, Alexei|2007.12.11|C89i|1-0|B +FVn^?TxgEMld@Om]TKwS@og^Txy;L]LELg_T^tfLQyxHX_XQXfKBKsb:>bl>VlvXmnm^mwom^onV>ve^MnoDLrw>fe[?>ph@H[lfnl]nowo>vxpHP]gvsgVPHpiKSiasvVevNe_N^jbIQqiMGh`W`_YH?i`^vYhvNhW?@W]Nv]W@Iahv^oqIPWaPXagXOg]^fh_fe]WGVWfefqQOHQNf^_WV\|40th Olympiad Open|Fridman,D|2012.09.09|C24|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQtkEMm]V]g];EogBJxyKB]WEVWhfeW=FkOF^WY^PYAP@Aa|World Blitz Final|Topalov,V|2012.07.09|C88|0-1|B +EUxgDTph;LwpFVme@OvxIQn^U]jZ<`sbOEuv?FgmBJog`YmcCKpiGOiNYGNG>Gg_:;vuQYcmYamgahqhFMld=>d]L]g]T]b\MDu`G@xpET_VDVrb>N`NTNk[VDbj@G[S;:wWJSWS:JtmA:ZRKRmRGPjbDRSRJRbR|Vugar Gashimov Mem 2014|Nakamura, Hikaru|2014.04.29|E90q|1/2-1/2|W +FVn^@Osd?[xg>@w\DLvxEU\c<`qi`Yme=Mun;Eds[RsmRDwvETldTcjcBRmwOEwhYPtfGW^WPWc[WP[R:RrRDRvrR=rBM;BZ;Mga=aZaEOaZIQnm?>xyMEZaEFmuLTe]V]d]T\a_CShWFNugPW_WN^WOHOgO^NO_S[_D[cyq>FD;F>;D>?fm?GD;G?;D?GD;G?;D|Amber Blindfold|Aronian, Levon|2008.03.16|C65|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb@dZK=kcV^tb?>rt>NwvIYvnYanlpwJwxw=OuYW_h_X_wn>@vx=FogHPYQEN\n^gngN\wv\egL:;Lg?>jZMTZRFMrZGWZa>FaZ;sZje\jl\cd\clgUFNQaDLUNMNa=@H=DHQm]stD_PX|UKR Team Ch|Kulikovsky, A|2000|B45|1-0|W +FVl\@OnfEU\UOUsd;LjbUdkd?Mm]>@xg=FwnCKvx=>?>WNHd_WdmWOm[OG>=NO|37th Olympiad|Filippov,An UZB|2006.05.24|B46|0-1|B +FVl\DTsd;LphHPwp@Fnf?Hxn>@vxEMkc:;tkBJdUFU\ULFo_GWmeCKumxy@AnxF@xgEDjbC<^W?V\M=kHAHe]KS\fT]m]=OfWPW]m?=m[OM[]MO]_=Eqi@FvNOG_VH@UM|UKR Ch U14|Savchenko, Yuri|2001|A36|0-1|B +FVl\@OsdEU\UOUn^U[me;Ljb[Jk[L]dnDTn]V][TJTwn@]cEN\lNcscRZcsZblj?=ph=]scGW^W:?gp?Wo_WGngGBpi@?i`BRgL?FL^IQqaFM^PKS`YS[PGMFG\FOcsTMY`HXaXQX`gX_h`RVjqVfgoMT`XOXsy]\qYXOe\fVogVY|4th YM|Kosteniuk,A|2003.09.21|B32|1-0|W +EUxgDTph;Lm]@OwpIYld<`gVFNV`Y`nfNV]VLVuZ=EZE>EsmT\qaCSvx?TwuENf^Ve^UNWmwToxq:>jZOIZSHXue\erZ>nUMXahaIOtXOYZ`GOpgOX`XW_XY_g|SportAccord Rapid Men 2013|Mamedyarov, Shakhriyar|2013.12.13|D90|1-0|B +FVldEUm]V^t_@Onf?Fd\@cCL[\T[lvmlr_D=>wSNExnESdSO`yr`ondoeDhBJdUFTSd:BCcTFjb>Lrs?=cKLKUKGWk[FXmnIYqaXQKZBGZTGOT^W^d^OPne=>hVPpbZpj^djb[SJSZSQfSK><]UfKsK@jb[dmdV^gV?>V\OUwn;L\fU_u=>=nw@vxwhM?gXU[kdJRd]CU]TEusHPh^?HqiGW^m[jnJjdswIQm\@I\RUuphEUxpT\wuduR\UeJMufofenpxngZRNVMmghmphvpwvdwuW_RJ_fxpfnundc\McZn\ZbM^bfiaQYJB|WCh 2016|Carlsen,M|2016.11.21|D05|0-1|B +FVl\@OnfEU\UOUsd;Lul@wnGWmeBRvx@AdU=UtmV^gvFOmdUcdO?OrtRZldLRog^evecdtdN\wv:=eV\nvnDLf^A@^WOWphWOg_OMV\R\d\M]\]=]xo]eop@GpiGOiaeca`HPnlIQlmLTmMOGMmGNmnNOnlCK`aOWloWOh`KS`XQX_XOVa`S[b[T[qaZbonVMnmMTmlcdkd[cltcktsT\aYbjskjr2kqrx`iPYqpxyihYahoaip`\eXPyqogqng_n`_`iq|FIDE GP Tashkent|Morozevich, Alexander|2012.11.29|B85|1-0|W +FVnfEUm];LsdV^og?[tm@Oun>@no?>vtBRxnCSdS:;ndLFohFyvf\e\FvmvU\DSRZjb@?vm=USdU]mf]aqi?FdZFMkc\clcaQZkQPk\MTfgT]bZPOg`]d\VdcZRc[VEOP`g[Rp`RS|64th ch-RUS|Timofeev,Arty|2011.08.14|C10|1-0|W +EUxgDTnf@OkcHPtb=Dbk?Hl\U]f]T]g]>@wn?=sdBJ]llcMT]TW`umU_\NGNcN_NkO=mtm>?OaPXahIYmn?Wqi`iyiX`iyWUTLCLyt;Ct\NXh_Xg|3rd ACP Blitz Prelim3|Kiriakov,P|2004.06.02|C11|1-0|W +FVn^@Osd?[phDLjb[RmeEUtm>@wp?>xn^fK@IusHXqpIPscWapq^nKTnlcKGOKSldSRQYTMagqpgvpwvgRJgmwpm^MVdlV]X`i`Y`JR`h]fhoRrlnpgnv|World Blitz Final|Andreikin,D|2012.07.10|C76|1-0|W +FVl\@OmeEU\UOUxg;LjbfUEWsuL]d]T]u]Wlohlkyukb]ebTecCKur<;U[T\[L;=BLF?[Kdvhivwgp=e|EST Ch sf|Saraikin, Sergei|1999.03.07|C11u|1-0|W +FVldEUm]V^t_@Onf?Fsm>@qi;ExnEK_qBRulRZjbu]>MtuELslGWogMGlmVF][K\m]CSg^W^q`GMn\M\wq@wn?>k[RKvxDLm]V]g]O^d^>^ldEUne^>uYHPYQ>Vp`=?Q?@?t_;EruV>uvEO`X@wnEMmeDLvx?>k[RDe];E]VMVtfIQn\BR\jE?qi?Nue=FjNNumN>fn>;mkLTd\SL[dL^k;D;n^O^dV;VgV^MVeM\eT|6th Tal Memorial|Aronian, Levon|2011.11.23|C84e|1/2-1/2|W +FVl\@Osd;LphEU\UOUwpvn<;rvIQXNGNh`KSZ^P^n^NVahUO^nO`pLCLjZSZn^`O^[;<[ZV^Z\^v^A;^`HXqaXa`a;kaQLThVkno_T\xwn^QiELwoLSiIDLIYS[YQLTQN\d_WdlVk^_ov[ckt_W|Qatar Masters Open 2015|Dubov, Daniil|2015.12.24|B35i|1-0|W +EUxgDTnf@Om]FNjbCKl\@vx;EsdO^tmEO]TKTulBRwu=Kd^O^md?=gmGWm^W^umMFluRZrtU]f]FX]UXmum=Umn:>tvUWn\CU\ZKLZLULpiWGk[Ggdmgb[T>:mf@Giwbrw\GFvr:rxprZ\cZbc@IQh`HX@IbrqiruphFOIWQYiaY`W@vxFNd\U\m\O^\K:;ulGWjb=FKZQYNL_gpgYaqiW_LNT]N^]f^ZfTZBHOBGOVGIV]Ia]faYfgYIghIG_gGWgoWGhij\ipGHpgHG|RUS-UKR Blitz g/3|Shipov,S|2003.12.14|E07|0-1|B +FVmeEUxg;Ln^U^e^=uvu?Tuv@Owe<`sm>tk<;rsIQphTKkrOEh`YPc[R[b[E?eSGOl\K]g]V]og?Nvo>FohP>iaQY`Y>Y\TY>g_]eaYN]r]L]S>F>_W]nhgn]g`CKyi]L`_LVYQHQiQ>?TKDKsuVL[SL]uy;DQI=EIEDEm\]S\KELKULT_femfmT]yaSMmnMW^W|2nd Sanjin Hotel Cup|McShane, Luke J.|2005.07.16|B07m|1/2-1/2|W +FVn^@OxgO^me^OgVEUe]?Msd>@wnDTdSMFvx;Lt_BJVLCLSd?>wvT]u]@vxDLld;Et_OY_f=DsmGWfX?>nfFVgVEV]VDVpgYOXOVOuZFTeIYqaXaZaOaha@IxpHOwyBRpwRZjbIQe_:=umCSwpLT_UFEyuOapwaXwvYaU_Emum=mvmX_f_aimvG\gyQY|Baku FIDE Grand Prix 2014|Dominguez Perez, Leinier|2014.10.04|D02u|1-0|W +EUm]DTld;LxgFNnf@Osm=DweHXeSEOG\dGFEF@HFMHhMEmcBRqadlctLdhoNVaYU]f]V]YQ]eoWELW^LD^_DL_gLDtedegelt2xotQe\DKjZQOohOV\_VHhgHrp`rwg^w\^W\GWXGHXYHA_QAQYQ|RUS-UKR Blitz g/3|Dobrov,V|2003.12.14|D45|0-1|B +EUph@Owp@g]WPk[T^d^P^p^O^ul^Ovu=WF>Fxp@rtFVd\V]f]U\]T\cmc?>TK=Kwv:=nwE?ul>vtv?NbkHklkK[vtLUtuUcu=N=jc=CkVCRV>@H>VH@V>@H>VH@|5. FIDE GP|Cheparinov, Ivan|2009.08.22|E15|1/2-1/2|B +FVl\@OmeEU\UOUxg;Lsd?TucUdkd>@ph=>gXLRcUTKtb>=U=?=wpndW_]U_fof=Gd^GV\dCU^MEM[MQMf^VgdgMLgdLdkdUjxX>^XHjNHI^\tk\LIaLKkt@tfRZsm=MqiOErt?@uc?=rt:VeDM]f>H\TKTeTHWfdW]d\M_xw_mp`muwpugpx]nxwn_wv_pvmgomdp_d[_i[SiXTEXNSJN?ET?NTEN?ETIY`YPYjZYa\`?PTE@H`[of[kHQEOQXOIXQIOQXOIX`kp`_ZRaipX_gXWgpIXiqWUphX^ha^mPVUpfeJBeEB:E<:B@vx<\UNUue<;sdHXeWAQruX`gn`iWi?MngLFutD;DWfDEgLCL>:Oo:BE=BJsmJLmcLdokf\ksyq=FdfFOfest\fcR]URCe]tvf\vr\mCTm^T^]^ru^auUaiURibOWqhW^brRXhiXRi`GOphRX`aXRrw^Vw_R:a`:@`g@;_^VWZR;:^Z:JZbWVh`VNg^NM^WMFWPF?br?FPHF>rv>EHG|Vladimir Petrov Mem 2015|Lysyj, Igor|2015.03.08|E12n|0-1|B +FVl\@OnfEU\UOUsd;Lul?Fjb>@xgmd>PnwUOgmPQm\@\e\O^tu?OSMDMog^dkdV^g_HXlo:@usX_f_L=sK=NKMN_o]_ixyioyxo`qiQ_i`_M`WM]d]OWv^Wg\Tgbw\@=]UbdTLCLULZbxq=<^`IY`a@ul?>wnMDkcEMtkBJjZJRqi;JvtJ[ls;mcVene^elmP^yqFVo_VFc]DKjrK]r][cmd;[trF>qk[ZrZ>Z]^Zr^eRZemZbdcbkmkrwk]wi_WQY`YiW]_WscZsK_]KJZ[JC[RCDRJ@I]_HPYPIP_]GWJSPX]KDES[X`\TMTKT`gUMgnTS|It|Varavin,V|2002.08.04|B50|0-1|B +FVl\@OmeEU\UOUxg;Ljb=ZRNDLC:RB>VC^CK^[KL[\LE\ZEF|Tal Memorial|Grischuk, Alexander|2010.11.11|B90i|1/2-1/2|W +@Ol\HPsd?Hph>@wpFVxg=Fm]EMvxV^gvIQvlDL]U;EULCLl]sSNESTDMTUMN^gELUTLgng>=jZH]TU=U\U|2. Norway Blitz 2014|Caruana, Fabiano|2014.06.02|A04|0-1|B +EUxgDTnf@Om]<`smFNqi`Ywn;El\?Fvx>@kcT]g]YPtkETmgU\n\OErtNV]nV^gVEVkVTe\e^en_=RV]emt\CS_PIP\lF[u`?>wu>Nia:>aYN^`gRJ]rJNYPNPjb^fofPluwlcb[cfgofoxo>^wu^[umBRrd[_of_Zm=|Vugar Gashimov Mem 2016|Eljanov, Pavel|2016.05.29|D30v|1/2-1/2|B +EUxgDTnf;LwSFNvx?Ml\@Om]>@]TMTsm=FkcU\SL\dLSdmum?=mlBJSn@meDTkc;LtkCKphulU[b[L[ls[ef^evsvKSrt;DvfDRkdRdfd==dR=eiweMRbF=tTDTbT=KTdMLdeKDefLdfnDMnvMTxq@?wp?FaYdlvnTdnuCLuvJRvuRZcZSZmsdkgmZbu`bj`HFMHOMDOGDKGIjr2IQk]QXlmsmrtmgtXgX]oYQoOQIOQqxL>pi>PiWP>xpKTXgTMh`QHphMF`X>Eh`HIgVEW^WIqVPFGP_qx`axya`yu`hGFWOFG_iGPh_ue_`eW`hPYhpYa|Superstars Hotel Bali|Paunovic,D|2002.11.30|B42|1-0|W +FVn^@OxgO^me^OgVEUe]?Msd>@wnDTdSMFvx;Lt_BJVLCLSd?>]TFTneO`um:BdZTMrvBFvF=FkcLTZd@p^EMZ[:aYNG^g?Axy|5th Kings Tournament|Nakamura, Hikaru|2011.06.13|B90i|1/2-1/2|W +DTxg;Ln^@OsdHPm]T]g]?H]c>@wnEMvxBJtf[J\dmn;BkdL]xL:rs\Zs;:L;=HO=MOFMuGWxTFG^WPWyxVEToGNqaW_utEVo]Z\tuVE]o\ZutEVo]V\tvNMvuLUuvMEvrZr]rENxqNWqi\fiqfwqxwhxoWNrdUCdmNVmdVUdmhYmRYHRDHND;ULoxNDxqDUqiC@wnEMl\;EsdFVvx?>k[V^gvEK[S@w\DLvxEU\jU^gV=]V\RDdn]=m]^eue=ele?=t_;JwuOU_DJD\fUFj\=Mnddf>;fcMNcfNMfcEDwn;=cdDCkc=EnfIYqiHXphOWfgM]\LX`gp]udtutLtEetsKSZSCKsvecvNKSNVSKVWRZWYZbYAKBAIcCIYCKYIBJIAJRA:KJ:>bj>vR[vr`ipi[di`dkrvjr2vrJr`WrRWORJOWkdh`d]`XJRWO]^XPRJOX^g|11th Karpov|Onischuk, Alexander|2010.06.11|C78d|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeBR[SDLvxRZrsKTe]V]g]O^d^>^tkEUng^>l\T?\ULUwv>vuv;EgUETU\=XvdT^dg^M\e@wn?>k[RKmeDLvxIQtkEUwv;EnwU]dsE?smOIm\KDldCS\m]dkd<`ul`gmgIXgXQXwn?Nn`DKbZN]lkSZrZ=Ovw:=dm]NZbN_kl=Mph_NxpN]lt]SbcO=mXGOXfHPqa@HaYMece=efQH@YPe^`g^Pt\PG\`|4th ACP World Rapid Cup|Shirov,A|2010.05.28|C92|0-1|B +FVn^@Osd?[xgEMme>@wnDLjb[Rvx;EgmRDmcMU^UOUdULUo_DKxyV^_W^eue?>WOEOtX>NnY=MXONOwOHOrveWMFvnU]n^DVN\FD\e>FypFH^aVhaIHIWOA@eI@IOWIHqhDLpwLKk[KJWeJMegMDg`HI`^I@^`@I`^I@h`DhbZhb^U@?Ucbtwn?FcetrZRCKeIFMIB]enmelBKMVKfVOf_ON_\NVmlrZlkZE\TV_TW|19. Amber Blindfold|Carlsen, Magnus|2010.03.18|C65|0-1|W +FVn^@Osd;Lxg?FwSL]SZDLmeBRZcEMqi>@vxOEtfFOjb]clcETuldnLT[TMTgmc]f]T]o_=K_V>@tXDTnfEMsmT]f]=Dwn;LXOHO]ULVvxVgmgjm@IutHQfQIQia>;trQHrbCKRK;KngDTmeH?pwJR]LEWefFNLRO]fnWec[engnK[RcNVcT[swp]TbjGWnesvjkvren?Hk;V^;>HG>;rvnwvtwntr;CGOC;T];>OG>=rvnw]T=;PXaXYa;AahohvfpiT]AIGPIQPXQMW_MNfhiq]xqyXWNL_gUMWN\Txfyqf_LDhHqiHDMD_Di`NUwJUTJCT]`WgoCJ^fW`]d`gdmgpfn|75th Tata Steel GpA|Carlsen, Magnus|2013.01.20|A11|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLm]V]g]O^d^>^ldEMne^>t_=Owv>vuv;Ev>E?_hKD[SLTSKD=]S^EL^\LS\S=KSc:>e\KRru>=cCRdha=;C;Oa\G@G;c?NcdN]deHPqiaFusGHxyIYeJHQJ<]W@o_NU^UL[ug[lrtlfwv=Ecm<=m^fUh`UfpiEU`XOF_WFMxyM;vn@AtxT\e\f\kc\Vgp]enmU]xu]f^o=]i`V`o`fXqiXW`o?=uxHPo`W^|ACP Blitz Prelim1|Dimitrijevic,A|2004.04.12|B04|1-0|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tf;EV\DLwnKD]UEKUMK\MD=uru\fofGmcEMcTGOtmL=TEONETNGm[MOTEONEVG@[F?F\UNOvmW_`XOMf_Aamf@In`:;rs;[ZE[cf^=CVLME`ECM^VFXE`XOVNI@NE@GEDMSDEPXyvaA`NGP_WPQNGS]v>cCEM]WMTA>G>CST\WM\eSUelM>L[URsv>MvNRTlcMSNJS]cjTS[e]gJZgVevVLveLVevQYvlVLkcSUlfUmjsmof`okstkpZ:L[tuO]:AYPA=pxun]O=;[U;SU_nmxhSKPWKCOdmld]c[W^CF^UFEU\ED\[DC[\|Europe Blitz Ch|Volkov, S.|2002.10.02|C12|0-1|W +EUxgDTnf@OkcHPtbCKwS@rtFVc[?>]VEV[T=FtsV\utKTng\Vgn:VvVkVqiIYBEVvpw@HEev^ef^_wnHQnwGWwnQHfc_acfHOfcaXxwXawpa]cbOXbJXQngQHJL]_LJ_XpqXaqpa]JLYaLNPXNfX`i`W`g`]`pqHOfi`_qp_^pq^VqpVUpqOXifX`fiUTqpTBifB:pq`_fi:BqpBCpqCLif_`fiLTqpTopo`i|Corus A|Radjabov, Teimour|2007.01.14|E15s|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb?TnfTKk[<`wn=Ouc>@tm:>gVEV]VOEo_F=p`W^d^U^ruE;md=Dum>=m=?=|It|Alexikov, Alexander|2001.08.13|D02|1/2-1/2|B +FVn^?TxgEMsd;LdZ@Fld>@wnBRm]TBtfMUgVLV]VBfofU^u=?=ZTFPvoCKT^HP>MVeofeTM\TZfmX`\RZdR\aipi`i\VPYVgY`mf`h|CCM4 Ordix Open|Bologan,V|2004.08.07|C28|1-0|W +FVnfEUm];L]VLVsm@OxgVgmg@ruRKqaBRaYIQyaS[n`[clsE`a`\dkd<\f^RZse?<]nM>`_KT_WTbWGbMeM>MGBM^uE\DED@l\EMnfFVme;EwnDLsm=Ful?=vxMU\ULUrtO>jb>Mc[GObZBJlcFGtDM>DdE?wtMcTNuc>G[SJSZS?NTZNHkbHWbT@ZRLRgVU[rRKRpC:;CpGOuZRKVL[LZL=>L^>EdU;=U_NG^lEFn^FTlsDLk[TSsr=]me][tb[Zrt?=^VSVpLZRL^VDtDKDb[RjwtDK[THXTKBK_pOW^W=:pfjrtr:rxpKSe]S[flrZWEZB|ETCC|Jones,G|2007.11.06|B35|1-0|W +FVl\@OjbDLnfEUm]V]f]@t_M_n_N`og=Mum?>voLTsd;LdSM;yv`Ev>E>rvLRv>O>_U;=e^:;m_RL]TKTbZL]S]T]k[;<_W=aon<=UF@?FL]e^e>MWT=>nmaqmd>vZR?@RJM@vxV]SLCLg]=MulLT]WPN>?NP?>PN>?|Aerosvit GM|Mamedyarov, Shakriyar|2006.06.24|B90e|1/2-1/2|B +EUm]DTld;Lxg@Onf<`qi`Y]TFVp`YPk[?FtkIY`XO^ia>@sm=Dm^P^wp:=vxGOgq^pxpHPul@Io_OX_XCKw?F?TKBKjbV^d\U\qwLVl^V`k]?HrtH]f]=?px?w|KO|Zhao, Xue|2006.10.30|D43|1-0|B +EUm]DT]T@OxgFNnf?Tjb>@l\U\w\=uvuO^unTFsm^M\e;Em\ET\MTeMeVOV_V>Fk[GOngOVg^RJPQ[\HX\LQHaX|Open|Miniboeck,G|2003.08.19|D27|0-1|B +FVl\@OmeEU\UOUxg;Ljb@ulEGcTbTlT?:ws:jnwG?TtX`fT?GgmIYTfGFo_NGmcKE_VOVcmEKmcKZcTZTfTFOsCL]T]V]CDOoxyofDljltl@HphHOypfgpxgfloOVxpGPo?VN?_NFqi`ipifxiaPGaXxq_DF?XOqoD_oj_M?@wij:MF:jF=|2nd Sanjin Hotel Cup|Bu, Xiangzhi|2005.07.11|B90p|0-1|W +EUxgDTn^U^gX@Ow\FNsd?Fvx>@wv;LX^O^d^CKjZLV\w@vx@AsdGWo_=F_VLVn_Ya?Of^:=_UKUdUO?tXVPaY=<^WEWrv>EYuPVe]VL]TMTxyWNk[TMvNENU_Nj|Canarias en Red prel 3rd|Theoneandonly|2004.05.05|B42g|1-0|W +FVn^?TxgEMld@Om]TKjZ;LwSBJSLCLZRKBue>@vx<`smOYm\GW\VMVgV@Ae\LTogT]VL]eLBemBLmt2rt=Xg`XfxyYhqhfQyxQfxyfQ|20. Amber Rapid|Gashimov, Vugar|2011.03.19|C24|1/2-1/2|W +FVnfEUm];LwSV^l\BJSLCLul=Xog@O\TIYsdXPg^O^xg=vxGOf^l^t_:Bwo?FgmA>rvOWmgFOgVOV_VYaqi=ER[JR[kRZjbPXkjBCV_XPjnCcvt>;nJckJR;CokCkRDE>D<>G|76th Tata Steel Masters|Rapport, Richard|2014.01.15|C18d|1-0|W diff --git a/GM/Tal.xgm b/GM/Tal.xgm new file mode 100644 index 0000000..9ab6b9b --- /dev/null +++ b/GM/Tal.xgm @@ -0,0 +1,2593 @@ +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBR[SDLmeRZSLELtf;ErsKDgaE?ph?NngN]gpDMsrO`ftMTqi`Otf=Mds=f]T]g]M]sm]Txq:Ro_HPutTF_VRVtkOEkCFMCsVYmgEOsv=>vmPXrvNipiX`ga`im_M_w_OEaWEVvsVP_wPVWfLTsC>=w_T\e]=]C;@HfWYW_W]^qi^f;>GO>NfbNObdOJVPJBH@WGP?Go?Ni`ZbonN?`iIQipQYpoYahadin^iqohql^`@AB:bj:?AI?:|Candidats final|Spassky, Boris V|1965|C90|0-1|W +FVl\@Onf;LjbEU\UOUul?Mxg>@sdUKk[<`wn=Ftk:>meBJ[SJSdS>:vxKZktMTrsGWe]V^n\@AgmTMSMFMsCZK\SLBm\MUSJULlcKECB:BJSLC]UETc[CUtkDL\KUMS\?=qi`YkrIQbZAIZRMFrdTe[ZW_ZLYnK<=tmOUuZU_qi_pvw`gngMTZ`<;m[T[`p[Rk[RKgCFVrvVSwx>NxqNPp^GW^F;CbZ=mZSmo|Varna, Olimpiada|Barcza, Gedeon|1962|C10|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBRtkEMme;LdZKB[SLFl\<`ga`nunOEktETZTBTtfFPaWPafTMTWfaP|Tilburg|Karpov, Anatoly|1980|C88|1/2-1/2|B +FVn^@Osd?[phDLjb[TmeEUwp<`umU^e^=Fxg;JvxJDgaHPxyOYmv>@vx=DkcNV]VLVul<`d\U]f]T]g]FTmg?>tX`g]gO`gV`oVgDKc[oixyiowoTorwIQ\TK[woQXgX[alW>FphaQn\:?XGQtyp|New York Open|Rohde, Michael A|1990.04|D45|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>meRdkdEU^U=Uvx;Ld\UMtk`gagF>g]HPqi>V]gVds;@H;CdlCBls|URS-ch30|Bannik, Anatoly|1962|C87|1-0|W +EUxgDTnf@Om];LwS<`qi`gugFNl\T]f]?[tm[msm=KSLCLgd>@vx:;kc?=wuLT]TKTrtU\c\=EmcEutuToxoO^of^duEdjc]BJ\Tj[TL;@vxBJSe=D]TMTunIQf^TBjZJReS?=kcU^m^OUtm^hUOh^OU^hUOh^|URS-ch41|Karpov, Anatoly|1973|D46|1/2-1/2|B +DTphHPwp?Hxg@Ovx>@l\EUmeCKsd@wn?>meEU^U[dkd=Uvx;LtXUMXOMOgmCKng?YnJCnwFPusPVscDTwn?Oru^eneV`fhM_mgCgpg`VxpOPen=unuPMcZMEunIYqa_ag_a_nY_^YgVghgEMZcW_|World Cup|Portisch, Lajos|1988|C65|1-0|W +EUnfHPo_?Hxg@Om]DTld=Dwe@ZR@hWb[RK[TKT]TFLvx=Xo_^gwg:=ghXQnw>NsbU]mo]foWfnwnNnb\nNjZNOW^ON^W=>rwGOc[Qah`aQ`hLV\fVPfUNvUDvwWw>VheP_e=@G=EGPph_nxpQfDUf^wg^lg`VXUFPGFLGPLFPG|Wch-blitz|Vaganian, Rafael A|1988|C16|1-0|W +FVl\@OmeEU\UOUxg;Ljb?Fn^UKtf>@smBRwnGWulJP[FUMFaMDaFDF>FqaFBPMBjaY_gphAIM]V]wijni`;?`WI@h`?;^VnVxqVnqh;khgnog^oltrk;^];=]flDrJ@GJKDFf_=]_gFV|Candidats Tournament|Fischer, Robert James|1962|B92|1/2-1/2|W +EUxgDTnf;LwS=Kl\U\sd@OgV@tkEVrs:=o_V\c\KJunL[_W[ekrFOWNGNd^Orw?@?sr?@rwJ\n`eV`XVGwG@GX_GF_aHXaIF?IA?G^XGPA=\txo|Asztalos mem|Barczay, Laszlo|1963|E23|0-1|B +@OphFVwpEUme;Lxg?Fvx>@sdU]ds?>n^]ftf@sdCKwngvEMog;Jf^JDvl=EjZBJtmKSZREFwvOEk[:D>un>Omf][qiTctlAI>=Hd=MdRMUW@meEUtmCKjb@I|BL|Maus, Soenke|1991|A30a|0-1|B +FVnfEUm]V^l\DLuc@OsdBJjZ?MtmMDxi>@i_U\w\;E\G?G_N=FNDET]TFDvtDVc[<`uwJR[]VNdsGE]dEedlOUqiU[m[R[sm[cl\N\m\:Z\b`Yp`YPwuZRue^etmRTytTtmtCStm@GbsS[ogLTf^T\mfGOg_PGf]HP^VOF_WPW`WG@smIQ|URS-ch sf|Sokolsky, Alexey|1955|C02|1/2-1/2|W +EUxgDTnf;LwSFNvx?Mm]@OkcBJSLCLtbT]bM=Mu]LT]k@rt?>kVMLl\U]f]=]mw]^VM^nMLCLgm>=m^=u^OHOtunju=@Hogjk=MLCMKCHQ>MQY;@|Buenos Aires Najdorf|Granda Zuniga, Julio E|1991|E52|0-1|B +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn>@tfGWulBRsm@smCSwpRDbZBJZSLSmc<:um?@we?>xnCKk[BRTLE?[SO^vxFwvFOvfA[SLF\T<;TVFUVkEMwnMqxwQXkl;:g_X_f_>nvn=>nuqYogYilZUKZ]iwulwgtv>@rsBRe]T]g]L]f]NV]f=DuYEK_VOVo`W`w?@?swVOfT|Jurmala|Pytel, Krzysztof|1983|A35|0-1|B +DTxg;LnfEUwSFNvx@Fm]BJSnT]f]HPld?HjZ>@sb=MblGOd\?=lf@AZRMDtmU\f\L]g]=]ucFUrtD=mfUfof]U\K:;KUNUwuHQng=RtdECKMcG|URS-ch35|Bukhman, Eduard|1967|E46|0-1|B +DTo_@OxgHPph?HwpEUme;Lnf>@vx=Dsd?=un:;jZBJduFV_VLVgVDVuoHQngltrjtljrltrjt\jk\ckrcdrjd\jk\U>FCJF[_fofUL[?JB?FBKF=LD=?KB?[BJ[?DL?;ZbkbLdbjdmjsmf;:JK:=KC=UCBUSfxslxplupgSngWnfBCuvWRvoRWovCDfb|World Championship 24th|Botvinnik, Mikhail|1961|B12|1/2-1/2|W +FVn^@OxgEUgV?Mm]O^we>@vxDTsdT]dUMVe^;Lt_jb>FDhUSk[FnmeSeleBJhM:=MD=>D_GOqank_M>nMT@GbZGN[SJSZSLVT?HPr:kS:>NG>@vxdUNUf^UN^WNWtf>PgmWil\@A\^iW^\WN\^PG^Z?=rtL]f]=]ZSFXSV]UVd:JtuJLm\XOdvUSngLTk[R[bZOdvfSRgCN\e\G?uETVf_V>_D[cEe?[e=[?=>?>Dh>VhiHPiEdZTMvn:@jbU^e^=Fldm\GOk[T[b[>D\fCSfUFGtfDU^UNUnSBJSTLFwuV^g]?uvHdv^>G^_GHUedV_a:>efCSfgIYa^VM|Naestved|Agdestein, Simen|1985|E68i|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUul;EtmE?\ULUrt?NZdU]dSD;bZBJSbCSph@xgV^g]EK]c<`Sn`ndnTMt_OU_M=Mvx:=u]MF]TFTcT=vxV^e^UYulO^wu^XgX`nlW<;u=>=W_GOXN=EqiYUN]L]|Sochi|Adorjan, Andras|1977|B53|1/2-1/2|B +DTn^;LmeEUsm@OphFVwp?Fxg>@vx?>ldF?jZ:;wvU]m\CKtmOEpiBJd]T]vwETi<==vfemVdT^gm^dkdNUucUcmcS[d[?[rZ<;xp=Eqa[?ctEmte;=e_?Tfg=?Z^TM_N?gpgIQaYmUg`MTo_@G_WTMN]UV^VMV]gVDgmDVm^Vk|Sochi|Ftacnik, Lubomir|1977|E96|1/2-1/2|B +DTn^HPsd?Hph;Lwp:;meCSjbBRxgS[b[R[dUFNUf@Fvx>@wvEMf\NVgaGW^WPWo_V^e^@w\?>tf<`g_>^_hOYh`^`\nTfn`fovo=aogaOgnY_nw_e`g:>smOK|Capablanca mem|Broderman, J.|1963|B15|1-0|W +EUxgDTph;LwpFVmeGOvxGvN:=gXOXpU=UuUK]NFGFtXF>rv?FvFLFU]|Upsala, Olimpiada Estudiantes Equipos|Szukszta, Janusz|1956|E86|0-1|B +DTphFVn^EUxg@OwSE@`EDvfMOk[FH`^Hxtk]LldT[^IDK|URS-ch41|Polugaevsky, Lev|1973|A10|1-0|B +@OxgDTldEUm];LnfFNsm?MweNV]VLVgVMVvx>@qi=Ff^U^m^O^e^Vd^I@IulmM>NdmN>wu=MmM>NMUNPU^W^ph^L|URS-ch sf|Koblencs, Aleksandrs|1956|D46|1/2-1/2|W +FVldEUm];L]VLVxgVgpgDLt_@OulHPsm?Hvt>@nf=FweLTd\CS\ST\enOY_hYhqh:;ms@vx@Ak[BJulW^e^OYm\<`luY_t_?_gm`nunL]ne=Xph:?ogIYxy_Og_V_e]_hwOhpyxMqxq?O\VYamgXhqxairjAIjnOQgqQM]rhVrVMuxopx2ogueg_xh_WHPWNeMVMhMNG|LAT-ch|Pasman, M.|1953|B93|1-0|W +EUxgDTnf;LwS=Kl\U\sd@OgV@tb?=unKRbkEVd^V\c\GWkdRD^hDEhYEengHPrs=Ewte\dO\jm]:?srjUgUNUOFEFY_T]f]?=tTL]_UFNUDNMrv]NDNMNvrNMTtBJqaCSxq@GtD=EDGo_F[d^GNxuW]U]V]_WNFf]F=^T[T]TCE\M=Dc[A;usDLne;[s[LTedTM[KMVKJVW|URS-chTJ|Etruk, Rein T|1954|E25|1-0|W +FVl\@OnfEU\UOUsd;LjbHPme?Htm>@xgCKwnLFrtDTk[T[dUFUb[wvESuc=EgXUOmd:=mf^UfF=?S\U]FB;LBb]MbcL]ck?=qiMOkr=M\wIYt<@IrdIH|Candidats qf1|Polugaevsky, Lev|1980|B80|1/2-1/2|W +EUxg@Ol\U]nfDTf]T]me;Lph<`qi`Yh`YPgaFNaPIPwp=Dsm?MmgOEvxETunBRtm>@rs?>kcNVwvL[m[R[gXD=nm:jmj=XsuX_v^T^p^GW^U@Ijm_mum>:\TMTUC:rxpTFCgrsguFXulsvmuvnlsnkpgXauwIQ|Las Palmas|Tatai, Stefano|1975|A61|1-0|W +FVl\@Onf;LjbEU\UOUul?Msd@k[UdldBJw\V^tk=OdOHO\NGNg]LVvn@G]cV\kdCSme^eneNVf^?=enGNytIYtl=@phYadvahqh@`og`Hcm\mlm:ArtAqneqymuH@voyqumJRed@:tsqph`R[b[:ZscZrofphmohxojrjfxjrxorwckNGdeGPenwykcyqnwPGwxqAofGNckA:xw:AwpNEkmA:mk:bfmENpobeone]md]\neNGkcGPdmM?cs\]en?Qmd]\nePGsyQ?ysGNsk|Candidats final|Spassky, Boris V|1965|B48|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEMsm;EtkE?m\KDwv?PnwCS\mDKbZBJl\O`e]V]mcS\c]MUqi`oxoU^w\^gv>=>ugPVgn>FruF[nV[kow@gvBJrs:;k[@vxLV\UNUc]=Fkc?=dZKD]SD;tbF>rtVLbkO^S]LVo_VLng;M]LCLg^U^u]M?]\BRwu=utu@wpEMn^;ExnETvxOYtfGW^WPWe]TN]VMVu=?=ru=>wvDLftYOpiNTk[T^[SH?ip?[SLCLd^O^p^W^tmBRjb[burbTndT]d^]r^O@GO>r]>MGNM<:@gVEUk[RKm]U^tfDLV\KDfX?>wnFyvBR_WNEngKZru@HueE>vnR[b[ZK\TKEf\FngnH?ef:;ng;:\MEVgn>Ef^:;p`CK`X?HqaKT[TIQohQXaX;ch_ciXOHO^Via_hOVhaEW|URS-ch46|Tseshkovsky, Vitaly|1978|C82|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tf=Fwn?=vxDT[TKTn\@w\DL\jEUvx<`qi`Yk[U^p`^gugV^gpRD`YOYd^Y_pg=awv_ixw;Em]:>tm@AwpGWgiaipiW^ipD_ru_mumEOl\O`mn?_]ULU\U>?n^_opxoj^`IQ`]?ovuoGUMGEutAI]UjbtDE=MEbgDCBJCKgGKM|Tallinn m1 |Keres, Paul|1959|C78|1/2-1/2|W +@OxgDTnf;Lm]EUl\T]g]FV]LCL\ULUwS@kcBRtk?>rtTMmsRZsdZcdUOUuUcjwu:JkrIQqi>@xg:=nfMUvxU\e\T[b[BR[RLRdSC^suECmR=uwuKRgv^pvpFLSMCDMSDVSMVTM^TK\TKDo_?;uM;@SLCLvxO>me>Ml\MWunU]kt]ftfFMsdGOVgWfnfM_fT_MTfNVd^MFrvLT^d@blWPwe?>umOY_hDLvt=Og_P^e^>^yv:>meCStsHPl]S[]cTMcm^FmgYhqh[dedOdkdFCsl>;usCsvs;slsGOsl@GleGNg]NEd\MT\ULU_WEMWPIPh`TK]gMNgaPXaWNVWFVNFLNML]K]e]MLf^U^]^LM^WMFWPFNogNFPHFNHP|Riga Interzonal|Larsen, Bent|1979|B16|1/2-1/2|W +FVl\@OmeEU\UOUxg;Lnf?Fwn>@vxGWsddUNUmdFMph:=jb@Art>Pk[V^e^W^gaPXulXQapQilk=Etu?Wp_M_f_^fogWYneUceWiWuEWEkcfnwvL]d]E]xpYqpq]oqiovcGvyi`IY`Xnv2G?AI?WI@W<@GjbV^e^O^tm?Mpg>=vwLVgpV\mt<;lvWipiEiu`^o|URS Ch sf|Giorgadze, Tamaz|1956|E87|1-0|W +EUxgDTnf;LwSFNvx@Fm]BJSnT]f]HPld?HjZ>@sbGOd\@Abl=Dtf?=rtU\n\NVwv<`gXOXu`V]fX]eXFLF\e=el[DE`XFL[eEetuelqa:?umlZaYPYmEH]xyZSXQSWEIA@IDL=vfYafgWsDt]Hg?|WchT U26|Mititelu, Gheorghe|1958|E46|0-1|B +DTph;LwpEUxgFVmeGOvx@k[T[b[DU[SLRd\UfofBJ^dJSZSFTxoESdS=eueN\ed\SwsSLgm?=pL=movmML^HPh`@?sSOW`WPW^WRLdeMeWeTfe^LF^If]I^F@vn@Ong?HScHQcbQXbBO^g^X`BH`iHIi`qi`h^WhgIHKSiaS[HC]dCFd]FC]dCFd]aY[cFCV^Cc^fcb]kbego|Varna olm|Sanguineti, Raul|1962|E83|1/2-1/2|B +EUxgDTph;LwpFVmeGOvx=_VOVtm=Dun?TxyA?w?T?rwHPYg?Fnv:?|Varna olm|Milev, Zdravko|1962|E83|1/2-1/2|B +@OxgDTkcHPtk?Hl\>@ph;LwpEU\UOUkH@HutCKtkGOsd@SE=EjZCKmekbBJ\JM[bcCJtL^mcZmgxwgqwxqgxw=]LJ|LAT-ch|Skvia, H.|1965|B17|1-0|W +@OphHPwp?Hn^>@sdDTme;Lo_EMxgL]dnFVvx?>l\]nunV_h_MU^VU\e\?wpD\n\<\vfHQfe`WdmWemQe^UM?gME\]pg^gVNgL|Cannes schev|Miralles, Gilles|1989|A26|1-0|B +FVl\@OnfEU\UOUjb;Lk[?Mtk>@ul?>sdUdldBR[SL]xg@gVEUk[RKm]U^tfDLwn;EvxKDo_EKumOUdULUbZGOZROVRKDK_V@]UFNwn;JvxumJT_VEMVO=OnST^d^>^SLCLULOkmU^Fwv:bjutjp>Fg_tu]VF>pq>F_^uvqjF>^Uvwjk>FU]F>V_>nk;wp_fnj;@pg@?gh]^jZf]h`?@`a^Vai@HZ[V^ia|Niksic|Larsen, Bent|1983|A13r|1/2-1/2|B +@OxgDTl\;LkcFVmeEU\UOUtk?Mnf>@wnMDvxGWsm=FulCKwvwpC:rtBRe]V^gaO`]TKSog`qg_q`pi`fvfD_h_Fatw>NxqNPldLFwxa_fh?@mwFUdVPhxh_VkVW_h`^f`x_giNgox`fnN@A@`H@?whnv2HXvxqiow2hwxXVM?>whU_iqXaqxah|Wch-blitz|Gurevich, Dmitry|1988|A34|1-0|W +EUxgDTph;LwpFVmeGOn^U]gal\FPgvPablHXxyA@noapvpOW^VMDk[T[rsX_t_DV_VLVo]E]l]VesuN\]W\UWh>nhnUpyxpwxw@?wx?=uwBRwGeTGI=mn_mj_Ujl|URS-ch23|Spassky, Boris V|1956|E80|1-0|B +EUxgDTnf;LwSFNvx@Okc?Mtk>@m]BJSeCS]TMTsm@wn?>k[RKvxDLmeIQgmEUmc;E^ULUe]KDtfV^umEKf_<`nS>Fwv:l\FC\Ua=p`WIwt2P>|URS-chT|Spassky, Boris V|1959|C92|1-0|B +FVl\;LsdHPph?HwpEMme@^WNWUO?OtfWindipxp:?unOWruL=e]V]f]?>neH]e]=L]mLVmU@?ogCKkcEGuvGUdUDLU[BR[lWGg_V`qi`Ql]QW]WGWvuWOwv>Fpg?>vF>Fh`O?g^FNiaRZ|URS-chT|Smyslov, Vassily|1962|B25|1/2-1/2|B +EUxgDTnf@Om];LwST]f]<`smFNl\?[uc[mtmU\SLCLc\`gpg>@yx=M\TMT]T?>vtOUx`>;m_;S_MBR`Z:BueBCecCBcSLSZ]RZtlGOkcZbTLBJLDUDMDJLlmLD]=@G=:S[:;DEmfEu;[ur[CGPCBrjg_IYfgjrc[bjBRYaR:ai:RPG_WNW|URS-ch50|Lerner, Konstantin Z.|1983|D38k|1-0|B +FVldEUm];E]VEVsm@OxgVPnf?Mwn=Fvx>@kcDTtk@nuEKweKUxnCKvxWF=Fnh\dkdUdueCUtXU\eWdnxyn]WiIQsW\wWvXmvu|EU-chT Kapfenberg|Holm Petersen, Sejer|1970|C09|1-0|W +EUxgDTph;LwpFVmeGOvxFpgL;lZKSZS;JgYJTk[TcruQ_Y`<@SCFO`W@HCScmutmgxpgapx_twtHDtDMDSJDKJKBKhaA:aYOXWN:bN\XYo_V_^VKS\SY`xobjov_g|Candidats Tournament|Gligoric, Svetozar|1959|E89|1-0|W +DTl\@Osd;LdUFNUO=OphCKwp@tmBRmdEUdH@Hst=M\UNUi_U]ucL=pC=Cn^]fof:=wg=Ef^M]xp][clT\l\[ktlk]\S?=l\]rSKCM\DrVDTV]KLECTUCkpi][_NH@LD=?UM|Cannes schev|Anand, Viswanathan|1989|A35c|0-1|W +EUxgDTph;LwpFVme@Ovx?Fn^U]gaHPsm>@jZO>m\FXo_V_agXQh_@A_WQHgXGOXi>Mi_M\_PIPWPA@uY?>YI@?tQ?FIHFMwO>NONZ[>F[cgoqhowckFTB:T?:B?TB:T<:B@wn?>k[RKvxBRtkEMme;LdZKB[SLFl\@h@=@dU:?ml\U^UIAf^@XlnAHbZ?GphQYxpYascH?cgGgng?FpiahghXthHF>HP>FPNF=NO=>Og>Fgot\oaF>aY>FYXF>XW>FSK\ci`cu`iuciacKWNF=|URS-ch44|Zakharov, Alexander V|1976|C88|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EU\ULUul;EtkE?rtD;wv?Pph<`ZTCKTc;Mcm:@tmW_d^_fofFavu:;rtLFwnFWulaFlsKZk[ZKnu@AucWatlagmtgX^TFTlTXgJSE=SL;@tQ?Gru=Kdn]Tnt:>tcT?QfKDwvBRjbRZct>:teOYvnYHfmHNmd?HuvN]d]V]\TDRg_HOqiRSpw@HnNSRh`H?l\:=`XOHNM=>MEGEv>?>\@H?eVEH@NHFN\FV_VRT\Z>EZ:EDk[TFo_IQiaQXaX?HxoFN:RD@wn?>k[RKmeDLvxIQqiEUwv;EnwE?tk?PdZKDZTDMTc?wn@AbZDER\MDnu;>mtIOgmV^m^EWvnOU^MDM\M>nlnWVM^Ud^d]dn^V^e^?=ulPVxwVele=ewne]ZRdlSKBKRK]^ne^[el[KldT\tfKLf]A@o_LJdkJPp`PNkdNnd\nq`XQX_Xqi]kih|Candidats qf2|Gligoric, Svetozar|1968|C93|1-0|W +FVn^@Osd?[jb[RmeDLtmEUxnRKqiOYdZKDl\U\e\=OnhY_ug;Ehn>@ph_nwnONruCKg`NFm[LT[mE;`aFaha;LZdL]dUD=aYGWne=amfW^e^dkvmfm>VU_YGkd]g|URS-ch41|Keres, Paul|1973|C75|1-0|W +FVld;Lm]@O]VLVxgVgpg?Tul>@tXEUnf?>smIQXaTfof>fvoO`g`=aof<`m^:>lpaXfeU^el^fyx`WweWele>=elXWltHXxu=>plW_lnDTkcGWtk_^uM^aME>NruaonofoECNnkb@?uwX`CBQYBIW_IY`hqh_hYXnvwo|URS-chTJ Coop|Aronin, Lev Solomonovich|1954|B10|0-1|W +FVl\@OsdEU\UOUphDTxg;Lme?FdU=UwpEfmRZnf]fmfKStltvS[pgM?wp?Qe]T\b[Q?[S?[SK>fvf[mfnZbKDEDkb\dnFDMFCdlCKMEKclt2cCEIA>GAIG@IDm[D<@H@unEMme:;qiLBe]CSZcT]f]FMTcjc;=MD=UrBC?DVkVvVUVgV@vxTKmeIQdUNUtfGWjb=OZaOGrt:>fTV^e^>^aiKTtT^nk[BJwuU^TdGOut?=pwnkw\@AiYks\wW_Y`=uts^s`YsPYTP^TYu=d\^gYgLVgCV\w\O]CD_g\w]OD\QY\JOJwJ=uJwHXqaX`bZus[SsrSKrZweZrxqrjqxAHKCjke^HO^LOVxyV]yxk[L>[C>YCsxqswY`woqiow`gwgi`g?`X]VXP?@PG@haYhiGPVNYQihPING|Kislovodsk|Stefanov, P.|1966|B35|1-0|W +EUxgDTnf;LwSFNvx?Mm]T]f]@Fl\BJ\UNUSLCLkc>@tbMDsm?>wvfvfW^m^U^f^E`^_`_ue:=eJ_^J\D_bT=:T[^sgvsjph_m[mjmvgmRgVRvxpv^og^Wc[:@vx@Akcf^W^d^O^p^E`^pFEnd`Wd^W^v^V_^_GV_?H?\TCKTLEFpi?Hxp>?w?F?mnIYiNAIjZ?Fk]HOc[VG]oGXZRIHRJH?n\XNUNF=\^?HofMU|Tbilisi|Lein, Anatoly|1969|B23|0-1|B +DTnf;LwSFVl\L[sdBJSZCS\S@bZ=:ogO`f^@A\UGWucCLUL:LwxW^d^`VqaVgpgMPxoL^yi^n|Wijk aan Zee|Van der Wiel, J.|1982|A13|1-0|W +@Ol\DTsd;LxgHPm]T]g]?H]l>@n^EMwnOEtmETogGWvxW^g^?wnw@ul=Fkc?=tkNVsdknOEg_GO_WNGh`HXWPIPwoGNqi@Huw>Ane;?ehPXRm?GogH@goE?he?PwvP_m_X_ogF[vnBRpwGHnp@GenGFnuFMut[TtmHImeT[pmRZwpZcjcA:muIBg_V_e]MF`XOX]HF>HPNGPL>F^VGNpUNU\UBJUMF?Ll[K|Manila Interzonal|Lin Ta|1990|A34|1-0|W +FVldEUm];LxgV^gm^fof?Mmg@OphIYd\U\sd=FwptuCSnY>FxwETY`|Tallinn|Hazai, Laszlo|1981|B19j|1/2-1/2|B +FVnfEUm];LwSV^tm=XSLCLph@Oqi?MxnIYn_Yah`O`yxGWunBRkcRZl\ZcsdckrsEnl`flZJSxXSZofZlXHENRDlsHPNGPMsjMEGPU_PQEMQIMEI@D;ks2vos;_N;koxktxotmoxmfxqfhqyhiyxihxyj\EHhHNH@H|Framingham CC sim|Berube, Dave|1988.03.08|C16a|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBR[SDLmeRZSLELtf;EfK=KumETdu<`uf`gngTNphN]gp:=xyKDo_CS_W=Eh`IQqa>=ruDMld]cmnOI`XMTXQGOwx@Api=@xPTduxctn`tefudvQH@HxvevuovloeI?PHEH`YA@eT|Sarajevo|Jansa, Vlastimil|1966|C90|0-1|W +@Ol\DTxg;LkcFVsdEU\UOUtk@jb?=gxF?kr:@rt=@sdUKk[<`wn=Ftk:>meBJ[SJSdS>:vxKZktMTrsGWe]V^n\@AgmTMSMFMsCZK\SLBm\MUSJULlcKECB:BJSLC]UETc[CUtkDL\KUMS\?=qi`YkrIQbZAIZRMFrdTe[ZW_ZLYnK<=@wn=Fqi`Wvx:=tm=UucUMm[T[c[O^[CMPwtWinwFNCD?>tlIQrtipwpPpxpN`pw`gDq>Nq_gywnyY_gYSnvS[vwNOgu[SwvOPl\|?|Benko, Pal C|1962|C10q|1-0|W +FVl\GWm]V]xg?[tm[mumDTnf=Fwe]fofEMvx@OgX;Lsd>@eWFVmUVU\U@wv=Kld?>smBRrsRZc[KDgnFMneZbktNV[SLF]VMVd\FPSKDMmgO^ul^TePIPvV>Vt_VnlnM_\U:=su_MnfTEgXEOfcMVXgVMueOUcu=EgXMViaGOXgVMucMK|Spartakiade tt 8th|Beliavsky, Alexander G.|1983|D58m|1/2-1/2|W +EUxg@OnfDTm];Lwn<`sm:@rtMbtvDlm_lnvnO^wvb[vwGOqi@GxqHX_tIYjb[Mph@vxEMqiBJjbCS\jfpJRjcCJwv=Mcu>FgXS[b[R[X^U^_W[dkdJerRFCurH?RBCBrBMLWPIPBj?MpfMhvrLOmvOgvhghfp^fjUhoxqew|Montreal|Kavalek, Lubomir|1979|A29|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQmeDLdZKDl\EUul;E\ULUtmE?rt?NZdU^e^N]g]V]dSDKne]opiogZug^uv^WipWUpiHXh`QY`YUgvhX`iaKo|Moscow RUS|Ehlvest, Jaan|1988|C99d|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUZd;E\ULUgmEKbZDMZRM[uc[dcdKEngCK^UNd[UL[\:@tfGWulBRsmucS[TtRJcUL]t<]gpg>Z@wn?>k[RKmeDLvxIQqiEUwv;EnwE?tm?PdZKDl\CKphP>mo>^op^\[dUE|Asztalos mem|Ghitescu, Theodor|1963|C93|1-0|W +EUxgDTnf;Lm]<`wnFNvx:@uUNUBK@wpDTvx;Lnf<`qi`gugFVsdU]d^O^g^]ftfV_fTH]T]=]xy]^p^_hldGW^U@Hrv:>yp>vwvW_iaIQk[?WU^WOe]CK^gPXaYOMv>HG>Vk^eme=eneGUelclkl>=yuUulu=utu@]TMTkc=FtkU\S\NVsm<`ul?=m^`gpgO^g^Faxy:@ul=Fwu:;kc?=tkNV\ULUsdU]dUOUpUMTU^IQnf<`f]T]ue;@gLCLugNV]V=mp`OErumuvuEVkV;VZTIQTE?@ld=DkcE`sm;EtkFV]VEVd\Vgng`gugU]f]OYruT]ph:=wv?>ge>vuvYOmgO`e^IYqi`O^eOIkb|Candidats Tournament|Nogueiras, Jesus|1985|E11|1/2-1/2|B +EUxgDTph;LwpFVmeGOvxF\<:@gVEUwn=FVe[dkdU^ek;Lvx?>k\=>tXOXuZDLw\R\Z\XmrwIYqa>^phmn\[^aha|World Cup|Portisch, Lajos|1988|C67l|1/2-1/2|W +@OxgDTkcHPl\?Htk>@phCKwp@vt<`d^O^m[^o[?oux`uf`H@Al^:?^fAHfX|Leipzig olm fin-A|Fischer, Robert James|1960|C17|1/2-1/2|B +@OxgDTnfHPm]?Hwn>@vxEUld=DkcCKtk@phUdmd<`wpL]d]V]vx?>jb=Ewv>FgmDLpgTKg`E`n^`uvu:=rtGOxpBJo_KBpg@Guv=@vnHX_X@XtwXSm\Scg`GN^VFH`YOVYQHF\VNMV\MEwvFnvnB;nm;DmoCSoGE=\mckmgLTQIkpIPJRGWDMgXpqX^MF^Tqmh`S[WU=>b[R[TNmeND>?UW?@DUF=U[efWUfNPWNOWVO?|URS-ch sf|Renter, Raul|1955|B57|1/2-1/2|B +FVl\@OnfEU\UOUxg;LmeHXjbX`gm?HsdIYulYam^GWdU=U^dUGk[@XOFOsm@Ajb:>M>|Erevan, Cto URSS|Doroshkievich, Vladimir K|1975|A68|0-1|B +DTxg@OphHPwp?HvxEUme;Lsm>@n^FVldIQucU]d]T]m\O>tm>M\M=Mwt:;gap^I@^WLFtH?_VUFW^GW^gKkV]kl]BljBTjrxorjofjJe]@GgYGHfeFPYP?T]THPe]JjTLjl]Ulm|Moscú, Cto del Mundo|Botvinnik, Mikhail M|1960|E69|0-1|B +EUmeFVphDLwp<`xg;Evx@Osm?Mn^>@uv?>qi`YgaETmcTNaWM?tfU^e^BRjZOEog=DvdGOwuYGpw?[de>=en|Barcelona|Rodriguez Vargas, Orestes|1992|A48|1/2-1/2|B +FVn^@Osd?TxgEUmeU^gVTovo=]tf]Vwn>@e]VMum?>rw;LovO`n\`f\G@AG>fwyw<`dSMFSD^fmeL[e^IY^P:=wGFG>G=]PY`YGY[lvw]_Yg_]jZ]mDSmowxogSdgophfn|Simultáneas|Miller|1988|C55|1-0|W +EUxgDTph;LwpFVme@Ovx?Fn^U]jZ<`sbOEb\>@qi`YtmCKldBJd]T]rtJRuc:;cSLBSUYgpgFOk[R[m[OF\METMWFX[TKTUVGOVN@AtT|Herceg Novi blitz|Ivkov, Borislav|1970|E92|0-1|B +FVl\@OnfEU\UOUjb;Lul?Fk[FOtk=FsdUdmdV^xn>@n]<`]LCLwn`nlnFNvx?=d\Oknk=eqiIYklYalZN\|Moscow Interzonal|Gheorghiu, Florin|1982|B43|1/2-1/2|W +EUxgDTl\U]nf;Lf]T]meFVphGWwp@Ovx?FwvV^e^W^gX^fof>@f]L]tfFTX^<`^O=Ou`:>vw>fpU@AwOfvxp?O`@mw:>gV`nunMV]VOEo_GOVOEOtfNV_V>Vru?>qiV^noDVueVNwm^ZmgNWvuZjomLRg]WPmlR\ftO^eg\VgW^hlchWcjW]jUPN|URS-chT|Vaganian, Rafael A|1975|D36|1/2-1/2|W +FVn^@Osd?[jb[Rme>@tmDLxnEUnh?>wn;EqiE?n`NvwOPYnGW^WPWwv=@xq@XduV^e]NQnwQOqxW_wnCSvw_aufOgxqa_qy_ayqXYqxaXf`Yi`VXapigi|Tallinn|Keres, Paul|1973|C75|1-0|W +FVnfEUm];Lsd@OwSV^kc?Mum@SwBJo_^gpg=Fvt?>uvM_duJRxi_QjbLBtsBSwSESmpRZc[CKyxDTkdHPi_T[d[FDudS\pmQ?[?>?_e\ele??uvWewoO^|Las Palmas|Rodríguez, Orestes|1975|B19|1-0|W +FVnfEMl\@OsdHPm]=Fxg?Hwn>@vxV^gvDTvlb:>E:BELB:LT:BT[B][c]ucduvdlvolc|Las Palmas|Debarnot, Roberto|1977|C00|1-0|W +@Ol\DTsdEU\UOUxg;LnfU[m]=gX=Exwo`XGA?WPE>qi`VwvVGPG?GmfGWvn|Wch candidates reserve|Andersson, Ulf|1983|A33j|1/2-1/2|B +FVphEUme;Lwp@mc@IZSBJSnN`wu:=qi`icTE|Tallinn|Daskalov, Georgi|1971|B06|0-1|B +FVl\@OmeEU\UOUxg;Ljb@f^W^m^@AwnU_vx:=^TNUtvFGT^GPphUNxyNiwx_nlni`nfPGgmGUog`W^TCKTJUjkt=efo?=vnL]nf]cfe=eJDctxptcm\|Moscow-3teams|Balashov, Yuri S|1973|B84|1-0|B +DTnf@OxgCKm]@wv:@wo?=rtEMjbBJk[=@smIQX_?>ulE?ru?P_fFVwvVYog^g^O`pg`fgYfl|Skopje, Olimpiada|Timman, Jan Hein|1972|A04|1-0|W +@OxgHPm]?HphDT]T;Jtf=Df]JTsd>@]OHOdUDMUOMOldOKkcEUuU@un=Kwu:=l\U\gLKLc\=@xg?>sdEMnf;EwnBRvxETruVjb:;lsTNc[R[b[N]u]CKsr;>rBO=wuHXgU@H]mENUL>?\TKT[T=;BrGOTMDMmMNWphWPMEPGEC;p`YPm^ONk[BJrsGOgmOW`WPW[SJSsS>?lcCK^hFaSU=UhW?Wn`aovuV^ywLFwoIY`WFWe]HXopX`i`Y`uvWapqagmg^gqA@xnU\e\EK\cnhCKwuGFogFvuv>vhwvnjbBRqaRZ\dnkwfkcdcZcf\TZ\mckmsDTxoT\of\dfe@G|Amsterdam Interzonal|Porath, Yosef|1964|C09|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEMsm;EtkE?m\KDwv?NnwCS\fLTph@wn?>k[RKvxDLm]V]g]O^d^>^ldEUne^>uYHPYQ@jbBRulIQsmGWwvFP\TMDm\=Ogm@vx;LgVLVkVCKo_VH@Hme>Osm=DuvFVva:>p`O@_WGOf^U^g^C^m^PXaY>=qaXaYaIQxp=]pgDLgf?=wyLUruKSaYULYPH?`XQXyA]^e^=uP@|?|Leonov|1950|E18|0-1|B +DTxg;Lnf@Ol\HPkc?Htk>@jb?>meEU\UOUkH@HwnFVul=OvxCKsdUdld=vuFUrtJCngNF^mGOm\VOHOnfNWmgTfof>fvofeutW^yueutu=@umEMm_MT_fTlfnlTnfTMf_MT_fTfof@h|Herceg Novi blitz|Ivkov, Borislav|1970|B06|1-0|W +EUxgDTnf;LwSFNsd?Mf^@F^UNUm]T\vx>@SLCLdn=Dnh<`qi`EhYFPumGOkc\cjc?>l\>^\TM_mRD@meDLtX?>wnIQXaRdkdEU^ULUvx;LwvfofO^weaoxqohqxhfxqfhqxhoxqU\[\^m\UPeUeGWCSmwqywf|Alekhine mem|Kuijpers, Franciscus Antonius|1963|C87|1-0|W +EUxgDTnf;LwSFNvx?Mm]@Okc>@tkT]f]Fg`Y`wnLVyQHQuy:AyYGOnuCKkcFGulGHlWKS|URS-ch29|Averbakh, Yuri L|1961|B12|1/2-1/2|W +FVl\@OmeEU\UOUxg;Lsd<`nf=Ejb>g^O^ruEGmtGYphYPndW_]U^dldLFf_X_de_hqhPhehMhwGFUvg>FGWUfu=<=WS=@wn?>k[RKvxDLm]V]g]O^d^>^ldEUne^>uYHPYQN_WPWeWNPa`@AwxEO`_PX_X:>XhO^W^>^qi^FyqFHxwHhw?h@?G@HG?H@?GCKGD@PiaKSaY|URS-chT|Boleslavsky, Isaak|1962|C89|1/2-1/2|B +FVl\@OsdEU\UOUph;Lwp@vxTKmeIQtmGWrt=OZaOGdZUFkcW_h`GPqiPIZTNUTC:>CTL]g]HXpUFUaYV]T^>^|Sarajevo|Gasic, Bozidar|1966|B35|1-0|W +DTldFVm]V]d]EUxg;Lnf@OwnT]g]?Msd>@vx?>]gBJkcMDtb<`rt=Eue:=wuD;esEDph;BqiBfi`DhxyhiyxO`uw>VofihxyVY|Gori, Memorial Karseladze|Chikovani, Y.|1968|D42|1-0|W +FVn^GWm]V]^VEMxgMVgV@Ow\=Ft_;Lun<_VO`V]HP]APWl\?TAd`ok[oevne[yw[UdHUfw_=@HVflru@pngpoghonmglfutCK_af`V]TMhiJC\TM_TL_tLC@vxEUldCKkcwn>EneGWhn^oemELb[o^me^TelT^le^oemIYqiHOml|WchT U26|Panno, Oscar|1958|E07|1/2-1/2|B +FVl\@OmeEU\UOUxg;LjbBRsd?Fph@vxGWtXUdXF=FkdRZus:Jd\@AskN@rsJKkdKswsCKnfV^gmLRe]?:sSRcmsFNpwIQsmNMms@NwnDT]TcTd]:=]M=MsdNESsMmxwTcwvmldUljUKELsujbuMbrnuLCKZctZTteMe^eTCA@|Jurmala|King, Daniel J|1985|B70|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;EtmE?wvCKph<`ga`nvn?NagO`\ULUrt:N|Alekhine mem|Matanovic, Aleksandar|1963|C97|1-0|W +EUxgDTnf;Ll\U]f]T]me@OphOEwpETvx@mgBRjbR[b[LTkb:Z[T?:vlEDTLC=um=LbTZrwr:rlrFVrlIQxoLRTbR\e\D\gV\lmlWlbkHV_V]eof@?kd?FqaFNf_NUh`U\dmlu`XQYmR\]Rm|URS-ch23|Antoshin, Vladimir S|1956|A61|1/2-1/2|B +EUxgDTph;LwpFVvx@Ome?Fn^>@sbVdC:vu|San Francisco|Browne, Walter S|1991|E94|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb<`sm?MnfGWucUKcN=FNFMFk[BJtkFOrt>@mcKZkr`YwnV^e^OrcrW^gmYPrc?>n\@A\ULVvxDLU^P^m^CS^TZKcRK\o_\R_VR\VN\fwGfUtwIQGC>FCFUFwG:>TJFUJTA@xo>?Gg?gog@?g^?F^WUfWPF?TE?FEVFNVLNULBU\PH|URS-ch29|Shianovsky, Vladislav I|1961|B94|0-1|B +EUnfDTxg@Ol\U]f]T]ph;LwpFVmeOEvx?Fsb>@blBRun?>kcIQwvETtb<`qi`YnmF?bT?Tjb=OgqOMp^YP^PMPc[T?qgV^e^:=[SLVgV>Vme=>bZV^v^>^lvPNxp?TrtCKegT[ve[d\TKTeTN\T^\Zg`Zb^O@?O>bt`O?FOUFM@smBJ\UL]f]JS]TMTmcTKUNv>=>kc\Utk:=uvU^v[^gpg>V[SOUg_V^]n^gk]UdSKdnxw=>]fn_f_gy|Riga, Cto URSS|Tolush, A.|1958|D02|1-0|W +FVldEUm];LxgV^gm^fof?Mmg@OphIYd\U\sd=Fwp@xg=FnfCKwnFrtTMmdGOgmLVo_VEmcCUf^U\uMFMd[MDcRDKkcETc\T^\S:@tfO^gm`Wm^W^ldLRog^PfoCSne:;ePIPjbR\vnBRnl?@wnBJvxOQul:>m\NGe]V]\MDMk]L]f]U_n\MU\jGYgV>V]VYglcgpwvp^ch_ixwW_h`iowoQqow^evn_gjU@AUgenwvng|Leipzig, Olimpiada|Najdorf, Miguel|1960|B82|1-0|W +EUphDTwp;LmeFVxgGOkc@smCKtk:Zc>Grt?=cZL]k]=]ek<=m^FWnf]utu=uZu;VkeVD^mWMe_@?uZD=_NGNZBNVpUVFB:HPmc?HbZMWxw=D:@HQcm|Skopje ol (Men) fin-A|Holm Petersen, Sejer|1972|E82|0-1|B +FVl\@OmeEU\UOUxg;Lnf?Fjb>@smGWk[FOtkBJul=>wn@ArsCKvxPnw:>f^U_xyPY^WYWm^>Nph_iwpL]g]V]ogOVh`W_pi_gipg_^hNQpC_hvnQisxh_kt_O`XOMC^DT[TKTnpT\e\]eljV]xuMV^UVWpmig|Candidats Tournament|Smyslov, Vassily|1959|B84|1-0|W +EUxgDTnf@Ol\U]f]T]ph;LwpOEvxETkcFNme?FtbBRbTFTsm>@wv=Dun:;gXIQX^TF\TCSTKDKm\KJrt@wvOEsb?>blBRkc=DgXIQXG@GuYG?pUL=YQFOQI=No_ET_VOVtbVOv^:Jrv@dS[TmdU]d]=F]TFTuMTYyxYgwngWneO^e^WSM]HPrt@wp<`ulUKvxBRkc=Etk:=gvGWdnKUqi`YvgENl\@AndV^e^W^gvLV\^YP^U=UdUFMk]DLU_Nc_PIPo_V\vg\frscbsCfwxw?;|?|Parma, Bruno|1971|B30|1-0|W +DTnf@Om]EUxg<`wn;Lqi`YvxFNgVYnun=DVLDL]T?Tkc>@tk?=smCSl\S\c\U]f]T]k]=]rt:@vxGWk[BJsmtTUjvtfwnwNUe]@A]V>=tdCKTLULVN?ONF=>w\|Riga, Cto Letonia|Kliavin, Janis|1958|B86|0-1|B +DTnf@Oxg;Ll\FNm]EUsdT]f]?Fjb>@weU\e\CKvx=tXGOX_FV_f=DogA=vn=Mk[T[d[:=ytD;RJC@vx;LneL[e]rsOdmdNUnjU]d]T]wuW^sc^gpgeTcS:nCEkc?MtbA@meEUtm;L^UOUwn[dkd=OvxV^gXUdX^d^e^?=utOFog^VOV_V:=VhDTruMWeS>?u=?=dVW]SeNWha=?eWGWl\WVvV?gV>g?>^?_^_]nxwn_ah_eh;ek;Bk\wn@GbZGNZRKRBTNUT?HPne\VedV`|Stockholm|Book, Eero|1961|C66|1-0|W +FVnfEUm];El\@O\UV]u]?T]e>@xgEKsdKUdUOUjb?>el=Fw\DLvx<`\ULUg]T]f]`nwvnuvFulF>:>tf><|World Cup|Kortschnoj, Viktor|1988|C07|1/2-1/2|W +EUxgDTphHPwp?Hvx@Ome>@sm;Ln^FVldIQucU^e^BJc\=F\nu=>=qaGOaXQXgX=e`nefnfOX^VLVpU@?WOHOfXVgwgFvxqvnXpnpqp?FkccKMDKJRZU:]o^VohVUhoJBDKBCKJUM>PCSPe:Uo]MD]VDLV]SKJRjbenLCneKS|Bled|Donner, Jan-Hein|1961|E69|0-1|B +EUxgDTph;Lm]@OwpT]g]HP]LCLl\?H\UOUuZ@sb:;b\;[ZlEN\m=Krs[]jbUOkc?=n^O`m\KJtkN\c\]mlcLTkH@Hcd=]wumusuJOum`om]T]dmo`\T]eTLO]xw`qwv]x|Riga, Cto Letonia|Zeid, T.|1955|D90|1-0|W +@Om]EUnfDTl\T]f]<`wn`nxnU\uZ;LsdFNZ\?Fvx>@tf:@wn?>k[RKmeDLvxIQqiEUwv;EnwE?tk?PdZKDZTBRe]CK]VPVgVDVkV>Vu]VXTZ@I>GJbl\U=GWIAW^bTgVTxhixwiawoa`ox`YxuYaHXahX_ha=@VPAH^FHPFNPINFIAFV|Budva|Gligoric, Svetozar|1967|C93|1/2-1/2|W +FVl\@Onf;LjbEU\UOUk[?Mtk>@xg?>sdUdkdV^g]LVme<`ul^ewe=a]WVele`WeW>fvmfNrua\yvM_ml\jle:=d]jc|Framingham CC sim|Becker, Michael2|1988.03.08|B43d|1-0|W +FVl\@OsdEU\UOUxg;LnfU[wSBJSL[Lm]?Mvx>@qiV]f]umIQru=O]n[ef]Oao_eT_WPY]oa[o]Yndn[\n_>^kcM_c\_mumCKwt:>]o^nmn>nohnFtvFvhvT^p`@?xp?>v[JR[v>Epg^XghGOiaX^h_^M\TKTvRM\Rv\K_^EMvhMEh_KZ_mZK`XQXaXK\|URS-ch25|Krogius, Nikolai V|1958|B45|1/2-1/2|B +FVl\@OnfEU\UOUjb;Lul?Mxg>@sdq`O?`VMVhPHIPHIAH@?@x@>@rV|Reykjavik|Kristinsson, Jon|1964|B48|0-1|B +FVn^@Osd?[jb[Rme>@tmEUxgRdmd?>wn;L^UOUgmCKvxFmwGWwfUdkd:>fwLRgCRCwmCTus@AsjV^e]TZjcKSd\E]\S^fofFfxw]mvfmf|Las Palmas|Tatai, Stefano|1977|C79|1-0|W +FVl\@OnfEU\UOUjb?Mme>@xg@]T=DjbDTk[TDtk<`sm`gmg;ErtEKkVD@wn?>k[RKmeDLvxEUtXAogQYg^U^n\A>\S>N]U=US\UVh_P_\NVdN<^fmsdk@xg=FnfDLwnEUvx<`qi`Y\UOUucBRm\RZcbFb\bGOwt?=p`YGe]V]g];Eb\EKjbHPnw@?\m?Fm^KEo_=rtGU^h>Mf^U@iauMEKwS@\L[\SMKS\KL\cLK>G[LGHof?G`XIQXOGO^VONKCHACDN>LFclh^l^f^:JaYPY_W>FDFJKWOA@^W|Riga|Ermenkov, Evgenij|1981|B52|0-1|B +@OxgDTnfHPm]CKl\?Hsd>@wnFNvxkOL<;_>=O=eg_Xgf=O|?|Dorfman, Josif D|1977|A13q|0-1|B +EUxgDTnf;LwS@Ol\FNvx?Fm]BJ\UJSULCLul=Ktm@mfOUsm:Zjb?:rsK=m^Z\lcUfofLT^TCgpgFT]T=XxyXUcuUTt\S\umTWswIYm]:;f^W_bZ;cZRce]oemoh_fh;@I;VHPVDIHDVH?V;?F;DFOD\mk\tkmtvfvwvmjvsYayxjRskOXxpRBpiX_kcNVcdGW^WPWd\_giaV^aXW_qaBRXP^faYfn\tgo|Hoogovens|Kortschnoj, Viktor|1968|E51|1-0|B +FVldEUm];L]VLVt_VP_h@FxgIYqiFWhq?Tn^=Fsm>@unU^m^?=gmp`Y`i`Wfog:=qhGW`WfWnqTfw\LUqI@GIYfm^mFE\e>vhv=AeWAYyYUNWNENvhDLjbG@YXNOXYPFhVOPYaPxtlFWa^LTd\Wflefuenuo^fxpnvHXVMCKk[X`g`pxmwo`fgx][T]^|Amsterdam Interzonal|Foguelman, Alberto|1964|B18|1-0|W +FVl\@OmeEU\UOUxg;Ljb?Fnf>@wnGWvx@AulBRsdc[R[b[N`gqhfvf`Nfv?GqgN`[SL]g]V]t\GE\T>VvtVTtTHQktQftf]fTlAHxqEGwn`NqhHPngIYe]PXlTXQTdQXdfN`g`Y`^VGEVNEFfVXOh`FH`gOFp`HI`XIyg`yx`YxuXPFOYQuyVYyxQIxPYVPHIQHFVTONQXNMXWF>|Brussels blitz|Kasparov, Gary|1987|B85|1/2-1/2|W +@Om]DTnfHPxg?Hwn>@vxCKl\@utFOgXN@smFPk[GOmcNVwv:>cT>Fph?>uePAvfAGrvGXfnHPxpXGeJ>:jZPXqiIYTCME[SX`i`Y`g_V^SLEWd\GXJRXgRUWU\UFIvyIypyOWnf@Gfg^gUMDMCMGNMS:AyxNU|URS-ch29|Vladimirov, Boris T|1961|D01|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxEUtXCH>?HC?>CH>?|Moscow TV|Beliavsky, Alexander G|1987|C91|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;EtmE?wvCKph<`ga`nvn?Nag=Erv:=ZkKS\TOYxyEFmdFOgxU^e^N]d]=]nfONxg]ElcNcfcBRbZSZkZR[ZKDKTKLTvtEMtTMKT\|Moscow|Unzicker, Wolfgang|1982|C97k|1/2-1/2|W +FVn^@Osd?[jb[RmeDLtmEUxg;Eph>@un?>wpE?qi?NvxRKnu=MwvU^d^O^e^>=unN]g]K]ruMFld]TmfTfnf@sm=Dn^?=wvFV^UOUldIQm\;LunGOjZCJe^JS|Capablanca mem|Cobo Arteaga, Eldis|1963|E60|1/2-1/2|B +EUxgDTl\U]ph;LwpFVvx@Ome?Fn^>@gvBJunCSsm:;qiHPo_OYngV_h_m^CLt_GW^hY_w_S\c\LZ_oZbrub[hn[Zum>;p_;sxpZL_ULNnhNvhwvtiasCmntuU_@GwhCFowFnhnumwomupqJRnxu`_pIQxnPXnhW_h^GFaXQXpv`uowX`qxunvp_gpaF=^hnjh^jnwone^TeIag`gogIYTN=F|Leningrad Interzonal|Kuzmin, Gennadi P|1973|E92|1-0|B +@OxgDTnf;Ll\HPm]T]g]?Hsd>@wnEUvxFV]SBJ\UJSULCLul@wpU^e^kc\JutE?c[RDtkJ\ru==apYHu=:=\niEfXDKxy=>vuEiXfiNbZNFld>=|EU-chT|Filip, Miroslav|1961|C76|1/2-1/2|W +@OxgDTnfEUkcFNtk?Mm]>@wnCKvx@mXEUXOHOdUOkrskHgv?=veT\Uf\jl\jRfU=Me[@?utL[U[MK[UKstsFNU_RKsjBRwsKD_e?@\T:BqaRZTLCLstTeZbaYDMYPIPtsM]sc>Enf]Me[LT[lMupwELf^L^lfut|?|Tseshkovsky, Vitaly|1979|A16|1-0|W +EUxg@Onf<`l\FNwn?Fkc>@tkDLsd;Evx?>m]FMgm`nun=Fwv:=ruM[f^U^d^O^n^FXvfXP^PIPmgGOqa@GphEKfeK=wnnm>^mdE=btGFtfFEg]W]e]=>c[^]d]BJ\TKT[T>;TLE>|Tallinn|Pribyl, Josef|1985|A46|0-1|B +EUxgDTme;Lt_GOn^U^e^=uvu<`ld>@f^FVo_V_t_:>_mOEngGW^WLgwgPWuo>nruEVghW_hiT\xwnfe\V\mt?>kcfioi\ftf_fwn>]e>VngQYfWLDW]XO]WOXeuXOWfY`f`VN`fOXf`NMuMDMg^Xm^emv`fMLflvae^aXl]LK]gXOgVOaVgaOg]Oa^Uav]nvm|Luzern ol (Men)|Ivanovic, Bozidar|1982|E11r|1/2-1/2|W +FVl\@OsdEU\UOUxg;Lme<`nf=Ejb>VgU_uZ_ewe=eZleEvtYgpgLVmvEudu>Ng_V\vdA@yv?Mf^M_ts\M^WNWvFWlslM>le_MF^Mog\cmtM\FW\kWHcbHWketseVW]BJ|WchT U26|Barda, Olaf|1956|B67|1-0|W +EUxgDTnf@Ol\FN\UNUkc?Mtk>@wn;Lm]<`]TMTvx=Fsd:=dSO^S]=M]LCLgV`wv>YxwW_h_X_ogKfvf_ftf?>fmYywoyaowah|URS-ch37|Savon, Vladimir A|1969|E14|1-0|B +EUxgDTph;LwpFVvxwxV^e^W^g^>A^VMNxwiypx_gn^yi|Riga, Semifinal Cto URSS|Soloviev, Vladimir A|1955|E86|1-0|W +DTxg;Ll\@OnfFNm]T]f]EUsd?FwnU\n\>@vxCKjbwvBJtX=>gXLVeI@?IA?FAHF=HO>FOAF>AO>FOK=>X^V`UL|Luzern ol (Men)|Wirthensohn, Heinz|1982|D32|0-1|B +FVl\@OmeEU\UOUxg;Ljb<`nfGWuc=EcCUKCJ`gpg?Fsd>@tmFawp?Ovx:?dZOQZKBKrt@Ag_V_JS_gpgW_tLQPxyEi|Dubna|Platonov, Igor V|1973|B97|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>meRdkdEU^U=Uvx;Ld\UMtk`gagF>g]HPqi>V]gVds;@H;CdlCBlsxqs;|Erevan, Cto URSS|Bannik, Anatoly|1962|C87|1-0|W +DTxg@OphHPwp?Hvx>@meEUl\;LsdU]dZOEjb=DrsCKk[=tmqanh@FUMDMmR=>l^<`sdMU^lIYf^AQloU^d^QNvm:;kcFWrv;SRda=hWSW^hWUvNGNmlLT]T?TopTxpxYahw`WlkUuxpuskbaipH=F|Moscú, Cto del Mundo|Botvinnik, Mikhail M|1960|C18|1-0|W +FVl\@OmeEU\UOUxg;Ljb?TnfTKk[>@wn=OulOPsdUdld?>tkGOqaIQaYPGgaVkVW^e^UOVOHOsuEulu=uvu@IulRZigIHp`G\gW\NW_KT|URS Cup rapid|Magomedov, Magaram|1988|B87|1-0|B +@OphHPwp?HmeEMn^FVsd;Lxn?u=<=D=N>=M|Tallinn|Barcza, Gedeon|1971|A04|0-1|B +EUxgDTnf@Okc;LwS<`tkFNqi`YSLCLmeOEf^GOunNVsm?MmwT\e\U^n^=Rld>@whET^fV^c[^g[RgpyxM_hY_fkbTevnfTxpHPneTbY_:;og?=en=>ne@G\TPX_n;krxbTn]T]d]kSxtSRtLRbe\bgiaIQaXQXpqX`qag_LDGP\T>^]U`haA^\TM\DMDPWA@_`@`W`UMhpMEpx2E=2xKDEK=E=OW|Varna, Olimpiada|Hecht, H.|1962|E13|1-0|W +EUm]DTld;LxgFNnf@Osm=Dwe@smW_fTBRqi@Awn^VLVS>F>gV>VtDM=mgVODGOPg]X`i`P`GIA@CH@?H`|Riga|Shmit, Anatoly|1971|B92e|0-1|B +FVl\@Onf;Lsd?[xn>@nhEU\UOUwnnY>?W]ZdmdLVrvVPxo?Ov>@H>@JZ@AZl`gngFavnV^e^LVtm;klkEenuV\kj?=ut\mjlefyumgtk=;kjgVrs;>uUaOsCIQCD>;qafKDTKNlmVE|St del Esterol m 5'|Quinteros, Miguel A|1987|B97s|1-0|W +EUxg@OnfHPk[?Htk>@l\<`ucBRjb;LgVLVkVR[c[=Eog`W[kDT\UEUf^W^g^U^wnOUVHU_kS@Hsd^pvt:bSk?:dSH@SbpnkcnJyw_etlJburbclc:=rB=EcdGOwre[rREDd\[LB:@GRTDE:jFV\dGNjkEDmeNMT\OWkSPXdmX`mfIYe]L]\D]SDCSDCKMTKQDUfoW_QYT]YXUOXPO^ox_gP`]f`@goxp^m@?ow2?wmwqiwmiam^aY^O|Barcelona|Lautier, Joel|1992|A46|1-0|W +FVxgV^g];LnfEU]LCLmeGWl\@O\ULUe^W^wS@SEOEZL?Wvx@AdnEVLC:;CBVgpgMqxyWYyp=@wn?>k[RKvxDLm]V]g]O^d^>^ldK]d]EUne^NuYIQYWN^Wg^>gh=Ot_FyvFvdvHXphCSvdGNofNUfoWlonlenfeW|Candidats final|Spassky, Boris V|1965|C89|1/2-1/2|W +EUxgDTph;Lm]@Z\TK\aIQn^WIwuOEai=Ft_?=_MFOiYIPYaOagaPIagEO^VO`uwIeqiewrw`OwvO>MbLRb[R\dZKR[R\RvnDSnDU[UNUL[bRpgk\g_RZ|Candidats sf1|Larsen, Bent|1965|D93|1-0|B +FVl\@OmeEUxgU\gV\eVe;Lsdk[BJqaP^ru>=xyHXog^PhvmvuvXayq=]vV@kcGWtkFOul@AwnV^e^W^vtOklk=Fm^UfofF^xg^ftsgaPYv>Y>\UCKjkLFUN>LphHPNiAHipHOpLFLkdPXapOWpfWNdeLVe^VGc[GM^]MS]^SbfWQYqabS|Las Palmas|Bellon Lopez, Juan Manuel|1975|B54|1-0|W +EUphDTwp;Ll\FNxg@Ovx?Fme>@t_CKsdpi<:dSF?SDOYD>Y_h_=>nf:=ipCJwvL[pwJwvwT\gv[jtrj[rB=Mug>SgnIQxy[eve\enmMLwuLlmeSkeWloWG@IGWI@WU@AyxknB:o_f_nuxoumohmvh`vn`WnYWNYPNEPO_WAIUNO]E>|Saint John op-2|Inkiov, Ventzislav|1988|E61|0-1|B +FVl\@Osd?[me>@tm?>xgDLjb[R\TEUTM<`nf=Mwn`gpgRdmdLTvx;Lxy:=wxMNuwOUrtGWdmCKnuUOk[Njuljb[TKSwpHPe]V]lW@Gg_PWpLbemR=Uxp]fRdO`p`e^`pUutu^LogfnurLgdV>@rBG>|Barcelona|Akopian, Vladimir|1992|B51|1-0|W +@OxgDTl\;Lm]T]g]EUsdFV]LCL\ULUnf?TwSEdZTMvn:@SL[msmCLgdU\vxOUd\U_mg=U\cUcjc?;rbIQwr;Cxw:;gm;=mg=UrtUSgmCEbZNVmgV^gmLTm^T]^TEDZ\BRia_UT^DF\]U[]=@I^MSUtv|Hoogovens|Nikolic, Predrag|1988|D38o|1/2-1/2|B +@OxgDTphHPwp?Hvx>@meEUsd;LjbIQrsKB;BUOHOFOBKOdNDwiDSiESdE>KNe]dnxwn]g_NiwviNvwNiwviNvw|URS-ch24|Khasin, Abram|1957|E63|1/2-1/2|B +EUxgDTl\U]nf;Lf]T]me@OphFVwp?Fvx>@wvOEsbGOblBRgmETm^TNo_OW^oV_h_FMug?Otm=Doi@Ggntf>f]fvgPOgxWonYOPUMowYUG?|Budva|Bukic, Enver|1967|A79|1-0|B +FVxgV^g]EUmeDT]c^ele;LphIYqi?Mwp@p^PFwmOW^gFPm\P_uw:<`WEWg`WPf_M_tdCS\R@sdO^tm;J\UJTw\=Kvx@sdIQ\UOUdU=UtfUYrtCKga`?IA|URS-ch sf|Bannik, Anatoly|1955|E65|0-1|B +FVl\@OmeEU\UOUxg;LjbGWnf?Fwn>@vx@AulBRwuFOsdUKkc=FtkHXe]V^gmCTUOug>=h`AHlWVW`W=mqimlc[R[b[l\f^X`i`\[`X[sxpO>gYstTE|Jurmala|Arnason, Jon L|1987|B84|0-1|B +GWxg@OphCKwp@n^W^e^;JtXIQXmJTgV<>k[EMV\MU^UNU[TFT\V:;VeT]v>?>rvBJe_DL_N]dmdLTdOHON_|Moscow|Gusev, J|1988|A02|0-1|B +FVl\@OnfEU\UOUxg;LmeGWjb?Ful>@wnvx>Ptm:=dUNUmdFMphPQf^UN^WNUe]V]g]L]d]QingiWgUWUruUglZBJ]dMTZcgGcG@Gxp?>qaIYwvHPu=>=v^=e^_GFpwTM_^FGwneUbZCSZSJSkcDT^fMFfeGNefNMfeUeneMUogFMdvMVvoV;h`;_ov_VvoT\c\S\elVHovUNvo|Sukhumi|Espig, Lutz|1972|B85|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQgmEUmc;EngE?wv?Pph@sd@AtmENrtL;JRDTdZNLZTLgyigUiqW_f_;LwpLRpUKUmR:Z_?T_aTKBK>VaZVfKSfVZbVSbrvnrxo_|Leningrad Interzonal|Byrne, Robert E|1973|B97|1/2-1/2|W +FVnfEUm];El\@OxgV]g]EV\UOUwn?Tvx>@jbUOsd=Ful?=wu<`n`V`qi`VdnT]u]DT]mVPnhIYm=:=tmYahnPVmdVeruT\ntetltCSu=F=d]=EtlBJ|Hoogovens|Andersson, Ulf|1973|C07|1/2-1/2|W +EUxgDTnf;LwSFNvx?Mm]BJ]TMTSe@OsdT[f^[d^UNUkd>@g]?>]LCLug<`gh`nen>ntQ=?QXnNXONOwvIQhfONfK?;Kc;_cC_;Cc|Moscow Interzonal|Christiansen, Larry Mark|1982|E51|1/2-1/2|B +EUxgDTnf;LwSFNl\?Mm]@O\UNU]TMTvx>@sd<`Sn?>tmBJrt=Mg]`n]n:=nhTBdnU]f]L]n]B]ug]ktlkVgCMeCcePmt=ecZe]l\]\Z\OEwuE;tfPL\cHPutLMcZ>=hwMEZR=>qiECwm;LRZ>NmgVOgXOXfXCSZ_SUXQUE_ZEEH@AdTPXTlN^HD|Manila Interzonal|Ljubojevic, Ljubomir|1990|E54|0-1|W +EUxgDTl\@OnfHP\UOUm]?Hf^UO]U>@sdFNwnNU^U;Etf?>vxCKul^kcEOn\=EgX^>UM>?leELog:=wv=Ef_O`XNGN\N@ANELEvFELFHAHME?=_X`OeMLMuM=EXOHGMEGOEC|?|Saigin|1954|A32|0-1|B +FVl\@OmeEUxg;L\UOUjbBRnf?Fwn>@vxGWsddUNUf^UN^WNWtf>PgmWil\@A\^iW^\L]f]Wi\UV]xyDLU^P^m^iNrtRZo_:RphRStlNiwoFbkbSsnwswowiw^TCSyxwilnIQxoi`n^?WTEWY^>AIEVYqoxqn>=`iVLnpxypjL]jb]SbcSDck|Tallinn|Ftacnik, Lubomir|1981|B85|1-0|W +FVnfEUm];El\@OsdV]f]?[un[Fnl>@\UEKweKUjbDTxg<`gVT]dU=UV`Up`OFOyw:|URS-ch37|Zaitsev, Alexander N|1969|C09|1-0|W +FVl\@Ome?[tm[mum>@sd?>xgEMnf<`wn;Eqi`YvxETgXYnmnBRwu=EXgTZnlZdldCKkcEFjbOEf^ETuvFOruIQvf>Fc[TNe]V]g]N]u]R[b[OVph:ZfeF>xqZjem>:mj:jdfjk[SVTqpT[^VMV]=@If^HP^VPX=A|Milan|Larsen, Bent|1975|B52|0-1|B +DTnf;Lxg@OwS=DvxBJSLDLkcCStk@wn?>k[RKmeDLvxIQqiEUwv;EnwE?tk?PdZKDZTBRe]CK]VPVgVDVkV>Vu]VXTZaoxo_eofPhf]e_;k_N>NGNklIP\TPWTLNV]ThbLDb:TM|Candidats qf2|Gligoric, Svetozar|1968|C93|0-1|W +FVl\GWxgEMm]V^gx@OtX?Fnf>@xnDTsd;L]TMTn_=R_UOUuU?GXFLFUMW_wnFWMV_fofV_RKruWQ_XKknYkdYGQGwG@GuEG@qiIQXTCKTU@AU]d]f]><|Amsterdam Interzonal|Larsen, Bent|1964|B21|1/2-1/2|B +DTphEUwpFVme;Lsm@vxUOjbCKwvmnT]jU]kULkbL>O>vrM\FUKSn>?>UD>EDSbTrZ\VipTFSdVLdUF=Z^EMUf=O^ZO]fw]dh`Y`g`dHZJMEwfL]fUHQUOEDJBDM`X|Sochi|Agzamov, Georgy|1984|D32w|0-1|W +FVmeEUxg;Lph?FsmGWldV^g]LVwpDT]cIYvxYad\ahqh=Mwv^fofMPmwFa\UahtmAamda`wh`hdVhpxyP`vx`i|Riga, Cto Letonia|Kampenuss, P.|1958|B07|1-0|W +FVl\@OnfEU\UOUsd;Lmee]N<_w>V]V=>nu>VulDLSLCLw_TN_oNXtu;Do_IYuwVflW@X_CSZT:rurOYr:Y_f_FM:jGOT^MFweOV_V;EvxEV]VFV^hVdjsIQhndVphVO|Biel Interzonal|Castro Rojas, Oscar Humberto|1976|B00|1-0|W +@OxgDTl\HPkc?Htk>@phCKm]T]wp@gVLV_V=Esm:=mg`YV_FM_XU\XOHOe\CKucEDru=Eue?=wuM?xw?HgaDVpgEeue=eneYPaPIPcdVdkdOWe]T]d]H]gLPXqi@?h`W`i`?FwnFML>GWog|Bugojno|Kovacevic, Vladimir|1984|A48o|1/2-1/2|B +FVnfEUm];ExgV^gm?Ml\DLsd@F\ULUmc>@tmEOwnFPqaaYPXya`nun>FtlIQltMWaiO`tv=MvwMOc[B;Zd`owoWhihXhpwOonohiopiYmv;MpjMT[TFNvoNOwvYyvnHXduX`jU`hohywnmwemtOwUYeftlfelteh|Porz|Schmidt, Bodo|1981|C06|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxEUtX^e^EFkeL^i<@I@gVYnun:;V`O`i`NV]VLVmw;>t_DLwfMT_V>Vng?>flV^ruLZv^U^gnBJjbIQumZLlfLNnuTf|Taxco Interzonal|Qi Jingxuan|1985|D36|1/2-1/2|W +@OxgDTl\;LsdHPph?Hwp>@vxEU\UOUdU=UmeUMt_FV_fCKgmum]cmkc]km]cmk|URS-ch46|Gulko, Boris F|1978|A39|1/2-1/2|W +EUxgDTnfHPwS@ld=Kkc;LtbT]d]O^bk?@meRdkdEU^U=Uwn;Lvx?>gmNnwPYbZ=>ZRKRsSBJScO`pfL]d]V]fp`VpaVe|Alekhine mem|Jimenez Zerquera, Eleazar|1963|C73|1-0|W +FVl\;Lnf@FsdEU\UFUmeHPxg?Htm>@wn@SE=Evx;LgVLVkVEWm]T]f]:^U>EovWHvmHNmtNDU^ENtXDUXmUKmXKEX_ET^]NW_fTE|Las Palmas|Cardoso, Radolfo Tan|1975|E16|1-0|W +DTxgEUnf@Om];Ll\FNsdBJweU\e\CS\e@rbC^s^O^wv^MgVMWv^:k[fQGOQfEGig?>f>@H`X[MqaG?>fOXg?H?aXJRfc?GcSGNSRNWRBMNBIN^pw^ewpe]IGWXo_X`GP`_Ph_WhgWNpwNMg?MV?HV^H`^f`nf_nl]rwnrVnuVYutYytky^lo_Voh^_he_okto_tu_ZuvU]vnZjnujrumV_mn|World Championship 23th|Botvinnik, Mikhail|1960|D40|1/2-1/2|B +@Om]EUxgDTnfHP]T=Rsm?Hjb;LwnO^l\U\n\^Tvx>@rsR=k[Teun@vx=Ek[?=ucUOmeOUtkENc\Ud\dNUwuF?qaIQaYPIngUSgLCLf^BR[R=;umSRrt;Khw?btrRdkdKcdV:=mjb?VD=@ldEMjb:;k[OUe]T]d]BJn^UKsd<`tfK\ue\fofFV]ULFgXIYxyHQXi;HG[STb^PFPSCG>ugbtypPahatm|Yerevan|Anastasian, Ashot|1986|A16|1-0|B +FVl\@OsdEU\UOUxg;Lme<`nf=Eqi`gpg>xXL]f]V]d^W^g^KZnuZdsrMKclKLkdLdlkdeXR=Muleglugd^VMKuZ>NkjNiyu?bZEigjmbtutdb|Zurich|Nievergelt, Erwin|1959|B63|1-0|W +FVphEUwp;LmeGWjb@Ok[?Mtk=Fl\U\e\V^sd<[SLVxiNUvxU\uZ\nwvneZBeSkVFViXMTB:piED^_dV_t=mZSV^yx^f|Sochi|Szabo, Laszlo|1973|B06|1-0|W +FVl\@OsdEU\UOUnf;Ljb@wn?>k[RKvxBRtkEMwv;L[SL]dZKBSK]gngDKl\KS\SvtvIQqi@?guDFvF?FucKDc\CKm_DT_hF?h_OE_WEV\cHXph?HiaXahaTtxpVPW`t_`_P_pg_ecueTg_HOul]eluem_fOVfmVUmfUVo_VNf]MUu`NM`gTN]fNTf]TZgUGOUcZTclTN]^NH^]HY]^YH^]OWle|Brussels blitz|Timman, Jan H|1987|C88|1-0|B +FVl\@OmeEU\UOUxg;LjbBRsd?Fn^UKwn>@vxGWdS@AtfW_fm<`md`gngFTrt=Ful?=wuKESD:uvaXgC>NqiOEnjNVj:AIvVEVC^HP:BIQB]XOxwON^UNW]^WOe]VE[SEKUN|URS-ch41|Beliavsky, Alexander G|1973|B92|0-1|B +@OxgDTph;LwpFVmeEUvx?Fn^>@^UOUwvGOld@Ae]T]d]<`]VOVsmU[v^`WgVW^p^LVuYIQYV=KmgFTVYToxy?Ot_[LgVLV_VKTru:?ypofuET\VO\^Yg^gpgfXEC?O|Montreal|Spassky, Boris V|1979|E94|1-0|W +EUxg@OnfDTm]<`qi`gug;LldFNsmBJgu?Mwn>@vx=F]TMTk[TM[SJSnS?tv>vwvmnvwHPphPWh_nl|GMA-qual f|Eingorn, Vereslav S.|1990|D43t|1/2-1/2|B +EUxgDTnf;Lm]T]g]FV]LCLl\@O\ULUwS@kc:=tk?>rtU]f]T]ulV^dn]klk^fofO`nh`fwvGWkoE]hwW_t\]M\_fu_]|World Cup|Nogueiras, Jesus|1988|D41|0-1|B +EUo_<`xg;LnfFV_VLVwn`gng=aphaigU>gpiWme=eywedwWdftmVevwfnm[e[pC@wv=Dsb@wn;L]u]gEWgaWNrtIQnw^IapO^p_^dtdM_f_NEd<>@jbBRsm<`ul:<\TM;m\`NgmFUm^IQwvCS\M;M^M<;o_V_h_LF_WFWpUWMUNGNTM=Mln?OnVOPxyMLV^;@wn?>k[RKmeDLvxIQdZKDl\EUul;EtmE?wvCK\ULUZdV^[srvm;M[]uwowr]|Reykjavik|Gligoric, Svetozar|1964|C97|1-0|W +FVl\@OnfCKxgV^g]=me^Mf^UNSZN`um=DmdGOt_VP_h:@VLCLrtT[qi`Yh`YPu]KS_X?>XOHOnf[M]O=Ewu>NOdM[d]EFcT[TtTSCutP^p^N^]dFNkcCJTLJjLN^NtrNLdVjlrBL@weT\e\=KumO^d^W^vt;ExnETuw@tmRKkc@]TMTkc=Mtk?=rtTBul<`wuMFg]L]f]FMle`ndn=>nhHPuvIYegYahw>vtvO^g`MOog^Tvu:>ktTNtf>me>@sdBJgmCSZa:@meEUtm;L^UOUwnCKdU=Um[L[gmmcJCumBRmdRZcmC:vfL]g:=:rvGOo_>N_VNLm\]WVNEUf^KSNF:>dRLT\mTlmgUeRBIYg]l\]W\^vwHPBoPWoW>F|Candidats sf1|Larsen, Bent|1965|C66|1-0|W +FVld;Lm]@OtXIQXO=OxgEMnfBJw\HXvxQYsmX`gv?Qo_V_f_ru<=ne^eue>vpvYavpahqhAicmLFmw=EpfGWjZMUxpENwmFPd\PFmcCKemU\]UFUfU\cUDNFmeHkeck]DJiQ|Candidats qf1|Portisch, Lajos|1965|B11|1/2-1/2|W +FVl\;LsdHPph?HwpEMme@Fxg>@vxIQgvwv>F[S:>cjCKs[WY[Z@IZ:>:j:PX:=HOqiYP=XOMUON>?WO?@OG|Riga, Semifinal Cto URSS|Hanov|1955|B25|0-1|B +FVl\@OsdEU\UOUnf;Lmek[<;ZlL]lkW_d]V]f^_gpg`gqaUNtTN`vu>NmcNLklLTcTO_wi`iyi=@iy_aywa_TN_OlD;:NTOKDKBKTN@<|St del Esterol m 5'|Quinteros, Miguel A|1987|B54/02|1-0|W +FVldEUm]V]d]DTxg;Lnf@OwnT]f]?[sm>@vx?>mcO^tf=Fjb[Mwv<`rtFOcm:=mwMDueDKtu`WeSKRwmBJScIQvw^mgmL]f]O]mg]KcKRKwvWlutlZne@?xw>vgv?FkcZEen=UV[SJS>DS[DSbknekde\VW|URS-ch35|Chistiakov, Alexander Nikolaevi|1967|B14|1-0|W +DTn^;Lxg@OmeEUun<`ldFNsm?FphLVqiT\e\U^i`VevuO`m^eoulo^n^`o^voywe=Kvy>@vx=FmefTFEbZCKTKL[lD[eneEegVe^wv^UVg=v>G>K]O]g]>Z_;@G;AGFAIUGIAGOAOFO]NOGQI|Palma de Mallorca|Medina, Antonio|1966|B43|0-1|B +FVl\EU\UDLUL;Lsd@Ome?Tnf>@xg=Fjb?=ul@ulDENEutEWRKC:tT`iSni`nS`iSni`nw`E]nYgM_g_n_:@gVEUk[RKm]U^tf;EV\DLfXKDumIQXaEK\f?>wnD_ahOUvx_XdULUbZGWqaXaha=aZRK\f\U\n\No_^fmn:>ruHX]UX`phahxyN^UM^_nS_wuwhVS\@AME>=\GfnwvV^yx^f|Naestved|Nunn, John D. M.|1985|C82e|1-0|B +DTxg;Ln^@OsdHPwSL]^VOYvx?Hwv>@S\EMVM=Md^MDld@k[RKtkEMwn;LmeBR[SL]g]K]dZ]kZkMUngU^e^=Fue?=ed=]vxO^g^]^wv^vrvGOo_V^d\@?\^F^v^^]EWxo>^]=?G=;^_oh_^;C^FSLW^CFGF\T^Lk\FN\RLZR\ZL\fNVhoL^phV]TL|Brussels blitz|Timman, Jan H|1987|C84|1/2-1/2|W +@OxgDTph;LwpHPvx?Hme>@sdEUjbIQrs@vx?>ngLVtmVg]g<`dnO^md^Xg]=Mue:=og`Nd]KRvnIA>AHAUFrtFLVM[aAVG>VhaI|Eersel cm-3pl|Larsen, Bent|1969|B63|0-1|W +FVl\@OmeEU\UOUxg;LphHPwp?Hvx>@jbIQul<`sm=EmcCKtmL]c]V]l\`N\lDTnf]fof:=ruN`f^UFmdFLum`gpgH]xpLVmu@HdmGW^WVgwgECuw?Wmd=>lo]dkd>?ofKSh`WgwgBRpoCgfg?gogRZgfS[fm[cqiHO|Novi Sad|Hulak, Krunoslav|1974|B91|1-0|W +@OxgDTnfHPm]?Hwn>@vxEUld=Dkc;EtkFVsbV^gmBJd\T]k]DMutEV\UV`o_^gmgOU]TM=wuHrtr=OrO`OT?@?b\CS\VfU`XQXgXNWahJRP_UD>GRZG\MV_nZbXgVMg]WIhoT^ofMT\j^MfmDJmdJ[]cTSn]SZcTZRTc|Brussels|Karpov, Anatoly|1987|E06|1/2-1/2|B +FVphEUwp@Ome?Txg=FldTKvx>@jZV^g]BRqi;Ee^O^smEOmgIQuc:JnfDTcb^XgXQXtm?>]nftlfvwvqxpwho|October Revolution 60|Garcia Gonzales, Guillermo|1977|B06|1-0|W +FVl\;LsdGWph@Owp?[dUOU\ULFuc[MxgBRvxRZcl>@n^W^l^DLgX?WULEL^\@AXGWG\G@wvIQ\VLV]VOFg]:=]NFNn\W_ug@AtmNL\eUfe^LNvnf\gcN`^g\mnm`Wmn?>VNDLqa>FrvWec[eM[^=?jb?Ok[HP^\BR\cMDckAHvuR[b[D@tXEUnf?>smIQXaTfof>fvoO`g`=aof<`m^:>lpaXfeU^el^fyx`WweWele>=elXWltHXxu|URS-chT|Aronin, Lev Solomonovich|1953|B10|0-1|W +FVl\@OsdEU\UOUxg;Lme<`nf=Ewn>DL>;KB;@euxquw@HBKTtwojdSdtdMuiaowqiIYp`wo|?|Izvozchikov|1975|B64|1-0|W +@OxgDTphHPwp?Hvx>@meEUsm;Ln^FVld?>^UOUgXIQugQXgU=UpUNf_KSqaBJkc?FUE@?tn?>ECNLC;>G;CG>jZSZcZF=_fLMCs=OfTMeTfOdn_eMs;>E;CE>CsdV_iMeiXgXaXeMs[>E[CENpwMECKEMKCMECKEMK;ML;CNUwnVDfmDKC;K]ZRLl;=U\=M\TM=T\|Eersel cm-3pl|Larsen, Bent|1969|E68|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb<`sm?TuZ=Enf>@qi`Ywn:=m\?>tmBJZlUOruV^e^O^k[TBmtENvx=uwuCS\kNOke^dtkdnlnB]ut]knkOkekYgpg>Nxw@?keNMwnHPg_GOtT?F_WFEo_LFWPIPf^FLnfL]Tt]NtxEFiaFGxtG>tdOWeVM]VP]^fgN]go^nownldiltwotlov]NaYN?PV?IYQ>?iY?@YiltvnIOihO`V`W`h`@I`at\nfDTayT[b[\[_W[\WOS[yw\@gaW^og^PaPIPtf=KdZKSfo?=nfNVrsSJk[CSZTJjovFTwojJ[TV]f]JCh`CEsSL]Ss]Nst:PI|Moscú, Cto URSS|Bronstein, David I|1957|D90|1-0|W +FVnfEUm]V^l\DLsd@Ouc?Mtm>@\ULUdUOUcU;LUc=XqaX`phBRwi`Yjb@vxEUld=Dkc?=tk;LsmCKrtFVd\V]f]U\]TKSjZSZc\O^kH@Hul^Tm^T^l^nwBR\T>=bdH@dO=utuZbOrDFutWNrbFObe@HgmRZm^O]e]L]|New York op|Wedberg, Tom|1990|E08|1-0|W +EUm]DTld;LxgFNnf@Osm?MwSBJSZ>@vx=DqiqgVOg]NEtuJRnlIYia=;]nEWlt;=kbOVn]WEpgHP]n>Nn_NObkRZcZS[d[Vkt\E>\lkVh`^duedZeUZdUTV_|La Habana olm fin-A|Johannsson, Ingi Randver|1966|D46|1-0|W +EUmeDTn^@Osm;LxgFVwn?Fvx>@ld?>jbF?k[BJtkIQwvV]V_eV]JRrue_]f_NuER[|Cannes schev|Lautier, Joel|1989|A55t|1/2-1/2|B +EUxgDTph;Lm]T]g]FV]LCLl\?Twp@Fvx>@sdSKEKCNU;=|Sochi|Gulko, Boris F|1970|D87j|0-1|B +@OxgHPphCKwp@e];EsdFNkcDTtkO`wvIYdZ=FunHQkt:=qi`OZdE;tbO^d^C^gV^pnpFDruQHbkHV]V=uvu?=u=D=p:=uxoumogmu|URS-ch44|Smyslov, Vassily|1976|A49|1/2-1/2|B +FVl\@OsdEU\UOUnf;Lme@wn;EvxKS\SBJjZO>tX>Dum?>^VMVUMDNXF=RgXE?ng:BgL:U:NXdUKCUO@A:>XN>GHOFONHOH|Dubna|Rukavina, Josip|1973|A06|0-1|B +HPphDTxg?Hwp;Ln^@OsdEUmeU]dnFVtXIQXOHOgmQYqa<`jZ=Dpi>@meDLgVEUtm?>VgU^e^O^d^>^wn<`mR=Rk[RDvx;EueEOwu:>um`gegDVrvOUphCSxwVdvudVne^vwpvumuUdumLT[TVTgWTLWgLgpgdsmn>ngnsbld@?nf?Ff]FMeIHPqab\h`\VaYV`YPGPIP`od\S[\TME]\BR\SEDSR[cR[ck[cDLckLT|Riga-ch|Klovans, Janis|1954|C79|1/2-1/2|W +FVldEUm];E]VEVxgVgpg?Tt_bdU]dRWTRT>vtvBTvVYhVThnxylZpi<;TWntWGtcm^LTiN]e^demN`ZLyx=@|Las Palmas 23/203|Larsen, Bent|1977|B16d|1-0|W +DTxg;Lm]T]g]@Oph=RtmRK]cEUwp<`qi`Ysd:=vxFNjZ?FZRKJwvLVc]>@kcFTdSVESDJMDSMFRJE;mRCKRmNV]gToxoFTg]V]SBO^p^U^c[^fox|Nice olm prel|Sully, David John|1974|A16|1-0|W +EUm]DTld;Ln^T]d]@O^VO^sd^dkd@sdU]dnO>gm>Mo_hYENHVNGWOGYVYMGOFDF^V?@VNFNon@pxp=YTjcT?=EnFEL?@tk?>wnV^g]LVvx=Mqi:>n`E`i`MVruUOumO`]gVWwuIYg]W_ph>vuv_mvnmexpGOnF`V|Yerevan|Mnatsakanian, Eduard A|1982|D48|1-0|W +FVn^@Osd;LxgEU^UOUwSUdkd?Mm]V]d]>@vx<`tfLFqi`YfXIQXaDLSe=DaFDFwvFOrsCKe^:^W<:W^:<^W<=VL=:ldT]d]MqxqOL|URS-ch sf|Antoshin, Vladimir S|1956|C47|1/2-1/2|W +FVl\@OnfEU\UOUsd;Lul?Fxg@wSLRvxUdkdRcrsctwtFbtvbMSeHXqi@Ae^:;^C?@C^;svsIY^I@HIWX`i`Y`gq=@VLFLtL=mxomUwuB:uU:LUu?@xgGWwn=FgmV^m\^eueMTvxneOQg_QqyqFaqx>fcSfi|Moskou|Balashov, Yuri S.|1987|B46d|1-0|W +FVl\@OnfEU\UOUsd;LulHPjb?Hxg>@me?>tmUdkdLRrsDTd\RLwnCKmd@mwX`i`@`ug=@whL=f^W_U@A@hw=Gwq`aguGXogEHuZIYvnXixwiXwxXixwiXwx|URS-ch39|Savon, Vladimir A|1971|B80|1/2-1/2|B +DTxg;LphHPwp?HvxFVme@Fl\>@sdEMtmGWjbW_k[:;d^_hqhCKut<`md=EwvL]g]T]dm@AtkMU\UFUrt;@phCKwp`OEOX_KS_MFMmM><^VO>M]S\c\Cknk;kd^@?umkm^m?FxoGOVO>OofOEm^ETg_@n^FV_q?>wnCKvx@smOY_XGOg]OXuY=Ovx@sbrsRZk[ZcscCKgaWEcs:Bl[L[b[FMul=FtmV^mX^eneM[XOHOltBjp^[mtuFTugmXaWjRsSRS\S>Vh`IYwrY`r:V>:>E>g`>SxpTVqaV_WQ@?`aX_XQ`OW^WXFW^FM|JUG-URS|Velimirovic, Dragoljub|1979|A43|0-1|W +FVl\@OmeEU\UOUxg;Lnf?Fjb>@ulGWsmHXk[BJtkFOm\=Ff^U_phW^e^_i\fOHwp?gpgL]luFGfWog]gugGUvw>^gu^_h_UywnypnfX_|URS-ch29|Nezhmetdinov, Rashid|1961|B84|1-0|B +FVn^@Osd?[xg>@gVEUwnU^vx=FV\?=uv;Ljb[Tk[T]rsBJ[SLV\fVPogOYd^GWn\@A^oW_f`FTs[<`g`=>vuYhld]owohym]yoxoTFtmJR[c:=ugPV]VFTov>V\nTxgwVnvn=>nexwelwpd\_g|LAT-ch|Kampenuss, P.|1953|C67|1-0|W +DTn^;Lxg@OsdHPwSL]jZ?Hme>@vxFNS\CKg]T]dSEU^UOU\UNUwvBJSbZR=atmHVphaiugE`gUiYUp`ipyV_yL>vmv:@n^FVldIQucU]d]T]m\O>tm>M\M=Mrt:;gap^I@^WLFtH?_VUFW^GW^gKkV]kl]BljBTjrxorjofjJe]@GgYGHfeFPYP?T]THPe]JjTLjl]U|?|Botvinnik, Mikhail URS|1960|E69/12|0-1|B +FVl\@OnfEU\UOUsd;Ljb?Fxn>@dU=UndUMul<`weMQvx:=og`EsmOY_fFMmcGOjZA;rjHXwrYHZRKRcR:Jk[;:jbHWxwNV]VMVruVDfTDRurR[T[Jbrb:b[bWag_X_wnENneag|Sarajevo|Damjanovic, Mato|1966|D38|1-0|W +FVl\@Ome?[tmBRxgEMsd>@nf;EwnETvx<`ul?>ruV^e^O^d^`WltW^md[dtd^gng=FuUDLU]TN]uNXgnX^d]>=phFVng^TumV]f]TEwv=>vf@?xw>fof?FwnGWmeF=f^W^g^=Def:>^I>AIWAqneHPWPqkfFD=F>=D>FD=F>=DPWEO>?OYh`Y_e^_i\TMT]TCS?GD;^VkmGEmEWE;DEWS[VORZ`X[cjb|URS-ch35|Lein, Anatoly|1967|B52|0-1|B +FVl\@Osd?[nf>@xn;Ljb[dndEU\UOUme?>tmUdkd=Xf^XPog?utW^g^L]xy?omX]gpgPYwpNiX=ipyxpyxoYgoxgp|Tallinn|Rantanen, Yrjo A|1979|B30|1-0|W +FVl\@Ome?[tm[msm>@xg?>nfDLwnEUvxV^gv=Frt^ene<`ul;JjbJT\UTeveOUf^UDog`NeTDSTNFNmc:=tuNOloCKbZSDc]=Ewv>=^VOPVNGN]LEuLF@GFPIPqa=]vu]uxqDUZRurRKBKo]rtp`tTqhTR]VRTVMTlMEUFk[lLh_GOE]OG_VFU`XLTVMUO]kO>ME>OE=TU=DO>|Rio Hondo|Szmetan, Jorge|1987|B52|1/2-1/2|B +@OxgEUnfDTkcHPtk?Hwn>@vx;LgVLVkVCKo_VH@Hme>Osm=DuvFVva:>p`O@_WGOf^U^g^C^m^PXaY>=qaXaYaIQxp=]pgDLgf?=wyLUruKSaYULYPH?`XQXyA]^e^=uP@?FAIFM@?|Riga, Cto Juvenil Letonia|Leonov, A.|1950|E18|0-1|B +FVl\@OmeEU\UOUxg;Ljb<`sm?TuZ=Enf>@qi`Ywn:>m^TKp`YPtmGW`WPWZlUOvt@AyxWNmdEUxh>FuxUjgVNcVLclLFlchHKRH@c@x@j@dO?OF@OLtuA@e]LPn`CSk[RKo_DLunBR_WPQ^TR[b[@GneGFf^KT[TQa^VIYWOF=`Wa_|URS-ch26|Nikitin, Aleksander S|1959|B94|0-1|B +FVl\@OsdEU\UOUxg;Lme<`nf=Ewn>@jb=Fk[TM\UNUtkBR[R;Lsd<`wn:Rvx?=bZU]g]RYphLVdUOUn`V`u`UO`gYUwuF^g^O^og^Tf^U]k]Tc]K|Yerevan|Lputian, Smbat G|1982|D28|0-1|B +EUm]DTnf;Lxg@Own<`gV`nun=DVLDLvx:@mcT\nfCK^UOUfi?=cmU_ig_nxy\Jm^n]gu]ltmlrurGW|Riga-ch sf|Birjanis|1952|D53|1-0|W +FVl\@OmeEU\UOUxg;Lsd<`nf=Ewn>uv^eQHELH`V^`P>NP@LC@X]lvtU[b[^fX@NO@Xe]TLOLXSLKSnl[|EU-chT|Csom, Istvan|1977|B66|1-0|W +EUxgDTl\U]nf;Lf]T]me@Oph<`qi`Yh`YPgaFNaPIPwp?Msm=DjbBRrs>@vx:;ul?GOnmd<>SW_|Tallinn|Furman, Semen Abramovich|1971|A61|1-0|B +FVn^@Osd?[xgEU^U>@jb[Rwn?>vxV^g]OU]cRKdU=Um]^eueUVnu;Ltm@sdUdkd=FxgV^g]L]d]BRuZ?=[S@vxGWjb@AulBRsddS:PgmOUnwU_xy?Om\PYvfL]S]V]fhOQqiN\l\_NheYVph@xg?>wnUdmdBRulRZk[Zclc:JckJKklLBvxKLlkLdkdV^g]BSd\S]f]H]ru^eneDT\c=Oe\<`us>F|Bugojno|Polugaevsky, Lev|1980|B47|1/2-1/2|W +FVl\@OmeEU\UOUsd;Lxg?TucUKnf@rt:>vxOQ[SL]f]V]dsNUph?Ok]ONnuQYsmYilkNPm\K\e\W_\U_hohMhxyiwgxh_ts>vkoPQ|Sochi schev|Kupreichik, Viktor D|1970|B82|1-0|B +DTo_@OxgHPph?HwpEUme;Lnf>@vx=Dsd?=un:;jZBJduFV_VLVgVDVuoHQng@_UBRmcTcucFTcC]enfWiCDEDUDipw?:?DNpiN?@?jbRZtmLVxoV`|Warsaw clock simul|Adamski, Andrzej|1966|B27|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>meRdkdEU^UOUtm;Lvx;>leUKe]IQXgMUtu>Fm_U^gm^WmwKU_mWeucUKcSeSsSBJSTKET\FnxpEOpgnNm_HX_mOEgpNM]UMU\^EO^vUVvsCKscO^mf|Yerevan|Petrosian, Arshak B|1986|C87|1-0|W +FVnfEUm];ExgV^gmDLl\?Msd@F\ULUog^gmgEOweEvxA>gVMVwWVMdUENUONWO>:>tmW^jb^em[M[b[>f]UfFUMFErtCStDEMDBMOBDO_kcIYDT_[TYHPYUelxolcogGWqicZUMPXMJZcJO[_gfS[ph_\OW\dfoclWX[cXSckSklkiakc|Corr DDR|Timman, Jan H|1986|C06n|1-0|W +DTxg;Ln^HPld@O^VOUm]T]ucUKd]?HjZEMZR@tf:T^RU\L=ELGTEKNETNKTEKNETNvTEv^hg^_gh_^hgXaDLQYLTaOTDO]BR]ORB=>BRYaDLOHLD>=RJH]JRG>RU]HEK=UKU>GUfHVDC^_gp_]pgGO|World Championship 24th|Botvinnik, Mikhail|1961|A23|1-0|B +DTxg;LnfEUl\U]f]T]ph@Owp@m^W^e^OEo_=KveET^VL[e[K[kc]etm[Kc[Tc\TFT[TKTwocrurTKp^:@]TMTkc=Mtk?=rtTBul<`wuMFg]L]f]FMle`ndn=>nhHPuvIYegYahw>vtvO^g`MOog^Tvu:>ktTNtf>me>]N>NBftx|La Habana, Olimpiada|Brinck-Claussen, Bjorn|1966|D40|1-0|W +EUm]DTnf;Lwn@Oxg@dSJSmRNU^U=MgmYnunMUZSDMwvF=|Candidats Tournament|Portisch, Lajos|1985|D37|1/2-1/2|B +DTl\@OxgCKnf@m]T]g];L]g:EBHXxwGWwn=GB:>E:BE>B:F=:BIYogYanfGMphahqh=FBD>=DL=Eh`W`g`F=f]MCLPCT]\T^\]^oPHEMHPMEPH|URS Spartakiad|Petrosian, Tigran V|1964|A06|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQgmEUmcn_;EWuUOX;hXfhof_:DCKohnpxpWipi_wi`KT[THPhVQY`X@IV_wgqig^UV^pXOpLDNI@_XGNiaL>VN>?OV?TVOT?OV?bVUbeUTBRN>@G>FG?FBebTURZ\TbcU]ZbB:?GTLbjLDcK]eKMefMD:jDVfoVq|Portoroz, Interzonal|Panno, Oscar|1958|C92|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUtkCS\SLSZT;Ee]V]^UET[T=UnS:;S>;kwv]eut<`vFkltfO>F>@Iru`gpglnfeUeuen>eE>@tmMVmdVOvtELn_PG_U:=dOHOU_=;umGFyu;C_UFGldLZuvDLdRLURZU\vu?;mEGNuMNVZ\@AE=;=M=AH\@HQ@?QY?>V>=>Y`>=`g=mCcmlcClTgoTWofWOCEk[fn[S^fbZnvZREUSKUTtkTRKBRBh`BD`XD\OQ\`QI`XIGXYGgYqktfng?qo?AvwAywpyvowtmwvmvpg|?|Weldrou|1949|B40q|1-0|W +@OxgDTl\;Lm]T]g]FV]S?[sd>@jb[Rk[BJSML[b[R[ue=KtbKRb[RrduCS[dS\ehrshVJRn^:Jw\JMVMO^MV^dVd?>vmEU\U>=dR|URS-ch45|Tukmakov, Vladimir B|1977|A34|0-1|B +EUxgDTph;LwpFVme@Ovx?Fn^U]gaHPsm>@jZO>m\FXo_V_agXQh_@A_WQHgXGOXi>Mi_M\_PIPWPA@uY?>YI@?tQ?FIHFMwO>NON@wnIQXaDT]c^ele;EsdCKvxf^E?^VOIe]IXg`X^d^U^]TKTu=>=wt?N`NGNcTLUh_=;kcFTtT;c|URS-ch45|Bagirov, Vladimir|1977|B05|1/2-1/2|W +FVldEUm];E]VEVsm?TxgV`nf=FmcTKqi`OjZBJZRKBd\U\w\O^vx@Ocm>@m^O^uU@tXV^e^U^g]IQXOEOnf=Ful?>smDT]n<`wv:=jZKRm\RDruBJu=>=\m`WmcWEvrELd\DVcRL>ndVdld>ZrZ=upwFEdluvxpE`Zj`gpxO`lmvukcumjmCKwpgOqiOrpw`Vm=@IRC|Sukhumi|Suttles, Duncan|1972|B06|1-0|W +@OxgDTkcHPtk?Hnf>@wn;Lvx?>m]T]f]EUsb<`l\:=IA?GAYG@YP@APQA@QP@APYA@|URS-ch45|Romanishin, Oleg M|1977|E17|1/2-1/2|B +EUnfDTxg;LwSFNvx?Mm]@Okc>@tkT]f]=DsmCKl\HPpg|Aker Brygge|Beliavsky, Alexander G.|1989|E52|1/2-1/2|B +EUxg;Lm]<`qi`gngFNld?Mwe=Ovx@Fwv>@sdS[d^FLtXGOXaMFjb[bkb:brbFbucbFwu=Ucf?=qiCKah=E^dU\]UNUfN@?dnE=Nf\TfmKSutTKn]L]g]FT]cTMhMKMmeU]eI]et<=@]TMTg]`nun:<]L@wn?>k[RKvxDLmeIQdsEUsmLTldBRtkR[b[:rkrT[d[;L[SL]g]K]r]V]^V>VmgV>g]=Kurn`|URS-ch sf|Zhuravliov, Valerij|1955|C95|1/2-1/2|W +@Oo_HPxg?HphDTwp;Lvx>@meEUsdU]dZ=Ml\O`jb:;rs@sdHPYnONtm:;rtM[vwDT]T?@xnEMmeDLvx;ErsEKf^OYtfGWum\TMTULCLdZOEKD?OvtOQwuH]mvFHDREOZT]fRmfmumO`tuHFut@Gml>@qi`fldfUd\QPyqYhnhPhvh@hqhFMTe^e|Lublin|Liebert, Heinz|1974|C00|1-0|W +@OxgDTl\;LnfHPm]T]g]?Hsd>@wnEUvxL]f]U\n\=D\cO`phDE]U`OunEiogFNUMdSO`g`HVME>FSBLUB@wn;Evx?>nuO^me^XgXUXucEOwvOUphHPv^>Frv:>egFNxp@H^N>NcULUvNGNgbXWbFHQFaQH|URS-ch44|Sveshnikov, Evgeny|1976|B22|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@k[RKtkEMwn?>vxBRm]V]dUDTUK=KrsR[b[K=gm;Lld]dkdT[dkMUkO=O^UL]ne^s[^[m[:rwvHP[^OdUM_e^fdRvrRrgxeVqiVLfKr]KC]MCk|URS-ch40|Kuzmin, Gennadi P|1972|C88|1/2-1/2|W +FVl\@OsdEU\UOUph;LwpjZEF[F>FZRKTwtCKxwHXgvT[RKDKpU=Uvl[drsUTlbX`tlFVwpVYscYiltOWb\iQnfQNtsTUqaNFo_UT\V]fe]d]VLTLSL;DceF^pwfnwvBRe]^]sSDLSWRZW?LC?GCJG?]E?>KS>NJR|URS-ch29|Khasin, Abram|1961|B77|1-0|W +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn>@tfGWulBRsmucS[TtRJcUL]t<]gpg>Z@vx?>qi`=>pgJRT^R[b[>?gp?Wo_AIlmB;pgIP^MWOMSOKmUQYg^PQ^]HP]T|Albena|Spiridonov, Nikola|1984|B17|0-1|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvCSnw=^mU_vf_Ufv?[d[U[j\[eweKkmg;KelK[\D[;D;=;leJRvV;=gvRZxwZbVRkjp`jre^HPwn=>ogbjvlryRj|Leningrad Interzonal|Karpov, Anatoly|1973|C95|1/2-1/2|W +FVl\@OnfEU\UOUsd;Lme?Fxg>@wnrt:=bTKUdUNUf^UNe]W^gVOV]V=UuUNUtu>VlmGEn\U\mE\eTfIQE<@I@dL?=ndJeLTFNTVNKmcDTVTKJTb:@tk=Fwv:=dZMD]TKSZdFTrtTMds?>smU]f]DKmwLFwhFPnw>vgvM_ve_XulIYeTCUlWXmtlmultumtl|Budva|Gipslis, Aivars|1967|D40|1/2-1/2|W +HPph?Hwp@Oxg>@vx?>l\FVsdDLmeEMgvBRjb;ErsE?k[R[b[<`[S=ESLCLsK>wsN]f]V]d^>DKCMU^TEMTZDJ\ULUZKJTK<`@sdU]dZOEl\=Dn^BJkcCSZkkuFNuoGWtmNVrvV_m_LV^WPWoiDVnpCpxpVvwvS\c\?;pg;kvnksg_sw_X@Gi_wunkHVkCG@XWV_h_ueWOIQOP@?_W|Sochi schev|Vaganian, Rafael A|1970|A89|0-1|B +@Ol\DTphEUwp;L\UOUsdFNxgUDme?FtfNVgmL]m\GOo_V_f_>@vxDNnfN_h_]WpU@Af^W]_WHPu`PW^WCSxy?@`@=@U@A@\mcS>nwvnvrv<;k[MJv>;BSJ|URS-ch sf|Chukaev, Egor|1956|E75|0-1|B +DTxg;LnfEUwSFNkc?Mtk@Ovx>@SLCLl\OEsdEKmeNV\ULUdSM;ulBJSd<`gm=XxyXQf^U]dZKZcZ`Ekb?lmEZTKIQKDFqiZSRcFXmn:JtTSETt|Memorial T.Petrosian|Taimanov, Mark E.|1986|E43|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@k[RKtkEMwn;LmeBR[SLFdZKBvxFPl\?>rsOEktETZTBTgvGW^W?O^TKg`<>tkN]^O>FOEKTETMTuvV^vf:=wv?>f_PX_^F^v^>^e^A@svG\vt\etTe^TD^Wk]|Tallinn|Kuzmin, Gennadi P.|1985|C78q|0-1|W +EUl\U]me;Lph@OwpFVxg?Fsb>@blBRvxwvFTjb=MgmV^e^O^m^W^um^pxp:=ruCKm_MPlrTM_mMVmePNrlVOo_QYktYatmLFn^]fefN`fn`PmtahqhFWn>=>v>@IumPhpyhgyxg`mp`u>vO]xyuel]W]pqIP_WPWqoWPopPOtkHXv>DTc[R[b[ewyqw_qxOHpo_hoph_po_`op`uxqGO>;]gqhgakOHO|Kislovodsk|Kluger, Gyula|1964|A43|1-0|B +EUxg@OphDTwpHPm]T]g]?H]c>@sdFNvx;Lwv?>jZCKn^O^d^U^u=>=p^@jb[JrjFMjnJDwv?>smDNmg=DgaHPpUOU\UNHV`>n`Q@?vnQWPWN>O>nYEIQXiW_i_@Mh@XOGXWG@qh|Reykjavik|Thorbergsson, Freysteinn|1964|E77|0-1|B +FVl\@OsdEU\UOUphDTwpUDkc?Ftb>@rt;ExgCKulGWvxVW>?W`?ofWHPxoTeoxPW`WetWOA@OG@AGOA@OG@AGC:=CFR[FOA@pitnxyIQOG@AiW|URS-ch30|Aronin, Lev Solomonovich|1962|B37|0-1|W +FVl\@Osd?[phDLxg=Ful>@jb[Rk[RD\TBRrsR[b[EMm]V]g]MT[TFT]cTW|Skopje ol (Men) prel|Gonzales, Eliseo|1972|B31|1-0|W +FVl\@OsdEU\UOUul;Lnf?Fjb>@xgvx>Ptm:>k[BJ[SJSdS@ArsV^gv>_UFGstQMUKMutuDKSL>LZLGcLMA@u]IQbZ?OMD@IqacNxqOGDlGOaYN>luON]=>GqpN^uUGU=UW_h_^ZpgZRg^Rjogjk^Wkof^ogU=giW`ic^VKS`WS[|Hoogovens|Kurajica, Bojan|1976|B85|0-1|W +EUm]DTld;LnfFNxg@Osm?M]TMTk[TK[SLFwn>@vxFWtk?>d\O`xyNV\UV^g]K]k]W]n`]S`<:FltFDtdDTdTRTsdCSZSJSqxGWdnT\ck\Un_UGkVGOVU@I_N|Capablanca mem|Kortschnoj, Viktor|1963|D47|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQgmEUngBRtkR[b[:rur;J[SJTSLCLdZTZrZ=D^ULUgUfmgUgpgEFopfnwonvowvnwo|World Cup|Karpov, Anatoly|1989|C92g|1/2-1/2|W +DTl\HPph?HwpFNxg;Lnf@Fvx>@sdFWkcCKtbrtEM]UNUdUBRumL[wu[U\UKSbkC@CFLtSc@Avt?sm;Eih?@og:@vx=Kmc?>rtvgv:@SLCLmeV^e^O`vxqi`O_X=;^VOUd^T?l\U[\TGOXOHO^O@GgXGPO>;>o_?TxqTFX^PW^hWN_WNUqy>@hYUVwvVMWOF=YHMEHY[Uvu@?u]EM]Z=Kp`UOZ_OE|URS-ch26|Yukhtman, Jacob|1959|C44|1-0|B +@OphEUmeDTwp;LxgFVvx?Fsm>@n^gv>Mo_GWh`W^m^M^p^V_t_HX_h?wxw=EqiIY`YNiwx:?vpi`^U@Aum`grvgU\UEUpaAIaP?Gv^FOmnOHYQIPQHPHhVH@VhUW^>G?>N?ON>O?>N?ON>@HhDO?DVHPVM?OMTWT>@PI@Fm\A>xgF?vwCS\VPVqVTMVMWMp`>^`Y:>rv^vgv|URS-ch sf|Ilivitzki, Georgi A|1955|B18|1/2-1/2|W +FVn^@Osd?[jb[RmeDLtmEUxnRKqiOY^ULUdU=UndKovoU]mf]aox>@d^Y_phaQh_V_fTGW^m?Owp;LmggU@AyqOPqpPhph_huwQmUpVPrumXuv>=]BW_\TIYe]=?pgX=]U=RBKRdwnPavwd]xyagng]kgpkSyxYapm_gmXgoxpS\XYA@YV\eVN@AN`eU|Leningrado, Cto URSS|Bannik, Anatoly|1956|C75|1-0|W +DTnf;Lm]EUxg@Own@wnCKvxesIQqiC:umLBjZBLkbLRg];Ltu<=m]DEslTC]mEDf^DjZEF[F>FZRKTwtT[rZUgpg[dRJCKxwDTSL;DZjKSnfS[f][cjnFnwn=>g^cktsOWnfW^e^>;fe;c]Ucbo_breld]^VrJVNDMh`MUNFJLlcLN|Zurich|Larsen, Bent|1959|B35|1-0|W +EUxgDTnf;LwSBJSLCLgV=Do_@QmeGOVgFV_VOVf^QGvx?Fl\U^e^>@sd<`uvG=vh`gwg=Ng?:?tfDMruN]uw]lw?F?hoMeftlboWe]xy]\tfblfx\GWVlvVhGw^Vved^T\^Me_M^_nhowoxo@GoT?T^T\dkdndjZJR|World Championship 23th|Botvinnik, Mikhail|1960|E24|1/2-1/2|B +FVnfEUm];El\@OsdV]f]?[un[Fnl>@\UEKweKUjbDTxg<`gVT]dU=UV`Up`OFOyw:vm>f_f]fmnfo|Moscú, Cto URSS|Zaitsev, Igor A|1969|C09|1-0|W +@OxgDTnf;Lm]EUl\FNsdT]g]?TwnT]f]U\tf>@n\CKvx@wn?>k[RKvxDLmeIQdZKDl\EUul;EtmE?ZT?NTN?neQYluYahgOXgWNW^WKEm^XW^TV^T^EVqi:>es>=\T]e^MWXsj@Ao_VgxyXTMCTbC=bjuejmegm=ws?Osr=>rZ>SZ^SWyqAI^]O?g`WO]^I@^\OG\^GO^Z@IqyI@ZBO]BD]ryqrOD@wn?>k[RKmeDLvxIQdsEUsm<`qi`Ytk;EwvBRl\U^m^=F^OFO\TKDgmYnunONm\R[b[:rvrV^ru^e|Tallinn|Stein, Leonid|1971|C95|1/2-1/2|W +FVn^@Osd;LxgEU^UL]wnOUg]V]dU=Uvx?FngUMwv]ele>@e]FO]UCKm]vt>Ftl:=qiO]f]U]ZB=>BbFvrv>vxqIYb:@I:g]MphYagGMel\ahqpewphvfogwxhaxoa`op`apoa`|Riga m|Saigin, Vladimir|1954|C47|1/2-1/2|W +FVldEUm];L]VLVsm@OxgVPnf?Mwn=Fd\>@vx?=\UOUwvCKuc@weFLvxxyO^mvLRcZNEZl:^P^m^lu=>dU>PrtM?>N@INWIQ|Trud-Rockaden 42/341|Wiedenkeller, Michael|1986|C06p|1-0|W +EUxgDTnf;Lm]@Own<`vxFNkcT]f]?Mtf=Dsm>@l\:=\TM_jbO^ph_fof`im^U^gXiwnwLFX^NV^MV]f]Fc[>f]U=>UM=CLNfxyfouxoO[S=ErwOVSKBKTKEmLgnqxqmqyqVkgpkKbZHPwtIYt<@I<:KDqiPXp^IHipYa|Tournament|Maslov Yevgenij (RUS)|1953|D55|1-0|W +FVn^@OmeEU^UOUph;LwpxwMVsc>NWYIQo_V]YSNLl\]TcdOWScLJwnJNnuZJdlT]|Eersel cm-3pl|Larsen, Bent|1969|C41|1/2-1/2|W +GWme@OphHPwp?HxgDTvx;Lld>@e]T]d]FNsdLFue=RtmRJdSFUjZEMgX;B>Va=p^Eu|Bremen|Henke, Walter|1986|B09k|1-0|W +@OmeEUxgDTph;LwpFVvx?FtX@XOFOsdU]dZOFpLCLn^]fofGWun=Rkc:>ZkFOk\RDrvHPwoOHvwHQxy>Ff^W_h`QHwxIQqiD=mgN\e\FEgvEuxwurjZHOve=]wr]rowrdwgd]yp?=gwOawu]dpg@Hnmd]mn]dnmd]ld]MmlMFZRBJc[T[d[FMldQYeoY`i`MNu=a=oe=D[SHQSKD;\TQXeoXOdeNML>?LO?@OP@AP>AI>EIQ`XQXEWXQo`QHWVHIVDIAC;2B;D;AI`O|?|Cuellar Gacharna, Miguel|1973|E91u|0-1|B +FVnfEUm];Lxg<`wSV]f]?Mvx@Fwv>@tfFWld=OfX`gXOguSLCLOH@Hvu?>sm:;kcM_mg>nuv;>xwnvrv>vwvHOjb_Mc[IQgmQYo_WQmgONqiNFvnGOgmYa|Framingham CC sim|Huntington, Robert|1988.03.08|C12b|1-0|W +FVldEUm]V^d\U\nf=Xsm@Oxn<`qi`nun;Ln\>@SLCLZLU_f_?>mf=ejb`ELDESb[ewvm>=mlwrDRSelcrwRXe\clwelt\c|Moscú, Memorial Alekhine|Uhlmann, W.|1971|C07|1-0|W +FVmeEUxg;Lph<`ld=Ek[?Mwp@Oqi`NgXNWn^U^e^WPiaIQaYQXYPAypyEiPG>FygX`gniynwy^tfL[d[M[sm:=un=mfm[mvm^]ml]rn\DL\TFGw\GPTBr]B]V]leLT\NCSjbPXNMNEHPelT\lmM^mt]eESemtl^dlmdSbZSM|Gori|Gufeld, Eduard|1968|B07|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtkEUwvBRqi;EnwKD^ULUdSD;ph:JwpJNl\U]gmE?mcR[b[NJrJCJSb;D[SJSbS?NSBDMB<=;ulDKctNTvuKBmv;KljKJjlJrv[OEpgBK[TETtjruguV^jtGWtc^elj@IcTMTugKNxpT[iaemjlNVaY[dlsdRsCR=C<|Sochi|Hazai, Laszlo|1982|C92t|1/2-1/2|W +EUxgDTph;Lwp<`vx=El\FNme?Fsd@Oqi`Y\UOUtm>@jb?=rs:@\m?Gl\:RtdEK\jRTdTFTjN@?voTlNjLRjNlkyskdsSGFNjPGjkdkSkRcnucmgmG>e]FNu`NM]UIY`W>EWEMEmg?FgVE=VPFM^VMTP_=;klK\_NTUNDUTVNTMl\CS\tS[NFMFDUFNU[NWohWXtTXQTLQXLTXQ[U|Yerevan|Eolian, Levon S|1982|B90|0-1|W +EUxg@Ol\U]ph;LwpFVvx?Fme>@sbV\KSueSLpxO^og^M\MLMnfMUf]T\eu[RxpRKwoU]u]K]ol|Moscow RUS|Tukmakov, Vladimir B.|1987|A43y|1/2-1/2|B +EUphDTxg;Lm]T]g]FV]LCLwp?Tvx@Fsd>@kcrsV^gp:UVGWVT?FTDFMDI:?Zu`iwx[Tme^ge]V]n_:>vmT[ml>@vxDTsdT]dUMVe^;Lt_jb>FDhUSk[FnmeSeleBJhM:=MD=>D_GOqank_M>nMT@GbZGN[SJSTbkcZSLVb?HPr:cS:>NG>ueDLxXPFc]>AeuOPXPGPuxtm>GXVA>meFG>d\>G\ULU]gGNga@jbBJtfCS\j@kcLVc[T[b[@AtkBJdZDUlcUOZTVgngESwuO^TN?@N_FacUM_f_a_UV_VkVSert@>Vk:@phEU\UOUkH@Hwp;LutCKtkGOm]T]g]L]k]GB>=po=<\UOWh`IY`WPWiaRZcZ[c|URS-ch44|Polugaevsky, Lev|1976|A30|1/2-1/2|W +EUxgDTl\U]ph;LwpFVmeGOvx@gq:;o_CS\TBR_VLVt_@sdBJ\UNUSeGOqi@Aga=>o_L]eIAIu]>Y_WMh]fYafFFT>vWw:@meDTwnCKsdUdkdn`=Uo_^gmgGW`i>?tmIQ|URS-ch40|Razuvaev, Yuri S|1972|B42|1/2-1/2|B +FVn^@Osd?[jb[Rme>@tmEUxgRdmd?>wn;LvxU^e^=uruO^dm^mum<`wu:=qi`gng=mumV^gn>=m=L=n\@?p`=N\NGNxpHXiaXapi?HiaHP`XPWaYCSkcBRldDTc[R[b[T\YQW`QI`XIHX_HO^f|Belgrade-Moscow|Ivkov, Borislav|1974|C79|1-0|W +FVl\@OmeEU\UOUxg;Lsd?TtmIQdU=Uph>@wppgNGuv;=m]Gj^VjGg`=;]ETELE>N`NGNVO@GvrHOrJGFJROWxo;kofkqR:FEf]qp|Hoogovens|Ciric, Dragoljub M|1968|B57|1-0|B +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tfDLw\;EVE=EdZKDZTE=vxCKTcO`qi=MwvMqxw`fvfKS\SLSf^@tXEU\UNUvx[dkd=MgaHPo_O^e^U^_W;Eu`:aQ?@w_N`_`EO`a@HFWPWXO|Tour Italia, Venecia|Szabados, Eugenio|1957|A13|0-1|B +FVn^@Osd?[jb[RmeDLtmEUxnRKqiOYp`=ayq<`^UGWutW_UL;Ld^`gnxg^e^YhweKovoL]op>@xg]gpgh^tv^mqmV^e^aigo:>m]iqog>V^U@AvVqhgn_g|La Habana|Letelier, Rene|1963|C75|1-0|W +EUldDTm]@Oxg;L]TFVk[V^g]BR]LCLjb?FtkO`qi`Vnf@smGWunJ:mc=EcRW_f_Vgxy?_wu:?kt_anw?WRLWYLF@Gp`aiwiYiypE`pwiy|Tournament|Zeid L|1952|D15x|1-0|W +@OphEUwpHPme?Hsm>@n^U^e^;LxgL]vx]gug<`gc:;cfBJ^VOUf^`NmgNW^aWltQlWgXGOVOUOru=@xgDLvxEK\l=DsmIQkc?>tkF?n^<`e]V]g]:=qi`DEgXuwxw?@?lmGOm_TN_;?FXNFN;@EG|Tallinn|Pfleger, Helmut|1973|B06|1/2-1/2|B +EUxgDTnf@OkcHPtk?Hwn>@vx;Lm]O^sb@we@Asd@qi=En_T\_NGNcmCSjZBJZSJSr:?:^VOUuY\dkd]dm^:?tQHQ|URS-chT|Gurgenidze, Bukhuti|1959|B01|1/2-1/2|W +@OxgHPl\?Hm]>@phEU\UOUwpUKvx;LnfFVsdV]g]LVk[<`uc=rtDT[TVedSETbTeTcU>VUg@wn=Fvx?=ulDTwvU\m\MD\mPVkcDRvuVgng<`tk=mum`gpgRmlm:=mlFMkOMOru=MuMOMc[CK[TKTlZHPZ\IYxpBJqiMLjZLK\^@?g_K[^:?H:J[^pqT\J<^lqp\dZR|Budva|Ciric, Dragoljub M|1967|B17|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`sm?Tqi`gmg=Fnf>@qi`gng=Mg_:=_VLVkcMTo_VLwoGOpw@Axp?>we>FjbBRmn=>n`L=`g=G^VOV_VTVe\GQrwDLonVOgOFnOonowoHPh`AHbZ>FomLTmnFn\nHOpgOVn\PX\eQ@eI@OIWOUghT\iaXaha]ele\de]V]c[UFWs]VaYCSZSRZ|Prague radio sim|Illetsko, Jaroslav|1960|B06j|1-0|W +FVl\@OsdEU\UOUxg;Lme<`nf=Ejb>of>fruOUumMFwoUOowBJndOYlsYhwuIYmeYastfeue=?euHXtmFGmXGIdUIeX=?=ue=U|Tour Italia, Florencia|Scafarelli, Francesco|1957|B68|1-0|W +DTxg@Ol\HPsd?Hph>@wp;LvxEU\UOUdU=Ume?=tfHkgXUWrskHutL]wvIQX^WYtT]nxyFVTFwv>AvrA>rjlujB>NBrulrblubrulrvNKvwKNwxN>xHluHB>NBZN>Z[>FfoFGofGF[sulsvFIfoIqohlm|Candidats sf1|Larsen, Bent|1965|A39|1/2-1/2|B +EUxgDTme;Lt_GOn^FV^U=UsdUE_fCKph@iN@AcKL=NcusKM|Moscow 5'|Balashov, Yuri S|1972|A53|0-1|B +FVn^@Osd?[jb[RphEU^UOUwpUdkd>@xnGWo_V_n_?>vo;LyvLVoxDLrsHX_eRKeo=FtkKoxoW_m]V`ox`fun:>kl_gqiIYtXGWia>v|Berlin op|Ballon, Guenther Jan|1986|C70|1-0|W +FVldEUm]V]d]DTxg;Lsd<`uZ`E]T?Tnf@OwnL]Zu]ndn>@tmE`md?>qi`Yd]T[vwYPgVP^og^Wp`WNn_[MVeOEiaE;wp;L_nMFph=MhoL]n]NEum:VyxQXaXMFXPFaxhVXPG@G]nU]opXhnhaXmeHPe^]f^CXFCUGHUeE>_UFVUKBKh^Vkphfnho|Malaga|Marovic, Drazen|1981|B13|1/2-1/2|W +FVn^@Osd;LxgEU^UL]dSOUgVU_ld]SwSDLug=OVLBJSZGZcCLULENcNGNyvPVf]HX]VOVu]:@rt=Fp`YPgVLVkVTbtl:Je]GOVhJL\eN]l\]nvn?=elb[yuP>og=]\L>Lm\]uluCKueL>\fDLf\KS\MFEia>GnfENMG@GaYRZcZSZeJZbfnbjhojr2|Subotica Interzonal|Marjanovic, Slavoljub|1987|B90|1-0|W +FVl\@OsdEU\UOUxg;Ln^U[meL]g]V]dnDTn_?Mwn>@vx@Aph[Luc:;cULVk[CKtb=FUc2;>E>AH>SHOxoPX_XmXogOVSeIQqiXtjZW_h_t_ia|Saint John op-2|Kristensen, Bjarke|1988|B33|1/2-1/2|W +FVl\@OnfEU\UOUxg;Lme?FjbGWul>@wn@AvxBRsd|Hoogovens|Sosonko, Gennadi|1982|B63|1-0|W +FVldEUm];L]VLVsm?MxgV`qi`fuZ@d\DT\UOUf^T\m\EZ^U=U\mZcjc:|Riga|Oll, Lembit|1986|B17|1-0|W +@OxgDTnfHPm]?H]T>@sm=RwnRTvxEUl\?=jbTDrj;Lk[\L>@XO@?OP?>LD>FPOnNOXFDtDNJ|Hoogovens|Karaklajic, Nikola|1968|E02|1/2-1/2|W +@OxgDTnf;Lm]EUld<`qi`gugFNsm?Mgu>@wnNV]TMTk[TK[SLRtbU]f]OUrtV]d]?>vxK]neUfof]fxy=eb[eS[RSRm\Rj\f>fuEf>tD>?DCBRE]:=]^jN^g=ECSEBgbRZS[Nnw_nuyquMqy?>_w>^ws^[s[BC|Sochi|Chandler, Murray G|1982|D43|1-0|W +EUxgDTnf@OkcHPtk?Hwn>@vx;LgV=DVLDLl\@wn?>k[RKmeDLvxIQdZKDl\EUul;EZdU\e\E?tf?Nru=F\TN_wv<`gm`ndnO`nh`fof_NhWFXmgXOWMDMuMBRlkR[b[OPkV:jgaP`Vh`^vwNXaW>:WQHQMQ^UQMUchX@?MQcdQOd\XY|Herceg Novi blitz|Smyslov, Vassily|1970|C98|0-1|W +FVl\@OsdEU\UOUxg;Lme?Fn^UKwn>@vxGWjZBRdSFOtf@vx?>wu:=e^O^m^VktkF^c[EOu]^VkbBJruVFl\IQbc=M\UMU]UOUu]@An\F[c[U[\G>?GcLT]M?AIU^HP>NGANKT\KCDC^C\dC^AGxwGM^eM\bZ\kelIHo_PXphHOwnQYiaX`f^ONlcNOnf|Moscow op|Jung, Karl Otto|1990|A47|0-1|B +FVl\@OmeEU\UOUxg;Ljb<`nfGWuc=EcC:;CJW_sd_fofUdkdV^g]L]d]?Fe^>@w\@AywDTw?;?tkED^VFX\nDGvt`WneXftsGceWcusj?;Jef]k]ueWeT]|Budva|Bogdanovic, Rajko|1967|B97|1-0|W +EUxg@OphDTwp;LvxHPme?Hl\>@sdIQ\UOUdU=UtfUYrtCKga`?IA?H|Riga, Semifinal Cto URSS|Bannik, Anatoly|1955|E65|0-1|B +FVn^@Osd?Tw\CS\SDLSZEUme<`xnU]ds`nvn=@yvOYnwY_m\_P\m;EZcEOwx?>mwT[tm[mum<`og`awhP_hWaYxy:=qaHXp`YPmqXa`XOYWaPMaWMPWQ@?cGPXG>Yhyxhnxo=>vn_nonXfnw>NQ`fXqINPIA|Riga|Klovans, Janis|1951|C52|0-1|B +FVl\@OsdEU\UOUnfU[meDTxg;Ljb[Jwn?Fvx>@kc@weFLvx?>tmL[es[Lse<`rv>FgXIQwOHOXI@HdUFNqi`YeWMhWNhvIOvmOYH?cCGNCH?>YO|Riga, Semifinal Cto URSS|Rovner, Dmitry Osipovich|1955|C06|0-1|B +DTxg;Ll\HPm]T]g]?H]lEMn^GW^W@mcRDl]BJtfFV]g@Aum:=ruMU\UOUfX=EmtV^g]L]c]DVjb?>qiIQXQHQtQEIQXWiXV>VpiVXn`Iiog^gxoX`]g`huUhgopgwpiwgi`gc`XAHUEH?XPckPO?>EeknecnFc[>=[cFEON=@sdDTVg;Lvx?>]TMTtX^ahMhqh]eue=FZTLVeu:=T^=u^OFOru`gngVgpgOguEgbECbdv>@I>FHX\TIPCKPYFGY`KQJRTLR[xpdlLD|Sochi|Suetin, Alexey S|1977|C42|0-1|B +FVl\@OnfEU\UOUxg?MsdUdkd>@m]V^gm?>ucDLw\=DtbMbcb;EvxEObT;c;D;jl;>m\>NrRXR\RNUlcUcRcOEp`@?xp?FcmBRm^EOpgRZ^mOUmsFMd\U[gn[JneMN|URS-ch32|Bakulin, Nikolay I|1964|B40|0-1|B +EUxgDTph;LwpFVme?Fvx@On^U]sm<`qi`YjbOEuv>@gqCSq`GOo_YGvn:@sd:;n^CS^VO>t_EMe]S[dnT]n]MrB?;BZ;CxwGWnJC;JeHOwnONnfNUZRUN[SNURBFVkcMSe\UTBIS]IDTMDH]cHPMTP@;@\@c]qi]lfel[ed[Lh`W`i`V^`XTM@IMV|Candidats Tournament|Petrosian, Tigran V|1962|A16|1/2-1/2|B +EUxgDTme;Lt_GOn^FV^U=U_f?MsdUNdSL]SMNMgmMDph@ld]Wuc@Ac\:=>v>AIxo_hqhIQjZDE>NEeNLYahaPaLTHXoneg\fOWfpW_pagfno|Moscow|Balashov, Yuri S|1971|A53|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQgmEUngBRdZKDmcR[b[;El\U\e\OI\TIXtXQXg`EO`<==ZdCKdZKSZdX`r:=:lcNcmc:bwsOEduEOudOIxwIXwnXNneN]c]V]e]GOdSLS]UbjULDqLSjoSLop[SplSK`hKChpC;2q;s;@G;sGN|Candidats qf1|Portisch, Lajos|1965|C92|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUul;EtmE?wvBR\ULUZdR[b[:rvrU^d^O^e^<`mf?Nqi`gngDKruN]lZ@Ig`=Fut|Candidats Tournament|Gligoric, Svetozar|1959|C97|1/2-1/2|B +FVnfEUm];ExgV^gmGWl\DLsd@OogCK\ULUg^W^dUGvx?Mm\HP]UBJSLCLULMDtmA>md>NdONOwOGOu`=>ru>L`aONu]NWaI:>IGWX]UXQp`LN`XQYGIY`qi`hIDhiDqi`\V`Xq_XYVENUEO|Riga, Cto Letonia|Blek, I.|1955|C05|0-1|B +EUl\U]meFVph@Owp?Fsb>@bl;Lo_FM_VLVxirsCKnfO`o`W`umVL[S]flfL]tkMVf`E`xyVhk]>nmu?>]ohDskIYkn>nqi`_ox_Ve]T]u]Vh]UhPwonVUCDMpUVFC<@I@cC=NU>=UT?OMFLFTF=>FB>nB]IQwvONvnNn\TYX]_XOumnvtlOL_\LylcvtmlyCcdtxTLCD\UxhlnhXk[D_U=AILD_tdctunl|LAT-ch|Solmanis, Zigfrids|1953|E61|0-1|B +EUphDTxg;Lm]T]g]FV]LCLwp?Tvx@Fsd>@kcrsV^gp:UVGWVT?FTDFMDI:@xgGWm]=OtkvwLR]UOQwpR\l\>^\d?OyvOPTLCLULPLdcENc;N@kV_VgVLOruHPv^W^;kQHuEOKVPKPEH|Zurich|Walther, Edgar|1959|B43|0-1|B +FVnfEUm];Lxg<`wnV^gm`nunGWjb@Ol\U\sd?Mn\=Ek[LFmcCKtmBJogFUdUOUg^W^vxESrtS\t\>FcTKT[TA;TMDMwt;ktl:;xokl\l;cmtFEohENh`cflLfnt_U_`_NULJnpqapo_fogfngiaYieJBU]BHebHIMU|Tel Aviv|Lahav, Ehud|1990|C14|1-0|W +FVldEUm];E]VEVt_=Onf?Msm@F_h?tmQYogP^l^;krsks^sYXvwA@p`ahwpIYjZ@Ps;?H;kYa]UMVmdVdkdH@d]XW]^aiyiWipihp^P|URS-ch25|Kortschnoj, Viktor|1958|C18|0-1|W +EUxg@OnfHPl\DLkc?Htk>@wnU\c\LTvx;LgVLVkVO>VH@Hsd>Ouc=Rm]T]f]FV]VRVnge^=]unrl^L>=_VFO|Hoogovens|Donner, Jan Hein|1973|A31|1-0|W +EUxgDTnf@Om];Lwn<`vx:@wv?>t_O^g^U^smGWm\LR\R=R_mRUrtBJmfCSZSJSul<\ULltl@vxOYsmGWk[T[\TMTtkDMwt?>mc>ntTnkZ[c]OX]gXOe]W_TUONUN>N]UNMgVHPtsCJs;@H;:Jn:BH?B:?H:BH?BG?>GF>?VE?@F>@H>n|URS-ch58|Chekurov, Vyacheslav|1991|A42c|0-1|W +DTldFVn^@Oxg;LwSO^vx^MSLELgV?Fm]T]u]>@t_smF?f]MW]=:=VgGOwvHX_fWfofLTmw=evn>=nmemgmOWxo?Hjb=MrtMKtlW_mgX`gvNclmKOm=@G=EGPf_O_ox_GEGcGxoPXwmXWvlIYlfWVm\G\f\VU\fU^onHQfuT\uo^UouCSuoQ_ph_touUTnvTKvnKRuftkfURZnmZc|Leningrad op|Mukhametov, Eldar|1991|A22|1-0|W +FVl\@OsdEU\UOUxg;Lme<`tm=EdUEUuZ`En^UMrt>@SLCLZL==gX=>X^O^d^TFt_Go_A@tdELqaIQdhJR\T@=wu=Eu]<=hcRZcK=@k[ZcjcHX_XQX]`XaK[E=xoNVoxGNxw=:`@:@[a@pMDpkc[V^D_k[aQ[swnsknuLZuvNW_MZSvukpuvSeMFW_QAOWAa_haA^fFMhg|Alekhine mem|Liberzon, Vladimir M|1963|E51|1-0|B +FVl\@Osd?[ph>@wp?>n^;LxnEMvx[TmeL]qiDLxqBJn]T]dn]Bo_CSkcS\c\:;tbMU^ULU_V>Vn_B]rs;susU\e\bFV]FMHX_p@H\T>NumN\Cs]TmlTxqx\]xq]MloMNskNVkKVNKTIQTlN\l\^\pf|Tallinn|Bisguier, Arthur Bernard|1971|B31|1/2-1/2|B +FVl\@OsdEU\UOUxg;Lme<`tm=EdUEUuZ`gpg>[SLF\T<;TVFUVkEMwnMqxwQXkl;:g_X_f_>nvn=>nuqYogYilZUKZ]iwulwgtv>@CL?>og:;LZOWZlW_tm;Krt=XkcKLluLJul]dmdIYdmNUpo>?yx?GxpJPtxXFc[V^e^_hphU^l\FamdaqhpqaowPpxp@?wxGEdHEHpH?H|URS-ch35|Shamis, Alexey|1967|B75|1/2-1/2|W +EUm]DTld@Oxg;L]TBRt_OY_tFNn^?T^UNUwn>@g]?>vxYOtf=KsbT]d]NrtESnSK]ulWMwuMSZS:>qi][XOHOuUNvtv>vxq[_ph_gl<@H<`g`i`vVUVOVqpV^og^gpgHOg^OX^UX`UT`hTKGWKCW_SK_gCB|World Cup|Kasparov, Garry|1988|D17e|1/2-1/2|B +@Om]DT]UFNsdNUdUOUuU;Ln^EMxn=Ftm@rs]gug:;xyDMwuMFdUFMUfTbtbMbgU;=srbFUCFaCBEOyxPe\TO^p^e^u=?=BD=>DE>?`XaXE`X`i`?D<>M<;RbIYbeU:eb:LM\;SbRSchqcdRJd\JLPXLX_>FlnFB_XBRX`RVW_V^|Moscow|Bobotsov, Milko G|1967|E74|1/2-1/2|B +DTphEUwp;LmeFVn^U^e^=uvuGWsm@Old?Fog>@xiW^m^O^g^ioCSpiNGi`S[`nT\o`GN`f[dkdL]d]V]n\F[vn]f\N>NtfN^ng^FrsBRscIQqa[mwuRZcb=?f_|Tel Aviv|Kagan, Shimon|1990|A42|1/2-1/2|W +DTph;Lwp@Ol\HPsd?Hnf>@xnEMvxqiO^]L@wn?>meEU\UOUkH@Hut=MsmCKm^MEe]T]nS=EiUdwvFV]gIQgm^lm\@vxGWtmUKulFOwu=>nwBJdZKZlZHXrtX`gvW_vl_gl[L[Z[>]MHdkdDGumNWjZGHm]HVT[WP]`?o[]V]d]oj`hjZMEZ[qa@A]U|Parnu|Bronstein, David I|1971|B83|1/2-1/2|B +EUxgDTnf@Ol\U]f]T]ph;Lwp<`vxFNwvOEme?FjbBRsm>@ul=DmcFO\T`gpgRZcmLVg^DTluTBo_VLh`ET`XOFugLRxyHPqaGW^UBJrsRcaY:=UcZcm\PYtmJLgLCLm[?>\V=FVL@b\;Lkc=DtkCKm]bZGOV_NV_fCUZR<\t\U\RKBR|Leipzig, Olimpiada|Malich, Burkhard|1960|A56|0-1|B +DTn^;Lxg@OsdHPwSL]g]T]dUOU^U=Dun?HS\>@vxFNmeCKtX@tm?=md@?nfFMumCSru?Fkc:;iwGOdkBJkbL[wiJRiw;KbtMDjb[jm=D=tmKMwnS[bZ=KxwjdmdMunu[dwnT\c\KTneT[\TFEe\ELucHXh`IQog[T\dTf|Portoroz Interzonal|Cardoso, Radolfo Tan|1958|B36|1/2-1/2|B +EUxgDTl\@OnfHP\UOUm]?Hf^UO]U>@sdFNwnNU^U;Etf?>vxCKul^kcEOn\=EgX^>UM>?leELog:=wv=Ef_O`XNGN\N@ANELEvFELFHAHME?=_X`OeM|Riga m|Saigin, Vladimir|1954|E01|0-1|B +EUxgDTph;LwpFVvx@wvBJrsL]ZuJRf]V]dUFMgmEKuY?>UK=KpUM?v^NU\UKS^>:>YW>=m\RZsvSJWY?MYa=;v^CS\mJR^nR=a`=<`a<=aY=En^;>^>E>m^>Eh`@?`XQXYX|Kislovodsk|Averbakh, Yuri L|1964|E71|1/2-1/2|B +FVl\@OnfEU\UOUsd;Lul@m]N`we@AtkGWqi`gpg=OvtOGtsCSd\S\l\G\e\:;sjV]f]LR\N;KusMFyvFONWR\kdDTWeKsvsT]d[?@SLFL_WNW^WEUWPGPmeL]qi=MtfgX?wvwDEphIQwGE=|Sochi|Plaskett, Jim|1984|A25|1-0|W +FVmeEUxg;LphvuVP_mipyvpLulLZlkPVo_VPnYEFvF>FrvFvmv;dm>Fh`F>`XQX_XOXmXEW^W?EXf>Gf]E?]V?EV]E?WVGFUMFGME?EVME?MD?NDCN]CJ]cJKcRKR|Brussels blitz|Torre, Eugenio|1987|B07|0-1|W +FVl\DTsd;LxgEMnfGWm]V^gx@Oxn?Fn_>@wn=>vxL=]TMTdS>L_UFMk[T[tkMTS]LE]cTFulOU\UFMc]BJjbEFb[M[lc@A]SJRUMFXSD:;wuOP>HA@n\@?HWPpxw_W]A?FA>|Munich olm prel|Beni, Alfred|1958|A34|0-1|B +FVl\@OnfEU\UOUsd;Ljb?Ful>@k[Udldf^BR[R:RdlL]k]=]rtRb^WV^e^][lm>^xnOdtdbrdtrt|Riga, Simultáneas|Amateur|1973|B47|1-0|W +DTl\@Oxg;LsdFNnfEUm]BJjbCKwn@tkT]g]L]u]FT]aO^a=?=d^U^wuJRn\@?xwGObZ?Fwn:@vxU=tf=og=DxiA;wn;kneEMyrOEg_ETefT^mtkqf^qitf|Bundesliga 9091|Lorenz, Sascha|1991|A25|1-0|W +EUphDTwp;LmeFVxgGOldL[>G[UufUfbfSLfnpyGPLEK]EWPQ\LHPWEn^LO^nOMnkMNBRqaQHELkKNFHOFDKsypsth`IQaYPY`YRZDIZbLUbjUjtlpyljIGON|URS-ch41|Grigorian, Karen Ashotovich|1973|E86|1-0|B +@OphFVwpEUme;Ljb?Fk[>@smV^nfrsOUd^GW^mUducEUf^d^\f^mfUmcUFLFscFUwu>^ce=MtfMLpg@GusLlbZljZRDLeuUfofjquxHXh`qigoW`sc^]f]icx`|Tel Aviv|Karp, Michael|1990|B06|1-0|W +FVl\@OsdEU\UOUxg;Lme<`nf=Ejb>bZQ_TS>^g^E`nw`gyx_f\lguwpul|Varna, Olimpiada Estudiantes Equipos|Malich, Burkhard|1958|B67|1-0|W +DTxg@Ol\;Lm]T]g]FV]S?[sdBJSM>FMWF?WfCSphS\wpV^fUOUuU@wn?>k[RKvxDLmeIQdZKDl\EUZd;E\ULUtkE?wv?Pph\^UO^fNckVOUg]cbfnbd]gdenfUf|Moscow|Petrosian, Tigran V|1967|C96|1-0|W +EUxgDTl\U]nf;Lf]T]me@Oph<`wpOEqi`Yh`YPga=RvwRDaPIPsmFNjbBRrs?Fmg:JgXJKkcETX^TJ`XLViaJT^TDTsrVLrjGOtmTVc[OX[SXaSLCLuvVOmRKJjn>GpiLTi`aiRDAaDVOX`iXWwpWeVhaYnNJBNLG@vN|Capablanca mem|Garcia, Gilberto|1963|A61|0-1|B +EUxgDTl\U]nf;Lf]T]me@Oph@m^TFo_=EugRZvl:RwsZcjc?:rR:Rc[RjguCK[SLRsrjklvF[rsksus[dxwW^p^EMvgMbslRclnbknkdkgVkdVEdRh`GO^PcT|Tallinn m|Keres, Paul|1954|A61|1/2-1/2|B +FVl\@OmeEU\UOUxg;LphnfHXwuGWZ\UMe]W_f_LR\SX_SW<;uv_hqhRL|URS-ch40|Gufeld, Eduard|1972|B72|1/2-1/2|W +FVld;Lm]@OtXIQXOHOnfEUsm@ulCKxiZSJSurF=r:OE_YEKYH>E:B|National op|Meyer, John C|1988|A41|0-1|B +EUxg@OnfHPk[?Htk>@l\DL\ULUwn=MucBR[SO^kH@Hsd^Ort<`qi`gngFNvx;EdZ?ZT>OTZO>|Moscow-4teams|Averbakh, Yuri L.|1981|A46n|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUgmU\e\;EtkE?ZT?PphCKTeQYevNru=Flm:=mt=uwuNOue`QtuiNedN@sd?>kc<`tk=Rue`Yrt:=nfYPemMVwuLTdZRmumVkmkU]ZT]fof>fTC=;CMIYM\fF\R;>RLFEL[>V[LVNL[O`pg`VgnYa[JahqhPWt<@IJTNPTEWE@w\DLvxEU\cU^gV=]V\<`dn]=\V`Ym];Eld[Mo_^gVg=Dph:>t_O^_MDMn_Y`ul>Flp?>_e`gwg^XgoFfru>Fe_EOueO`onfn_n`f|Amsterdam Interzonal|Quinones, Oscar Carillo|1964|C65|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQgmEUngBRdZKDmcR[b[;El\U\e\OIZd:rcr=FrlEOqaI?tb>=[SF>ur?NSLCLwuN]l]V]dnO^uv^mgYHP|URS-chT|Mosionzhik, Ilya Samoilovich|1968|C92|1-0|W +@OphEUwpHPl\?H\UOUsdUKme>@xg;LvxIQtfFVrtL]d^=FfmDLk[<`g]V]jZBJ[SLSZS?@]TFTZ\O^smTowo^oxo=Kow:@smBJSZ=D\UNU]TMTZLCLkc?>tkO^rtTMm^>^ulLTld^`kbDEgvU]de@Se:wvBJnmCSqaLFaYFU_V=Fv^>=YPGPd\S\e\Fb^vOFmQF?QabFaiJRih?QVMFOtlOWhaQHltIQgVPXahE>hb>Y\UNUVLLD>PMV]VvVWOVFU]FE]ehgOrxqrVghVODLOLE=@GhVLNVD|Bled|Udovcic, Mijo|1961|A32|0-1|B +@OxgDTphHPwp?Hvx>@l\EU\UOUsd;LdU=UmeUMjbsrHk|Moscow Open|Neverov, Valeriy|1990|A39q|1/2-1/2|W +@OxgDTnfHPl\?Hsd>@wnEU\UOUvx;LjbCKul@gX@UW@AaYO]WGIQph?GcGBRGcS[c\]dh`RZ`XQX_X:;XtdV\G[cjcZcxpcktkVkGPktPGtQpx^fofQfxqfTG_;kqikciqcg_VToV>AI>PI@YQo]P>@IQH]H>YHQY>gOqiQ?i`?M`XIHXYON>yxXfxHfNtsM?Hx?Qg_NMktYamvEWvaL[umMLtkO^d^U^]U^fULfmwp[l|Alekhine mem|Padevsky, Nikola|1963|C16|1-0|W +@Om]EUnfDTl\T]f]<`wn`nxnU\uZ;LsdFNZ\?Fvx>@tf:@ld@vxDTe^U^sdT]u]=DdSMVSDV]t_HX_X;JD:]nxycG>MGUC[OWogPOMSntyxUN[aOPS]NEphte|Wch-blitz|Jussupow, Artur|1988|C43|1-0|W +@OmeEUxgDTsm;LldFVn^?Fph>@wpU^e^@wn?>vxO^smVSM=XMG@GuEVFn\G?EUXU\UL[U\:=jb[LwuFEuE=ExwLVwnV\c\EDrtDTogTYqi^gng?FtsCKsSYaSVFMVUMLU]aYg^YR]eRZ^]KSedBRf^IY^VYa]^S[b[R[dgZBg?BC?oLTVN[cokT\^V\dksckVMdlsklkNFC;ME;CENC;NGkdF>2;>G>d]>G]fGPfoPXohXYHPYXhp|Brussels blitz|Larsen, Bent|1987|E14|1/2-1/2|B +@OxgDTph;LwpFVmeEUvx?Fn^>@sdU]dnO>gm>Mo_hYENHVNGWOGYVYMGOFDF^V?@VNFNon@pxp=YTjcT?=EnFEL?@m]T]g]EMtf=Do_BJjZLRuvd^GW^m\DmgMV_VFTldJRgX:J]SDKfTKTS]JKwoIQXiHXiXQXhX>Hrv?GvfTFXQH>]WNWQKELfh>HK]@?hPHN]fW_fi|URS Spartakiad|Nei, Iivo|1979|A28|0-1|B +FVl\@OmeEU\UOUxg;Lsd<`nf=Ejb>tTWfofEiclVhvuhMTWiQWS>^lLCKL^QOe]OGyv=>^eGgul>^SXHPvnMqXpqMecgWceWUlkUNecNFceFNecN>|It|Kozul, Zdenko|1989|B67n|1/2-1/2|W +EUxgDTnf;LwSFNvx@Ol\?Fm]>@]TFTsm=Fkc?=\UNUtkU]SL]fkOFOm^foxy=u^OHOruCLg]<`um:>qiT]m]>v]`@?`_vwyq?Fp`FNqpwu_ouUolLTl\OW`WNW\ZUEpgGOZ_WV_^VUg_|LAT-ch|Gipslis, Aivars|1965|E55|1/2-1/2|W +@OphFVl\EU\U=Uxg?[sd[dmdUuvu;Lwp@wnEU\U=Ume<`jb`gngUMrj:=gnOUkH@HutGWphW_h_FV_VLVo_VLsdMFdUFavm=Ut\?=jl|Tallinn|Gavrikov, Viktor|1985|A30|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQtkEMmeDLds;EsmE?m\KDwv?PnwCS\mDKbZBJZSLSqiP_e]OYl\>N\TNPxqKD]U=Orb_ipiY_ur_iwiO_qysmLFm\`gngHX\RDL[SMDRC@ul=>n^@Akc>YtkW^e^@sbEUblnf]f_fU]fm]ep^W^lfL]vp]g|Sevilla op|Landero Luna, V.|1992|B10|1-0|W +FVl\@OmeEU\UOUxg;Ljb<`n^`gugL]guU_sm?Tm\=Fk[TKuZ>?\KDKtfIYf]V]ph_U[SFTZ\Ud\TKTbZBJSJ:Jwi?FvmA:ytJZrZ:Zi@wvOEsmGW\T@Am\V^e^W^v^ET^_FOgXTNXNv>:>\M>vxpA@MCIQCTE>gU@IT^LFUCF@b?|Tallinn|Rytov, Boris|1979|A69|0-1|B +DTldFVnfEUm]T]f]V^sb;Lbl@FxnFWn_@vxBJSeNV]TMTf^TB^UOUm\U_e^=O^L?=uZCL\V_nxyntrtEvlFIPIAIsmLVxyIHk[@O[TMTrs:;w_O`m^TK\TKDl]Ve_ge_suE>]WHPWMDM^MPMuM_pyp>Fqi`Vgf;@fh@@sdEMtX;EumEKkc?=rtCLgvLpvpMUXOU\m_D_p_HOd^\cjc:@d\=Ftk?=g]YPrtL]k]NV]BU\t\CS\<=@sm;Ln^CKwv=Dldun:=VNGWgXLVd\U\e\JCmgVgpg>MgCDCt_BJruCLXGH]GM=M_MLMngW_h`PXue@HxpIYqiY`i`?Ag^M;e]_gpgAigp;qpwT]^]HI]^IQ^pqypyiywnyang|WchT U26 prel-A 05th|Malich, Burkhard|1958|E67|0-1|B +DTphEUwp@Oxg;Lvx<`l\FNme?Fqi`Yh`YPga=D`XOY\UNUsdU]dUDEn^]ftf:=u`GWXOYO`E=EUFLFfTPewvCKTb>=agFPgXP_pLEDrtA>L>_nxqDtvtnt>GeskcteXN=ENHsjqpBRG\eT\SEFc[R[b[OU[bUDSn|URS-ch41|Smyslov, Vassily|1973|E61|1/2-1/2|B +EUm]DTnf;LwnT]f]@\UOUtX=RdURUumIQXf?=wtW^qi=EmuMDuZUMxw:=tuMUrtDKwxUWumWPgaPOagEMjb^gngK]tuNVgL]fmMOoxy=MLgMuZuoku=@I=eHPefCKfeIHgUQYegGWgeV^e\kb\]HI]ObtyqtDqyDHOMYaU\^fyxBRMKHr\wrvKDIQD;voxqoh;hahqhRZiaW_hgZbw\QYphfngn_hng|World Cup|Kasparov, Garry|1989|D31e|1/2-1/2|B +DTphHPo_EUwp?HmeU]l\@Qxg;Lsb>@blxyHQgXL]pUELULV_f>?>L>QXyxDCm_X_h_]gxogmohC:>S:bsubehaenumnmah@Hwomfhpf^phIQogPXqiGWSJHO_XQXJS^n|URS-ch37|Taimanov, Mark E|1969|A86|1-0|B +DTxg@OphHPwp?Hvx>@meEUsd;LjbU]dZ=Ml\FVnfIQf]T]k[\TMDrjWNjnOESKBKZK:Rg]V]t_DTKETbEVbcutPXV\Rjnjcj\M>?_VjJVH@HtTJepwedTVH@M^=L^O@AV^AHOYH@we?=^I@?vNGNIH?>eP|Portoroz, Interzonal|Rossetto, Hector D|1958|E63|0-1|B +@OxgEUl\DT\UOUnfFNsd?Fm]>@weCKvxT]dU=UulIiogiQmnQtxotD`XDF>YHPYPFHPH@Hnl?MqaKSaYS[YQHIXP|URS-ch29|Taimanov, Mark E|1961|A32|0-1|B +EUxgDTl\@O\UOUjb;Lnf<`sdFNwn?FuZ`WgV=DVLCLf^UKZlWPme>@vx:;tf;Crt?;xyGOk[T[b[KEdjBRlZR[tLD=ZcE?LJ;:J:=:wsP>nu@Ao_FM^VOV_VCGuYHPVMPYj[:RcdA@dTRTfT?Ee]GW[L@GstGOLFWoyxo_tv_`T[>PFL`^v^P^LV|URS-ch43|Furman, Semen Abramovich|1975|A32|0-1|B +DTxg;Lnf@Om]EUl\T]g]FV]LCL\ULUwS@kc:=tk?>dZTMrtU]f]V^ZTEWTCMqxqO`qhIYtTYahi`oiqW_qx^fug_gpg=ETdECwvoixqi_vf>fdfCDfdDFktFnqy_Yg_Yhyxnj|URS-ch37|Polugaevsky, Lev|1969|D41|1-0|B +FVl\@OnfEU\UOUjb;Lul?Msd@k[UKwnGWme=OvxBR[SLFf^W_e]FPdZV]tkPVZTN`TC]eleVekO?One`gpgMVrtRZesHPwu:>sj@HueO?CTHQTN?OND>=a|Candidats final|Spassky, Boris V|1965|B82|0-1|B +EUxgDTl\U]ph;LwpFVvxV^gv@Ome^eve?FtXOEX_>@n^CKqagaEVaWRL_VLVe_HPYPIP_PVPuYA@^VCpVNGF?2P?xpGEQYELYgLgpg|?|Rytov, Boris|1976|A56f|0-1|B +DTxg;LnfEUl\@O\UOUwS@usCSeI@Av^HP^aOagaAIs^IHrv?Aag:gX<=^_=UX^UW_D|URS-ch sf|Zhdanov|1955|A32|0-1|B +@OxgHPph?Hwp>@vxEMm];El\FVsd?>nfDLkcOYulGWtb=OwuLT]VMVdSOKgXYOuMKRc[T[\TIQl\@Ab[RZXGAISDH?MeBRGXQX\G|LAT-ch|Bannik, Anatoly|1954|A08|0-1|B +FVn^@Osd;LxgEU^UOUwSUdkd?Mm]V]d]>@vx<`tfLFSnFWfXGOXt=>qi`Yp`>PgvWavpY`n\@Apa`uaPIPwuDT]TMTtfTfof:EwpUSB:2A:p:\dkdVdrbFU:UOUvud[bcDTf^Uduldncen]e]T]xhSZmcZjlu[dcTELTeLShgGO`Xj:XO:^ghHOtmS\ev^suns^nuIYhg^suns^nuYag_^sundmnmskmukcuncivg\d_]iWnfWTf_ai_hTW]_|Subotica Interzonal|Rodriguez Cepedes, Amador|1987|B17u|1/2-1/2|B +FVl\@OnfEU\UOUsd;Lul@vx:=tf=Eru?=umIQwu@Al\N\e\Emum=mfmCS\S|Candidats Tournament|Keres, Paul|1962|B48|1/2-1/2|B +EUldDTm]@Oxg;L]TFVk[V^g]BR]LCLjb?FtkO`qi`Vnf@smGWunJ:mc=EcRW_f_Vgxy?_wu:?kt_anw?WRLWYLF@Gp`aiwiYiypE`pwiywng]nf]lfm`u|Riga, Cto Letonia|Zeid, Teodor|1952|D15|1-0|W +@Om]DTldFNxg;LnfEUsm?M]TMTk[TMjbNVd\U]\T]fTMfmumO^mn@nh?>vt:=gX^eueDLyuCStsHPXgM?hn?Hn_O^qi=;p`>@d^Y_phaQh_V_fTGW^m?Owp;LmggU@AyqOPqpPhph_huwQmUpVPrumXuv>=]BW_\TIYe]=?pgX=]U=RBKRdwnPavwd]xyagng]kgpkSyxYapm_gmXgoxpS\XYA@|URS-ch23|Bannik, Anatoly|1956|C75|1-0|W +FVl\@OsdEU\UOUn^U[jb[ewe=eugeJgh@wn?>k[RKmeDLvxIQqiEUwv;EnwE?tmKDph@]T=DjbBRtmDTmdvxUEulOUwuGWrtHXk[UdldEM[SL[d\`gngX`gn[UjZIYnw<;ZRM[e][\w\V^\c=Mum>=phYaxwahqhCKml=AwnAqRJqIlLM=LNUFNODLSL;DcN=MNWFWOWMLtLDLWVIHV^|October Revolution 60|Mariotti, Sergio|1977|B53|0-1|B +@Om]DTldEUxgT]d];Lsd@jb?=f^U^d^M;^OHOecFEwuLFt<=@meEU\UOUtm;LuZ:xp]dEmdmV\m[\K[dKZdHZTH?TNRZpgZbN]bj]l>Eg^ELo_LT^e?Hn^jr2lrHrqa|Malmo cm-reserve|Andersson, Ulf|1983|E60i|1/2-1/2|B +DTph;Lwp@Ol\HPsd?Hnf>@xnEMvxqiO^]LAGE<;EC|Leningrado, Interzonal|Larsen, Bent|1973|A37|0-1|B +FVnfEUm];LwSV^xnBJSLCLl\=XulXpyxpq\U>=sm@Om^wvFOW^UKu=O=RL>LZlL^l^=U^UKUvtUKxwA>tlIQg]>V]gVSg]SU]gKZwnUSk[SUnf|URS-ch sf|Sakharov, Yury N|1956|D45|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tfDLw\;EvxKDVE=Eog^gwgO`f_CS\cDKdnBRrsR[b[?>ldEFnh`OqiOUcULUumGOgfFGsvfvf:>f>E>mfGEfFEFMF@GFMGNM;IYxoYahnHXntK=te=FeTNWofF?TC>LCT?QfgL>TC>ECTE`YQ?b?>?YP?FSKFMPO@vx@tkLVvxBJsdqh>L|Varna olm|Byrne, Donald|1962|E14|1/2-1/2|B +EUxgDTnf;LwSFNvx?Ml\@Om]>@sdBJSZT]f]U\ZLCLtXLTd^HG>ANVAIGN]oscIaW_aAOWAQNEQOV^OWcgoTghpwhgwnMTWTgcTV_gnockowkswoskow|Candidats qf1|Portisch, Lajos|1965|E56|1/2-1/2|B +FVl\@OnfEU\UOUxg;LmeGWwn?MsdUOvx>@dS@Akc@\ULUvx<`qi`WmcMDc]W^uc=M]SMESD^gD:Paf^U^p`^fcfIQf_?:tf:>_hHXrtgLwuENuMN^tLCLxqagqpg]pq]n|Lvov|Flesch, Janos|1981|B17|1-0|W +EUxgDTnf@Okc<`tkFNqi`Ywn?MgVYnun=DV`;El\><\UOUsbGWbSD;SM;M`qU[m]T]f]NVvxV^ogMNg^W^qgNUgmA>m\<;\f|Parnu|Lutikov, Anatoly S|1971|E12|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWul`gpg?FsdUKlc=EqaBRdZKZcZ>@tm@ArtEUwnFOZ\UEmd?;bZEFnu;=vw=MaYOXucL]f]ML\LCLtvFE]VXmc\mdkdEFg_:;wpIQvs;=sCAIyiHXYPIHiYHPYiQYihPQhXFECsE>syLT|URS-ch45|Balashov, Yuri S|1977|B96|0-1|W +@OxgDTnf;Lm]EUl\T]g]HP\U=UsdUVwS@f^:=ucCKt_ENcZYTrtL]g]T]Z]=]ogOY_f][kcGWdUNU^UH]f][]tDY_n\BJwvKSvF_Y\w]UFI?>DBUuIEuEBEY_xo>VEM@Hph_Ng_V^wp|?|Romanishin, Oleg M|1976|D41d|0-1|B +FVl\@Osd?[uc;Lnf>@dU[RcZBJk[CSZcS\w\:;jbOU\ULFxgEMU^DT^I@Icl;B>fU]|Naestved|Hansen, Curt|1985|B82|1-0|W +FVld;Lm]@O]VLVtXIQXO=OsmEUxg?MgVOVnf>@wnDLmgVYg]YXng?>ucLT]S>fofXfvwneS[rj>felfg|Candidats qf1|Portisch, Lajos|1965|B10|1-0|W +EUm]DT]T@OjbFNk[BRtkR[b[:rkrCKnfKT[T?TxgO^rH=RsmA@urR[H];LldT]m^]AwS[^SL>FrBFMBKAdgm^[LSMFvxdmKDFOSemdws[RD_OFeI@AIedOsSRrewrt_ZOVphtvqiAi|LAT-ch|Akmentin|1954|D22|1-0|W +DTxg;LphEUwpFVmeGOjb?Mgm@Fn^@m\=Ers:=tmL]\fUKo_V_w_OW_oFMuw?Gf\MD\RDVRC=@wpUOsm@An^=>k[W^e^>YqiBR[SL]g]V]tk@meBRxgEMwn;JsdJDe]V]f]TBvx<`tfDNwuMU\TB;phOEgXNXn`XNlmGW`iIYmvYao_ahqh=Ovm;Duv@Gfo?AipAQdULUpU:>vnO=rvE?UjRZ]UDRUN?Nm=R=h`=RnNRvNQ|Riga-ch sf|Klevitzki, Yehezkel|1952|B28|0-1|B +EUxg@Ome;Lt_IQqiHX_q?HsmX`gVQYVLCLn^:;qV>?unBRvtRZnfZbkc@tXIQXm=Kld;Lwv?=ZSJSucCJ^VMVb\KD\VLVgVT\cuJCr:C:p:=:e\S\un:<>n>AI>^I@^CTWxpWNCg@Ih`I@g:|Dubna|Espig, Lutz|1973|A15|1/2-1/2|B +DTl\;Lxg@OnfHPkc?Htk>@wnEU\UOUkH@HutCKtkGOjbFVme=FvxnwFGru>FphG>m\C@wn?>k[RKmeDLvxIQtkEU^ULUe]V^gV;LdZKDo_^gngLV]VDVkV>Vl\VX\U<`UM`gug=MgCM]xy:>ruXWCSWwuw>fSWfbW<@I@vxEU\UOU]LCLsdUdkd=uwuHdpL:;t_FVrtdk_QktQ?@?ut@dTFOwn?=vxK@wn?>k[RKmeBRtkDLdZKDl\EU\ULUvxF>s[>NtvIQ[]KZ]\|?|Kupreichik, Viktor D|1981|C88c|0-1|B +FVl\@OmeEU\UOUxg;LnfGWsdxyGOZlM?dZKMwt>f\Df>D\HPZTMUTc?QtwOWcT>F\[;:Te=>[\BJe[UM]UFv\<:BloMK<>Ko>vokvskVwvVMvuQf[lfTlvTKscKDphIYvgW_h_M_u]_typDM]mPXceX`gatv|Bs As simultaneas|Niegovich, Jorge|1991|B63|1-0|W +EUxgDTld;Lm]@Oph@]TFTZ\O^smTowo^oxo=Kow:p`FOm\W`i`YPng<;e]A?gp>NVPIP\VOV]VDLc\?AyA=Ak]Aqpwqy\T;DT?UF]TFTMNGHG>GvoFUw\yt\ULU_Wt\og\^bZPW`WX`gh^fh`U]`_fnVNGOMD]eD=OH_gnV|Sarajevo|Bogdanovic, Rajko|1966|B95|1-0|W +DTn^;LmeHPo_EU^VGOxg?HVO@Oph>@wpFV_VO`vx`VgV?wuwLVsd@smGWl\=O\TMFuZBRogFTg^O]Z]T]xyW^w?@?m^U^e^:;^Itm>nmRHPIP?HsuLTPeJeue]kp`HORDOX|Hastings7374|Benko, Pal C|1973|C43|1/2-1/2|W +FVldEUm];L]VLVsmV`xg?Mul=Fqi`OnfO^m^U^gm@Op`<`XOUm^<;^M=Mf^NWvxWPo_UKtfM=d\GW\TKU^UFflofoxoCKTLPGruA>wv>vuvBRvF|Marseille|Renet, Olivier|1989|B17|0-1|B +FVl\@OsdEU\UOUnf;Lul@tm:>k[OPxyUdmdV^gxPQxiW_i_?_f_M_phNUyx^fn`fowo_hopQfxyhvqivdldLVrvfhvnIYd]Upnphe]eVe`Y>vpxeoypvxpxoixqi_Y`CK|Bled|Olafsson, Fridrik|1961|B82|1-0|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tf;EwnDLvx?>V\KD]ULUdUOUuU=FruEOUXCKf_IQXhD_h_Y_u=@IwJN`ph_ixpi_px|Jurmala|Kosten, Anthony C.|1987|C83|1/2-1/2|B +FVnfEUm];El\V]u]@Osd?T]aU\w\EVxn<`aX=Mkc>@tfL[vxBJSZU\gC:;Cg=Rfm?=ghFMha[UZl;kdURUlI@?mdknrvnvwv=;Il?@jbUYaYOY]UNUvuY_xw;>ph>ndm\dm_nl_MlkutU]MVkmwvHXtuGOV]dlvm|Wch-blitz|Vaganian, Rafael A|1988|D38|0-1|B +FVl\@OmeEU\UOUxg;LnfGWjb?Fwn>@sdgLc\wu\nu=ft|Moscow|Anikaev, Yuri N|1982|B83|1-0|W +FVldEUm];Lk[BJ]VLVt_?M_VMVxgVMnf@Own=Fsm>@vx?>wvO^m^U^g]FXjZIYnYHPYn@Hph>Anw<`ulAql^qoxoMhoxhvwpvm]lmdrw:=^\dO\D=mwomuow`gDqOVqig`iyumwomlolXfloVh|Alma Ata, Cto URSS|Gurgenidze, B.|1969|B15|1-0|W +FVl\@OsdEU\UOUnf;Lul@d^IQw\@AmeGW^m=Ok[UKtkBR[SLF\NONm\FPrtNFvxK\l\:=bZV^e^W^g]PV\NFaNiaipi?Otl=?]nOPxyVendPNyp?WdnM[nhWUk]DTSLCLl\evpyvgwtLT]TgVT[V\t\R[|Belgrade URS-World|Najdorf, Miguel|1970|B48|1/2-1/2|W +DTxg;Ln^HPwS?Hvx@O^VOUwv>@sdUDSLELd^CKqiYaK=^vxqvVqx|Montreal|Larsen, Bent|1979|A29|1/2-1/2|B +FVn^@Osd?[xg>@gVEUwn=FVe[dkdU^ekDTvx;LogwvFav^>^g^a^me^Pt_?>umLV_V>Vk\V>rv>vmvELvnCKjbPX\fIQnoXVomV_d\_XldGWmn@IxwW_f`QY`VLpnpXVpUV>e]>PUgPswpslpyltyptmpxmtxotlgnlnonIP]UPWqaHXaXWXbZYangaigoXWogWVgoV^UMiqop^fME_gpqgoE=2ow2=FfmFBwnqxnfxpf^po^WohWPhamdZRP^aY^VYPV^POKRBRd\RZ\eZbe]br|Rio Hondo|Panno, Oscar|1987|C67j|1/2-1/2|W +EUnfDTxg@Om];LwST]f]<`qi`gug=KsdFNge?MtX>@XOHOvt?@k[Udld=U[SV^tkFOdlOklkLVwnN`vx`nhnVekd:@wnEUvxFV]cU]f]V]dSO^ngGWt_BJSD:BrtCKDUv[K[e[JRXGR[GM\M_M>nM[njphHOxpjk[T|Tallinn|Petursson, Margeir|1981|D41|1/2-1/2|W +FVphEUme@Owp?TldTKxg;Evx>@tXV^e^U^g]IQXOEOnf=Ful?>smDT]n<`wv:=jZKRm\RDruBJu=>=\m`WmcWEvrELd\DVcRL>ndVdld>ZrZ=upwFEdluvxpE`Zj`gpxO`lmvukcumjmCKwpgOqiOrpw`Vm=@IRCVeCMrO|Sukhumi|Suttles, Duncan|1972|B07|1-0|W +EUxg@OphHPwp?Hvx>@l\DTsd;LmeU\e\tfNEZbCKruEifXipapOU\UL]n^<`X_`gbg]gxyHkuegVemkdmuGO_tKSp_T\UMd[ME>=_U[MUOFOuM=EMO:@eWELru:=vw?>aYMDyi=MlsMOgaFVslU]d]T]f]LSWeV]ag]^lDSewxenu=>=D=@I=ROWRd^sxqngpgWXihXYhiYiqisyihyxh_xodeHPeEPX|?|Putjudrova|1955|B11h|1-0|W +FVl\@OmeEU\UOUxg;Ljb<`sm?TuZ=Enf>@wn:=m\?>tmBJZlCS\RLRmRTfofUflDEUvo=^n`f`oh`fyv^NrtwgIQtD>VDTV^T<@I|URS-ch26|Polugaevsky, Lev|1959|B94|1-0|W +DTxg;Ln^@OsdEMm]T]g]HPwn?Htf>@vx@qi`Ywn:=m^TKp`YPtmGW`WPWgaW^Z^@AagUO^aV^e^LVvtVPaXO^XYELts^mgm=mumLy|Portoroz, Interzonal|Larsen, Bent|1958|B94|1-0|W +FVn^@OxgEU^UV^gV=FV\OUsdvoOEV\M_hHCS\kDMrv>@HF_how@>F>=>v>nOUyi|URS-ch36|Kholmov, Ratmir D|1968|C43|1/2-1/2|W +FVxgV^g]EUme@OtX?Fnf>@sdDT]c^eleCKwn;Lvx@wvOEsb@AblBRrsGWjbRZtmFOl[V^e^W^v^ET^_TN_WLFWYHPYVOVgVFW[UAHun?>qa:JsvWFmQHQV`|URS-chT|Ufimtsev, Anatoly|1967|A69|0-1|B +DTnf;Lm]EUwn@Oxg<`qi`YvxFNgVYnun=DVLDL]T?TkcTFtk:@sm?=l\LJtl@meEUsm;Ln^=D^UOUmc?=cTL[jbDTb[U[tm@xgGWm]=OtkvwLR]UOQwpR\l\>^\d?OyvOPTLCLULPLdcENc;N@kV_VgVLOruHPv^W^;k|Zuerich|Walther, Edgar|1959|B43|0-1|B +FVl\@OsdEU\UOUnf;LullZONgmL]ZuNPqaDLaYPXmg]gpg<;wnV^vwMDe^U^k]^Ug_Xp|?|Gufeld, Eduard|1969|B48|1-0|W +FVphEUwp;LmeGWsd@vx@xgDLwnEUvx;Ek[RKtXIQXaU]dZKDl\]dZd?>rtE?ah?PulOYwu=Oe]YhqhV]u]<`tuQY]e:=e=D=dZ`gngYaha=DaYPalcO_xw_quE>NEGqywnapcNyvnevwedDVNVwrZk|URS-chT|Lutikov, Anatoly S|1963|C79|0-1|W +HPl\?Hph;LwpEMsdGWme@Onf>@xnFVvxkc@AxyN@tkL=e]DLUdV]f]YOumMUkb?G\ULUnxO^meGOxgOJbk^dedJjgVEMsrjrwr=LkbMNdm>@xgEKsdKUdUOUjbCKeldl>^og^flPIPvf_fxwPXphQYiaXOwnHXnfXahaOVg_VU]nKSndU\dS\S_WSTf_TM_XMF|Brussels blitz|Huebner, Robert|1987|C07|0-1|W +EUxgDTphHPwp?Hl\U]vx@Onf;Lf]T]me>@jbBRwvOEsmIQgaEVagVgmggmRZ^UOFm^:RUMR:tmEWMF>Fk[ZcscW^p^:Bvs@I^UFEbZH?cS?MqaIHZREDxpL=piQYSKDEKSEDscMTo_TM|?|Osnos, Viatcheslav|1968|A64|0-1|B +FVl\@OmeEU\UOUxg;LjbBRsdGWn^UOtX?Fwn>@^W@dL?=ndJeLTFNTVNKmcDTVTKJTb:@wn?>k[RKvxDLmeIQtkEUwv<`qi`YgmYndnOYl\U]\TKDvw;En]EO]g=eus:=se=em\O^kVDV\VedwvYOvtOUV\|URS-ch46|Razuvaev, Yuri S|1978|C92|1/2-1/2|W +EUxg@Onf<`l\DLuc=KsdFNm];Etm?Fwn>@vxO^mvGW\UKcjcNUneBJgm`Yog^MvhYPdnMSn_?>xoF[ms@Gf^EOwyIYyuPIsbHPbl[?eSJSlvOEve?Qc[Q?eTET[T?Qr:>:_e:jonI@hvQHv[j:etHOphGNueNEg_O=ec@G|Varna olm|Ivkov, Borislav|1962|D03|1/2-1/2|B +EUxgDTnf;LwSFNvx@Fm]BJSnFWld?M]TMTsmWMd\U\m\M\n\=uwuCS\nFrtTMmdGOgmLVo_VEmcCUf^U\uMFMd[MDcRDKkcETc\T^\S:@smT]f]BJSZCS\SL[msJSZS:jrj[jtf=Ruc_hGOVEJecZMhqhe]wu]^ET^nutnmtumnutnmtu|Sochi schev|Tukmakov, Vladimir B|1970|E53|1/2-1/2|B +FVl\@OxgV^g]EU\U=Unf?TsdUVo_VF]n;LjbIYk[TKul@ucC:wu=Kmd?=g]L]d]K;^:;:]d=utu<=|Aker Brygge|Smyslov, Vassily|1989|D40|1/2-1/2|B +FVnfEUm]V^l\DLsd@OucBJ\T?Ftm;EdZ>@xn:;qi=DclCKTKEKmROEndDCvtKZdZLTwnT]f]F=Rm=DtsDMutEKZTCBmRM_Rm_MmRM_Rm|URS-ch sf|Petrosian, Tigran V|1956|C02|1/2-1/2|W +EUmeFVxg;LphGWwp@Ol\?[tmV^gX^fm[fovmL[uZ[L\UOUqaIQsdUFXiZbFUbTL]pUGUnf]N_N>NoWVhW?N>?>hpmvpyvmypmv=>TD;:DEULEG>=GopyvmyYudHXf^X`txYPoaPMxhQYhf=A^VMbe]AavYae^b?VN>P^V?W|World Cup|Beliavsky, Alexander G.|1988|B09x|1-0|B +FVl\@OmeHPsd?Hxg;Lph>@wpEMvx<`qi`En^BJtf:;jZJRe]V]g]L]f]EN\TMT]T=uwu?=dS=uruNcumO>^VCKTbHVSBVOBL;MbMDMmM@HwSOkxpcNiakbMebTog@l\<`ucBRjb;LgVLVkVR[c[=Eog`W[kDT\UEUf^W^g^U^wnOUVHU_kS@Hsd^pvt:bSk?:dSH@SbpnkcnJyw_etlJburbclc:=rB=EcdGOwre[rREDd\[LB:@GRTDE:jFV\dGNjkEDmeNMk[OW[SPXdmX`mfIYe]L]TD]SDCSDCKMTKQDUfoW_QYT]YXUOXPO^ox_gP`]f`@goxp^m@?ow2?wmwqiwmiam^aY^O|It|Lautier, Joel|1992|A46|1-0|W +DTnf@Om]EUxg;Lld<`wnFNsm?Mqi`Yvx>@]TMTk[TMtk:@nf;LjbEU\U=Ume<`wn`gngUMrj:=gnOUkH@HutGWphW_h_FV_VLVo_V`n`Uftf=>f>?>jnMUyx>nvnUcsmcbxsCK`Nbdm^dl^mldm^|Naestved|Short, Nigel D.|1985|A30i|1/2-1/2|W +FVmeEUxg;Lph<`ld@Owp=EtX>gmV^e]OYd\YhohMhvwL]sdGOXf]WfxEMnfMVdn>=usWan]U\s^NU^`OW|Moscow-3teams|Bronstein, David I|1973|B08|1-0|W +EUxg@OphHPwp?Hl\DTvx>@me;LsdU\e\@tf@sdUKvx<`jbGWk[FOtk@Agm=>bZL[ZRKEqi`Ym\ETkb[JdU?Grt:=UOHOulCKo_V_h`W`i`Y`w_>ne]Teln`n\VOV_GetbtV]RKBKtQn\GF=MF>\@Q_MN>:JTpUNPxqIY:@[SLVwnVgmgNVvxV^gmMVo_^gmgVDd\DKk]U\n\<`ucK]g]=Mw_:>qi`Erw>Fwg?Fvt:=dnMUn]=@wvOEblETmcTZpU@AuYYn>GUp:>nwBJXmDEo_CS\SJS_VLVl]MTcTZT]gVev>?>kcT^mvev|Leipzig olm prel|Contedini, Ennio|1960|A67|1-0|W +FVl\@OnfEU\UOUjb;Lul?Msd@d^IQk[GW^TMTlT=MtkBRTMDM[SLFw\@GmeUK\NGNbZFUvm?mwTMg]PVeSDLqVFVSeHPwmLTmgVO]SESeS>FnmBJSwMhvuONf^W^gXNV|Framingham CC sim|Conway, M|1988.03.08|B18q|1-0|W +DTl\@Oxg;Lm]T]g]FV]S?TtfTfSM>?ofO`uc=F\TCKqi`OsdKTvtHPp`?Hc\:;wpL[\TFNywA?`XOYMGYhuM[JTRN>MOhwGM>=RV?OXOH?V_?@pU|?|Polugaevsky, Lev|1979|A34|0-1|B +FVl\@OsdEU\UOUnf;LmeHPtm?HdU=Umd>@xg?=wnV^e^HdkdU^usp`>O`XOUnmBJ]lCSiaUFl]FUjbUD]LVML]|Candidats sf1|Larsen, Bent|1965|B54|1/2-1/2|W +EUxgDTnf@OwS@vxBJSJ;Jme?>sdJDf^M?ktCSt_S[dZDSul:Fv^<@^_OX_gCDrvSdxwdUe^XO^eFHqi|Sochi|Lukacs, Peter|1984|E11j|1/2-1/2|B +FVldEUm];L]VLVt_VP_h?Txg@Osm>@nfO`qi`QweQWeWucT\c[KDhD=DkcWeZR:<[S>=c\BJSkU\rZ=UZ[<;vrUTkbPFg]FU[k;ntePtj>=j[UO]l=fU>DUK<=bZednm=>m]DS]\T\K\>EqhENZ[GOh_dl_hlniaIY[snjs[jrh_ryphyth`HP`YPY\ftr[\rR\TS]TR]n|Moscú, Cto URSS|Averkin, Orest N|1973|B18|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUulCS\SLSZT;EtkET[TU]bZS[ZRDRlZRDZ[BR[ZNrsNLlj=>skOEwsSJk;E;m\>NnuJ\j\N\e\;JuZLTbTJTZL@?LURZ|Munich olm fin-A|Sanguineti, Raul|1958|C97|1/2-1/2|W +@Om]DT]UFNsdNUdUOUuU;Ln^EMxn=Ftm|Erevan|Espig, Lutz|1982|A09|0-1|B +FVl\@OmeEU\UOUxg;LnfGWjb=OucBJsdUKcl?Mk[>@tkOPwngmL]f]V]d^W^e^ELneM_mgL^e^>^lc@Ak]Kv^M^wv>=gaPLaW=Ecg^MWM|Moscow RUS|Psakhis, Lev|1988|B82|0-1|W +DTo_;LxgHPn^?HwnFNld@Fvx>@xyEU^VU]meGOVOHOucCKgXOX_X@vxGWf^UK^WNWtf@Ae]V^gmL]m^DTn`=<`W]WfXFX^X<>wv>PXg:=ul?>v>=>ruW]|Hoogovens|Kavalek, Lubomir|1982|B83|1/2-1/2|W +FVl\;LnfHPm]V]f]?Hxg@F]UL[tmBRmd>@wnEMvxFWdH@Hsdrv[Jne>vwvJTeWEWdSWEg]RZvf:@sbIQblFVgm?>lv<`pg`NrsBRjbH?unOEvlGWk[V^e^EVnuVgmg]elfW^[SL]g]=]tk]Eum@ISK:?sSTftfNiwvE`SV?Go_`gRm<\VT\TfTGETfE=mj=EjmE=mj=UjmPXbZIPvsPYmoY`_XQXfmUTZRTlRJlmom^fmjg^JCfnxoem|URS-ch30|Kortschnoj, Viktor|1962|A62|1-0|B +FVl\@OmeEU\UOUxg;LnfGWjb=OucBJsdUKcl?Mwn@k[:>[SL]f]V]tXOPg]PX]gXQe]JRwv@AbZQOneDTSLELv>?>eSLgS>Oapgaqxwqywnyr>GM[dUrvnevwefK\f_[mUfwol\of_WfgWNg`NMmfMT`WGUWPXV^X`]Ukb>SQX^V`hSwX`UMbMVMYaMLaiLKhp|Tbilisi, Memorial Goglidze|Zaichik, Gennadi L|1988|B82|1-0|W +DTxg;Ln^@OsdEU^UOUwS<`qi`YSLCLvxFNd^?F^hYgug>@me:;gnFMl\UFkcFPtk=anf;=ru?>h^NVkbP_ph_ixpa`og`Wwyi_h_WPpwV_fx|Nice olm fin-A|Sanz Alonso, Francisco Javier|1974|A28|0-1|B +EUxgDTnf@Om];LldFNsm?MwSBJSZ>@vxO^m^U^]TMTgmGWunCSZc=KogTfxyLVg^@A^WNWmgV`gV`owofoVGA@GM@AnFM>|LAT-ch|Klasup, Karlis|1952|D46|0-1|B +EUxgDTnf@Om];LldFNsm=Dwe?Fvx>@wv@SLCLvx[Mm_MV_VO^og^XsdXNuZvfLTwv><]T@vxCKsdUdkdV^e^=uwuHdrjFe\EK\cvxF?wtDLtlBRxwO^ruHXah:=dU=UndUEog^hqh>=lm[T]ULUmUEUdUGWh`W`g`?Gwn=EngGNg^T?ue?Hc[R[kcH?euEGueGEeuEGueGoUDNFDUFNUDNFDUFMU_ML_N?TpholNHln^WT?HNnoWP?MN]LT]WMVPQVdQXokX_kc`XcbXPbJPHJPeECKEDTS_^P`^e`X|URS-ch41|Kortschnoj, Viktor|1973|C09|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWwn=Oul>tkOP[SL]g]V]m\]f\M=Mog`Yp`W`g`Y`yx`nxPMPl\ngvw>?rtguwvPx|Simultáneas|Amateur|1973|B99|1-0|W +EUxgDTl\U]ph;LwpFVme@Ovx?Fn^>@gvO>sm>Mo_GWunV_h_@A^VMGpLCLmgrw=NngAIgiHPwg?@gh@HaWPWiWI@WOEGON:;_W;CWO|Tallinn|Timman, Jan H|1973|E92|0-1|B +EUxgDTnf;LwSFNvx@Fm]BJSnT]f]FWld?MjZ>@sbGObl=>d\>GlfWFtmHXucIYmdX`gv:;ZRMDcj?=veNV\UL]nu@HrtDMo_`gugHPwOPIqi`uOKeoyqo^dVEF>O^OVOFGOXGHXOHGOrulqhl^KN^LNVIPiaGWVFWRr]RSFHPQHXSchocSXSLS]KQPofPWf]Swphwn]TW^|URS-ch25|Polugaevsky, Lev|1958|E46|1/2-1/2|B +FVl\@OsdEU\UOUxg;Lme<`nf=Ewn>ExoQWjZSZcZEMZREHJKonap^OKOHXp_nf_PqaPaXV>Gf^GPVYapYWOJWUJbUebjeUjoUWon^gnjWVpaghPOVSaPSWONWojZogPVg_ZbhpVP_^NU^[UVpoP_[S_US;UO;SOUS;Udohd^habZ;>VO>?OP?W|World Championship 23th|Botvinnik, Mikhail|1960|E24|1/2-1/2|B +DTxg@OphHPwp?HvxEUl\;L\UOUsd>@dU=UmeUMt_FV_fCKgm@xgEKsdOUdU=UeUKUtmmvFOkcIQumBR\tU[jZ=mvm[eneWemdOdtdengv>=dlnJog=uxousldJ@wp=>vx>Yk[W_tk[SL=rt=NpiYi^XNXgXiYXgO`l\@AqaV^e^_hohMh\eYQtTh_kt`fTXfwt_?_eE_^gV>V|URS Cup rapid|Tsarev, V.|1988|B93|1-0|W +EUxgDTph;LwpFVme@Ovx?Fsm>@n^?>ldF?jZ:;wvU]m\CKvwBJd]T]tmKSZSJS\R=KulFgmCJmcL:MDFDlDGPcTJbTNbeDHPQiW|Las Palmas|Cabrera, Gabriel|1977|E96|0-1|B +FVl\@OnfCKsd@vx;EdUCUkc=FtkGWgm:=ulUCruEOm\F>\MDMe]=?>nJFEFDF\GFGkVGFVkA@xo@GutFEk]GNtlW_ph|URS-ch32|Petersons, Andrejs|1964|B50|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`sm?TuZ=Enf>@qi`Ywn:>m^TKp`YPtmGW`WPWZlUOvt@AyxWNmdEUxh>FuxUjgVNcVLclLFlchHKRH@c@x@j@dO?OF@OLtuA@e]LPn`CSk[RKo_DLunBR_WPQ^TR[b[@GneGFf^KT[TQa^VIYWOF=`Wa_W^=Def_w^ewvfmvrOGr:VN|Tbilisi, Cto URSS|Nikitin, A.|1959|B94|0-1|B +@OxgDTnfHPm]?Hwn>@vxEU]T=DjbBRsdDTu];EwuFN]aNVtmCKk[TL[RKRnSLDrtETmvIQuUPXa\OUdUDMtu@nfEMw\;EvxFV]VMVf^IQXO=Oun:=k[QYjZDLmc?>nfO_gX>FruHOuM@HXGFG\GHGfeC@sdGWtmUKrtFOmfL]gmDLo_V_f_KUnfUdkd]Sd\SdtdOdmgdOqa=FuZNGe]IQwv?>xoHXaXQX_VGY\TFNVONOgVW_ZcYGcC_foxOoxqGUvxfnCs>N|Bugojno|Byrne, Robert E|1978|B70|1-0|W +FVl\@OsdEU\UOUnf;Ljb?Ful>@xgFCHXagIWuv>vgvWEwnELCF=>F>L>nuBJbZ;_vg@HxwHOwn>L|URS-ch41|Geller, Efim P|1973|B49|1/2-1/2|B +FVnfEUm];Lxg<`]VLVsmVgmg@Ol\?T\U>@wn=Fqi`Wvx:=tm=UucUMm[T[c[O^[CMPwtWinwFNCD?>tlIQrtipwpPpxpN`pw`gDq>Nq_gywnyY_gYSnvS[vwNOgu[SwvOP|Candidats Tournament|Benko, Pal C|1962|C11|1-0|W +FVldEUm];L]VLVt_VP_h?Tnf@FxgFWwe>@g]PavxTKsmWhqhaPuY=Mru?>mgIQeWDLkcMOW<:=wu=uluKTusFEslT?xwCS\SLSg]BJlLE`Lg`PgWPMWMUjbS[b[Zb>Zbj[S?TogT[SKUR|World Championship 24th|Botvinnik, Mikhail|1961|B18|1-0|W +FVldEUm]V]d]DTxg;Lph=KwpT]vx@FsbHPucKcjc?HbS>@wu]ene<`uvBJSd?>tX`gpgL]guFLv>:>rZ]NXmNTZrU]dUTerseTogLVxwIQUKH?c[Teg_>N_VNKwneVstPXt<@H<>GO>=]eno?[mfKL=ULMUM[Mf]V\kcMV]f\MfKOWofW_|?|Botvinnik, Mikhail URS|1966|B14f|1-0|W +EUxgDTl\U]nf;Lf]T]meFVph?Mwp@Ovx>@jbBRtXIQXO=OsmO=ul^mFMk[@A\TMDSZGW[SL=rsEGZ\GO\U`YU\HXmcYG\ZGUSKD;c]W_h`QYqiY`i`=N]WNTZSOLSLULgX?@pLCLXGAIogTevuV^GMeVM>Vgxp@>WMgapi>AMGA?u=|WchT U26|Mititelu, Gheorghe|1957|A70|0-1|B +FVldEUm]V]d]DTxg;LphT]wp?Tvx@FsmFWmcTKue>@tm?>jZBRwtIQqi>^cT=FeSKBT^U^gaWMSYHXYQXamXMWQYFNh`WFYaFPaQB;p^;MogLFtwFU^UNUXOM?QmUMm]Mhxyhiyxihxy:J`XhiyxJL]o?TnfTfofih|Tallinn|Wade, Robert Graham|1971|B14|1-0|W +EUnfDTxg;LwSFNvx@Okc=DtkBJSLDLjZCKme?Fsm>@gVLDo_HQMFQIFaIaDMkH?GaYMFZREOHOFORK>ErR:AYgOdRZGIqidlZRA@gVEUk[RKm]U^tfDLw\;EvxKDf_EK_hOU\ULUbZDMZRM[RK[drbGObdOVKB:BhVCKus@uv?>vhFV_VLVgV>Vsd=FnguUDLneVo_VY|Tal-AUS sim|Jordan, William|1974.05.14|B33k|1-0|W +FVl\@OsdEU\UOUxg;Lph?TuZ>@wpUKZl<`vxGWk[`g[TL]lsgpxpKUnfUdmd=Uog]NscUcjcNTc[Tef^W^g^?wpwetrtBR[R:RtuRTueT\efCSwnDTnm@GfvGNvsS[d[T[me\]efNMskMTks]\fe\demT\sw[cwGdlmfckGD\cDCcjCBjsBHstHClqfgIYh`Y`g`qo|Portoroz Interzonal|Benko, Pal C|1958|B34|1-0|W +FVl\@OsdEU\UOUxg;Lme<`nf=Ewn>@jbBRsd=Fwn?=ul;LvxCKtm?wohoxpA@E`@`poCLf^Qt|Subotica, Interzonal|Speelman, Jonathan S|1987|B17|1-0|W +@Ol\FVmeEU\UOUsdDTxg;Lph?FdU=Uwp<`qi`Ntf>@vxUExqGOuZ:m\ENf]V]kcF=CL>Ftl=DrsN\c\OWqp?OLgHPh`IYgU@?`XOMpgW_lk?HiaF>sy>;U^MNgp;?ks?;yi;?igNFpw?;sSFNwvDVvmVDmlRZlm;>SsNFsw>?^LFNLUNFmuFVULVNL^NFumFNwr?>muD;rj;D^UNMjkM=um>?UC=>ks>Nsr?>C^>?rwNFmuF>nf_fof?gwgDV|URS-ch39|Karasev, Vladimir I|1971|B36|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@k[RKtkDLqiEUme=FphBRwpU^e^R[b[:rur;JvxJ[dZKDkV[lrdDVgVlbdTFTZT?>o_OYwrbSxoHXVeCKpgX_h_Y_e_KTrtSMtu>=ut=>tu>=utMC^V=>gL>VtsVWogCMsK@?LU?FKL@]TMTvxBJ\UNUSLCLkc=Mtk?>qiTBwv>fofBfxwOYd^MqndqxwnY_ngU^d^xpgf_Ufee\>^v^p^umUDrv^U\dLT]fUVd\IQf_WN\eVWenDU|Niza, Olimpiada|Miagmasuren, L.|1974|D31/14|1-0|W +FVnfEUm];ExgV^gm?Mkc@FtbMbsb>@l\DTblFW\UT]m^]fogEO^d=Rc[RDue@rj?>jkcktkW_kd@GbZHPdrPXrdMDe]DMdm>^mt^]wnYnon]\ZR\]tm]UysUVneVFRJIYe\GNmdFGsyNE\UGWU^ENyuW?dH?GHdX`i`Y`uwG?dm?;wy;kyQNEmdkn^UMFdV_gpg`gQygoVhnmU^T\^gFTh_mjytEL_VLU|Riga|Mikenas, Vladas|1959|B96|1-0|B +FVl\@OsdEU\UOUphDTxg;LdU=Ume?Fwp@jbGWk[W_fm_hqhT\mfFOe\V^gXOrp^r]XN]ftuEGN_GF^U@AofFfxpLVZlV`uwf_|Bled|Parma, Bruno|1961|B36|1-0|W +FVl\@OmeEU\UOUxg;LnfGWjb@\VLVm\Uf\fW_f\N\c\_gph:=\T?>vuVewe=eleOkrskosCopCDpyulytlc>f|Oberhausen, Cto Europa Equipos|Torán Albero, Román|1961|B82|1-0|W +FVl\@OnfEU\UOUxg;Lme?Fwn>@vxGWsdgmW?m^L]n`>E`N]NuYN_f_V_Yg:=ruDTwv?GqiEWg`HPogIY`WPW^oFOvN@HxwGEuvHGiaT\e]E]dnGNn]NG]W=UWQGHvNOkoi\d|Tallinn|Vogt, Lothar|1981|B83|1-0|W +EUxgDTl\U]nf;Lf]T]me@OphFVwp?Fvx>@tX<`qi`Yh`YPgaOEaPIPXF=FsmETm^TNumN_xqPX^hHPhn_NpU@Hrv?AqpAaUNFNmX:An_NEvVLVXVGOVnPXnNEN_NHGN]ai]giIwvA=e]IAvfA>fb>nkcBJbZ=E]Un^phGFZ[FG[K^_gmEFmwFnKCGPog_]C;]ug_ue|St del Esterol|Quinteros, Miguel A.|1987|A73|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQqiEUwv;EnwE?tm?PdZKDZTBRl\CKTcRZctKS\SLStjU]jt?ogW_Y`_h`@vxFLgvGWo_EMduRJuo@rt:=ulO`phGWdZL[lsW_f_?_td_WgvIYng[LsuFOdtOkZkL]gCDCkeC^tl=?lmEMo_`fmnMUnf^fxyU\c\?;vpf^wv^LqaLgug]gvNWONf;spvgvevOMypMmpgstg^t\^W\]f>@G><]UW^U==tmqavu@OlL:BsdBCulC[xyayryyi?FmvKMVgCUdUMUvaUMiqMQahQqgqAiqwiywmyxhoxpovpnlunfvofiunFMofiamga`|World Championship 24th|Botvinnik, Mikhail|1961|C18|1-0|W +FVl\@OnfEU\UOUjb;Lul?FxgBJk[>@tk=MmeGWsmFOrtvxMFls@AtTUKslFGkrGPf^W_wvPGnw>Fe]L]r]V]^V?>m^EWVOF^gXGPX^W^OG|?|Bokuchava, Alexander|1970|B43k|0-1|B +EUxgDTl\U]nf;Lf]T]meFVph@Owp<`jbBRqi`WtX?Fvx>@wv=Dul?>smIQXOFO\TOFrtRZm\FTgVLVvV>V\VDVlTVOTSOPSC:>C[POpwQY[Z>;k[Yah`OPZB;=BF=MwpPQtDWeD<@IFGMOG@IP@>PIp^e^>^QP^]OM]\PX\^|?|Geller, Efim P|1959|A71|0-1|B +FVnfEUm];Lxg<`]VLVwn`gng@Osm=Ekc?[tkVgpg>u=>=yxHPkd=Mxh@wn?>k[RKmeDLvxIQdZKDl\EUul;EtmE?wvCKph<`ga`nvn?NagO`\ULUrt:Ne]NOwvqyvnywnfOg|Moscú, Memorial Alekhine|Matanovic, Aleksandar|1963|C97|1-0|W +EUxgDTl\@OnfHP\UOUm]?Hf^UO]U>@sdFNwnNU^U;Etf?>vxCKum^kcEOn\=EgX^>UM>?meELog:=wv=Ef_O`XNGN\N@ANELEvFELFHAHME?=_X`OeMLMuM|Riga, Match título maestro soviético|Saigin, V.|1954|E01|0-1|B +FVn^@Osd?[jb[Rme>@tmEUxgRdmd?>wn;L^UOUvxU_um=Onufof=>fmGOd\IQ_n>Vh`PXe]VR]UW_aXQXwyRTn]T\yQOV]gVUgX_gXg\`|Subotica Interzonal|Hamed, Ahmed|1987|C79|1-0|W +@Om]EUl\DTnfT]f]HPsd?Hxg>@wn;Lvx<`tfU\n\LR\cRcjcOUqi`WumBJfQ=Mwv?>QH@HvVUOrvWE]UFNm]NUVU>vgvMFveENUMH@eTO>MK:HKCFM^fHWCK?H>N_]NGHQG?QXMGX_?M_^GX^eMJelJnlsXN][nV[CphCcogUfNTcbT^flVDbeDIl]IGskGPeghagf^X]nPOktaYn_YQtuiafhX^hf^XfhX^hfOM_U^Xf]XGutaY]^MV^gVWU_GVgfWX|Candidats Tournament|Keres, Paul|1959|D34|0-1|W +FVl\@Ome?[smEUxg;L\U=Un^UMqi|Malta ol (Men)|Radulov, Ivan|1980|B66|1-0|W +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn<`tf>@vx`gng=MsdL]g`?=xyDLo_FOf]M]_V]VunV]wgKE`E=Enl:>rw>NphOVypNOgOVOwgOVlo]KoKBKduKSpoE]ovS[b[][go[cvmV]oWHPWR]kR:@Hmlcb:;k];CbjukHOlsjbslbrk\rj\kIYlsjbslbrC[LT[KOXkurjukX`lsjkKk]ksk`i|Bled|Najdorf, Miguel|1961|B92|1-0|W +EUm]DTld;LxgFNt_T]d]=KucL]g]K]cSEphFO]cAvxF[gVEWfg=]nJHVJC<;CJW<|Bugojno|Ribli, Zoltan|1984|A40|1-0|B +@OxgDTphEUwp;Lvx@sdTKgaWl\_L]XOFO_OHOnf]LrtlewueJd^@H^M@wn?>k[RKvxIQmeDLdZKDl\EUul;EtmE?rt?NwvU^e^N]g]V]ngO`g`<`leCKo_=Eqi`Y\TKSZdBRdnR[b[Ynvn:jtuENe]D_no_hoghV]eVOm_N^e^>^uMO]xy^vyq]xqhvnianphixqMLHXaXQXghqh_hpxL<@HhMGOTLX`iajb|Nice olm prel|Hamam, M.|1974|C97|1-0|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWqi`YucUKcN?FNWYPWNPesdA?gVLVNVewyw>Gtm=mvmK\mn\Vo_V\|Munich olm fin-A|Tringov, Georgi P|1958|B96|1-0|W +EUxgDTnfHPl\U]f]T]k[?HmeBJjZ;Luc@Own>@vxFVsm?>tbV^e^O^m^>^wv<`qi^nvn]ei`enrv=EvnE`ceIY[SJS\SL]n^]geg`gpgHdbTGW^\dRTf:>fB>NB;@G;_GO\@ul?>n^U^e^ETk[`gpgTNjbBRrj=EtfIQsmNXgpR[b[:jljELqaXNj\O`\LCLfB>:wrN=rJ`Om\=Cog@?\VLTVeT[d[OE^VEVeVM[g_:BVE|URS-chT|Mikenas, Vladas|1968|A48|0-1|B +FVl\@OmeEU\UOUxg;LnfGWsd@jb[MwvBR\TMDm\V^gXIQXi@k[T[b[CS\SJSdS:;Sd;[s[L[uZ=KxgEMvxmeKDd^[lcjl[jcO^X^Dlcl[l^ml]wv;StX@?\bSJxw]NXmHkm[<;blN]l];[vsFN]l[KlfMUfuk]sK]Ko_?FuoFMo`K]qaGO`qMTqg]fpiTMwvJSvwIQwvNV_VOViiNTScbD;bc;Dcb|Lvov|Romanishin, Oleg M.|1984|A36g|1/2-1/2|B +FVldEUm];L]VLVt_VP_hIYqi@OsmYahq?MqM=Mnf@vfF[Wl:f><>mgKTrtTb\UOUtuUO|Bugojno|Portisch, Lajos|1978|B19|1/2-1/2|W +@OxgDTl\;Lm]T]g]EU]LCLphFNwp?Mvx>@ul:;wu=FsdMVn^U\qiLTtf@qiUKwnBRmeGWvxPXtmIYk[X`gqwu]VuvNGXmV]leU_e]_nvnH]n>?>tD>nmd]oxwnli`G\D\K\|Hoogovens|Nunn, John D. M.|1982.01|B47m|1-0|B +FVl\@OphEU\UOUwpDTsd@o_V_dUNUpU=Ui_UEtmFOmdO]xp?>n^T\e\>^ue:>wv^fvf>femEWd]W^pofgoxL]mRIQrug_|Sochi schev|Kupreichik, Viktor D|1970|B38|1-0|W +DTldEUm];LnfFV]VLVwS@vtFMVWe^W^O^X=M_tl^oxn_q=Xoyuy?>ntqDbSDVjZGOXm:=teT\eV>VS]HXyw@HZRBJwrIYrZ=@gVEUk[RKm]U^tf;EV\DL]UKf\fLUdUEVwn@G>;S[;CG>`_OLCS[cW]Lt|Reykjavik|Kortschnoj, Viktor|1987|C80|1-0|W +FVl\@OmeEU\UOUxg;LnfGWjb=OucUKcl?Msd@tkBR[SL;wn;EvxRZphOQwvW_f_V_d^NclmKUg]_hmQho^oHQn`ET]WM_k]QY`iCKWFUFvF?Grv:=]TKTiNcNFN_qxpqMo^GHpyHP^MPNvNDMSK@GNQGHQNHGNQGFQY=;YIFNKCNUIDU]DE]UEDU]DEMUyp]eEUe\UE\cpgcbgfbkEmkdmed\fm;CeiCkmtkpia\caic[iAZbtsT\A;[d;Apksrknrsnksrkmrsd]A=]f=>fe>=en=xwUVmvOWvoVUov>:vmW_h`UVmvCTB|Moscow Interzonal|Sax, Gyula|1982|B76e|1/2-1/2|W +DTnf;Lm]EUxg<`wnFNvx@Oqi`gng:@mg[dkdLRgVO^uvGOd\OV\U^X]VMTtX=XvR?owoToxoX_on_VnmVkmfkVfm|URS-ch46|Geller, Efim P|1978|D55|1/2-1/2|W +@OphHPwp?Hn^EMmeFVsd;Lxn?u=|?|Barcza, Gideon|1971|A04|0-1|B +FVl\@OmeEU\UOUxg;LnfGWjb@\VLVm\Uf\fW_f\N\c\_gph:=\T?>vuVewe=eleOkrskosCopCDpyulyt|EU-chT|Toran Albero, Roman|1961|B82|1-0|W +EUxgDTnf;LwSFNvx@Fm]BJSnT]f]HPld?HjZ>@sbGOd\@Abl=Dtf?=rtU\n\NVwv<`gXOXu`V]fX]eXFLF\e=el[DE`XFL[eEetuelqa:?umlZaYPYmEH]xyZSXQSWEIA@IDL=vfYafgWsDt]Hg?H?QX|Varna, Olimpiada Estudiantes Equipos|Mititelu, Gheorghe|1958|E46|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLm]V]g]O^d^>^ldEUne^>uYHPYQ@\UNUt_?>sdU]d^O^e^=EZc:=wvFOgmHX^VOFVNGNpLEL_V=Uo_CSjZBJZSJSh`YPvtX_mgT\V_FTcu]e|AUS tele simultaneas cr|Klustra D|1974|E61|1-0|W +FVnfEUm];Lxg<`]VLVsmVgmg@Own?Ml\=F\U>tmOUuZU_qi_pvw`gngMTZ`<;m[T[`p[Rk[RKgCFVrvVSwx>NxqNPp^GW^F;CbZ=m|Varna olm|Barcza, Gedeon|1962|C10|1-0|W +FVl\@OsdEU\UOUxg;Lme<`nf=Ejb>@vxDTmeU]l\;LsbO>rs>DblBRkc:;gXIQX^DJjbqa;KoiELaYLpxp=:pqKNYPIPnoNvsv:Lh`W`vxPGx`S\e\L\oa\n`pngphgnhpngpogLaYLPYTPMTWG@op>?W`?GioMN`hD>o`>M`VMWh`G?[S@IVP?OPVO?VP?OPaNGagOK`iIAgXGPXgPGgXGP|Candidats sf1|Kortschnoj, Viktor|1968|A87|1/2-1/2|B +EUm]DTnf;LxgT]f]<`ldFNt_=O_h`gugOgpgHPsm?Qmc@OcT>hM=Mk[>FysYOg_OEZRE;eT;EsvTeEOmlM=eV>F[SLSsSOEvsGOSCDMVeE?eT=>CF>Fs;?E;CE?C;?E;CE?RJPX_XOXlcX`c[IY[SFDC;DG;CGDd\U\S\ML\e?ECDLDTEDEe^EFog`g^gFMg^YaqiML|Sochi|Spassky, Boris V|1973|D35|1/2-1/2|W +FVl\@OnfEU\UOUsd;Ljb?Ful>@xg@wv^VOEmwGOVOFOgXE?n`T\elNVwfLFlI?I`N@AXGA@GV@AVGA@GM@A|Taxco Interzonal|Agdestein, Simen|1985|D45|1/2-1/2|B +@Ol\DTsd;LdUFNUO=OphCKwp@vxEU\UNUi_U]k[T[b[KSucFEcUEU_UHVtQ?>o_VHQH@HUD>nD:C:p^GW^Un>wtLFU:>:tD|URS-chT|Utemov, Vladimir|1990|A35|0-1|B +EUxgDTnf@Om];Lwn<`qi`YvxFNsm:@mwO^wfM;f`=KgaGWaPIP`f<=uZBJnuKDfwNV]VLVt_;B_fB;uc@IvuV\c\U\u]=]f]D@wp<`sm=Fvx:=jbM;us=ErjL]wv;Dnf]gmg?=e]V^gVDVs^T]^`]fkVFVjnfoxoUO`[VYoxEuvu=unvBR[duvdvYTxyTbvdRZdCBO`yp>^pi^WipWlpg`V|Berlin op|Shvidler, Eliahu|1986|A34|1-0|W +FVl\;LnfHPm]EMsd?Hxg@Fwn>@vxFW]VLVulxo>VwxVvxv@?QfLEf]A@vfH>`XOXaX>HovEW]HGHXW?=|?|Naroditsky, E|1991|B23j|0-1|B +EUxgDTph;LwpFVmeGOvx<_WNGsm@FmcEMh`<;tmF@ldIQulBRjZbS:PSBWsBTNDRd\>GpgA@g^Rd\TrZ^edRTLV^elGNUN@?f_^fofZ^NU^FleRD_DFDe]?F]TD@SePY[SL=c[GW[]FO]U@Am\YqxwW_kO?O\KOKTK=NUVqae\_f\N:>s[a=[]=:]`:RvuRm|URS-ch46|Mikhalchishin, Adrian|1978|D44|1-0|W +EUxgDTnf;LwSFNvx?Mm]T]f]@FldBJSeCSwv:;smGOul>GmwIQwhHPgaOWo_=DloGHhn@vxFWwvWM\c<`qi`gugOEghETclBR_XHOXQ?>h_OAvf=OrvO_Q_Adkd>f_f:>xwM\f_>vwv\Mvm@?mf?Ff]CKd\GO_tTEo_OWtbEOleOYbtYO\TMCTKDKtbCM]VOEV]EOenIYphO^h`Y`i`W`n`KSbM^M`nS[neRZePMS]\SdjbFMPGdjb[Zb[Sj[\cbjck[ekje_SK_ejceTc[|Hastings7374|Suttles, Duncan|1973|B23|0-1|B +FVl\@OnfEU\UOUxg;Lme?Fwn>@vxGWsd@wn?=vx[dkdOUuv;LogU_nuFT\f_Ug^Ufm]flvoL]d]l]oG@Atf@wvOEsb:;tm?>rsCKk[^v^HPWF@Gpx=NFUOW^VPXVWGH_XNTUO;@k[@meOEVkFOl\OknkEOsmU\e\=eru:=ksCKse=ems?=ue=ewt@?xw?Fwne=sd|Candidats final|Spassky, Boris V|1965|E12|1/2-1/2|B +EUphFVme@Oxg;Ewp?TvxTKsd>@tXDLn^U]dsLTsbKDldBJd]T]rtIQXaHXgXQXaXDMpiETi<:XOFOVG@GuYGHtTVTl=Ro_VTlnRj^VO=_W=Xn`HQ`iQHWOH?i`Xfxpj@`Y@XYITVOG|?|Butnorius, Algimantas|1975|B06e|0-1|B +FVl\@OmeEU\UOUxg;Lnf?Fwn>@vxGWsddUNUk[:=tkFOulV^e^W^gmOklkLVru=MkdMPdD>NDTCKT]Vgng^gphPXxyUcutNiwxXUmcU]c]?OtLOL]LiN[SNjxwj\ws\esven|Estocolmo, Match|Andersson, Ulf|1976|B85|1-0|W +EUxgDTnf;Ll\@Om]T]\U=RtmRUf]<`wnUEmfFNsd?Fvx>@gV`nunE>o_:=ruOUftF[d^GOVL>Lue=k[RKeiHPihOWqa@GaYUOYPIPtkLUwv>Fhf<>fVUMnoGHoaOUxoK=vy>@TCMDaIH?CTDMIQ?GyvF>QI@HIi=OTNOVNXG@_VMFiaUO]UHIXIO`oh|LAT-ch|Darznieks, Artur|1954|D41|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtkEUwv;EnwBJqiKDdsCSsm;\TcTWF@?FL;C|Riga Interzonal|Romanishin, Oleg M|1979|C93|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUgm;E\ULUZdEKbZVruBJndJSdS;LSM@l\U\m\CS\V=KrtLVgVKCngCgpg?>VLF?f^OYwuY_xwGOk]NV]f_Nc[@tk?>mgNWgaWNagTMe]NWgVLV]VMVkV>Vn]W^]gV>vx:=rtCKunDTbZ^WnSESZSO^h`WNl\U\c\^mgm=mpL>=xp@?pg?Fg^=eo_GO_WNGiaRZtrZbwomo^ebjL^FMedMV^eIY`YGYelY`lc`WcjoldclnrxnfckfnkcHPjsWsxsnf|Parnu|Kivioja, Endel|1971|B06|1-0|W +FVl\@OsdEU\UOUxg;Lme<`nf=Ejb>tu=emdVUd]K]f]ehohUYqi`fh`YUlnfwnw>=w_=E_f<;uwCKwWUNW_EFxqL[SdNMqx[lfml]xy]WmMWMdUFV|URS Spartakiad|Borisenko, Georgy K|1964|B68|1-0|W +FVl\@OsdEU\UOUphDTxg;LdU=Ume?Fwp@uZEZdZ:=ru=EZdFXo_V_h_XQpgGW^V?=gnHPqaE]f]=]dS][SM[knfCKwok[uw@?M\KS\MBJaY?FYPIPMCPX_XQXfg[`gn`hwyFEyIELCMN]nwXfophgwvf_M>gepPLUVNefvofNPN]N>OUVOY_mYhT\IGW_hwm[wq[Tov\dqgV^vndlgm^UGWULmclt2WTtT|URS-ch26|Gurgenidze, Bukhuti|1959|B36|1-0|W +FVnfEUm];ExgV^gm?Ml\DLsd@FucEO\ULUog^gmg>@weFWvx?>tmWfwvM_eSV]Vfpvn_mnmpacuEWVOagxygmum:=m]=M]fIYrxWOfXU]XOMOd^ON^h]exuYahwNnuenkjbBRbZk[eEaiyx[kE=@I=ek[|URS-ch sf|Arulaid, Alexander|1955|C06|1/2-1/2|B +FVl\@OnfEU\UOUjb@tXMV]\IQXm?>vxDLru=DphCS\eEKkcBRelDFmfKEbZ:Vgxpgvuv<>sm]dvnFCogHXqiCDm\OYfod]\f>Nl\NPfW]onoPO\UOWUWDhpwhMWUMJU\JM\UMJwxY_UEJOiaOdxq_eowdmqxmfxyfnyxe_E`nmxymewx_NaXQX`W@?xhechicuyqumqymtyqt_qx[ciA?FWU_txqtkqxkA|Moscú, Memorial Alekhine|Vladimirov, Boris T|1963|B41|1-0|W +@OmeEUo_HPxg?Hph>@wpDTvx;Lnf=Dsd?=unFV_VLVf^U^gVDVe^PXxyIQtfv^M^egNOgO^Opf>^kcOEfWETWM^NMGTctbNLG=Ldbkd=x`aFqydcYQckmtkotsFf|DSV-Turnier|Fichtl, Jiri|1974|C04|1-0|W +FVl\@OsdEU\UOUnf;Lme?TxgaW@sb;LkcO^tkCKl\@wp?>vxTKtf;EsmEOm^U^jZDLulIQwuOUft^fo_=OZRK]u]=goL^nf^f|GMA-qual f|De Firmian, Nick E.|1990|B04i|1-0|B +FVl\@OnfEU\UOUsdU[meDTxg;Ljb[Utm?Fwn@dU=UmdGOe]T]f]V^gmL]n\ULd]N\rtCSwvOWkcLEm\S\t\:=ulFM]TMT\TEele=eTD?GD@vxFVe^V_^LCLf_=DgVHV_VDVb\VXunrvQ`VeT\eT\dmdNWd]`fwoflv>:>oml[kb[lp`lvxoW`TJvgmegXJT>noh`WedXidgWVW=tlovlnvunqTeqjeTIY=mjrunYa[SainfX`f_rw_V`hJBhpB:2|Niksic|Miles, Anthony J|1983|A40|1-0|W +FVldEUm]V]d]DTxg;Lnf@OwST]g]=Dsd?M]g>@vx?=qiBJSeLVgVMVtmU]f]V]ugf]e]wt]`CB`PtlPOBE>^og^ZlmO_EB_WBEWRmnZjn>@IEGRXp`XS>vSk|URS Cup|Sveshnikov, Evgeny|1984|B14u|1-0|B +EUmeDTxg;LphFVwpGOvx@c[CK[SLVgVMVbZFWun=>wvVDnwiwxwWM^M>vwvDMZR?>vw@GRKBKrJMDkt>NwpIYqaNFpgGPJBPGt_D_BFGFg_HPogFGh`GN_^OW|Capablanca mem|Pachman, Ludek|1963|E82|1/2-1/2|B +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LqiCKtfLFf]OEjZDT]fFWZRf^>ZmlZbTD<;g_N>n`brltr]DE][tmOdmtIY`Y>@gVEUk[RKm]U^tf;EV\DL]UKf\fEKUL=Du]?=dSDF]TFT[TKZSD:;DJ;:JD:;rsZTDJTJwJO>LC>DC<2;svn=@wvOEjbBRsmIQrsETmcTJtmqaL[j[NTgVENaYPXpUIHUNGNVg=Dgm:Rm^DVn`VW`WNW^M>AMWHGh`FNWMGFM^TExpA@wnBJvxOQul:>m\NGe]V]\MDMk]L]f]U_n\MU\jGYgV>V]VYglcgpwvp^ch_ixwW_|Leipzig olm fin-A|Najdorf, Miguel|1960|B82|1-0|W +FVl\@OmeEU\UOUxg;Ljb@wnV^kO=Oe^UduldnvnOPyv?Gnw:?wxW_lTNiTX_fXPIPvfixwCKwxLBU=BSbZSMgXMGXG>G=eGNtL?OogNGe=G>Ld@GiaOLdL>Lm\LCxoCJofGNg_FG\VGOp`|Milan|Browne, Walter S|1975|B84|0-1|W +FVl\@OnfEU\UOUjb;LulBJk[=OtkOPlPIPmeGOxgPXsdUdkdFrtAIph:AmwDLf^U_h_V_og`hqhIyxpNipyiwyxwn^VOVuvngkVMVh_FE_VHXxoX`t\AqohqphapqaXEN\_gne]`hvxhp_aqaXanwaXJRX_R[b[CK_^w\^f\wf_NF_^FN^_NF_fFNf^w\xtLT^gT]gp\UpoNVt@wnEUvx;LgV=DVLDLl\kH@HrRS\c\U\m\ED|URS-ch39|Karpov, Anatoly|1971|E19|1/2-1/2|W +FVnfEUm];LwSV^l\BJSZCS\UL[ZlGWxn@Osd?Mls[Ujb@tm=>dUNUjUOUph@AiaLT]TMTn_U_h_:=aYIQunTFmdFOdO?OruOMuM=MnlMLlm>]ulkurknwv>YvnYnrVn`xqQYVrYaryJRywaiwi`iqiS[|Riga|Koblents, Alexander|1954|C17|1-0|W +@OxgDTnfHPm]?H]T=RsmRTl\TDkc>@tk;LwnEU\UOUkH@Hrt?=ulH@jbDMc[MO[SLVvx]g>MgVM\t\EN\<=@k[CS[TFTsm:;bZS[mcTMd[M[tf=Ful?gmOJm^[js;>;ts;susJZqi`Ns;@I;VjtpgtciaZE^Md[g^I@MWNW^WE=W^cm\m[m^UmdaYBRVW=FW<@IU^HPWUHPU]>F]UF>wo[mn^m[e]|EU-chT Kapfenberg|Golz, Werner|1970|E61|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUZd;E\ULUgmEKbZDMZRM[uc[dcdKEngCK^UNd[UL[\:@gv<`qi`Nn^]ftf=VOHOnfNWmgTfof>fvofeutW^yueutu=@umEMm_MT_fTlfnlTnfTMf_Mb_mIYiabMm_MT_fTfof@h|?|Ivkov, Borislav|1970|B06l|1-0|W +FVl\@OnfEU\UOUjb@tXMV]\IQXm?>vxDLru=DphCS\eEKkcBRelDFmfKEbZ:Vgxpgvuv<>sm]dvnFCogHXqiCDm\OYfod]\f>Nl\NPfW]onoPO\UOWUWDhpwhMWUMJU\JM\UMJwxY_UEJOiaOdxq_eowdmqxmfxyfnyxe_E`nmxymewx_NaXQX`W@?xhechicuyqumqymtyqt_qx[ciA?FWU_t|Alekhine mem|Vladimirov, Boris T|1963|B41|1-0|W +EUxgDTl\U]nf;Lf]T]me@OphFVwp?Mvx>@jbBRtXIQXO=Osmlc:;cST?\T>Fk[R[b[@ApLCLSL;[LM?>TL[;m\|Zuerich|Donner, Jan Hein|1959|A70|0-1|B +FVl\@OmeEU\UOUxg;Lsm?Tul=Fjb<`k[T]g]L]lk>rjU_og`gpg]gvu_eweV^\m=eul>=mg^glsF^srHXywX`woIYoleukd^Fd\FVrsYaf^`hqhah^WhplpgpjpVWplWV[Su]\cVUck<;tf]elTU^|Kislovodsk|Taimanov, Mark E|1966|B56|1-0|W +@OxgDTph;Lm]T]g]HPwp?Hvx>@l\L]u]EMsd@vx=awvwn@He]Zb][>;[;s;pg;Kd\KLldLJdcJBgfOEf]HO]UB:\T:Bo_E?c;OFnS?N;>FOSEDLELNDUMD>L>BF>SFNMENvTLvuE@vx=FtkGWsm@Am\V^e^W^uU^gngypIPpgPWEHWNg^>?_W|Moscow 5'|Lutikov, Anatoly S|1972|B86|0-1|B +@OxgDTnfHPkc?Htk>@l\;LwnEU\U=UsdUWusWsrsfe\D^VOV]VDEef@Gyr>@uc@AywaQjb[Rc\RK^TLFrtFWwg:>k[QH`WPWnw?OtlDLloW_wx>?\^_f^fO_g_V_o_HrxorjowjswosloglugouloglughKDTND_N_ure]rsfVA@h`sj]ULUVX@A|Candidats playoff-4pl|Timman, Jan H|1985|B82|1/2-1/2|B +DTxg@OldEUm];L]TBRt_O^nfGOwS^Tvx<`qi`YsbFV_q?Fd\YGqVOVgV>@VG?G\ULBUMBSMF=Kb\KOrtOF\K:JKUFMuYHPYnSDU_TN_NMNkcJMtlDUwtCKl\NV\l@HjbMOneOMeSVOxyONyxUOlDMutuGDu]O^SwDGw\N\]\^m\LGOLDOGDLKSLKGWKCH@C;@G;CGNc[RZCKNUp`WGKSU\|Candidats Tournament|Chernin, Alexander|1985|D17|1-0|W +FVl\@OmeEU\UOUxg;LjbGWsm?Fn^U_m\_PucW_tmBRmdFObZCKwn@uc@A\m:=vxPFwuN`qi`Yc\F\UPvnOFrvIQluPYueYP^TPeTeFMgVLFk[_gpgUgnkR[d[gU[MDMV`FPkKPavuagxwgX`fUgurXiZR=>RJg^wn^eneioe\>fJB?<\Uf>rso^K;^dUMds|Leningrad Interzonal|Quinteros, Miguel A|1973|B93|1-0|W +FVl\@OnfEU\UOUxg;Lme?Fjb>@wnGWulBRsddUNUf^UN^WNWtf>PwuWiph@Arti`gv:>umL]f]V]n`P`lu`utuRZxpDTvgF=ml?Wh`W_lT_`pw>?gm`awpa`pw`awpa`pi`PT@smT]f]=KmcLFjZU\cmKDm\MqgqBJ\bJSbSDKq`O`u`EHc\xq\ntmrumduEH@>F@;FMqhMUogU\|Candidats sf1|Kortschnoj, Viktor|1968|E53|1-0|B +@OxgDTl\;LsdHPm]EU]TU]dZFVk[L[gVO^tm^mum=Rrs[lvulfofRZmlZlulFM<`@xgvx>PdUNUk[BJtk:>kdFMru@AlkPQphW_f^UNwvN`ga_gnwQYqi`@wnRdmd;LgmEU^U=Uvx@wv?=rtYPnwO^m^P^gm^PmgLFd\U\c\wS|Yerevan|Grigorian, Karen Ashotovich|1980|D58|0-1|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tfDLw\;EvxKDVE=Eog^gwgO`f_CS\cDKdnBRrsR[b[?>ldEFnh`OqiOUcULUumGOgfFGsvfvf:>f>E>mfGEfFEFMF@GFMGNM;IYxoYahnHXntK=te=FeTNWofF?TC>LCT?QfgL>TC>ECTE`YQ?b?>?YP?FSKFMPO@gv=Exq?;b[R[mc:rurCSrJS\e\V^vlEDcTNWwu[c|USSR|Mochalov, Evgeny V|1980|A56i|1-0|W +DTn^;LmeEU^U=UsdUEtfCKxgFVph@ldFUuc@Afm:>wvC:jZUDruIQmtAIvn>Fcl?=nvDUum=>lcUDmnHOqaFNcjNFjcFNtfNFclDUfmUDxqDUmtUDlcFNvuNFtfL]d]V]uv]fnfFfvf>fof:UclU\l\DUgVOV\UEUpUVkqxIHxoHOU\kV\JPXaXQXogX`go|Skopje ol (Men) fin-A|Ghitescu, Theodor|1972|A21|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@k[RKwnDLme?>vxIQdZKDl\EUZd;EucU\e\E?tf?Nru=FphO`\TBRxpR[b[:;dZ`OclN]f]V]wvF^l^O^g];:ZKDKTKfofQYvxGWn\@?`Yk[xtW_feCSYQ[\QIiW|URS-ch26|Bronstein, David I|1959|C96|1-0|W +DTn^;LmeHPtf@OldEU^U=Uwn?HxgCKe]T]d]>@vx@sdBJ]TMTSZ=MjbLVk[VgugMVtkTMphU\dSV^g^O^SM^MwuM^Zl^OkOHObZ:;[SNVuMJSZS@stDMvx;Eqi`gmgMuwuEK\cFNg]?=tD=EutO>DEKEbZEVtuVL]L|Candidats Tournament|Smyslov, Vassily|1985|E03|1/2-1/2|B +DTn^;Lxg@OsdHPdU?HUOHOwS=Dvx>@wvEMld<`Sn?=meCSjbMU^U=Ugm`nunLVd\U=\SVevuetrtOktskbm\b[n^:;|?|Kochiyev|1981|A29|1-0|W +FVn^@Osd?[jb[RmeDLtmEUxnRKqiOYp`=ayq<`^UGWutW_UL;Ld^`gnxg^e^YhweKovoL]op>@xg]gpgh^tv^mqmV^e^aigo:>m]iqog>V^U@AvVqh|Havana WCH|Letelier, Rene|1963|C75|1-0|W +FVmeEUph;Lwp<`ld=Ek[>OVBRVUGO|Sochi|Rukavina, Josip|1973|B06|1-0|W +EUxgDTph;LwpFVmeGOvxEyrA;ZR:RrR;kRTkS|URS-chT|Lutikov, Anatoly S|1966|C28|1/2-1/2|B +EUnfDTxg@Ol\U]f]T]me;Lph@vxRZp^HPrvNi^pipap?>o_V_nuF?|Reykjavik|Olafsson, Helgi|1987|A75|1/2-1/2|B +FVldEUm];L]VLVt_VP_hIYqi@OsmYahq?MqM=Mxg?uvWe|Las Palmas|Rodriguez Vargas, Orestes|1975|B19|1-0|W +FVl\DLnf@Om]V]f]?[tm[mum>@weEUsdU\e\;ExnEK\c?>vxvuvUNvuEDjb=EqiOUdeHPuvDMem@Hv^MF^VFahnaOo_UKkcEUm[O=bZ=M[dKEVfGWc[EOlcMEcUOUdmUfmfEMfVMV]VHGxoGFofFEn]QY]gEFf]CKgmNUphUpiapUmsFNsdUcZRNEdsEN|Hoogovens|Enklaar, Bertus F|1973|B40|1/2-1/2|B +@OxgDTkcEUnf;Ltk<`wSFNqi`Yp`YPgV=DSLCLme?Mo_U]f]T]k]OUugGOVPIPsmM_vtDRjZ>G]kPXgnUdnpduyuRUpwAQts:AwoBRm^QioBGPBFiyuyAysj_V^OUMO@PI@OIPO@|URS-ch42|Vaganian, Rafael A|1974|E13|1/2-1/2|W +FVldEUm];Lk[BJ]VLVt_?M_VMVxgVMnf@Own=Fsm>@vx?>wvO^m^U^g]FXjZIYnYHPYn@Hph>Anw<`ulAql^qoxoMhoxhvwpvm]lmdrw:=^\dO\D=mwomuow`gDqOVqig`iyum|URS-ch36|Gurgenidze, Bukhuti|1968|B15|1-0|W +FVldEUm]V^d\DTsdU\]U@cd:>wuHX_NGNUNENuU>Fru?=UV|?|Azerbaev|1955|B12j|0-1|B +DTnfEUxg;Lm]<`smFNldT]f]?Mwn=Dvx@Owv>@mwBJwhO^gX`nun^XtX:>XmGWhwW_neDGd\_gphGY\UYiwfNUewiYflYPrt>vwv?>mfIYvwPWqiM;xy>Nkc;MyxLFxyW^fXFWtv^lvNWhohMhwxlWN>@Ixwgo>fWXfgXPgfYafnPXwuI@uw@GwuHPuwGHwuX_yphqno_hpwhiopq_unHQn`i`p`_hwpQYpiJR|Interzonal|Saeed, Saeed-Ahmed|1985|D36v|1-0|W +FVl\@OsdEU\UOUnf;LmewoIYtkM_o_>nm^OVswW^_WVNWONFwnFOe^A>ru>^neOWuwWVSKBKw?@t_DT]TMTvx;Lsd?>VeTMngU]_M=MdSM=e_HX_nX`gLCLSbLTnh:>hWLOWhEV`iVerw>viWOWhWvnWankbSeVSM]ewuCLaW|Tallinn|Veingold, Aleksandr|1981|C42|1-0|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWwn=Oul>@weFLvx?>tmL[es[Lse<`rv>FgXIQwOHOXI@HdUFNqi`YeWMhWNhvIOvmOYH?cC|URS-ch sf|Rovner, Dmitry Osipovich|1955|C06|0-1|B +FVl\@OmeEU\UOUxg;Ljb<`sm?TuZ=Enf>@wn:=m\?>tmBJZlCS\RLRmRTfofUflDEUvo=^n`f`oh`fyv^NrtwgIQtD>VDTV^T<@Ighp_ia_YaYPhqhHP|Tbilisi, Cto URSS|Polugaevsky, L.|1959|B94|1-0|W +EUxgDTnf@OkcBJtk;Lm]T]f]@ePIPsmU\c\CS]UNUkO=O\UL]g]O]m^]uvu:=xw?>|Montreal|Portisch, Lajos|1979|E12|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?Pph@wnDT]c^eleCKvx;Lsdn>E>g_>=p^=M_`DT`uTVulMTrtTltlVTlT[Tbl@?xw|URS Spartakiad|Bagirov, Vladimir|1979|B05|1/2-1/2|W +FVl\@Ome?[tm[mum>@xgV^e^O^mtEUnf<`sm`gpg^mtm=O\UOgyx;Em]gOvt:=x`EV`^?>]dOMwS>FSnVPneMq^FPFo_FUdVDLel=?V^HP^g?>l^qa^ULUue>^tlaF_W^\luFDgU\tunDqngtwg^qa|Tbilisi|Gurgenidze, Bukhuti|1969|B52|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxEUmeDLtX?oWEKngKUg^UOWOi`OQ|?|Parnas|1949|C91c|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxEMmeDLdZKDl\;EZdE?wv<`tf?NgX`nXNnuN=ul=C>;vtleCMDMtuBRueR[eM[dogdlrt:bxobdMLIYfm;sonYa\T@IL@wpIQvxwvH?bZU\t\=ExpPXqi@Gpg?T\lGPh`EGgpW`i`GFpg|URS-chTJ Coop|Chistiakov, Alexander Nikolaevi|1954|B70|1/2-1/2|B +FVl\@Osd?[kc>@tkDLm]=RrtRjtlO^nfV]f]?>wnjcutEUvw^dkdE_fJRe_KS_YEDgvDKveRZcZSZtsKRmtZbtLbeLDRJstJBDGeJY_Jj_N[cN=?F=CckGFkt2ftjsCTB:xqA;FO;KO=:B=EB;t_KkVN;:EZ|Málaga|Calvo, Ricardo|1981|A10|0-1|B +EUxg@OphHPwp?Hvx>@meBRjZ;EsdDLn^U^e^FVkc?>tbH?b?>?uMO>Mb=OruE;bT;EuEMwuM>VEHpw?=d^=E^O@ANEHWO`AH`V;=wiHOxoW]V\]NiNON\VNFh`=?of?Of^OMqaMm_WPW`Wmo|Tallinn|Karner, Hillar|1981|A49|1/2-1/2|B +FVl\@OsdEU\UOUxg;Lme<`nf=Ejb>qaENtmLFd^FW^XNFuxOUZc=Ef^W]cuUKmdDTumKZnuZdmd>@xgBRvx<`bl=Mqi`WgaWElbMFbS:GL\GHvx@Osm:<\n@xgIQXaogLTwo>=stCKtlmlol=exo@?g_HPogec_WPW^W?Fg_GO_^FMlmML^_c[f^[Zm=Z]=ARZAQ]MQPLEPHE>HCT\qa>?aYMLYQ?@^VZbVNbkC;@INFLNWNks2;AIAF>2AI>GIQGOQINFsw_VwvVMv[ML|URS-ch sf|Gipslis, Aivars|1955|B22|0-1|B +FVl\@OsdEU\UOUnf;Ljb?Fxnul<;lWA?WlHXrt=@weU\e\BJvxCS\jwnFMDB;ES]HPp`Ya`X[Mg`ai`iM_i`|Reykjavik Open|Petursson, Margeir|1986|D40e|1/2-1/2|B +@Om]EUxgDTnf<`wn;Lqi`gngFNvx:@]TMTf^TK^UNUwv=Emc?>v><>tXO^g^>^cm^NmgIQXmLVgVNVuwEWrvVvwv@IjZWlvVKoxolmoxIPVMGOMECKk[mfxyfvyqvVqyVvyqvVqyBRELVvyqvVqyR[d[Vvyqv[LU[ZUePGeUGFUCZECKEMKMFMqhMVhgOWiaW_|Malmo cm-reserve|Andersson, Ulf|1983|D55k|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EU\ULUtkCKZd;E^U@gnT\elCSf^NV]VMV^U?>m^=U^OVOtfOXvxXfofUTwWLVruHPW_>Fno:>xyTD_OVEOMETo_TN_gNHMLD;f^HYLMGWp`W^gfYHM];CuvHN]^NXfXF^l^>^v^C^yq|URS-chT|Geller, Efim P|1966|D43|1/2-1/2|B +FVl\@OnfEU\UOUjb;LulGWk[BJtk=Oxg?Mw\UK\n>@vxnwUObZW_f_X_v^_hqhO^l^DLZSNUktQH^aMV]VHVa`@AtfU^ruIY`aVWuM^ga]A@SL>Vw\@I]B|Candidats Tournament|Filip, Miroslav|1962|B43|0-1|W +;Ll\FNphEUwp@Oxg?F\UNUvx>@meIQt_cZL=ZR=N_fDTSbCSblS[jbF=RB[clr;:BG>GVG@GrcU]f_N_h_<;cT;kpg:btrbrwr=FrBOUT^Ud^hQYqaG?B:?G:BG?|Las Palmas|Pomar Salamanca, Arturo|1977|A00|1/2-1/2|B +FVl\@OnfEU\UOUjbDTxg;LwS@tf]efT?=Tf;DrvYHogLgwgBJd^HWfoegpg=e^O@AvtD=tHQ>M=FMWPW@wpDLjZBRvx?>wvF?kcV]g]=K]WEVtfKDW]HPqi?HumVEruET]SLSdSDLmMTJ^VLMSM>VM<:=>O>CJ>MvuH?f_lLJSLKuUGO_m@GmRKCSnGNUeM^e=?T=>CFn\NM>FMFxp^oRvo^\e|Marseille|Todorcevic, Miodrag|1989|C44|0-1|B +FVnfEUm];LwSV^l\BJSLCLxn=Xvw@OsdJRul@tm?>wvHPqiOYvuEfwy:>ruem|Varna olm|Gunsberger, A.|1962|C18|1-0|W +FVl\@OnfEU\UOUjb;Lul?Fxg>@wS<`SL`gpgCLlL:;sdUdmd;KL\=Eqa?=vnKM\cV^|Kislovodsk|Hamann, Svend|1966|B43|1-0|W +@OxgDTl\;LnfHPkc?Htk>@wnEU\UOUkH@Hut=MsdUdtdFVvxme:=]f=uxquwVgKSLKRZcZSZKJwrg]rw_WwW]WOWJZIYf]|La Habana olm fin-A|Hort, Vlastimil|1966|A30|0-1|B +DTxg;Lnf@Ol\FNsdEUm]T]f]?[jb[dkd=Rtm>@wnU\n\NVvx<`\n:=gVLV]VO^n`^mwvRdVNGN`N@Aun?>ru>FqiHPnS=MutMN|EU-chT|Nunn, John DM|1977|D32|1/2-1/2|W +FVl\@OnfEU\UOUxg;LsdU[wSBJSL[Lm]V]g]<]LELf^?MtXOVYiLEihGOXfVhqhENkcA>rtCKf_M_h_=mwu>=xwmku=<=wvN`_W`YvwKSogYGtrDTdukmuf=Fwvmkg_IY^VYartT\VNGYtlklfl\dc[FMlfY>NF>LflMFvoL^l]FM]cMUjb^WctW^tcHP|Kislovodsk|Matulovic, Milan|1966|B45|1-0|W +FVnfEUm];ExgV^gm?Mkc@FtbMbsb>@l\DTblFW\UT]m^]fofEO^d=Rc[RDue@og[TdSV^rtTotD?;SMCUg^Ujnf;kwejNM\:runkm|Candidats playoff-4pl|Timman, Jan H|1985|A34|1/2-1/2|W +DTn^;LmeHPo_EU^VGOxg?HVO@Oph>@wpFV_VO`vx`VgV?wuwLVsdqaENtmLFd^FW^XNFuxOUZc=Ef^W]cuUKmdDTumKZnuZdmd>ZBW^B:@tTKTsSNjwrjNSTL[rZBRTVNEZR[LR:?:VT:rxorjqiL[gVEZogjln\@IghZ>TD[L\UL[DC[JCB>SB:HX:?lD?OJTV`SeOQIHQLDLULT^L^e^`o^Lf^LShgHGo`GN`qNOgfSJqgJwfow\gm|Moscow-3teams|Balashov, Yuri S|1973|B82|0-1|W +FVldEUm];L]VLVt_VP_hIYqi@OsmYahq?MqM=Mxg@tm?>jZBRwtIQqi>^cT=FeSKBT^U^gaWMSYHXYQXamXMWQYFNh`WFYaFPaQB;p^;MogLFtwFU^UNUXOM?QmUMm]Mhxyhiyxihxy:J`XhiyxJL]o?TnfTfofihxyLlf>P?|Tallinn|Wade, Robert G|1971|B14|1-0|W +DTxg;Ll\HPm]T]g]?H]lEMn^GW^W@mcRDc]BJtfFV]g@Aum:=ruMU\UOUfX=EmtV^g]L]l]DVjb?>qiIQXQHQtQEIQXWiXV>VpiVXn`Iiog^gxoX`]g`huUhgopgwpiwgi`gc`XAHUEH?XPckPO?>EeknecnFc[>=[cFEON=@uc;Exg:;jZCKvxip;@ldFbsbLFxnFWph:qi=FntBRblR[d[<:wnWMvwIYwpYatcOIcTENyqKR[RM\mdNPpyIOdvO`n`W`vu`WqpPpyp:JaYWXpw\fofJO|Yerevan|Karlsson, Lars|1980|C16|1-0|W +FVmeEUxg;LphGWwp@Old?Mvx>@tXIQXO=Ok[V^e^U^gm@vx?>ueLVem<`wu:fg_XFndFNmUNUdUfnrsIYjbL]Udnok[]Wsvo_dU_oqxojUFWFvFjbFCYa[SbjSKBKCK@IK[HX[KIHKLGOLKHPxqjmqxPWKJWVJRV^RZm]ZJOWJP^_xq]eP@eu@?|Parnu|Stein, Leonid|1971|D41|1/2-1/2|B +EUo_@Oxg<`gVIYV`Y`ph;Lm]=EwpEWld>@m]FNl\=Fsd?=umEU\UOUruUdkd;LmkT]f]L[wv:@vx<`tf`gng=MsdL]g`FOrtDLdn]n`n?>umKEphE?o_?N_WN]nu:=moMFqa=Mxp>=wyHPh`PW`W@ApiOHyxF?f]M]ul?MtuCSohHOhgLTg`M?xh]MuxT\e\S\lZMKhpOF`H?HpHKQH`=eiqe=qiBJxp=eiqQa`aFap`emqiaFZ>IY`hYahdAHd\meiqFX\DH?>GX_qyaiGYefDtf^ts?Hk[HObZOWYg^]gC]mCJV^J@sm?>jbM;mwLRc[R\ktIQgnKDne=FwmNVZSJSe^O^m^V_^T_glj<>cuLOj:>:r:@I:rgpueHPxpKDeSOXpwDq|Tallinn|Pribyl, Josef|1977|D58|1-0|W +@OxgDTkcHPtk?Hnf>@wnEUvx;LgV=DVLDLmeCKo_VH>Hf^U^g^KSjZS[du=]uoGW^gNv|Bugojno|Ivkov, Borislav|1980|E19|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@k[RKtkEMwnBRme;L[SLFdZKBvxFPl\P_ktOYtf=OSK|Sochi|Korensky, Valeri S|1973|C84|1-0|W +EUxgDTl\U]nf;Lf]T]meFVphGWwp?[gmBRvx@Osb>@bSo_V_w_HPtk[TpU@Alo>HrvFOS]PX_WO]k]T]vfHWaW?WoW]fxpf]WXYPXa]HU^P^a^IQqa:=h`=]^NLV`XQXaXVeNmvW_d^KUvm`WtsHXgX_fofFX^XU_ngWesrV^X^e^f_L]cd]lrjENkc=edk^gpgNUkl>njremumnmldCKytUMc[medAkd>=dkaikj=@sm?>mg<`tk`gngMV]mU]ru=Dk]V]m]>=]k=ugu:=ugDRc[RSgnSZvxO^wtIQkcZcjc=mxw@?t`X>DUVDNXQHQ_WN?WOFEeWE>c[>=VM=>WP>=OG|Candidats Tournament|Kortschnoj, Viktor|1962|D41|0-1|B +EUm]DTld;LxgFNnf@Osm?MwS>@vxBJSeNV]TMTf^TB^UOUm\U_e^=O^L?=uZCL\V_nxyntrt@xiFogOUf^Ud]HduHAufvmfpAdpaywbMg_<@woGW^VMDd[FG[T@xmfapf]DRTBpveTxp]fvlfgpogol[TCRDjb[UogGFBoFG|Sochi|Boensch, Uwe|1984|E12r|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tfDLw\;EVE=EdZKDZTE=vxCKTcO`qi=MwvMqxw`fvfKS\SLSf^@vx;LgVIA>EAVE>ph>GxpG>V;>G;VG>V;]=;V=MVd>Eh`Y`i`LKphK[ogMUhaUYahYUha[Kd\KMc[T[\[U][c]ec;e];c]Uc;UeaXMO;CE>C?\^=u^:?G:^OM^_G@_^uUXQ@?^_?@_^@G^_MO_^UT^]OL]_LO_]PXQYOL]^LM^IG?IA?GAIG>I^MO^]OL]^LM^fTRf^RU^n>Gn^G?^IMNIA?GA:UV:;NM;CG>C<>GIA>EA;EL;cLDcdD=dk=>k;>G;AVT|Moscow|Karpov, Anatoly|1971|E18|1/2-1/2|W +EUxgDTl\@O\UOUnf;Lm]<`f^UK]UL]wn]nunFNsd?Fqi`gngNU^U>@vxK\t_\Mwv?>ghMWh`W]UMF?dUIY`Y>vrv]NY`N_UF?FMF_i`i=@vx;LgV=DVLDLl\?=me@meEUtXU]dZ;LjbOErs=Dut:>k[L=XQFVQH@Hn^GWgmCLtl=NZkEOogIYkuYawv?AuoahqhOYoyW_h`Yhyh_hmwDFwhN_hn_ipiAixpFavy>AyiaipoiaopaqpwqynxAq|Tallinn|Saidy, Anthony Fred|1973|E62|1-0|W +EUm]@OxgDTld=K]TKTt_HPnf?Hsm;Lwn>@vxFNrtTFd\NV_XU\m\?=ucIQXaPXahO^wu@\VEZwt;;>O>rtDtft>OtmOUxw@?wn?>neGOV\M[mt>Ejb[F\RBJe\UK\cOWR\|Tallinn|Petrosian, Tigran V|1979|D59|1/2-1/2|B +DTxg;LnfEUwSBJSLCLkcGOtbFVm]T]b?>?f]<`qi=Rld`Y]V:>p`YGun@Fc[RDnJIY`YGYsmFPvtPVyv?GgVOVog>:Jn:jnVDVvVjrmsYPtkA:utrjkcPs[SseSLe\c[:R|World Championship 24th|Botvinnik, Mikhail|1961|E24|1-0|B +DTl\@OxgHPkc?Htk>@nf;LwnEU\U=Ume<`jb`gngUWvx?=gnLVkVWVrj:@wn?>k[RKvxEMmeDLdZKDl\;EwvE?nw?NtkCS\SLSZdBJe]N]g]V]u]DK]mO`du=aqi>Nk]K]m]`VvfNPxyGWIQr:>:]U@IU:MUud\fW?Pp?AIP:>PX>FXYFaYaA?U]duaiufpqyx]f?gi`gh`_xqfoqpow2pw_h^V|Sochi, GM contra jovenes maestros|Tseshkovsky, Vitaly V|1970|C90|0-1|B +FVnfEUm];Lxg<`wnV^gmIYjb`nunGWl\@Fsd=Ek[L=\UFUdUEUtk=Nn\DLrt?Fvx>@wvYa\n?OmsOPsdUEo_^gngNXgnFMvwMDn\@I\TW_f_D_tvE`vnaiwo:>T\_fnf>f\wfv|?|Veder, Visvaldis|1951|C13|1-0|W +FVl\@OmeEU\UOUxg;Ljb<`sm?TuZ=Enf>@qi`Ywn:=m^TKp`YPtmGW`WPWgaW^Z^@AagUO^aV^e^LVvtVPaXO^XYELts^m|Portoroz Interzonal|Larsen, Bent|1958|B94|1-0|W +FVl\@OmeEU\UOUxg;LnfGWjb?Fwn>@ul=>vx>PsdvwPQgiQNigNQgiQN|Stockholm playoff|Andersson, Ulf|1976|B85|1/2-1/2|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LqiIQuvnh@HwnHPkc:=d\ELumBJjZLEvuQYiaXayaE`m=>=uv=>vm>=md`nhnV`f]PXay=>phCKc[><[SJSZSDTSLve>?e_qyH`?A`XA?XPyqP`?AgoAI`pqypxyqxpqyphyqhbIAbgAa_naZgc|BL|Smejkal, Jan|1989|C67t|1/2-1/2|W +EUxgDTl\U]nf;Lf]T]me@Oph<`wpFNqi`Yh`YPgaOEaPIPvxETun?Msm>@m^T^n^?>tm:;`XLFk[CKwtFW\TKT[TMDrs=F^L>sSWfofFXtvDhvnXYpw|Bled|Germek, Milan|1961|A61|0-1|B +DTxg;Lnf@Om]EUwnHPvx?Hsm>@ldCKkc=Dtb?=rtFV]TDFc[KT[TFDmc:;qi@xg;EvxIQgmEOl\xyOIh`QY`XIXnYXIm^GWwxE<^XIXtXV^rvDGYG|Moscow|Kortschnoj, Viktor|1975|A40|1/2-1/2|B +FVl\@OmeEU\UOUxg;Lsd<`nf=Ewn>FRSF=GO=]SX|Jurmala|Klovans, Janis|1983|B63q|1-0|B +FVl\@Onf;LjbEU\UOUul?MsdUKxg>@k[<`wn=Ftk:>meBJ[SJSdS>:vxKZktMTrsGWe]V^n\@AgmTMSMFMsCZK\SLBm\MUSJULlcKECB:BJSLC]UETc[CUtkDL\KUMS\?=qi`YkrIQbZAIZRMFrdTe[ZW_ZLYnK<=VgU_uZ_ewe=edne=nhLVZ>VevnY>g]ekhWHPWh?Hys=]md>Snv]usuHdumA=h^kevudr|Riga, Cto Letonia|Kliavin, Janis|1958|B67|1-0|W +FVl\@OsdEU\UOUxg;Lme<`nf=Ejb>dUNU[SUgpgLFl\<;bZW_ia_fofV^g^E`wn`pyw>?w?=?vupxmvxfZRFPRJP_rjfx^V_p\^xvulpflcv[^[M[c[?_[TCKTL_]ngfWgUWFLEFUjoU_EF_PFN]aoGa`e]`]GH;@gVEUwn=FVe[dkdU^ekDTvx;Log?>g^O^ngNkuLVufULtm:>rvCKWiNPiEVEwoPNowHPjbGWqiEVd\LZfUZlUD@GD>N>m_Vev>G>_;>Ep`E<`WPW;hW_h_lc_hc\w?cS>nwvnvrv<;k[MJv>;BSJBJ>:|Tbilisi, Semifinal Cto URSS|Chukaev, Egor|1956|E75|0-1|B +EUxgDTnf@Ol\FN\UNUkc;Ltk?Mwn>@m]T]g]=Fvx?>sdN]TMVmeWYopVDT]:>jZYXvlDMtwXFwvNP]dMTemTBd]B;l[><]kFXvtXWtw;Bk]B;h`WEwo<>[e;Mg_PNogGOet>nh>GhWM?`XGPWHNLHNLNXODl_WlmpmPWwWNM]kMKWUKck]@GxpGNUVNGpgFG|Skopje ol (Men) fin-A|Lombard, Andre|1972|E14|0-1|B +EUxgDTph;LwpFVvx@Ome?Fn^>@sdU]dnO>gmGOo_HXqaX`aY>M_W@AxoT\wy=Kkc\eleKJm\M\c\CS\SJStQ?@rsL[nt@wn=Fqi`Wvx:=tm=UucFEmdWigVEWpiUVdVWVruCKn\VWxpW^og^Ppq?>wxPYue@?g_IQxhHXem>fm=?HhfTf_XYX=uO^\GXhqyhi|Bled, Match Candidatos 1/4|Portisch, Lajos|1965|C10|1-0|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tf=Fwn?=vxDT[TKTn\@xg]gpgh^tv^mqmV^e^aigo:>m]iqog>V^U@A|Capablanca mem|Letelier, Rene|1963|C75|1-0|W +FVl\@OmeEU\U=UtmDTsdUExg;LphCKwp@mX?>XOFOrsOFd^GWZc@A^XFXgXIQXgL]g]V]pC;CclW_k[_hqhE`[T>nl\`g\]KT]TCGtwGWT@jZPFZRFLRJ;KlZK[ZbM;gv;Bvl[;bZ?@wn?>k[RKmeDLvxEUtXAogQYg^U^n\A>\S>N]U=US\UVh_P_\NVdN<^fmsdk@mcTcbcetrt=Dwu?=pUDTck@vx?>ldF?^UOUgXIQucQXcUX`U^@wn?>k[RKvxEMmeDLdZKDl\;EwvE?nw?NtkCS\SLSZdBJe]N]g]V]u]DK]mO`du=aqi>Nk]K]m]`VvfNPxyGWIQr:>:]U@IU:MUud\fW?Pp?AIP:>PX>FXYFaYaA?U]duaiufpqyx]f?gi`gh`_xqfoqp|Sochi schev|Tseshkovsky, Vitaly|1970|C90|0-1|B +@Ol\CKm]FNsd@nfDTjb[dmdO^rtT]d];LwnEUvxL]g]U\n\=Fun?=\J:@l\UOsdrvGOVDPewyYP_h>vyv=EhPePDM@Gk[PejZBJvue\u]\N[SJSZSLSTLEBdSBRSDN<]^RXpgXWgf|Riga-ch|Akmentin|1954|C41|0-1|B +FVphEUldDTm]V^wp;LxiIYtf@Q]TQWf]CKTKBKnf?Mi_M_f_@tkLVcm=DucO^\U^mvmNUmvvuDKd\V\kd\fofNc|Munich, Olimpiada|Milev, Zdravko|1958|D41|1-0|W +DTn^;LxgHPld@Ome?Hwn>@vxEUulT\sm\ene<`en=DlZ`E^UOUZaU_nuGWph_YgXLVuYPYaYIQXgV`mcFVtfELgm:=ruCKwvBRYiRZctLCiwW_h_V_f]H]d]DHw\CU|LAT-ch|Zhuravlev, Nikolay|1965|A53|1-0|W +@OmeEUxgDTph;LwpFVvx?FtX>@gmZkFOk\RDrvHPwoOHvwHQxy>Ff^W_h`QHwxIQqiD=mgN\e\FEgvEuxwurjZHOve=]wr]rowrdwgd]yp?=gwOawu]dpg@Hnmd]mn]dnmd]ld]MmlMFZRBJc[T[d[FMldQYeoY`i`MNu=a=oe=D[SHQSKD;\TQXeoXOdeN>gpOFei>@iaFNoeNEaO@\OHEML>?LO?@OP@AP>AI>EIQ`XQXEWXQo`QHWVHIVDIAC;2B;D;AI`O|Leningrad Interzonal|Cuellar Gacharna, Miguel|1973|E91|0-1|B +FVnfEUm];LwSV^l\BJSLCLxn=Xn_?MqaXQ\U@OsdHX_nXaulFvnFNrw:@mvOUo_UdvdNU_W`pwopxyx@xowxwnwaikcULwxMhjZLUxwDLwxiqxphodmoxmtUMtmMFpyFOc[OW]ULU[SJSZRU]RJ]fJBfmB:2mu2:qwA?gpP^l^V^p^>^yIHVwqKZvn^\qg\lne?gelgoluZTf^Tcrsowulc]lewueduxtf]SdlxplephbZS]swCKIQ]cenhpwop`o?@whO^ldGWgX`nun^XtX<>hwW_ogNVnSDG]VBJVN>NSUNvUG?GrvMTxyGWXaWYk[Ya[TaYvsYTsCTdCDd\qaLVDB\tyxV\BDtlbZ\fDlflwm@Gm^GFph_hxplvphveg_FN^XNWXIekIXkZXgZdg]WP]Ld^hg^MgfPWL]WOfeMS]nOWaYW`e^JR^URZU\SD\[`Y[ZY`Zc`gn]g_cl_^]nDNlmN]nh^ghYHXYO]WmvWfvmfwmv|Malta ol (Men)|Plachetka, Jan|1980|D63|1/2-1/2|W +FVldEUm];E]VEVsmV`xg?Md\@O\U>@ucMTnf?>wn`oclTfm\fTk[=U[T@sdBJSLCL]TMTulTFwuLTkcZdU]f]T]V]:E]VNVWVEeue=eV;@I;C|LAT-ch|Pasman, M.|1954|E59|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUul;EtmE?wvU]\THXqaXamQOIgq?Nn`@A`W>@lu=OuYNHQHOHYIHIWIAIqg@`gq`_ph_OxpahohCSTKBKZkKSvt@gqCSq`GOo_YGvn:@jb[Rk[RKdZEUZKBKwpU^g^<`nfO^vx:>tkGWrvFEme^dfo>nvndnxyW_pg`gog?>wo>fgCnhyphYpwE`CU@?ktYhqh`u|Tbilisi sim m|Bronstein, David I|1982|C63|1-0|W +FVl\@OsdEU\UOUxg;Lme<`tm=Ert>wnYnvnT]mdS[d]=]ng]Mp`MJyr>?g^|URS-ch36|Bagirov, Vladimir|1968|B61|1/2-1/2|B +EUxgDTnf;LwSFNl\?MsdBJSLCLme@Ff^NVvx>@^ULU\UruOWTK=F^hFXcG>?GYXYhYW_e]HP]VPYVN?>uEA@K]^ph^ZxpJRfmLTmfTUpgZ\gnRZngUSgnScf_Zbnm\L_VLNVdNL|Brussels blitz|Sosonko, Gennadi|1987|E29|1-0|W +EUmeDTn^U]wn;LxgFVvx?Msm@m\FPtmMD[SLFrtGWm[BRSKR[KD=D^W?W\fDtut]fb[:jofjnwonoxoWGtT@IovFUvmGDTSUdSKdsmvDtvoNUf^tlohULqasmgvmwhgPag`LE`YHP|Las Palmas|Visier Segovia, Fernando|1977|A53|1-0|B +@OxgDTnf;Lm]EUld<`qi`gugFNsm?Mgu>@wnNV]TMTk[TK[SLRtbU]f]OUrtV]d]?>vxK]neUfof]fxy=eb[eS[RSRm\Rj\f>fuEf>tD>?DCBRE]:=]^jN^g=ECSRZgbEBw_NnS[nuyquMqy?>_w>^ws^[s[BC[ZCs|Sochi, Memorial Chigorin|Chandler, M.|1982|D43|1-0|W +EUxgDTnfHPl\@O\UOUm]?Hf^UK]UFNjZNUZRKE^U>@wn;JsdEOtfgmIYqi`Vm^OHnS>?UM:<^hWEwvESdS?>ME=ESM>NML;gmDCUMOFMeKSegFXm^CF^M|?|Kochyev, Alexander|1981|A32|0-1|B +FVl\@OmeEU\UOUxg;Lnf?Fjb>@wnGWulsd>PdUNUk[BJtk:>kd@ArsV^gvFMphPQvpQiog>NwoW_p_M_f_^fopLF|Las Palmas|Andersson, Ulf|1975|B85|1/2-1/2|W +FVl\@OnfEU\UOUjb?Msd@ul;Lwe@AqaGWgX=OXNONlcLFf^NP^UPpywV^enW_ogFWwo^gd^MT^TpxnwWaTe:>vu>nc[?>[]aW]BWfBf_fogno|Tallinn|Vooremaa, A.|1971|B48/20|1-0|W +CKm]@ngNUrs=Ewv?>tfCKgUEUjZ:;p`;C]U@GJBCBrBEBfBOW|Moskou ch-URS|Maljutin, Evgeni|1991.11|B54|1/2-1/2|B +EUxgDTnf@Okc;Ltk<`wnFNqi`Yvx?Fl\>@me:c[T[b[GOVd>M^VMSVOHOe]Sdtd@Adf?Gn\=M]UNVo_GH_VOVfVFaknMOwOaO\eJRePOP[RKRVNPsxq|Sochi|Groszpeter, Attila|1984|E12|0-1|B +FVl\@OnfEU\UOUjb;Lul@me?>wu:=rt`Wd^F?^OHOf^WPqi?QtsL]g]V]ktQHp`>Nt_NLlm@AstLdtd]dmdDLdt=@xqH?tfENuxNjiajbaYb[YPGPe]?H]U@>UMH?ME>=xu?TfeTKus[T_fKDqpTFsuCSo_PX_XLTeUDKXOFOfXOkumkd^VAHXOHPU^|Munich olm prel|Reissmann, Paul|1958|B43|0-1|B +FVldEUm];E]VEVsm?TxgV`nf=FmcTKqi`OjZBJwn?wohoxpA@E`@`poCLf^|Subotica Interzonal|Speelman, Jonathan S|1987|B17|1-0|W +EUxgDTph;LwpFVme?Fvx@On^>@sdU]dnO>gm>Mo_V_n_GOmgMG_UGVga<`umHPl\L[U[T[ag=Eml?H@>G|Bled|Gligoric, Svetozar|1961|E98|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;EwvCS\SLSZd@d\<\t\U\gCM]CJ]BRbO^JSB]SL^mwu?=qiIQbd]MLCGWjZ@IZRM_df_MRJM[fdm^d[=uxq^oJBW_phoeC^|Aker Brygge|Agdestein, Simen|1989|D36c|0-1|W +FVl\@Onf;LsdEU\UOUul@m]N`vxE>wu@AtkCSkr`gngLRbZBJgnR\lj>L]ULTs[_gngTK[cMTjnKQxy;Krk\kckSZus?;kK;KsrZbn\QM\ZM=qiHPgn=MZ>AHn`MF>@wnEU^UV^gVOUdU=UV\;Lvx<`n`U\`n\Nm]^eneLVt_Veue:=eSRKwvNPSnIQruDLqi=uvuPOnVOV_V?=u=K=|LAT-ch|Kirilov, Vladimir|1965|C84|1/2-1/2|B +EUm]@OxgDTld=K]TKTt_HPnf?Hsm;Lwn>@vxFNrtTFd\NV_XU\m\?=ucIQXaPXahO^wu@qi?>wvNjZ=?m\KSZSJS\fLFfUFUlc@Ae]V^d\S\w\NM\UMUc\?OurU]r:AI\@IP:;OMxq]mqxmuvuMuxq^f|Asztalos mem|Filip, Miroslav|1963|C50|1-0|W +EUxg@OnfDTkc;LtkFNwS?Mvx>@SLCLl\?>gV=Do_VrvDKhoKRvVRVdZCPH|Candidats Tournament|Short, Nigel D.|1985|E43|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb?TnfTKk[GW[SLRgV>@phW_h_U_yxK]rj]Vf_V_jn_tutwn?ovodfowfmsemkxhDLbZktwptTnuLSZSHPed>VdTVThcAHpgHOg^ONu`NF^]FM`gTDg^DFcgFDgOMFOoFM^UBJSKDtUCtu]dusoOMTOLTSdls[C:JRKC|ct|Fischer Robert|1959|B87|0-1|B +FVn^@OxgO^me^OgV;LVgEUwn?MtXIQXawvEMkcM[jb[mgmLVnwWEZTELm\VETEOEwnEOng>vrv=>v>O>\V|Aker Brygge|Smyslov, Vasily|1989|C42m|1/2-1/2|W +FVl\@Osd?[ph>@wpDLxg?>vxIQgvEU\ULUvl[Rm]V^k[RDdSDKt_OY_;:;jZBJSdNnfM?unX=ws;@vx?>nS[dmd<`qi`Yue=KSZ>NZLCLgV:>elLT]TKTVeTDrt^Xo_XipiNPxq>nlnYnwvDFdVn`VOF?OF?:i`P`eV`_tD:;Ve;D|Lvov|Meduna, Eduard|1981|B14|1-0|W +FVn^@Osd?[jb[RxgEU^U>@wn?>vxV^gv^veOLugK\g^\m^aUOwumclcLNa_=e|Novi Sad|Mejic, Petar|1974|C84|1-0|W +FVl\@OsdEU\UOUxg;Lme<`nf=Ewn>@xiu=F=_;>DJ@sdSKEKCNU;=|Sochi schev|Gulko, Boris F|1970|D87|0-1|B +DTnfEUm];Lxg@OsmT]f]<`wnFNvx?Mwv=Dld>@mw`gngCStXOErtEKgnBJneM_X_D_vfK\fg_Dtl:=ln?>giIQutNVe\U\]VLVt_=uifGO_WDTWY>=nvuUYiVeiN@AvuUMNFTLfhMEFbJRkcS[bR\cd[ckRWLl|Kislovodsk|Fichtl, Jiri|1964|D36|1-0|W +EUxgDTph;LwpFVmeGOvxjbV^e^O^tm?MpgA?vwLVgpV\mt<;lvWipiEiu`^owo>v|Tbilisi, Semifinal Cto URSS|Giorgadze, Tamaz|1956|E87|1-0|W +EUxgDTl\U]ph;LwpFVvx?Mme@Fnf>@f]V]gXnNMNvNL=NvFLga>nvnYnaP?OpU@IPVLFUpONrvnYk[T[m[BR[bFLpUN>bMLFUgYgVg=LvNI@MFLFNKFG>xo|?|Wiedenkeller, Michael|1986|E70p|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUgm;E\ULUZdBJ^UEKm^OUng=QWHPWfELu`=e`iI@fUeiUO@GpiGOwv:AxpDKtkLEo_AiruickVOFVOF>_WELWPcbuUbjpijo|Candidats Tournament|Keres, Paul|1962|C96|0-1|W +FVn^;Lsd?TxgEMwS<`qi`gSLCLug@Fme=EtfT[g`FPvx[dkdLTrsE`i`IQsC>EwsPFxwGOwnFLsyA;Cc;KphKJck:;k;L;yr;Lo_L=nm=N_WN=d\=LldJKml|Amsterdam Interzonal|Bronstein, David I|1964|C28|1/2-1/2|B +DTxg@OphEUwpHPvx?Hme>@sm;Ln^FVldIQuZ?>wvBJ^UOUm^H?jbFog`Wh`GOXGFGUGHG`WPWmj=K\TKNjNGNe];@xoNFTLEK]V@<>E=|URS-ch25|Kotov, Alexander|1958|E69|0-1|B +@OxgDTnf;Lm]EUwn<`vxFNqi`Ykc=KtkYgngT]f]:=wv?Msd>@dZKDl\U\c\LR\TMFulRLru=Eum?=vuOUZdU[lZFTjbL]m]E]u]T]Z[BR[cDVdu]kukCSxw=mkuHPcsVTwvm]skS[bZIYgn]=ufTLnSL^Sn=@jb=Etf:=uZCKrsM;wuOWfXIQXFLFZE=EuvFPpw?>vfP?svEFwpHXgm@Hfn?ImwGYwf>?nmX`qa`ipiIXipXgpgYgfpFEpagLvu;DxwD=wn=XmlW_nv_gk[E][TKTlkHOkSLSdSXaS]V]ha?;vw;cwxOWxqW`ux`axPQYPNceN^aXqhXW^_WN_aebaYNMh_bdYId\IB\l_glmg^mn|World Championship 24th|Botvinnik, Mikhail|1961|E81|1-0|B +FVxgV^g];LnfEU]LCLmeGWl\@O\ULUe^W^wS@SEOEZL?Wvx@AdnEVLC:;CBVgpgMqxyWYyp=@n^FV^UOUm\IQwv?>jZCKld^v^e^uU^UpU|LAT-ch|Gradus|1953|E69|0-1|B +EUm]DTld;Lxg@Onf<`]TFVk[V^qi`Yp`O`i`Y`smHPtk?Huc^gvt>@d\U\m\=FkH@HwiIYi`Y`cdGOyaBR[SL[tk:=\MFNdcNVksPXaYHPuy=MTMV^sr^VrsV^sr`hYQPWjb^VrsV^sr^VrsVUcU[Uoh?=|KRO m|Timman, Jan H.|1988|D44m|1-0|B +FVl\@OsdEU\UOUph@meIQvxTKtm?>wvUOrt=Ega:;d^O^p^LFZENEm[EL[FL^e^>FvuHPue@?tuDLag?>nf;=xw=eueKDwnFEecDMjZ>FgmCKm\FNZRKS\MNMceMNedNMdeMN|Marseille|Koch, Jean Rene|1989|B35|1/2-1/2|B +EUxgDTl\U]ph;LwpFVvx?MnfIQf]V]wvEag=@gmGWYuX`k[L[pC:;Cp[euZE=vuNEZJ@Nmce[JR;KcTMTRT[lsblrT]A>]r=uZWewe=edVe=VdL]Z>]gvn=>ngGOyu?MuU>Np`A>ruMVdVNViaDLUEVFEF>F`XOXaXFGghGEuyHPo_EFf^h_>?WOFE_W?@WNEmOG@?yImnNOnoOP?FIAoGAI|Sarajevo|Matulovic, Milan|1966|B66|0-1|B +DTn^;Lxg@OmeEUsmFVph?Fwp>@vx?>qiF?gq:;q`O`i`U^m^T\tf\ele@^W?Wqi`Vg]L]K]FO]VWVvVOVc[ELpLCL[FV]FN@AsmIQm^LTia:@N@A@aY@GxpGNo_NWpgWNh`]x|Manila Interzonal|Arencibia, Walter|1990|E76|0-1|B +EUxg@OnfDTm];LwS<`qi`gugT]f]BJSLCLl\FNsd?Fvx>@tf=Rgn?=rt:;tlF[f_;C\ULUwtCE_X[FkcRKneKBdZO^XFEFlLJRLJB;JR^oeS;htdoixyhvyqi_dgvaqxavSwvRg_RmZTmjTejceVcfxy=?_`fQyxFB`h?:V`Qa`O@AhgBrOErwgwa]xq:jwg]agia_ihjb|Brussels blitz|Torre, Eugenio|1987|D38|1-0|B +FVl\@OnfEU\UOUsd;LjbHPul?Hxg>@qiUKwnBRmeGWvxPXtmIYk[X`gqwu]VuvNGXmV]leU_e]_nvnH]n>?>tD>nmd]oxwnli`G\|Hoogovens|Nunn, John DM|1982|B47|1-0|B +EUxgDTnf;Ll\U]f]T]phFVme?Mwp@Fvx>@jbBRsm<`ul:<\TM;m\`NgmFUm^IQwvCS\M;M^M<;o_V_h_LF_WFWpUWMUNGNTM=Mln?OnVOPxyMLV^;@jb=Fm]V]f]<`tXFEvt?>clLRneIQXfK\d^ES^m`Nk[SL[RMbtsLSmcbMftNUgVMV]V>VtkSZcTZlel\kskUp|URS-ch37|Gufeld, Eduard|1969|B33|1/2-1/2|W +DTo_@OxgHPph?HwpEUme;Lnf>@vx=Dsd?=un:;jZBJduFV_VLVgVDVuoHQng@gvO>sm>Mo_GWunV_h_@A^VMGpLCLmgrw=NngAIgiHPwg?@gh@HaWPWiWI@WOEGOQ:;_W;CWOHhxh|Tallinn|Timman, J.|1973|E92|0-1|B +FVnfEUm];LwSV^l\BJSLCLxn@OulJRkc?[tm[Msd>@\TMFog?>vx^mR^fumf^Rd=apha`mu`XumHPrv:>v^>^_eXYe_Y`_pIYo_`N_^N^qa^gmfgwxqwsfmJejZe^pvscZRc\qx?QmQ\dxodkowk]Qt][tr[\wo\TowU]RJT\woLTJB^:rb\Uvg]e|URS-ch25|Bannik, Anatoly|1958|C19|1-0|B +DTxg;Lph@OwpFVme?Fvx>@n^EUsdU^d^O^e^=uwu<`ld:=tfGOqi`Nuv=Egm?=mwLRkcEertRLo_CK_WNvy>Etx=AiaE<`XM=XOFOf`LU\UA@aY=?YQHQmQ?G`O@xyxGOx@@wvIQ\VLV]VOFg]:=]NFNn\W_ug@AtmNL\eUfe^LNvnf\gcN`^g\mnm`Wmn?>VNDLqa>FrvWec[eM[^=?jb?Ok[HP^\BR\cMDckAHvuR[b[D@sdU]ds<`ldOEsmBRjZEKm^:JucKEnfJKclIQf]`gpgV]gpEVo_V`qi`Otm=Erv|URS-ch40|Lein, Anatoly|1972|B08|1/2-1/2|B +FVl\@OnfEU\UOUjbDTxg;LwS?MsdUFul>@d^GW^T@ASnCKTcV^g]LVo_^g]gFPc]svP_nSFCvt_PSLCFwxPVLUV`xpFNUN>NtLNQ[SA@f^QP^VMTm]TF]UFTVN?=k]T?pn?FUMFMLM=MNFPNF>2N>n>@G>:MEqiGN:>NG>nG?i`W`gXIQXN?G]HEUbZQYypYaN_UTnmT\HV\^mn^ZnlZblDG>_Ubjpw`hUO>=DE=Fn^U^e^W_og`Oh`YXxoEVon=@]oVEZkXRjZMToaT]k\RTvuNVc[TL\f_ftL@AuyA;avO>[SJSv[F=ZR;:yAE;LODTOGT[`X:R|Tbilisi|Bronstein, David I.|1982|A48q|1-0|B +DTn^HPxg?Hld@OmeEUsm;Lwn>@vx:;wv=DnwFVjbCSk[U^m^O^e^T[b[BRtb?=ut<`wnDKtfR[fK;Kb[K;vu=uruH?[?@?qi`gngS[|New York m blitz|Dzindzichashvili, Roman|1991|A54|1/2-1/2|W +FVl\@OsdEU\UOUnf;Ljb@vx;Lld=DjZFV_VLVtmIYsbO`phHQut?=f^QmgmYatv`fhafwvwT\bSDKe]BJxyVe|Riga tt|Segal, Alexandru Sorin|1952|A96|1-0|W +FVl\@OsdEU\UOUxg;Lme<`nf=Ewn>]UCLZ[;:nJ>;[\;KULKkphA=\NkrxprVNVOVqi=]J@wn?>k[RKmeDLvxIQgmEUngBRdZKDmcR[b[;El\U\e\=F\TOIg`>=ugEO`<=cmJbk\bdwr>=\KDKWVdfof=mV]mnTKIXqiO^rw^m|URS-ch32|Averbakh, Yuri L|1964|C92|1-0|W +FVn^@Osd?[jb[dmd>@ogEUtXU^u=?=g^=Mwe;ExgETvxT^Xa@gVEUk[RKm]U^tf=Fwn?=vxDT[TKTn\@ZcCKme@smBJSZ=Fjb?=un@nhO^]WPWhWFXu`MVkVEV`X^Xo_GO_VOVWM:;qaXGMWV^w_GVrwVeWQ@H_W?WQWHPWFPHaYHQp`QXwGIQGHXOFWeVxpV`H`OW`PBRPQ;@po|URS-ch26|Kholmov, Ratmir D|1959|A47|1/2-1/2|B +FVmeEUxg;Lph@Owp?Fvx>@tXgXFXmXGOXmOW^WNWo_>O_VLVmX=>umV`rvDTntOUv>?>wv>vmvIQXmUfmf`fvoCKogflg:@IpUEFtnl[U@IPn_PO_YOXY_Fvxpvmpy[e:=X`=a`g@Ugf_pfoh`|Moscow|Geller, Efim P|1975|B08|1-0|B +FVldEUm]V^t_IYqiHX_mDLd\?Hnf@Fm[;J[F=F\ULUwJCJsd?xn:;rsHQZR;=RJ?HJbFbkbYavm=;scHPdZ;cjcGWZTN@vxL]u]NV]aU\n\@k[RKme?>wnDLvxIQdZKDl\EUul;EtfE?ZTU]ftHXqaXatQOIph?Pxp@Awy>@pwBRTcR[b[:rcrahohP?wo=Olt<`Q?@?tXOHrc`gXHAHng?:yr:rcrIOrcH?|URS-ch43|Petrosian, Tigran V|1975|C97|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?Pl\U]phBR\T<`wp=Em\:Jul>:rsENgm`ipyOIktR[b[IXmg|Milan|Petrosian, Tigran V|1975|C95|1/2-1/2|W +FVl\@OmeEU\UOUxg;Lnf?Fwn>@vxGWsddUNUmd>PuZBJjb:>rv@AphFMgaPNZuMFap>=utNQk[Qiog=MtrMQxoFOwyW_f_V_dOQOh`ONnuNvpv?>rd>fywiqvpLV|URS-chT|Ustinov, Georgy I|1963|B83|1-0|W +EUxgDTnf;LwS<`qi`Yl\U]k[]fofT[m]FNvx@OuZYgwg=Ejb[bsd?F]UNUgOFO\U>@ULCLSLEerbOdLSesbd:g^>?kb?@^U@HUVH@bkIYVA@GloGFAV|Tallinn|Spassky, Boris V|1973|E30|0-1|B +EUxgDTnf@OkcBJm];LwnT]f]@jbOQmwW`\UNUgVLV]VMTk]QK]TKTwf^dc[TBumdnxy`Yp`n]`Y]cmkcrfWCSvxU]xH@AkmBCyxCKWM?@HXKDxwGOX@:@m_@?VNrcYQ]eMG?GNGDG_Mcmwvmgvwgmwvm^MeGFefFV|8-board simultaneous|Bronstein, David I|1982|E12d|1-0|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tf;EV\DL]UKf\fLUdUEVwn@ul?>vx=dn\nvnGXnfXixwN\wvW_fd\SuU=Ud<@GpUSUsWGF@]TMTvxBJ\UNUSLCLkc=Mtk?>qiTBwv>fofBfxwOYd^MqndqxwnY_ngU^d^xpgf_Ufee\>^v^p^umUDrv^U\dLT]fUVd\IQf_WN\eVW|Nice olm prel|Myagmarsuren, Lhamsuren|1974|D31|1-0|W +EUxgDTnf@OwS;EkcBJSE@ktm]f]=]rs]\wp[dtbS[bkY_ph_ekd[dsu?=aYdlYPGPum=UgfUVfeVXhi\`iq`p|Tel Aviv|Soffer, Ram|1990|E11|1-0|W +FVldEUm];L]VLVt_VP_h@FsmIYqiFWhq?Tn^=FunU^n^Fm\A>xgCS\mF?vwTKp`Y`i`WQyx>=jZSZrZ=ewn:=Z^Paqhemgm=mnmagmegx^\xiogiXhDXgDKBK\[Q`[KGWK;?F;CFOCKOXKCHPk[gVe]W_[S_gCBgoBr`qSKVEKCXO]UOFd\ow2rwqw\TwfU]fW]UE;|World Championship 23th|Botvinnik, Mikhail|1960|B18|1-0|W +FVl\@OnfEU\UOUsdUdkd?Mxg>@meGWwn@Avx;EulCKgm<:>E:BEMBH=XfoZbHB[`Bb`_wp_WoK|URS-ch32|Goldenov, Boris Petrovich|1964|B40|1/2-1/2|B +EUxgDTl\U]nf;Lf]T]me@Oph<`wpOEqi`Yh`YPgaETaPIPvxFNun?Fwu>@smBRm^T^n^RZrs:BtmL[m[F[kcZbst=MtlCK^LMLpLBDLgPXlnDTutHPgp?=tw=Mxq@HqhM=iaXahaPXahTDwy[MhgHPnvM[vVDTVTKTgn[Rp^POyY=@o_|World Championship 23th|Botvinnik, Mikhail|1960|A61|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb?Fnf>@ulGWsmFOrsBRwn@Avx=FwvHXxyX`gxOHkc?OtkOQphW_f_V_n`Uf`@rt=Ewn?=vxIQulL]f]V]dZ:gVDTSK|Moscow|Szekely, Peter|1982|B90|1/2-1/2|W +EUxgDTl\U]ph;LwpFVme@Ovx?Fnf>@wvIQf]V]t_FMgVLV_VMVvV=DVvF>;>mc>;cTOETE;CETCkxwBRwvlsTZk[jb[ZrsZ\sSRZSR]eqa\tvmtlmeloef|Milan|Gligoric, Svetozar|1975|E91|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb?Fnf>@wnGWvx@AulBRsddUNUf^U@^WRZuv@cls?We]>G]VFTtfTfofLVg]WXvwGUwoc\sw\n]nA@ndUeweVeomeTruXVmU:>u]VU]UCKxoDLUM>f_>FEMFNMER\EBNM_^\m^fmwfnwhnmhWaYOXmdXYeVMNp`YX`WNVBHXQHGVnWOnok[QPGHPQHGojGHjbd]brHp|Sochi|Geller, Efim P|1977|B85|1/2-1/2|B +FVl\@Ome?[smEUxg;L\U=Un^UMqi@wnCKvxDT[sOEwu?=gfGOphMDumE;mk:Jo_;L_WNGnwL]kpKSh`T\e\G\tkJLxy\wswLlwolopoD\yq]Log=ufcumqhL]k]V]bZ\cgcSZcbmnh_no_hokbZ]eZ]emia@G`XHPhg|Hoogovens|Ribli, Zoltan|1973|B51|1/2-1/2|W +FVldEUm];L]VLVxgVgpg?Tt_@FnfFP_hIYqa@m^W^Z^MO^eOgwngouwopyxp^e^U^nYPVYn@Iw_GWxXHP_wIQwx?Otm:=mvVene=eaYefvofgonW_YPQHx`geXV_gnw^f`]fnwoeu|Lugansk, Cto URSS Equipos|Goldin, Alexander V|1955|B16|1-0|W +@OxgHPphCKwp@k[;L[TKTrs=Enf:;f]L]g]T]t_Cpxp;KugOYwvY_g_FV_g?;SbH?sK;K\TKNvtNLb\LTtsTSsSESgOSs\VsjV\BRO]RZ\KZbKUjk]kbkUdGWpw@Gwn?HdsH]ogIYnuW_un]xh_xqnfYa|Buenos Aires Najdorf|Boissonet, Carlos P|1991|A49|1-0|W +@OxgDTnfHPm]?Hwn>@vxCKl\FNsdc[H?krUOg:;:T^?H^OHOlnEte;KeTKJTER\stO=EV\VrVJbtf^UM^V|Yerevan|Vaganian, Rafael A|1980|A14|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQqiEUwvBJnwKDtk;Ee]V]u]EV^UVgpg>vrv=Mg_@xgEKsdKUdUOUwnCKvx@dSMFe]V^gV@l\U]sb?>blNtbTbcb;>xwO`bkDTkSEFqi`owoNKSRFfowKkRTWegx>NpgNOwpenvnknxnfgpxgoxyonT]Oo|Reykjavik|Speelman, Jonathan S|1988|B08n|1-0|W +FVl\@OjbDLmeEUsm?Tk[TK\TKDn^>@xgOYphGWwpW^e^U^uc@Am^Oo>?o?rVmgVNPNvNg]N^]lM\?g^>@H>:gwyplf\fUfpiwWiaHP:@PG@@vx:;jZIQwvMDmwBJneW`wf`YenCSZSJSgmYnunS[ne[dkd?@m]T]g];LwnEUvxL]f]U\n\O`qi`QtQHQwvQH]U@sdBJSZT]f]U\ZLCLtX@vx?=p`\ekeWeueBJbkO^og^TemRKsbFVblTNxyU]d]V]f]L]k]H]ru]VmfKflfN_u=:=wu=]nw]ufuV]qa@HjZSZcZJRyqHOw\_NqhNT`XOH\SIQg_GOuoQX|URS-ch47|Lerner, Konstantin Z|1979|E15|1/2-1/2|B +FVn^@Osd?[jb[RmeDLxgEUtm>@wn;Evx?>wvBJnwCSe]RdmdO^gVEV]V=Xd]XPk[AmoPQahQXyxX@of@@wn?>k[RKmeDLvxIQgmEUmcn_;EWuUOX;hXfhof_:DCKohnpxpWipi_wi`KT[THPhVQY`X@IV_wgqig^UV^pXOpLDNI@_XGNiaL>VN>?OV?TVOT?OV?bVUbeUTBRN>@G>FG?FBebTURZ\TbcU]ZbB:?GTLbjLDcK]eKM|Portoroz Interzonal|Panno, Oscar|1958|C92|1-0|W +DTxg;Ln^@OmeEUsmHPph?Hwp>@vxFVldU^e^IQunqaGO\f?Af`T\aXQXtfCKru=uwuI@nm@?m=FL=D>D`OHOuMD>ML@ogEUtXU^u=?=g^=Mwe;Ek[CKxn@sdUdkdGWm]@Awn=OvxruE<\TMV]VLVldQPuUVgxygawx>=U=?=dVPGn\GEVhaPqaW_hXEFXFPFf_<`xv=uvu`u\NIYkVu`NcDLyxAIcl`WVMFUogUOMVIPVOPOg^W`xoCKTKBKofLT^VONlcNFclFNleNUe^U\_W\dVN`u^L|Hastings6364|Hindle, Owen M|1963|B43|0-1|B +@OxgDTph;LwpFVmeEUvx?Fsm>@n^@gm@vxUMtfL]rtDLwvk[N`g]V]f_ME[SLTRDED_D:NpCNMC<`@vxUdkdV^g]DT]c=Ftb;JogCKg^me:=cmGWrvW^m^=E^oCpxpFNbtNLpxJDd\DNo^>=vu=?w?N?uwEFtk?EkH@HlkEV^XIQX^LNwON`^o`EO_HIknPX_^EWxpFGo`VgqiQY`oWOiaOrouX`^_GE_g`gngrjpiEHuojrgYI@Y>@IipBRo`RZe]H`>YIHY`HG`WGHaYT]WPH?PO?>YQruOP>EQIunpinwiaw?P`EL`^|Amsterdam Interzonal|Perez Perez, Francisco Jose|1964|B30|0-1|B +FVm]V]xgDTldEUd];Lph=KwpT]vx@Osm<`mc?Tt_`gpg:=rtTM_XMVcTIQXOVOuZ=MTe>@tTLVTSVgngKLSRLZRZBJZ[CKwt?>xw@?[c>:tD?>DCO=eVMNg_NFCF>Fwn:ng>VlmEFg`KS`YRZYP=RmlR=lm=RmlR=f`V^PW^NlTS[TSNKSK=KkcZcjcK]`fFMf`MFW^]d`fdvogFNfWvdW]NM]WMNh`drWfNMfUMTg_X_U_rd_YTM^WMFYhFG|URS-ch29|Lein, Anatoly|1961|B14|1/2-1/2|W +EUphFVme@Oxg;Ewp?TvxTKsdDLn^>@tXU]dsLTsbKDldBJd]T]rtIQXaHXgXQXaXDMpiETi<:XOFOVG@GuYGHtTVTl=Ro_VTlnRj^VO=_W=Xn`HQ`iQHWOH?i`Xfxpj@`Y@XYITVOG|URS-chT|Butnorius, Algimantas|1975|B07|0-1|B +DTl\@Oxg;LsdFNnfEUm]BJjbCKwe?Mvx>@kcrtT]f]O^dUMqgq=Ue\UM]ULFwvFPu]^Oq`KS\wOYv>:>`f>=bZSZcZPF]aYOkOHOf`FP`O@HOYHQaiMVYhQHUMCUtTUpiWVrWXIQX=pwhwr]T<]`wh|URS-ch42|Beliavsky, Alexander G|1974|D40|0-1|W +EUl\U]phFVwp@Ome?Fxg;Lvx>@sbgX=EulIQX^EZskZlklT^p^`Eo_[dtmEZld]dmdV_w_ZEdRDTRd;K^U>n_GENGH@?HCKCUCNWdRnkCUWeR=?>=DklD_QY_fe\U^ljfT>G|Moscow|Najdorf, Miguel|1967|A43|1/2-1/2|B +FVldEUm]V^t_IYqiHX_mYad\DLsd?QnfFvmyomfo^feGOVqX`i`aipi^oefoigxiXq_XN_hNXh_XN_hNXfeX^h_^oemo`xnOWnd`Ome|World Championship 24th|Botvinnik, Mikhail|1961|B12|0-1|W +FVl\@OmeEU\UOUxg;Ljb<`sm?TuZ=Enf>@qi`Ym^TFp`YPwnGW`W?W^hWGgaUKZ`Fa`aPea`EUf^USvxen`nSctfL]f]V]ru:=uecNkcDTnYT\c\K\Ya=?hW\Veh@Ao_V\he\faofwe]NK|Parnu|Vooremaa, Andres|1971|B94|1-0|W +DTl\@Osd;LxgEU\UOUphFVdU=Ume@wu@wvOEsmGOjbBRul=Km^RZrsL=gaETo_V_t_HX^TFTk[ZcscKBpU@Hlp=L_mxyNWrsHXsS<;bZW`ixBJScQYo_X_m_O_w_`nxn^enxel_w>fwtL]cb=MZRMLbZ|Moscow|Hort, Vlastimil|1975|B06|1/2-1/2|W +DTxg;Lnf@Om]EUl\T]g]FV]LCL\ULUwS@mgTMqiEWtm:=rtIYtL?>ulV^mdOIg]WV]gVFg]FV]gVWg]WEdR=:RDMDLDEMwtIXlTMTDT>=]LXNTS=EtuEDL[BJSRDCjbNDiaHPum:=RT@Hxw=MwnMEnuCS[JSTJTEMT^ML^dLTul|Cup URS|Bagirov, Vladimir|1970|D41k|0-1|B +EUxgDTphHPwp?Hvx@Ome>@sd;LtX@wn?>k[RKvxDLmeIQqiEUwv;EnwE?tm?PdZKDZTOIl\CKTcGW\ULUut>FtL@o_:=Z]FT]=?=_VetnoteoheVsbVGb\CS\RGX^_XNRCTY_^YXhi=>pgS[yw[cg`XP^PIPipNXCT>fwsfdTcdlpxDTcR@GsCGOCBOVBFV_`nXgng_gRcPXFHg`HET\cm\dE]`i]ei`m^ltxptl^o`_qi_Vpglte=tw=ewto`VNgnNW`oWPeMPHMLtlnglto^dl^otxLlHPl@gaW`qi`Yh`OE`YFamgaOvx=D]TETZ`@AtfT^`_NV_qDRgv^MruLFveM\fTV^k[RjetjlTFOFuUldqDFOUTCSp^:>^pBJte>ne_nowoO]DF?@Fndhngha_n\mg_]o_oa[TDm^oG^XGo[MDCMViaXNCFS[piN_FV_ixpiopo[cndIQov@=ds=]V>AI>;]a;caYvnYScSJSsdS[dU[cnmQYmdYaUfaifwIPdcPWclW_lm_gmvgpvniqwqpqngqig_ia_gHXgpa`pq`gqxghxyX`yxhixy`hyxhp|URS-ch23|Ragozin, Viacheslav|1956|D92|1-0|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tf=Fwn?=vxDT[TKTn\Zd|Montreal|Kavalek, Lubomir|1979|C81|1/2-1/2|B +FVldEUm]V^t_DTnf;Lsm@F]TFP_M?MTM>@xnLVn]=Muc?=qiMOwnPayqVLphaW]W@meKUtmU[us<`jb`gpg[UsjUDrtLVjs=Eg_V`d^CKk[T[b[DUe]@AseFNe\?<\c@tf:@wn?>m]^eVe[dkdOUe_<`uU>nvwn>U=>=_e;Lt_=Eog`WruGOp`WNjbCKwoLFyv@Gv^DTekFU_mUDmvDSuENEbZSb^nENnm:>d\N\mE>FEFGFZRKSldBJvmblm_FEqalr_;rc;BELBKcmaYmsK=LE=KEMK=sdYQ\GQHdU`XOX|Capablanca mem|Darga, Klaus|1963|C65|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;EZdU\e\E?neOYdn=Owu?NlkHX\TN_n_Y_t_X_xy@Iqi>@knE_VA@\UNUY`E>`Y@Psd=ErvE`YIEAIpwxwFOm]O]rs:>tf>f|DSV-Turnier|Paehtz, Thomas Sr|1974|B39|1-0|W +FVl\@OnfEU\UOUjb?Mme>@xgDTwn;LvxruMDe^W^kOHOXi>=vwUNxpNWi_BJwvCSpyLVmsVevwD_h_Wiog?@ueT\c\|?|Sunye Neto, Jaime|1982|B42j|1-0|W +@Om]HPtX?HsmDTldT]d];Lxg=Km\K[gmEUjb[S\VSkVLCLnf@vxBRXOHOmg?;neWeue;ceuRZut:Jp`ktwtFNtlOFrtFblLJLtLbFLDZbDBck`XbjxpklB:@H:BF[gV[dBGH@GEjr2E=@H=EH?E=|Stockholm playoff|Andersson, Ulf|1976|A11|1/2-1/2|B +FVld;Lm]@O]VLVtXIQXO=OsmEUxg?MgVOVnf>@wnDLmgVYg]YXng?>ucLT]S>fofXfvwneS[rj>felfgpgXp|Bled, Match Candidatos 1/4|Portisch, Lajos|1965|B10|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>meDLvxEU^ULUtX;Lgm@phHAe]N`g`@`ldLFru:=crMNrl=@xy`PnxKDlf@=mnBJumCSxgPQgx=@]VOVwu@=ypGWflW_og_hqh=@lfV^fwDhwhFWno^fmnfonNox2|URS-ch32|Shamkovich, Leonid|1964|C87|1-0|W +DTxg;Lnf@Om]EUwn@k[TMtkNVsmIQrt:wgZugwunwvn\rlVUvtUml]W_]W>VWaVf|Hoogovens|Zuidema, Coenraad|1973|D37|1-0|W +FVl\@OnfEU\UOUsd;Ljb@xnJR[SLBnh=EdeGWwnBQ_VEngEOk[Tf_f>fuefFd\OE\TDLeMEVMO?>E>gn>EtmENmfNOf]VG[SJSZS|La Habana olm fin-A|Szabo, Laszlo|1966|C43|1/2-1/2|W +FVldEUm];L]VLVsm@OxgVgmg?Tt_=Fnf<`wn>@vxEMsm;Eqi:<_qmg@n^WNcT[jdlj[ld[jdlFTlT=@wv<`f]V]qi`Nt_IQgVLV_VFMVO=Osm:;m^O=uYCK^M=MvV;>rvNEo_|Sochi|Beliavsky, Alexander G|1986|E91|1/2-1/2|B +FVxg;Lm]V^]ULFgXGWsd@OogIQXiDLg^W^UMFUu]?Md^MFtm>@^h=K]KBKn^U[w\EU\c@I^UOUioFTvxUfmfTfrvf]jb[UcULUld]Tk[TMvrM_wu_fhy@ld=Eun:=m\M;\fE>pg@AaWHPWFLFqa>GkcOW^WPWtkV^d\=]gpA@flFLl]T]ru;VkrGPc[PGnmN\wvGPutCSxyPOjb@Ao_^gpgVhmXOMvxhVtvVOXWLFWY\GY`FPvuGN`^?=xXBJrkNcumcNXYP?YTOHmpMEaYIQ^CECgCN\pm?NT<=@k[TKjZBJsbW_b\=>tb_hqhKB[SV^e^O^SL^d\MdnxqDMbM?Orj>LjnOMucLUgXUcn>|Leningrado, Cto Equipos URSS|Shofman, Mikhail|1962|B07|0-1|B +EUxgDTph;LwpHPm]T]g]?HtfFNl\@Fsd>@vx?>rtU\]LCLuZFUwu=Ff]H]u]:;ZLUKLS@xg@n^FVld:;jb=Dk[?=unCKtkT[b[U^e^IQm\KS\RLRrRBJwtDMd\M[Rr@Z\?=kcT]f]DKtfL[]UKR\aOUfXFXaXIQXVRKwuUOn]@f]ZJtwLEwg@Ad\JLknBJrv^Tgi?@nl@H\ULU]T:@vx?>rtBJg]`nun=D\UMqxyNUo_LTyqT]dUDMUDO^k]MQqx^hn`Qyxoh^onyQD>:>`EQYneGOt<|Porz op27|Lukovski, Lev|1991|A47|0-1|B +DTl\@OphEU\UOUwpFVsd@vxUKZuGWjZBJgm@AZRKUdUNUm\Upxp=Upx:=uZL]wvW_\KUNxpNWog_hqh]gngWgpi=]|La Habana olm prel|Menvielle Lacourrelle, Augusto|1966|B38|1-0|W +EUxgDTphHPwp?Hvx;Lme@Osm>@n^FVldIQuZga@IaW>@WQ@?QG?>i<^OfBOUDTH?Tt>FB;FG@vxgV>FV\FnunCJn^:=\VJwswjU^U=UVLUEwuBRxwED]URZusDCLRCBRLBJUMHOMEJ:sKZbL[O=KL:BLG^oG@oiYivwUWwg?>BoWToT>nTonoxo_hghiWhgWTopTXpiXYihYVhiVkywIQwok]ipCSqiLTon]Uph@IgfQYhqIQnkU]knHPfg]UgfYaqxPXxqQYqxU]xqT\e\S\fg]unoutjbtvolv^gdYPbZ^UqxUVxpV^pxPWZR|Tel Aviv|Gruenfeld, Yehuda|1990|B09w|1/2-1/2|B +EUxgDTl\U]ph;LwpFVvx@OmeIQjbBRnf?Mf]V]wv@sm=Em^O^v^?>uYM?tmNipiEirv>^v^HPYniEapPXh`GW`WEWqa?HaXQXo_X_^_WV_^VO^NOWpaWiN>:>n>H?>P@APYA@YU@HUXHIXPIAmXi`xo`EaW|Subotica Interzonal|Xu Jun|1987|E90|0-1|B +@OxgDTnfHPm]?H]T=RsmRTl\TKrsEMweOEvx>@g];L]LCLmgETelBRf^<`qi`gugTNtfH]fmKTgn?;mtTVleRZxyN_t_V_ph_QypQHk[Zcsc;cjc]TnlH]wu:biaT[ew]BusBRwn[dstdmtsmdstd]tsbjlejmegRjsumnu]LT]ejlefnfgfGOh`@Gphluoguw`XOW^VMVfVwxhixyihyxhi|Hoogovens|Van der Sterren, Paul|1988|A13w|1/2-1/2|B +FVnfEUm];Exg?Ml\V^gmDLsd@F\ULUog^gmgEOul<`weFLjb`YvxYPf^U^d^O^e^>@^PIPtm:v>=>uv>vdvL=vo=NofKDyxPXqiCSkcBJelGObZDKxy@GZSJSleHPyxNHfoHWxwWMovM^vm^memUcwxS[mvc\vo\txqKDph[c|Berlin op|Foisor, Ovidiu|1986|C06|1-0|W +@Om]DTnfHPxg?Hwn>@vxCKl\@vxqaMUpi:=md>Fd\]c\dc]d\@?vfU\|Sochi|Ubilava, Elizbar|1984|B70|1/2-1/2|W +FVl\@OnfEU\UOUxg;LmeHXqiX`i`<`sd=EucUKjb>k[V^e^W^gaFGT^MQog`N[SNc^XL]XG]ltlQOltOGf^cNaPHktlkbP_NEyYbMphENvoNclkK\kc\mcem\ed\mdlmcn\MT|Lublin|Adamski, Jan|1974|B81|1-0|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWk[V^e^W^ul^gl^?F^`=M`gA?g^:=rjUO^lO`o_MUqa?_f_L]lmUYwn>?n`FavwY`ya`amoayoxyYwoYaphaYxpYutfusjmDT[T]Lm=L=pU=LUM?GMUG?UM|Candidats qf1|Polugaevsky, Lev|1980|B96|1/2-1/2|W +@OxgDTph;LwpFVmeEUvx?Fn^>@sdU]dnO>gm>Mo_wntr>SJTS\=Ek[CS\lTZlcZdpx?:md]dcd:bdmbjmdE]d@ZTN@xgk[BJwn>Pvx:=xy@A[SJSdS=EmtUOtkV^e^W^gVLVkVO`VhDLS]NUbZFMn`P`qi`XhMEMlT?O]nXVrsOGTBVFwuHXnhX`i`FayxMQB;AHhYQY`YaoxyCS;VHQZSGWVM|Sarajevo|Janosevic, Dragoljub|1966|B85|0-1|W +FVl\@OsdDLm]V]u]EU\ULUnf;L]e?Mxg>@wn?>vx<`wu=FdSMTtm:=mdO^d]L]S]=Mqi`@vx;Ewv?>jbUdkdCSbZBJulE?tmNUvfFOgVLTV`>f`f:@vxOEtXIQXmETelgaWlulDLruLU\U:vuvCSm^Z\egS[p`[d`WdlWPGP^O@AO>A@gO\`xy|Skopje ol (Men) fin-A|Hecht, Hans Joachim|1972|B40|0-1|B +FVn^@OmeEU^UOUxg;LwnHPe]V^gX^fXgfovo?Hld>@yvCKsbtX=EumGOXaLFneFWeWEWahCJ\f>fvfHQrvUfvfWShDQfmf:>ft>nohPXkcSED;E=|Moscow 5'|Antoshin, Vladimir S|1972|C41k|1-0|W +FVl\@OmeEU\UOUxg;LjbGWnf@tkBJsmHXphX`ga:>vtU[b[L[lZCSZR[jtsM[RjNjsjJRjsRZe]V]k]OGqi>=i`W`n`=U`gUEg^GN^lDTagT]gX|Riga m|Shmit, Anatoly|1972|B82|1-0|W +EUxgDTnf;Lm]<`smT]f]FNld?Mwn=Dvx@Owv>@mw:>phO^wfGWfpW_t_M_p_?_h_D_ut_Otf`inwiwvwNVgVLV]V>Vo_VYwgOWrvYQvnQNf]NPxyWYnfYW]VWE_WPMd\^mghmw\TwhfhMLk[U]h`LD`]ELyxD<]M<>ML>VLD|Hoogovens|Ljubojevic, Ljubomir|1988|D36v|0-1|W +EUm]DTld;LxgFNph@Owp?Fvx>@nf=Dsm?=kcNV]VLVgVDVtkGA=UruUMuMDMphMQyx>Yog_fxpLVAGYGg^G\nu\wuwW_h_QP|Tournament|Valiev, Neron|1953|D45t|1-0|W +DTxg@OphHPwp?Hm]T]g]>@l\;Lvx=R]cRYn^YuwuEM\TMTcT<`og?=um=mtmOETcHkg`L]sdkdruEVm_]LutdktlkbcRL]lDV`R\]N\bND_D:@dUNUtfMDSn=Mph?>wv>f|LAT-ch|Kiriakov, Petr|1965|D50|1-0|W +FVnfEUm];ExgV^gmDLl\?Msd@F\ULUog^gmgEOweEvxA>gVMVwWVMdUENUONWO>:>tmW^jb^em[M[b[>f]UfFUMFErtCStDEMDBMOBDO_kcIYDT_[TYHPYUelxolcogGWqicZUMPXMJZcJO[_gfS[ph_\OW\dfocl|Candidats playoff-4pl|Timman, Jan H|1985|C06|1-0|W +FVl\@OnfEU\UOUsd;Lul?Fjb>@xgvx>PdUNUk[BJtk:>kdFMru@AlkPQphW_f^UNwvN`ga_gnwQYqi`@tk=me^Mf^UNSZN`um=DmdGOt_VP_h:@vx:=m]V]d]FOrsN@wpFV_VO`vx`VgV?wuwLVsd^O|Oberhausen, Cto Europa Equipos|Torán Albero, Román|1961|A21|0-1|B +FVl\@Ome?[sd>@tmDLxg?>jb[?n^EU\ULUmXngVnkV\:;u`?H\k=X`XQXkuY_ogX`rjH]xy`gpg;>qaGWyq>Nqh_Yhq]VqxY_jmV]xqCSqh_Yhq]VqxV]xq]VqxYhe]hwxwNMmp|URS-ch43|Romanishin, Oleg M|1975|B51|1/2-1/2|B +DTxgHPnf?Hl\@Om]>@sdT]g]EUwn;LvxL]f]U\n\BJjZ<`og:<\j`WtfO>wv>MunCSZSMSdSFkcapqA:AtkAynhyuDRuxTJpflLfukbF?hW?@R=uo=XxXWfo`Ld`fdfGWc[W_fdgnJT_gTcgocmXx|LAT-ch|Erepov|1953|C18|1-0|W +@Om]EUxgDTldFNt_;Lnf?MwnM_f_T]g]=KucKDph>@smNV_VDVmgL]gV]cjc?>o_O^vxGOnSOV>SiwSwV_h_BJwp^Oru:=d\@G\UGFuvFMvNMDNVDMVN|KRO m|Timman, Jan H.|1988|D12k|1/2-1/2|W +@OnfHPm]?Hl\>@sdDT]T;Jf^JTogCKtXIQXfFNuMioH?MmEU^VOEf]?HmfBJwn=Do`QY`OEOVOH?g_TEfh?MvxMThXD=]T=WU=UuULNUm@?xo?FngCgogNv|Yerevan|Vadasz, Laszlo|1980|A08|1/2-1/2|B +@OxgDTphHPwp?Hvx>@me;LsdEUjb=Mgm<`qi`Nn^MExq:=^UOUd^CKwvIQmcL]^m]cmcUDcmDSmgS]rsNj|EUCup Porz-Bukarest|Badea, Bela|1991|E63|1/2-1/2|W +EUphDTwpHPxg?Hvx@Ome>@ld;LjbFVk[V^gvT[b[f]CKe^U^sb==rjO`fU@vxGWjZBRdSFOtf@tmEUxgRdmd?>wn;L^UOUdm=OmXOPumIQXaU_vt<`gx`nxnP`n_V_phHXmd_ge]>nqi`^]ULFu]FUd\nl\l^]|Halle|Knaak, Rainer F A|1974|C72|1-0|W +EUm]DTnf;Lld@Oxg<`qi`gug=KjZT]f]FNwe?Fgn>@sm:Ws>DsWDNW^N_^WMFWlFO\dOXlu_UdeX_|Hoogovens|Ree, Hans|1982|D43q|1-0|B +EUxgDTme@Oph;LwpFVvx?Fn^U]gaHPjZIQtmOIag<`qi`NmQPXgVLVQHA@HVGOuY>EYI@AIHA@HI@AIHOVHVA@o_FMVMEM_WNGsmX`iaMVWOGNw_@?rw=Dm\N\e\VNxq:=_W]ele=e^VemqympypDIW_?G_`NV`_IlwolZh`ZuaYGO_Ou`pw`\wx\`xw`YOgYywnyskcVUnmULmdstoltrdmrxgdCKd\BR\dxXmuKSltXWtlLKutWVtsV]st][tk|Riga-ch|Pasman, M.|1952|E92|1-0|B +@Om]HPtX?HldCKsm@nfEMw\;EvxFV]VMVf^IQXO=Oun:=k[QYjZDLmc?>nfO_gX>FruHOuM@HXGFG\GHGfeC@meDLwnEUk[RKtXIQXO=O^UOPphK]um@wn?>k[RKvxEUmeDLtX=wvBJSe@ITN@efCSjbFWfvW]g]L]mev^JRsvS[b[R[dscUm[U^[?^pwp_g?[]nxygpypDLa^L^e^n_pw_e[devwvVdsd>;vw;kdUPXwpkcog@GphIYUDGODUONUDNVDUcsUdYah`sx`YxpdUphYQhgQXgiUOV]O`iy`oyqo`qiXY|Tilburg|Andersson, Ulf|1980|E42|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`nf=Oqi`gugOgpg>vmQYyYOYg_YO_VLVo_VEc[HPngIY\RDLrtMDRC;CtLO^g^>^LDCDe^DLk]BJbZGOmnPXngLD^VX`ghOV]VDLV]LU[SJSZS|URS-ch sf|Krimer, Y.|1955|B95|0-1|B +EUxg@Ol\DLnf<`wnFNkc;Etk?Mvx>@sd=F\UNUg]`ndnMV]WF=ul?>o_VklkETwgT^p`^MnhMWhW>N`XO>rt=EghN^me^Nqa:DUDTDhpDtxotyofyif]ia]V?F_WaYe]KSVUIQXQHPplPW^VYQlDF?DBQqULW_]U_gB:?H:bqlLEgobglnUMS[VNnNgoNfE=H?MEfdo_[cjcdc_\ce=D|Berlin op|Velikov, Petar|1986|A47|0-1|B +FVn^@Osd?[o_;L_VLVxg=FunVgpg>@jb[Rk[RKdZEUZKBKwpU^g^<`nfO^vx:>tkGWrvFEme^dfo>nvndnxyW_pg`gog?>wo>fgCnhyphYpwE`CU@?ktYhqh`uwpfhpqux|Tbilisi|Bronstein, David I|1982|C63|1-0|W +FVmeEUxg?Msd@FdS>@SMDMph;LwpV^gXIQXi<`ld=Ei_`Wvx^eneU]_UFUpUWiUpipxp]dkdLVe]ELogV\ue?>wo>vrs:>s[CSjZBJZSJStmvuelumom\f|Riga-ch sf|Segal, Alexandru Sorin|1952|B07|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUul;EtmE?wv?NphCS\SLSZTNT[T>Nnw@k[UKwnGWme=OvxBR[SLFf^W_e]FPdZV]tkPVZTN`TC]eleVekO?One`gpgMVrtRZesHPwu:>sj@HueO?CTHQTN?OND>=aME|Tbilisi, Final Candidatos|Spassky, Boris Vasily|1965|B48|0-1|B +DTnfHPxg?Hl\@Osd>@kcEU\UOUtk;Lw\U[vx<`dZCKjb[ekH@Hul`g\eLVe\=Eqi?=ldGOm]T]f]V\d\KS\[BR[dgpZKEidipiK:iw:Dwi]UiEc[=@xgEKsdKUdUOUtm@vxxy>Pph_UwpUfofPQmsFMsm|URS-ch42|Grigorian, Karen Ashotovich|1974|B92|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`nf=Osm>@xgNivxDTn^FPwvipxpCKmwIQgm?>wfU]fWPFWMEMd]T]lcRZcbMNm\FPog>@ulDTsdUdmdGWf^@AtX=Dvt;L^WV^l^|Sukhumi|Murrey, Jacob|1972|B42|1/2-1/2|B +@Ol\CKxgDTph@tkBJsdEMm]T]u];EgmCpxp=;px?=wu;Cm^O>^mKS\SJS][=;jZSZ[C;CrZ:;kb@?djEKZR;:R:K:j[MU[lFblb:DblDSur>MnfCDl[HXh`?HxpSdrtMSmgIQqaXagaDBagd^t@phHXbM=MsdOY\ULUvtYOqaX`tkOEdZEKZKDKut?@wn?>k[RKmeDLvxIQtkEUwvBRqi;EnwKDrsR[b[DM[SM[SLCLgm;ug[dgdBZwv;[dbETbZ[ZogOYvfTNfbZ]b:@I:ox`gpg=MB:@meDLwnEUk[RKtXIQXO=O^UOPphK]um@smV^e^W^m^`gng?gpgLVJnEWvuVg^mgmtm;krtUOogFbywWUuvb[tuUcf^OEg_ETwg[mumc[gfBR^V@?npks|Sochi|Ftacnik, Lubomir|1982|B97|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUul;EtmE?wv?NphU^e^OIru=OmfIXgXQXldOPogX`xyCKvwN]f]V]d]`gng=ZkVku=X=nk=exoN\qaLT[TKTk;@I;k\N^VT\gneck]\dneHPaYdlYPIH]=ce=elt2PGtkofkVfmVkmfkKfmHGeIGOIQOVQ_VUmdUL_^LD^VDX_LTOQT\QA<=_X=EAIELX_>EIYU]ah\d_f]\Ya\ahaLUahU^ho^ef_dliaE>_t>Yt_DT_XYPoge\Xt\cgfcjfmjstb|Budva|Suetin, Alexey S|1967|B66|1/2-1/2|B +@Ol\DTphHPwp?Hsd;Lnf>@xnEMvx<`qi`Em]BJkc:;tkCS\SJS]TMTrt==NLEU^UHQL:=E:BE@k[TKjZBJsbW_b\=>tb_hqhKB[SV^e^O^SL^d\MdnxqDMbM?Orj>LjnOMucLUgX|URS-chT|Shofman, Mikhail|1962|B07|0-1|B +@Ol\DTsdHPph?Hwp>@nf;LxnCKm]T]f]@wn?>k[RKmeDLvxIQdZKDl\EUtk;E\ULUrtU]gaE?ZTCKTc?NphBRaWR[b[:julDMlsj:[SNTWM=Mcm:\Z:ZwrZrkr|Amsterdam Interzonal|Darga, Klaus|1964|C96|1/2-1/2|B +@Om]DTnfHPxg?Hwn>@vxCKl\wvEMnwBJjZO^d^>^gm^[f^;Erb=Fm\KS\REKRCFCZSJSbc[cucS[t_CFqiHV_VFVwS:BphBFvfV]cjT\jR]TRJ[cSLT]ia]kJKktxpckK=@H=Fks2pgtyg_sxfgxp|Kharkov, Cto Open URSS|Zhuravlev, Nikolay|1967|A14|1-0|W +EUxgDTnf;LwSFNvx?Mm]T]f]@Fl\>@sdBJ\UNUSLCLdn=Dtm<`nhGWqi`gugW_hnFPnt?WteDGwvPaguapeVMVvV_gxqWV]VGWmd:>uwLTwJp_Jw>NdmNPm_W_|Brussels|Kasparov, Garry|1987|E48|1-0|B +FVl\@OnfEU\UOUjb;Lul?Msd@d^IQk[GW^TMTlT=Mm]V]TMDM[SLVg]NEbZ:phW_wp_g]gVevneono?vp?gpfgfb[mlqafhxwEiwvhfvul\umfc[MiWywcemn\lnvW`w?@IM;ei|URS-chT|Nezhmetdinov, Rashid|1959|B48|1-0|B +EUxgDTph;Lm]@Owp<`gVT]V`O`nf`Of]FNue?Fvx>@ld:;jZBJsmCSZSJSk[O>mc>Mt_;aYFMTC=FCM\M_MFMeSLFrJMDwtFWSeWM[SIQSKDEts<;s[>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw<`qi`Yl\U^e^OIul=Ovf?N\TIXgXQXrv>=m\=Efe:=\fEeweBRewR[b[N]k]=]fW][vsDRsrCKTKRKr:@I:@ng?>yv=OdUO=k[LFjZFU\U=OueE`eu>fvfXfopf]rb`gugOgpgCKTL]V[SVDg^:>^e@?bj>Ve]?F|Tbilisi|Karolyi, Tibor Jr|1986|D24|1-0|W +FVldDTm]V]d]T]xg;Lg]@O]LCLphIYqiEUwp?Fsd>@vx@wv=Dsbwv>nvn@^VO`e]T]m_`ovoGOn]OV]LCL_V=aofaQfeKSel:<[SLVxiNUvxU\uZ\nwvneZBeSkVFViXMTB:piED^_dV_t=mZSV^yx^fxyfgyxgoxyoq|Sochi, Memorial Chigorin|Szabo, Laszlo|1973|B06|1-0|W +@OxgHPm]?Ht_>@nfDTldEMsmCKwe@m\FPuY?>jZBJrv?pC:BC^|Skopje ol (Men) prel|Simon, R.|1972|B08|0-1|B +FVl\@OnfEU\UOUsd;LjbHPme?Htm>@xgUdmd=FulBRwnRZvx@dU=UmeUMjb@jb[Frs?>gvVmRWipy=>og^fg_VYyCiwvwEiwofoxoiqCpYiuxqhowO`x]iy|Candidats Tournament|Benko, Pal C|1959|A43|1-0|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWsm=Oul>FxpTKuUVdwu:@vx:@uc[JcKBK_U<`UK:=b\]ersJ[jb[lKU`nwtFNUdL]mX=<\mGOX_NV_flfofHQdU]lpi<=mwOWip=U^UV^xonw|Malaga|Martin Gonzalez, Angel|1981|A40|1-0|W +FVl\@OnfEU\UOUsd;Ljb?FulGWk[UdldFOtkV^dl>@xi=Mi_qaLVaY?OkdCKw\@AvxEL\n>F[SLCwuO?meMOe]Vgng^g]UOXph?=u]XO]\=EdOHOYQA@\]@GxqFV]ZCUZBVFqiU^h`DTBEW`i`FEbZEmZRKR`hGFt\OW\TmMTDMED\EChaFM\@wn?>k[RKvxDLmeIQqiEUwv;EnwE?tm?PdZKDZTCKTc=o_]eno\d_VDVt_VN_tJ\ofFavxemtm=ef_ah_X\cmveuvhdlh_NK_flt2ftKx|Alma Ata, Cto URSS|Zaitsev, Igor A|1969|C93|1-0|W +FVl\@OsdEU\UOUxg;Lme<`nf=Ewn>o_^gngHPwt<;dSO^Sd^mcmW_m^_ftuA?gnM_]ULVu]>FUMDMdUFHU_?_nfV`fmHV]M=MmMVM^M_]MG]mkc`fphmpxypnGXIQXg;DjbDMg]nm]SMUSBf`BS`qrjmjSdU]djqwypwmc[CSjtmstn]\pgsbg^bl^Vl[VOPXOP[enxX`PYS[|URS-ch23|Zurakhov, Vladlen Y|1956|B64|1-0|B +DTn^HPsd?Ho_FNxg@FphEU^V;Lm]T]dS>@S]L]u]GOVOHO]TCKTb=DbcNV_VOVwn<`gVDVcfVYn`Y`fn`nvn:>t_PX_XFLnu?oyv>^v^U^uvoqruLVu=@GX_V\=]\k]^ql^]GN_;BR]MNWMKkevuljKQjk;MkKQIKMIYW^YR^ful|Naestved|Nikolic, Predrag|1985|A20|1/2-1/2|W +EUxgDTph;LwpFVme@Ovx?Fn^@tbCKe]E`voVM]TMTbTKTrw`^gf^IfNFPoTPVTU:=NMVGwO=MOMIsxpslUNlkpik;ME;Kn]X`iaKkNP@AEGkqa`QY`g|Tallinn m|Keres, Paul|1954|E92|0-1|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQgmEUngBRdZKDtkU][R:Rld:m[DM[MFMbZETcbM?wtTZb?@?kZJZrs:Jo_HXngX`^V`gVO?>tv>=pgZbvFJBsvBFvFbeFGeg|WchT U26|Kolarov, Atanas S|1956|C92|1-0|W +FVl\@OnfEU\UOUjb;Lul@f^IQweLFvxFPtf=Fgm:=wuP_ewN`og`ERmL[m[?[jb[Ftl:gnF?mg?HgqQ_qgHQlu>YulYGgv_hvgGclshostohtsQHgmcGmgH?sl?FlsFMslG>lsMTslS[b[T[aY>Yg]Y>]Wh_e]V]W]_V]g>LneVDg]LE]WDVWf[TfW|URS-ch sf|Kortschnoj, Viktor|1956|E81|1/2-1/2|B +EUl\FNxgDTph;LwpHP\UNUm]T]g]?Htf@Fsd>@vxnfPXo_IQdZ>PZTPOTeO]f]?Ouv@?vfNEeTE@sdEMn^FNUNGNxn;Lvx=Ft_?=umLV_VMVmXIQXfCKo_GOKSjbT\OM@HoO>nqin`iq|Tbilisi|Bronstein, David I.|1982|A09i|1/2-1/2|W +FVl\@OmeEU\UOUxg;LsdHPph?HdU=Uwp>@vxUSulBRtfRZgmF@HF>H@>F@HF>|Moscow4|Zakharov, Alexander V|1991|B60|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`sd=Enf>@sdBJSeLVen=DtmV\qiCSng@gVEUk[RKm]U^tfmeHPrt|Candidats playoff-4pl|Timman, Jan H|1985|C83|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQtkEMmeDLdZKDl\;EulE?ru=Fwv?Pe]V]u]<`phCS\SLSZdDK]u:VSePeueVvg`vrUMrt[St\`i\]e]@?ME<=|Kislovodsk|Geller, Efim P|1966|C92|0-1|W +EUxgDTph;LwpFVvx?Fme@On^>@sdU]dnOEjZBJgm:;o_CSmgT\xy\eleS[piFMtmfm>?OG?[mf[FfgQIXWFaG?2|?|Guerra|1989|E97z|0-1|B +FVxgV^g]EUme@OphO`ldDT]l=Oog^gngONwn`Ovx?Mwv>@e];LnwNE]TMTtfEMsbBJfTMTl]WF@HFWHAv>O>Wf>DxoZS|World Cup|Ljubojevic, Ljubomir|1988|B04j|1/2-1/2|B +DTn^;LxgHPwS?HvxFVSLELme=Fkc@OtkOYsm>@m\<`qi`gugGW^W?Wg^:>rvFEp`W_^p_\c\Y_pgEDv^DRwvPXgf_PfXRjXtjRo_R=_W=atfHQfoaoxoP_iaBR`XQ?^_|Titograd|Djuric, Stefan|1984|A22|0-1|B +DTph;LwpHPl\?HsdCKnf@kcCRtkT]f]EMug=Eru?=wv:;_eO>]UNVgn>Do_V_d^GW^OHOkO=>nF>FvFEFOFRCh_;>FaCTeTKTuv@Gv>G>xw>EwnD>jbBRbZEDavDKvdKJngJKghKJhaIQahJKhpKJpgJKdv>HvaKDaFH>F?>O?QO`QH`qgpq`phDEHdE@sdEMvx@xnEK\e<`vx?>ulDLtXIQXa[Fqi`ndnOUaF=FjbFOru>Nph:>ndOglmUOutNMmuguwu>=dnOUumUDtuDNkcKUe\BRxw@?ia?Fme=EwvF=vmUOmlO^]UNTegLU\SEDlkHPaYTNYPGPh`=FuyNXg_MO_OFOo_XGywG=SeDF`XQX_XOXwxXWndFVxvWNd^U^v^V^e^PXkdNMc[RZd\=L\SMDSZL]ZRX`[S`hbZCKR[]l[dlv^yDMZRKRSKhpypvpKCMDd\|URS-ch43|Vaganian, Rafael A|1975|C09|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wnRdmdO^gV=FVe?>tf;Le_LVvxEM_UF=og^TumDLU_=FwvMUf]V]VWeV]TN]fU]d]N_f_XO_V|URS-chTJ|Gufeld, Eduard|1954|C85|0-1|B +FVl\@OnfEU\UOUsd;Lul?Fjb>@xg@wnCKvx@sdFNwnNU^U;Etf?>vxCKum^kcEOn\=EgX^>UM>?meELog:=wv=Ef_O`XNGN\N@ANELEvFELFH|Riga|Saigin V|1954|A32|0-1|B +DTxg;Lnf@Om]FNwnCKvx@gVT]f]=FjbFDo_LFneO^un:N_Ffwod]|Portoroz Interzonal|De Greiff, Boris|1958|E14|1-0|W +EUnf@Ol\FV\UOUxg;LmeHXqiX`i`<`sd=EucUKtm>@wnNV]TMTk[TK[SLRtbU]f]OUrtV]d]?>vxK]neUfof]fxy=eb[eS[RSRm\Rj\f>fuEf>tD>?DCBRE]:=]^jN^g=ECSRZgbEBw_NnS[nuyquMqy?>_w>^ws^[s[BC|Sochi|Chandler, Murray G|1982|D43q|1-0|W +EUxg@OphHPwp?Hvx>@l\;L\UOUsdUKmeFVjZBRtXGOXm@sm=DulEUn^?=wvFVkcDKd\U]\TKRtkr:>:XFH?F?@?\cDRvtR[ts[Tlm?HstTMml:bl\MFcuLTxpFXtsbd\jXOj:EK:>deqaIYunemngT\sS\dSTON|Sukhumi|Mukhin, Mikhail A|1972|A16|1-0|W +EUmeDTn^@O^VO`o_;LxgHPwn?Hvx>@ldGOe]T]d]OV_V=KxyL]u]?g]U@m^W^Z^MO^eOgwngouwopyxp^e^U^nYPVYn@Iw_GWxXHP_wIQwx?Otm:=mvVene=eaYefvofgonW_YPQHx`geXV_gnw^f|?|Goldin, A|1955|B16d|1-0|W +FVldEUm]V]d]DTxg;Lnf@OwnT]g]?Msd>@vx?>ngMVdn=Dph^]e:=og^\tmOEmdETeWTNru\TWeIYwoYad]T\eWN]f]\tutDtonaiWitunou]iW]folU]W^fXqaXR^F]elTRKTDKkpikOFOHODtOWtuCSipW_h_@HpoHPofPYue=efeYae]ah]ThgTSg_SJ_VJBGWjZW_ZR_gRJgo|URS-chT|Bagirov, Vladimir|1967|D42|1-0|W +FVnfEUm];LwSV^l\BJSLCLxn=X\U?MuZ@FnhIYsdYad^XU^MDMf^UN]UNPhnPpyxpgUL>@ZlMUtXGOn]gYXfU^l^?>rt:;kc;[jb[K^pYGtTaipgFL]LKcgucbxhGCvnbjng>Vu=@ITVCLV^@sb;EwnFNvx=F\UOUkH@HblGWqi`YmeH@f^U[l[F[rs[MsCEKutDTtb?=CB:BbB|URS Cup|Polugaevsky, Lev|1984|A46|1/2-1/2|W +DTnf;Lm]EUwnT]f]@jbOQphWiwvGWnei`enW_\U_hm^`gngQqxwNU^hMhoh?Ovf:?rtqk|Moscow|Abramovic, Bosko|1982|D37|1-0|W +FVn^@Osd?[xnDLjb[Rk[RKm]EMqiV]n]=FwnO^d^F^tk^pngpXun>=iaX_neK]k]vwEVgp=D[S_\d\V\SLCL|Moscow|Garcia Martinez, Silvino|1975|C70|1-0|W +@OxgEUnfDTl\;L\UOUwS@jZQHZR?gaPXnYXYaWYWf^WY^UL]lu]nxy>?tX?gyq=?\MDMrtntul<;wtgGXfYak[a=lZCKtLGofo?oZJ=?L\o_\l?>lL>?LlV^J\^e|Niksic|Portisch, Lajos|1983|B99b|1/2-1/2|W +EUxgDTl\U]nf;Lf]T]me@OphOEwpETvx@smCTtb?>bTMTm^T?vlWiwvGW^Xi`og`YnpIQXi@AioYGrsBJg_JSZSLSsSV^Sk^foi:;vs;ksk?TkCENCD>Fo_V`vntl=ehwONlkNUrt>:tr:bphGWqiduknT\h`HP`WPWnmemwmbf|Novi Sad|Maric, Rudolf|1974|C07|1-0|W +DTph;LwpHPl\?HsdCKnf@kcCRtkT]f]EMug=Eru?=wv:;_eO>]UNVgn>Do_V_d^GW^OHOkO=>nF>FvFEFOFRCh_;>FaCTeTKTuv@Gv>G>xw>EwnD>jbBRbZEDavDKvdKJngJKghKJhaIQahJKhpKJpgJKdv>HvaKDaFH>F?>O?QO`QH`qgpq`phDEHdE@we;LtfLVenTKsmEUmgV`fX=MgmK]d]@SLCLl\OEmeNVsdGW\ULUdU@^VOUsdUDSLCLmeDNd^EMVMFMld:;uZ=D^m?>mcFru;>qiIQftEVg>vgvMNvgNng]T]dbLTh`PXpwnkRcJCcT|Tbilisi|Kholmov, Ratmir D|1969|A22|1/2-1/2|W +EUxg@OnfDTl\HP\UOUm]?Hf^UO]U>@sdFNUMO>^V;LwSOvx=KunBJSLKLwuOUd^CSXFU_nfHkF?:?rskH^THQTE_ipiQfEVL^of^fxpfnphIYu]PXsx@HMEYah`HQE=2?=VGQPG=NV]M|Tallinn|Uusi, Gunnar|1981|A32|0-1|B +FVl\@OsdEU\UOUnfU[meDTxg;Ljb[Jwn?Fvx>@kc@tk?>sm<`m\K][S]k\kL]f]V]vmDLSK=Kk\KTutUdqi`gpg>NmlCS\mdn|Bakú, Cto URSS|Mukhin, Mikhail A|1972|B87|1-0|W +EUm]DTnf@Ol\T]f]<`wn`nxnU\uZ;LvxFNsd?[tX=RZRLR]UOUdUNUruGOuUOXjb[bkbCKn]>@]N?>ND:=URKRD>\d|Match \Trud-Vulca\?|Martin Gonzalez, Angel|1984|D30h|1-0|W +@OxgDTph;LwpHPvx?HmeEUsm>@n^=D^UOUmc?=cTL[jbDTb[U[gv[Lld@sdNXiX=Knf<`dUOUuU:@kcvt]BmdCS\LMLU_=<_N>Ng`NO`DHIYHBebg_b[B:>E:BE@ulBRvx@AkcFOtkV^gv=FsmOklkUOrt@wn?>k[RKmeDLvxIQdsEUsmLTldT\ul\ene<`d\U\e\;Ltk:FwvL]k]K]ruFD\nDdcZ`E[S]oxo=KohOYhaKOaYOPYaP`|Estocolmo|Unzicker, Wolfgang|1960|C95|1-0|W +FVl\@OmeEU\UOUxg;Ljb?TnfTKk[=Fwn@f^TK^UNUwv?>v>=>mwLVtf>SfKBKrsVgug<:gWS\jbU]d]\]Wg:@sm?>ulWIruF?ltBRjb=;tr?Mf^NV\ULU^UOUphCSwv:JnwGOm^M?e]I^v^OW^VEV]VUDbZ?[ZSDSw\@AVN>FuEFENEJK|Leningrad op|Feibert, Fred|1991|A47|0-1|B +FVn^@Osd?TxgO`m]V]dZT[ld]dkd[Fqi`O^VO^ulEUVM^MweCKvx@tXGOXQ@AQ?=?lnCLZkFUn\LC`g:=ruDL\cAHkeMDd\UFeTCDMphW]>GHQv>]W>A|Sarajevo|Honfi, Karoly|1966|C59|0-1|B +FVl\@OmeEU\UOUxg;Ljb?TnfTKwnGWvx=Oul>@k[W_[SLRf^UFtkFPsme]V]g]PV]WDTph_ho_hpxpOPpyV\m\G\n\R\klPNrv>FWFNFdH\blj@HwxHQjpK=vf|Candidats Tournament|Fischer, Robert James|1959|B86|0-1|B +DTxg@OphHPwp?HvxEUme;Lsm>@n^FVldIQucU]d]T]m\O>tm>M\M=Mwt:;gap^I@^WLFtH?_VUFW^GW^gKkV]kl]BljBTjrxorjofjJe]@GgYGHfeFPYP?T]THPe]JjTLjl]U|World Championship 23th|Botvinnik, Mikhail|1960|E69|0-1|B +FVl\@Osd?[nf>@xn?>jb[dndEU\UOUmeUdkd=Xf^XPphCKwnVe]VUwpTN_fOgpgDTueGWyu@Gh`HPemT]d]=@wu]ene<`uvBJSd?>tX`gpgL]guFLv>:>rZ]NXmNTZrU]dUTersLVogeTxwIQUKH?c[Teg_>N_VNKwneVstPXt<@H<>GO>=]eno?[mfKL=ULMUM[Mf]V\kcMV]f\MfKOWofW_|URS-chT|Botvinnik, Mikhail|1966|B14|1-0|W +FVl\@OmeEU\UOUxg;Ljb@k[GOtk=EsmBR[SLBe]BS]VOWw\DTruSDf^W^m^ELgXFX^XNWlm:=vxCS\ULUmnWenfT\VN?WXG=?fhWGNGUGwvDUvVUOk]GE]dELVFePuMLTMETbFH@AHI|Moscow|Westerinen, Heikki MJ|1982|B84|0-1|B +EUnfFVm]V^l\DLsd@Otm?Fog>@ucU\w\CS\n@vx@f\:=mdN]d]V]rsLT[SEVgVHVueYaZRahqhVDxp@HvyFNya?AsyAaya=>ayGW^WPWyYNUegUgpgHPYy]eRJCJSJ>:yr:BgfW_h_PWfeW_\m|Tallinn|Karner, Hillar|1985|A46|0-1|B +EUxgDTnf;LwSHPl\@OgV=MuZMVSL@tf]VqiEOZSCKo_OU_VMVfQV]xyU[Q?:?wgFVgO[erwe_yq]ewoefowfnwx_ixsi_SLnYqxYasu_n|Tallinn|Romanishin, Oleg M|1977|E20|1-0|B +FVldEMm];En^@OsmMU]VEV^U=Uxg<`wn>NUPWEM>vMEvrEMrRU\WVMmRZ\eVUefO]fgZ:mp:bg`U^pn]fnpb:`h:?h`fo`Y^gpHo]HEg^YP]VEF?wFEwOPXONEGN>XP>@PI@xG?xHIQV]?=]O=u^WuwWNwgHXgoNGo_XV_gV^gW^`WSGNQY`pScp@cfOVfgVhYQ|URS-ch23|Kortschnoj, Viktor|1956|A19|1/2-1/2|B +FVmeEUph@Owp?Fxg;Lvx>@l\U]sb?>blNtbTbcb;>xwO`bkDTkSEFqi`owoNKSRFfowKkRTWegx>NpgNOwpenvnknxnfgpxgoxyonT]Oo|World Cup|Speelman, Jonathan S|1988|A43|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDgmEUngBRmcR[b[;El\U\e\OIulEOgnIXwu=FogXN\TN]c]V]tkOYnwFaphYhqhDhZKh_k]:rur>=lo_hop=]KHI<`XV`EVY|URS-ch35|Zheliandinov, Viktor|1967|C92|1/2-1/2|W +DTxg;Lnf@OkcFVm]V^gVT]f]LV]V=RtmRVmdVXd]?Fsm>@qaXWwnEUmwYh>GBRG@IY@GYaG@hW@GWMG@MSbZSd@GduonufnoflGPl]PG_VG@]L@GV]phahoh]dGUL]h`]c`XT\g_d]U\]\_W\[WOcT|Riga-ch|Liepins, L.|1954|A17|1-0|W +FVldEUm];L]VLVsm@OxgVPnf?Md\DL\UOUw\>@\ULUvx<`qi`WmcMDc]W^uc=M]SMESD^gD:Paf^U^p`^fcfIQf_?:tf:>_hHXrtgLwuENuMN^tLCLxqagqpg]pq]nhp^V|Lvov|Flesch, J.|1981|B17|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQqiEUwv;EnwE?tk?PdZKDZTBRe]CK]VPVgVDVkV>Vu]VXTZ@vx=FtfDLjZETgmO`fTFTun@wn?>meDLtXEMvx;EwvE?nw?PphIQXmRKmfKDwpMUfm<`un=Eru:=nwCSqi`NmtU]dsLTtmT\utEMgqOEiaETaYPFo_\eleGOm[DKsmBR[TKTpiNGwnTKvwV_h_FUngUfwoGNmw=@smOEjbBRwvIQrsETmcTJtmFVcRLRk[RL[SJ;SL;Lut@IsS?>qaGWaYPYSU=F\TFGUMV^mQ^fgX|?|Quinteros|1987|A64|0-1|B +FVl\@OmeEU\UOUxg;Ljb@k[GOtk=EsmBR[SLBe]BS]VOWw\DTruSDf^W^m^ELgXFX^XNWlm:=vxCS\ULUmnWenfT\VN?WXG=?fhWGNGUGwvDUvVUOk]GE]dELVFePuMLTMETbFH@AHIPIhH|Moscú|Westerinen, Heikki M J|1982|B84|0-1|B +EUxgDTnf;LwSGOm]BJSLCLkcT]f]FNtk?Mvx@Fsm>@wvFPl\:BulBFruNVxyV^gxP_mwOWkt_NogFGphW_g^_hwhMhqhNX^UGold=OtXOX|LAT-ch|Larichev, S.|1954|E24|1-0|W +FVl\@OmeEU\U=Usd?[tm[dmd;Lxg<`nf>vxUEuZOUrt<;xyGWqiIYi`Y`gVEMn`LVdV>V`iHXo_VfiWU_|Biel Interzonal|Byrne, Robert E|1976|B53|1-0|W +FVn^@Osd?[jb[Rxg>@gV?>V\;LwnL]^VRdmd]nunCStfS\VO=On\^`hONf]^`hDNjyvIQuejrtmrkeh`]d]k]he]ovnoaDVa=ehHPVM=RmtRWM]:]_LU_QSKQ_UjtmKRqaRUdeURedRUdeURmt>;tu;sunRYp`YSngjUghsxhiSLaYxyihyxhaUNYPGOehLyhiyUig|Jurmala|Kengis, Edvins|1983|C80d|1/2-1/2|B +EUxgDTnfHPl\U]f]T]me;Lph?Hwp@Ovx>@wvIQgVLVvV<`ulOEVvEVvVHVtQVHQH@HpC:;Cp=Rsm?AjbAYk[;[mc[clcRmp^Yqxqmo^p`gcj|Riga Interzonal|Kuzmin, Gennadi P|1979|A62|0-1|B +FVphEUwp;LmeGWxg@vx=GgmOPn`P`tkBJSJ:Jm^JLdcMTwgLPghTf|Tbilisi sim m|Bronstein, David I|1982|B96|1/2-1/2|B +FVl\@Osd?[ph>@wp?>xgDLvxIQmeEU\ULUtm;Ljb[?n^U]dnBRga=Krsvtjvwsw[kjtUf|New York m blitz|Dzindzichashvili, Roman|1991|B31|1-0|W +EUxgDTnf;LwSBJSLCLmeGOvxFVf^@_WNGl\JRn`@Awg=Egh?@hiHXaPAH`YGPWPIPYIH?igOWtXW_smU]go:BmgENIQ?>XaFFIO`NO@N@h_|?|Pasman, Mark|1952|E24|0-1|B +@Ol\FVnfEMsdHPxn?Hph<`wp=@tk?>meBRum;Je]V]f]:;rtIYvwDLwxEWn_HQ]UJTULTedS>NLD;:S]et]N@tmL]g]V]d^FUucDLrt=Fwv?=jZBRtTUM?@DF>?MU@AFG?@UCZT|?|Gufeld, Eduard|1974|B70/10|1-0|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWqi`YucBJsdYGcl=Own>@d\U\]TMTu=?=smNVm\V^gmL]m^]nxyO^p^=]^g]\gn\lnelowoToe^_m]krv>vmvk]v[HPjb@H[F]fCUPXU^GW^UHPUNPYNGY`GUiwUpwpypW_qi`WpgIYh`Y`i`WPg^ftFTBJbZPOTotkoxONxokOoxNMxBOFB]F=]xMLxo=KovK=vo=OoBOdBxd[x][F]oFTovLKvdTFZRKS^gS\dvF[|Leningrado, Juvenil Equipos URSS|Giterman, S.|1951|D94|1-0|W +EUxgDTl\U]nf;Lf]T]me@OphFVwp?Fvx>@wvOEsb@AblBRrsGWjbRZtmFOl[V^e^W^v^ET^_TN_WLFWYHPYVOVgVFW[UAHun?>qa:JsvWFmQHQV`QYUO|Winter The Complete|Ufimtsev|1967|A78|0-1|B +@Ol\CKm]DT]UHPsdEMxg?Hn^>@wn;EvxKS\SBJjZO>tX>Dum?>^VMVUMDNXF=RgXE?ng:BgL:U:NXdUKCUO@A:>XN>G|Dubna|Rukavina, Josip|1973|A06|0-1|B +EUxgDTnf;LwSGOm]BJSnFV]VOVf^U]n\<`jZ@Oun?Msm=Fqi`EldLR\UOU^UEWm^RctXFD^MDMrb>@bcWeneV^en:>gm^fofT\m\MhvuCSZShXd]XP\mJSyw?wnwS[f^>:ul:=tmqavu@OlL:BsdBCulC[xyayryyi?FmvKMVgCUdUMUvaUMiqMQahQqgqAiqwiywmyxhoxpovpnlunfvofiunFMofianga`|?|Botvinnik, Mikhail URS|1961|C18e|1-0|W +FVl\@Onf;LsdEU\UOUulHPjb?Hme>@tm?>wnUdmdBRxgRZvx@xgOEvxBRjb?>tmETk[TcrscmumF?[SL;suDTSL;Lus=DsSIQnf>=f]V]wv?FmnnYF?m^:=o_N@ngUf\fXfgC:=mgfegXNclDefXgP_rv=uvucukVHVgVucDM?>Ve_eMP@APOA@|Las Palmas|Ljubojevic, Ljubomir|1975|B81|1/2-1/2|B +FVmeEUph?Txg=Fsd@OtXDLn^T[^ULUgm@wv?=m\N\e\D\ue=W`|Las Palmas|Olafsson, Fridrik|1975|B06|0-1|W +FVldEUm];L]VLVsm@OxgVPnf?Mwn=Fd\>@vx?=\UOUwvCKuc@gVOUXF=F^T:@w\_UGUvx;Lws:;sSLFrsCK\UFUn\DT]T@ATKUK\n;=LTFExq=:TLEBLKBRKCRjCUjRUL:=LKRUKDUmDRIQRK=>KS>n|Capablanca mem|Jimenez Zerquera, Eleazar|1963|C55|1-0|W +FVn^@Osd?TxgEU^UV^m]T[gVOUtm[dkd>@w\vxGOV`=E\UNU`fUGo_^gng;LjZ:=ghGPrv>^qi=>f`^vmvEMhoLRvmR\m_MFwsCKstDLowFnwn>nxwnltlPl`f\f_flZf_ZcwnBR_DRZDM@GnmGNM?HXmeIYphOW|Varna olm|Vizantiadis, Lazaros|1962|C55|1-0|W +FVnfEUm];El\@OxgV]f]?[tm[msm>@wnU\m\EKvxK\n\<`rtDLtdO^df^X\nXNf^`YwvYP^fN_n\PYfV=Oph_ixpY`v^`gugiXgOHO^`OV`X@A]VCS\cLTVNT\clGNXS:=l^=;ST;k^gklh`AHjZ?G|Skopje ol (Men) fin-A|Benko, Pal C|1972|C08|1-0|W +EUxgDTl\U]nf;Lf]T]meFVph@Owp?Fvx>@wvOEsbGOblBRgmOWmgFOkcETtb=Mrs:;c[R[l[L[b[@ldCKgVEUm]<\UNUvx@OsdIYul<;lWLFWVDV]VOEgUFUdUEVf^VewuT\tXGOX_?M_M=MkcALtOWtxXaxwa`|URS-ch sf|Krogius, Nikolai V|1956|D53|1-0|W +EUm]DTld;Lxg@Onf<`qi`gug=KjZBJZRKBsmFV]VLVgW?Mf^>@^UOUwnU_m^_eneVevnetyt:>nw>VWgMF^mB;tv?=m\Vvrv;DiaHPaYF?gO=U\V?HV`UYvFYywnHOFD@HDCysneO=`V=RVLsrLVHO|Sevilla op|Gomez, M.|1992|D43|0-1|B +FVl\@OsdEU\UOUxg;Lme<`nf=Ejb>@gpiNh`IYqiY`i`GOtf@GdU:>Ud?AogAqpqMqxqNMqp>AwyAyryMeyvCSjbJRpoeMopS[vuMVf]VXb[R[dnLSnhSZurXm]oZuhWG@rBm_W]DTBr_m]Wmnr:@I:Bngpxg`oh`^BHIAHE^WEuWl|Kislovodsk|Liberzon, Vladimir M|1964|B45|1-0|W +EUxgDTph;Lm]@OwpFNvxT]g]?T]cTKl\>@\UNUsdZKBKT^ONcKNj^TjRKRLR|Tallinn|Keres, Paul|1971|D94|1/2-1/2|B +DTxg;Lnf@OwSEUvxFNl\?Mm]>@]TMTkc=FtkU\S\NVsm<`ul?=m^`gpgO^g^Faxy:@xnIQvxDLjb[MelMDn_=MueHXphX_t_ME_QEiemiYQ?@?d^OUwv@meEUsd;LjbU]dZ=Ml\FVnfIQf]T]k[\TMDrjWNjnOESKBKZK:Rg]V]t_DTKETbEVbcutPXV\Rjnjcj\M>?_VjJVH@HtTJepwedTVH@M^=L^O@AV^AHOYH@we?=^I@?vN|Portoroz Interzonal|Rossetto, Hector|1958|E66|0-1|B +EUnfDTo_@Oxg;LwnHPvx?Hme>@uv?>vhFV_VLVgV>Vsd=Fng?>DG@AG>|Moscú, Cto URSS|Aronson, Lev Abramovich|1957|A97|0-1|B +FVl\@OnfEU\UOUsd;Lul@we@AqaGWgX=OXNONlcLFf^NP^UPpywV^enW_ogFWwo^gd^MT^TpxnwWaTe:>vu>nc[?>[]aW]BWfBf_fogno|Tallinn|Vooremaa, Andres|1971|B48|1-0|W +DTxgHPn^?Hld;Lm]T]d]=KsdEM]UL]g]H]wS>?un<`og`@jb@Aul=>k[FOtkV^gvW_e^_fkOfowoUOsmFve:>rwE=m\V\n\@jb[Frs?>gvVmRWipy=>og^fg_VYyCiwvwEiwofoxoiqCpYiuxqhowO`x]iy|Bled ct|Benko, Pal C|1959|A43|1-0|W +FVl\@OmeEU\UOUxg;Ljb?TnfTKk[=Fwn@jbBRrs@AdSTKk[R[b[FPul@wn;L\UNUm]T]g]M[kd[Tvx?>dkTK]LCLsd=MrtKDphfofQfxpfg|Reykjavik Open|Hjartarson, Johann|1986|E14z|1/2-1/2|W +DTn^;Lxg@OmeHPph?HwpEMvx@meEUtm;Lph?>wp[dmdU^e^=uruO^vx^dkd=m=L=veBRetNEtnCKpU=NUNFNd\NMxwMTldEZ|Moscow op|Meyer|1990|C66|1-0|W +FVl\@OmeEU\UOUxg;Lsd<`nf=Ewn>u=>=JR|Manila Interzonal|Hjartarson, Johann|1990|B63|0-1|B +FVldDTm]V]d]EUxg;Lsd<`tX?FXF@F]TU]d^>@qi`W^h=RumRTrtTKn^]fmfKkw\FU\U:>vx>fofWewueluwL[U^l^h^kjg]jU^hIYhWUV|URS-ch39|Bronstein, David I|1971|B13|1-0|W +@Ol\DTphEUwpU]me;LxgFVvx?Mnf>@f]V]tXIQXO=OgmO=sb@nfCKjb;LmeFVwn?>ul@sdCKjbUdkdLRe]V]d]DTtmT]g]rt:<]LRLtLBRwtNL\Hd\d=OdONOxw|URS Spartakiad|Lutikov, Anatoly S|1979|B80|1/2-1/2|B +FVl\@OsdEU\UOUphDTxg;LdU=Ume?Fwp>@vxU=tf@k[V^tk?>kO=Oe]L]rt]Wld@wvENuc=EdUNU\UL]f]V]ag:=gVEDjZO>ZR>Mcl=iaFOk[T[lZHPZ[@HaYMWv^PYrvWMLBDB[M>=Mb=U^>UTpC<>v>KSC^Ya>:BDJBah:@H@B:2@H^ghoxoOaoxDhxyhiyxTXgpifxyfvyqahqivN|Moscú, Cto Europa Equipos|Velimirovic, Dragoljub|1977|E90|1-0|W +FVl\@OnfEU\UOUjb;LulHPwSUFsd?Hxg>@Sn@sm;LldBRjZCKwvwpOWruHOnmEHe]V^gVLV]VOFmnCJogFTxyUfu]T]d]fpyp^gngHG\fGckrJeg_cZpiDTvuenVN>Nuvn`ip=>f`W`vwZj|Candidats Tournament|Benko, Pal C|1962|B07|1-0|B +DTxg;LphEUm]@OwpT]g]FV]LCLl\@RDMEvtLUZETbtlNED;?;uU;CyuENUV@GVRb[RSCS\SGFnfHXlkIYjb[MkdMVd[W_bZYah_X_ZR_fofVM[dMqd]aiSKBKRJq;c[KSur;B]^FMruMD^gNEutDKtuELghKJhiBfi`JK`WfQWNKDueQ?e]L>]_?M_a>ENUELUNLpa]piNUDE]uipU]pLusM?sc?H]TEDckHVkmV_me_XecXFT]DMciFO]eL>iQMVedVWde>GelOFQIGPIAWVldVUAQP>QKFMdcMVKQU]Qa]eaiemiI>PIEmtEFV]FvtmvFPlcbleFDe\DEmdEI]VIq\eqkV_ksd\sueluy\dyi|Malaga|Fernandez Garcia, Jose L|1981|D85|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb?FsmGWphHXm\UK\KBKwp@kcFOrs=Fc[:=gm=E[SLRuZ?=Z[FHtkV^wvNGmwOksk^eneE][F]ekneEF[RcnFHOFE=EpCcTCLTe[mEMvfeVmvVLSLMLwmLNmgNfvfW_f^OrxpX`gvrupx_hqh@?^VIYxquMVX?>vl>EXSMLSWLNW_E@meEUsd;LtXIQXOHOgmFNn^U]dnNVo_OHmgV_h_GWgm@InhwoLFrxFUm^W^p^I@YPUOhYOYPI@G^PGOPYNUYgEGg^?AIWOFWUGU^UHOxPCKU\>?onFEnNO=PHE@xnLRclR\kc\Mg_km>SnSKSvt@jb[TnfFGwt:=dn=mk]TM]OmnpwnoxoGO\TW_ox_hwpMTtwTfxyOaw?@?rw?@|Riga Open|Vitolinsh, Alvis|1986|B09i|1-0|W +FVnfEUm];El\@Osd?[jbV]b[]dkdU\w\=FxgEK\SDLSeKUulU_eW@mvBJiaFagaUKog^mvm=mwvmlf^?=brldrudeue=evs@?xoemoh?Fg_m]hgK\st\M^VMS|Las Palmas|Debarnot, Roberto|1975|C07|1-0|W +FVldEUm]V^d\U\nf=Xsd@Oul?[tm[dld@ts?=\cXYjZ:@jbBRwvOEsmIQrsRZk[Zcmc=DgaDMt_FV_t@Io_GWag?>_VEVgV>Vt_VvuvHV_t@wn:=qi`Yp`YPm^TFtmGW`WPWrt@AZSE<^TFTtTV^TU^gU=<=nwBJSTWPyx?WTdWUxh=Fk[L]d\DLh`]N`hN]vuCS\d]nwngnuvUedLF=Ltecf^chohP^tdA@vn^U|URS-ch29|Gipslis, Aivars|1961|B94|1/2-1/2|B +FVnfEUm];ExgV^gm?Ml\DLsd@FucEO\ULUog^gmg>@weFLvxuvO^e^U^d^N\^M=MwoL]kc\Sg]M]tk]fv[fXqaXY[]GOru>^]^Yuxq:>^_SL_\LU\TuYo_CKTMIQME>n_`np`pYaqxavxqUpE<@Gqp|Malaga|Diez del Corral, Jesus|1981|C06|1/2-1/2|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LuvLFwn?>_YO`YhFPqi`Od\IQiaPVtfO`n`<`kc:=hn=Mru`guMgpMUpyaYygnhGOvm@GmdGNURBJRU>FU=VL=@NG@AFEf_LFA:GNjZFW\TWhohDL_MgYd]NWc[Yu]d^f:>fndmCS|Dubna|Shamkovich, Leonid|1973|C67|1-0|W +FVn^@Osd?[w\DLxnEU^ULU\S?fT?@vxU]dj:>n_IQj[L[b[RKT\><\eELtmHX_PGPeP@?o_X`_W]exyelrvK]mQAQPQ?G|Candidats Tournament|Fischer, Robert James|1962|C64|1/2-1/2|W +DTnf@Om]EUxgHPwn?Hvx>@kc;LtkO^utT]g]L]k]FV]k=Dl\U]wuHQtl@vx?>rtETgVOEc[TNVE=En`ND`WEWdnM[nhWeu`eP`E:?GY?WYQA@QPdHPW@sdvu[drsenul=mltd[skmkcknk|LAT-ch|Kliavinsh, Janis|1954|B71|1-0|B +FVmeEUph;Lwp@Old?TxgV^e^O^vx>@smGWul=Ojb?>nfTKd\?bZIYrbeV\nYaqiWPZR?gwgP^RKBKkcKS|Asztalos mem|Bilek, Istvan|1963|B08|1-0|W +FVldEUm];E]VEVxgVgngHPd\@Owebl=Mrt>=\TMKTFUFkc=mvuKMl]mjtD@wnBRvxGWul@vx?>]LCLkcTMtk=DphNwt:?TLNOtlPWpxWeLOeuxp?OZ>@IlLugpigWiqWoqioWiqWoqiowiawya`y^`i^WiqO?>FWoqiowia?WF>wya`y^`iWX|Belgrade URS-World|Najdorf, Miguel|1970|D41|1-0|B +FVl\@OnfEU\UOUxg;LsdU[wSBJSL[Lm]V]f]?Mvx>@qiumIQjb[e]g=Oxy:=gqMqyqDLULeVmtOLdnV\n_Plk[\fofLd_ndftlfnlc>Nru=mumnwm=@I=uw_qyNfclHPlm_^mEIHuw^FE]H@wtFV]EV^tw^FE<@H@wnwv>vrvMEZ[K][c@AgX]oxwovXGA@G=@?=N?FNTELcfFMf]MD]HDKTEKRHVR[Vv[bvRbkETLMR[kj[cjrcdrsTeMKdtsjtljbldKcdT|URS Team Ch fin|Arulaid, Alexander|1955|B88|0-1|B +FVl\@Osd;Lnf?[xn>@jb[dndEU\UOUulUdkd=Xl^GW^gW_qisuPN^]Nvuv>vxqKS]_\b`XBR_]S[o_[c]=@G=;RZ;[bl[CGNp`ZbCcbjcKNUKJjr2Jrvr_WUVqhlfhgf`g`rx|Wch-blitz|Jussupow, Artur|1988|B30|1-0|W +EUxgDTnf@OwS@vx?>wvGOld]LulM?ru:=e]T]d]L[lsV^v^>^s^=>^sU_\f[Uuv?[fU>vgvEUsl[vl<@G@tfTKdZ=Fut?=ZTN@nfEMm];EwnFVvx=Fl\?>sdDLjZV]f]MUucU\n\EKwvFD]UD_v>O>rv>O\e<`gV:>dn`nph_QUL>VLCV>vn>;ZRKUkOUOnF;?FGQtxptLog?GC;2|Moscú|Bilek, Istvan|1967|A05|0-1|B +@Om]DTnfHPxg?Hwn>@vxEU]T=DjbBRsm;EmcRZc]ETtmO^m[?=rtDKuvFV]S[TWipiNVT]Vqowe]agqywoytg]tkog|?|Kozlov, Vladimir|1973|E05k|1-0|W +EUxgDTnf@Okc;LwS<`tkFNqi`YSLCLmeOEf^GOunNVsm?MmwT\e\U^n^=Rld>@whET^fV^c[^g[RgpyxM_hY_fkbTevnfTxpHPneTbY_:;og?=en=>ne@G\TPX_n;krxbTn]T]d]kSxtSRtLRbe\bgiaIQaXQXpqX`qag_LDGP\T>^]U`haA^\TM\DMDPWA@_`|Varna olm|Hecht, Hans Joachim|1962|E13|1-0|W +FVl\@OsdEU\UOUnf;LjbUdkd?Mme>@xg=>wnGWf^@A^WPph^lutLVo_VGmgl^d\DTtdMFruCKu=?=wu=unuPYfoGMunIQdfYinwiNweFOgm^WfgOkeWMWxpktmctbh`WMcmb[_WNFmwM\WO|World Cup|Short, Nigel D.|1989|B46d|1-0|B +EUm]DTld;L]TFVn^@O^U=UuUOUw\@og^fmfW_f_U_\N_Nwv@GhW:=WFGFru=Uv^?=uv=Mg_FO^VN]V>MN|Ch Latvia|Zeid Teodor|1951|D10p|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvx;LmeL]dZEUg]V]tkU^e^O^ZKBKu]=]k]^hqh>nwvnvrv@wn?>k[RKvxDLm]V]g]O^d^>^ldK]d]EUne^NuYIQYWN^Wg^>gh=OtfFDhPhqhL]u]:=wuFEog|Kislovodsk|Kholmov, Ratmir D|1966|C89|1/2-1/2|B +FVl\@OmeEU\UOUxg;Lsd<`nf=Ejb>vxV^e^EGqi`gngW^gYHPY`<;ulIY`nPXnSX`SLCLiaG\rt;ClkMFd]\N[SLT]T=ek[NVTFVF[\ebwuC;u]`hohbftu><\Lfh]^FG^]|URS-ch44|Karpov, Anatoly|1976|B67|1/2-1/2|B +FVnfEUm];El\V]f]@Osd?[weU\e\>@xnEK\e[dkd=Uvx@^W@Am^LN>NgXNPX^?>phA@nvDTxoPQvy@?on?FtwUO^OQOwOFO|National op|Rizzitano, James|1988|B93|1/2-1/2|W +HPm]?Hld@OtXDTnf=DxgEMsm;EwnCKvx@neOHunEOf^HQqaC@rt?>gmL[pU[Uuc=EwgCKm^>Fh`:=ghFNtwUO^ONOwOHOc\=>qa>NxoEL\LNLhx@?f^?FxsFMovMTstTM|Brussels|Larsen, Bent|1987|B35o|1/2-1/2|W +FVl\@OmeEU\UOUxg;Lsd?TnfGwvNG>G|Parnu|Vark, K.|1971|A67|0-1|B +FVxgV^g]EUme@Oph?Tld>@wp^eue?>vx<`tX;EwvTKqi`YsmDT]WT\eU>VXOHOWQ@HU\HQ\aE?m^QHh`YPruP^u=:=`XOXahGOp^V^nf?Phg^FvuPVgn=unuFEuZEmZSIYjZX`i`Y`ZR`hxpKfSCHQphfohimeipemk[ofphmud\uxhqV`qi`oiqx`Cgf_|Wijk aan Zee|Ljubojevic, Ljubomir|1973|B04|1-0|W +EUm]DTnf@OxgHP]T?Hsm>@l\;J\UJTw\OUmcTc\cU[cG@Guc[Uf^FN^U=Ucf@sdBJ\UNUSLCLkc=Mtk?>qiTBwv>fofBfxwOYd^MqndqxwnY_ngU^d^xpgf_Ufee\>^v^p^umUDrv^U\dLT]fUVd\IQf_WN\eVW|?|Myagmarsuren, Lhamsuren|1974|A13f|1-0|W +FVn^@OsdEU^UDLUL;Lme?Twn=KdZTovwKRwoRZtf>@owL]ld]lfoOUutlrtrU_kcZLngLPxnPewvof>fxp_g|Munich olm prel|Russell, M.|1958|C44|1-0|W +EUxgDTl\U]me;LphFVwp@Ovx?Fnf>@f]T]wv=DsbBJbl?=tX<`qi`Yh`YPgaIQaPGPXmJRunFMlbDErtM[bs=>p^O^n^EGjb[FvwFak[R[b[>?[SL=o_V_w_GN_?@?^]=GsdGVtw?@dU:?w?@?]^?GmdaOUOHOdV|?|Klasup Karlis|1959|A76|0-1|B +DTnfEUm];Ll\T]f]@OsdHPxg?Hwn>@vx<`\UOUqi`Nwv:@vx:>[SLFd\FPtkV^\TMFg]W_e^_hqhO^TLCL]LEWLF>Fc]WYog^hg`?wuwYVwgFGgUVfxqfQqxQfxqf_qx_f|Reykjavik op|Kristiansen, Jens|1986|B06|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdsEUsmLTld=Dtk;L[SLF^UFUphUFm\FPbZDFgmVp^<>xoGYqaVW^W>nvnYnox]g_gngh`gfxpfmpwmtwptkpxkKB:@GaYKDxpDK:jGFjnF=nfKMfbMVpgVqbfqygoyqog=DfNqmUMD=Nfmugo|Sochi|Timman, Jan H|1973|C95|1/2-1/2|W +DTld@Om]EUxgFNt_?M_M=Mnf;Lsm>@wnNV]VLVvx@un;Lsm:@m\@Aul=>tfW_fmHXe]X`]V`gngLV\MDM|Riga m|Saigin, Vladimir|1954|B93|1-0|W +EUxg@OnfDTl\HP\UOUm]?Hf^UO]U>@sdFNUM;LwS@sm?>mg=MwuO^tmTKrt>Nmv:>k[NQnJ^XgXMqxwqywnypXgQiueignupPjZU]ZR]fRKfo|Warsaw clock simul|Schinzel, Wladyslaw|1966|D50|1-0|W +EUxgDTl\U]ph;LwpFVme?Fvx@On^>@gvBJsmCSun:;qiHPvl@wuVdkd=Rf^O^uU;=U=?=tkRZqiIQrv^XgCZjktXNtfBRCKjbfTbdvN=uxqGNKN@IN^HPTMd]^F]HFNumogRZiaQYqimeMFZb|Hoogovens|Sosonko, Gennadi|1976|A18|1-0|W +EUm]DTnf@Ol\T]f]HPsd?Hxg>@wn;Lvx<`\UOUqi`Nwv=KdZKDtXIQXm:=rtU_nwH]v^_ipiDhxy]otd=]unNUZTGWwpU^T^]^nwoKgXhMX^W^w\@Imv^fdeMV|?|Stean, Michael F|1975|D34v|1-0|W +EUxgDTnf@Om];LwS<`qi`Y]T=RsdYgugBJSLCLvxRTf^FN^ULUtfT\ru?Ff]>@wv?>gh\LvfFM]V:=u]MVfVHPiaLMhfM?fg?HVvOE]Z=;ZJEVghV\JB\kdnk\n_HO_eOWjZ;:eTWOhDOaTEaFDL@HL:FE:;EZ;cZrxqr]ce]aqxaXe]HQphXYnvYg]aQHa]H@|Brussels blitz|Karpov, Anatoly|1987|D38|1-0|B +FVldEUph;Lwp@Ome?Fxg>@vx?>tX<`qi`Nsm=ExqV^gx^eneU]XOFOd\OFmgIQjbBRumNWiaFMxnEFwvFOqxWPgq>NpUNFrtL[b[M[ml:>Ug[vtvPWvuHXaYWEumELg`OVqgVTg]T]`W]Vh`Lge]VMWI@H\TM_n_Fv|GEO Ch|Levin, Naum L|1970|B08p|1-0|W +FVnfEUm]V^l\DLsd@Ouc?M\ULUtm>@dUOUcU;LUc=XqaX`phBRwi`Yjb@sbFVblBRrs?>tXIQXOHOjbVnVHVwGEU\U@GvVPXpvGOVniWvgTcgV:=h`=>`W>VnlVWlDWwypwsDCskphOVCSct[LVMSktekmeTm]|?|Quinteros|1987|A62|0-1|B +FVnfEUm];LwSV^l\BJSLCLul=Xo_XPxnPpyxpq\U>=tmqanh@FUMDMmR=>l^<`sdMU^lIYf^AQloU^d^QNvm:;kcFWrv;SRda=hWSW^hWUvNGNmlLT]T?TopTxpxYa|World Championship 23th|Botvinnik, Mikhail|1960|C18|1-0|W +DTxg;Lm]T]g]HPph?H]LCLwp:;ld@Ovx>@sm=DulEUn^?=wvFVkcDKd\U]\TKRtkr:>:XFH?F?@?\cDRvtR[ts[Tlm?HstTMml:bl\MFcuLTxpFMtsbd\jMOj:EK:>deqaIYunemngT\sS\dSTON|?|Mukhin, Evgeny B|1972|A16|1-0|W +DTph;LwpHPo_?HxgEMmeFNvx@Fn^>@sdCKtfwv@AmtJCgVLV_VUfofC^fX^pxpEUpx>Nkc?>t_A@XOULn^>wv@IOHIHa_DFqaPX_`NPaYPN`WH@^nFCW^C^n^GOVO@G^N>NvNGNxoX`onNOnoOXopXYpoYXopQYpqYaqpah|Las Palmas|Garcia Padron, Jose|1977|A25|1-0|B +FVl\@OnfEU\UOUjb?MxgDTme>@ph;LwpsmM?e]T]f]V]mcUfof]fc]fn]n=Kxy:=tmNcuvKJgxL]mX]lvd=edDlrwrcUn_|Biel Interzonal|Geller, Efim P|1976|B42|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn<`tf>@vx`gng=MsdL]g`?=xyDLo_FOf]M]_V]VunV]wgKE`E=Enl:>rw>NphOVypNOgOVOwgOVlo]KoKBKduKSpoE]ovS[b[][go[cvmV]oWHPWR]kR:@Hmlcb:;k];CbjukHOlsjbslbrk\rj\kIYlsjbslbrC[LT[KOX|Bled|Najdorf, Miguel|1961|B92|1-0|W +FVl\@Onf;Ljb?Fk[EU\UOUtkBJul>@xg=Mme<`smMNwn:=vxGWrtHXmc`gngX`gU=Uf^UE^W?WwvNGlnIYcTFTtTEUvtUTtTGjnm@Ge]L]TDGPDtWgtrj\rugck]V]m_\e_MPHMDHPDKPWuvcsKNWXo_`gqaXaNOa`Ogegpg`gvs]exwYaskgfkqf]wv]dvu|Amsterdam Interzonal|Evans, Larry Melvyn|1964|B43|0-1|B +EUphDTwpFVl\U]me;Lxg?FvxGWnf@Of]T]tX>@XOFOsm@Ajb|URS-ch43|Doroshkievich, Vladimir K|1975|A68|0-1|B +FVn^@Osd?[jb[Rxg>@wnRdmdEMgm;EvxETogCKd\OYms@gmS\sdEMm\;EtX:;rsBRulCJkcO`dZ`VXmV\c\EVZk=DlZDEZlRZmdZbdVHVkeVHwt;CsCECtsHkqa?;p^CH@>E@:X`jZ^sxps^pq^l:CE=qpl^px^expe^pq^l|Hastings7374|Miles, Anthony J|1973|A05|1/2-1/2|B +FVl\@OsdEU\UOUnf;Lme@gX:=XNONucNcjcIQph@Ixp?>wu=unu>=unHXrjIPn\=ujlPOc[TK\SBJSLCLpgLTtfT[d[uMljKfgfMKjlK[lLOFLDFMDI[cfnJRIQMTQPT]PXRZX@Zb@:]do_dk_VbjVNcKnfKNqaN>:J>@|Sarajevo|Pietzsch, Wolfgang|1966|B82|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wnEU^UV^gVOUvxDLV\RDd^GW^dW_me=angUdkd?OunONnuNQwvaqxwumWimviwvwQPtmPpe]>^g^qYnvY`w\@A|?|Zdanov|1952|C84j|1-0|W +DTxg;LphFVwpEUme?Fvx@On^>@sm?>ldF?jZ:;^UOUwv=>g]T]pUWNUN>NuwBJt_;>ZR?TruIYqaN^\m^Nm\@Ak[TB\M>F[SJSMS]dSBLBweNneUBLutL[U]F^]d[jd<^>VSkv^|URS-ch45|Grigorian, Karen Ashotovich|1977|E96|1-0|W +EUphFVmeDLxg?Mwp@Ovx>@smIQn^m\MTtfTfgfOUfm=D\M>Nl\UFruFPm]DFMWFXvwPVqaXP]_:>kcQY\TP`_`Y`WM>FM;w_CKTKBKMW;>WM>=_WVgxo=MuMNMofGOW_gV_ZLTf^@G^WHPW^GN^fNWZ:Mefoed:;W^;KdlovlqKO^fvuVeONf]Nnqyumyrmlrjlujnun]dnfdcfeT\e^\d^_dl_Xlt2XPtfaYfhYQ|Wch-blitz|Chernin, Alexander|1988|B07|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLdZKDl\IQulEUvx;EZdU\e\E?wu=Ftf?NgaN]f]V]u]HXagX`^V`gVOFO]^>^l^Od|?|Gradus|1951|C98|1-0|W +FVl\@OsdEU\UOUxg;Ln^U[me<`jb[JtfJTdU`gugTcrsL]guDLf]c]UfHPwnBRvx?Qwv>@nwRZf`Q_ph_mvfmfof]cqa=FwnGW`oW_|Reykjavik|Wade, Robert Graham|1964|B33|1-0|W +DTxg;Lnf@OkcFVtk?Ml\>@sdV^gXMVutEMX^O^d^GW^dW_ph<`h_V_wn=an`a`dn_VkVLVtd?ovo`goxgnrw:?|Moscow Interzonal|Van der Wiel, John TH|1982|A17|1-0|W +EUxgDTph;Lwp@Ovx@tXIQXO=OdUOkrtCKUd:=uckcjc^gngL]tsT[djBRwu=Mxw?=ue]NeM=Mg_NTpgMeguemj[R[unHPwvmjn\T^su^du=@HvwKS\ejm=]dn]EnteSmESEtcwncTELHOnfONLSNUS>UN>SGOf]NM]\T^\[^oS>PX_XOXqaX`>YMV[\VW\]oyY>yh]fWV>EQYE>hWfoWH>LVOohHWh_WaL>aP_hOXhpYa>EPVE@wpL]u]EMvxwn>MvxEZwvFE]cM\n\U\mE=EcTKTfTCKT]GOqaA=aYIQrtEUvF=EFE@jbOQmwW`\UNUgVLV]VMTk]QK]TKTwf^dc[TBumdnxy`Yp`n]`Y]cmkcrfWCSvxU]xH@AkmBCyxCKWM?@HXKDxwGOX@:@m_@?VNrcYQ]eMG?GNGDG_Mcmwvm^MeGFefFV|Tbilisi sim m|Bronstein, David I|1982|E12|1-0|W +EUxgDTme;Ln^@Osm<`wnFNvx=Dld?Fwv>@ul?=jb:kdLEslEele>EenELh`Y`i`WQngLEdRELRmLE^hQ@_WF?h^?FmdGOVOHOdmF?ghCKhaEFaYFGm_NW`W@F^MG@_Q?HQmFLmd@Ic[T[b[KS\TJRMSR[dkH?S]L]k]IHTL?MY`[c`gMV]kHGkVOVLDckD<2ks2@mcR:gvOWo_FP_V=KxyMVvgVdgXLFcTN@me;LxnL]vx]nunDLo_V_^VO>t_EUnmGOe]OV_V?wrwHV]V=Fmf>DdnDNwOFTfTNTn]@HOMiW>VWI^djbVvxpvrqarbIPGHaYHQP>QIYQdZKSbfSCIQ>ZfbZcU]CERZc\bd\e|Capablanca mem|Barcza, Gedeon|1963|A04|0-1|B +FVldEUme;LxgGWuc@OtX?FsmV^g]>@]LCLnfO`XF=Fqi`ovoW_e^_fof:;c;FTfeV_HX_g>?ghKfhqf^yv?onw^_qx@Gw\GPvNPYrvopxp_\vf\jphjrhgBRg^RZ^]ru]VZbVObjNFuMFNMN|URS-ch23|Simagin, Vladimir|1956|B07|1-0|W +FVl\@OmeEU\UOUxg;Lsd<`nf=Ejb>@l\CKjbsdHQmlMU\UOUdU=UkdBRwu:@]VLVwvMOum:=mfVefeFPruDTblP_emU]d]T]v^_Nlv=UveUXe_?=qaXSjZSV_NGNmnV^n^=Eg_IYph@GxwEUutO=tu]eum=EkcU]^V]UVfCKwxEMf^U]^gGPg:]UZRM[:>PORK[m>?OPKCmuxpucC;2c;?;em;>PI_WUW>N|Varna olm|Soderborg, Berndt|1962|D01|1/2-1/2|W +FVl\@OsdEU\UOUnf;LulHPjb?Hxg>@wnCKvxRC=EBJ?=JKEiu=;=pi=;iaIHxpHGo_V_pg|Asztalos mem|Honfi, Karoly|1963|B47|0-1|B +EUxg@OnfDTkcHPtk?Hwn>@vx;LgVunFNrtL[jZ[UkbKRgXBJwvH?b?@?ng?HVeCSZSJS\UGrZMKfmUS|October Revolution 60|Smyslov, Vassily|1977|E18|1/2-1/2|B +EUm]DTnf@OxgHPwn?Hvx>@ldCKsm=Dkc;Ltb?=rtulJSZS>M[MDMtrC@iaBRjbCSZuFT[TET]LVLULTewe^eug=Mvx@sdU^e^=uduWF>FkcN`tbCKwvFEbk`gpgEmrtL[kdmld[ltvtT[tDBRDCIQCK=mKSmjSVjbxpHXqibcVRcsR:@H^VO@:BH?B:?HgY@F:BH?B:?H:>FPVNGN>NP?NFHAFGA@GCstYG@AGUtuU^?EC[EO^WuU[;AH;CHAWNUMN\MEC;AHpgED\eDB;cBFcbOEeWFGbRGFRJEOWNO>JK>OKLOENEFEg`EG`YGoLQ|Kislovodsk|Khasin, Abram|1964|E97|0-1|B +EUxgDTph;LwpFVvx?Fme@On^@xiCSvxT\o_\eleETrtOEk[TJXF=FjbGOuc@A_VOVw?E?cU:;twtL:BG>|Lublin|Suba, Mihai|1974|A41|0-1|B +FVl\@OsdEU\UOUnf;Lul@^WNWvxOPgCWelc@AC:ewxw?:tkDTc\PY[TMTrtYq\T|Candidats Tournament|Kortschnoj, Viktor|1962|B48|1/2-1/2|W +EUxgDTphHPwp?Hvx@Ome>@sm;Ln^FVldIQucU^e^BJc\=F\nu=>=qaGOaXQXgX=e`nefnfOX^VLVpU@?WOHOfXVgwgFvxqvnXpnpqp?FkccKMDKJRZU:]o^VohVUhoJBDKBCKJUM>PCSPe:Uo]MD]VDLV]SK|Bled|Donner, Jan Hein|1961|E69|0-1|B +EUxgDTnf;LwSBJSLCLl\FNsd?Mf^@F^VM;kcFPtbGObTP_vx_eTM;MVM=M\ULUgve_m]JRve_eue@wt:PI>NtxpgseNfeWf_We_fePfNQYBFPeNfeWf_Wigniwngwpgnxr_mpwngrbFfwygnbrf>IPqaPG>frtfeywngtvefwyg_yi_giyg_vumdutdbGPbePQf>HP>@OW@>tDefDG>AQHfVGO_Xyto_tLAQHGQIG@VF|Riga, Cto URSS|Spassky, Boris Vasily|1958|E26|0-1|B +FVl\@OphEUwp;Lsd@qi`onoGWSnHX^WNWm\We\Meng]V]onDMxp]enfLVkcQYtmX`i`Y`rwTfw?@?mfRZ|Lvov|Boensch, Uwe|1984|B08|1/2-1/2|B +EUxgDTnf@Ol\U]f]T]ph;Lwp@smRZwv=ErtHXvn?>gvOHtsW`pg`gvgGW\T@Agv:Rk[Zcsc>:ls:Bm\RTnkV^cCBCkCEUCD^esCem\mTtDH|URS-ch39|Vaganian, Rafael A|1971|A75|0-1|B +EUxgDTnf;LwSFNvx?Mm]@Okc>@tkBJSeCS]TMTsm@vx@vxO`m^MVk]L]f]V;wv?=^TCS\cFOqi`QrtE>TC@vw?WwWEWugWNkcNV|URS-ch50|Vaganian, Rafael A|1983|D85|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeEUtXU]dZKDl\;EgvCSZk:;XmBRphE?vp:uoDM|Palma de Mallorca|Ivkov, Borislav|1966|C91|1/2-1/2|W +@OxgDTnfHPm]?Hwn>@vxEUkc;LtkO^sb<`l\:lcGOXmV^g^>^yvA>v^>^cULUmfDKfKBKuU^n|Nice olm fin-A|Plachetka, Jan|1974|B22|1/2-1/2|B +FVl\@OmeEU\UOUxg;LnfGWjb?Fwn>@vx@Aul=>smFOwvHXmcBRnw>PcTX`gmUFrsCKTZ@ulV^e^U^g]?>sbDLb\KDkcBJjZLTtb;E]WFNWfCSZSJS\mIYqa^EDkexwT\c[^VwnVUf^etnvUeD<@I@wvEMel=DtX?=sm:;rsMUXOHO^U=Uunh^|New York m blitz|Dzindzichashvili, Roman|1991|A12|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`sm?TuZ=Enf>vu>Frt=>ul`Nm\NUls_N\KBKc[NTg]UGkdEUtlGPsrPGyxUY]gYWqiFEg]E]d]TcrkWU]fcTksTeweUe[deSsrSExtDTf_;BlkEZ_D|Munich olm fin-A|Lokvenc, Josef|1958|B94|0-1|B +DTxg;LphEUwpFVme?Fvx<`l\U]nf=Ef]V]ul@Ot_>@jbFM_MEMsmIQrsBRsv?>gaCKm^O^v^>^p^:>wv`E|URS-ch sf|Voronkov, Boris|1956|E75|1/2-1/2|B +@OxgHPph?Hwp>@vxDTmeEUsm=Dn^?=wv;LldU^e^IQunfm:S`^S>NE>Yh`|URS-ch sf|Klasup, Karlis|1955|E67|0-1|B +FVl\@OmeEU\UOUxg;Ljb<`nfGWwn=Oul>pH=evneUTfL]nw>ftD<=DCfFH@F>C;=E;>]NmcUe>NENcTNGTeG@eVaOVLOkbZkb[SbTZR@GLBGNBLNMwnTbneMTRJTKe\W_JBKCSK_g\S|Riga|Klavins, Janis|1959|B99|0-1|B +FVn^@Osd;LxgEU^UOUwSUdkd?Mvx>@m]V]d]<`ldLFtXDLSnIQXF=Fwv?>rs:=qi`Yp`YPneFOv>=>ePOPsCP^xp>Nd\|WchT U26|Friori|1957|C47|1/2-1/2|W +EUxgDTl\U]nf;Lf]T]me@Oph<`wpFNvxOEjbBRul?Fsm>@rs=DwvNVmc:>tm`WctIQk[R[b[WP[SL=SKD;sS=LtcF=mt=F\T;:l\PWgmWN\l:ZpLCLSRZ[vn>:tb[dld]dm\:RcRFTbTETRL?:\RNULF@?FU:RUdRbnlTeKCbcdScSl@xn=MnhGWwn:=rtNUn\@A\UMUogFavnUMtlMPnwV^hY=EY_PGktaOd\^gpgG\l\LV\TVgwngayx?>xhA@_YO=tkW_Y_EGTYaWYWGWhH@?HI=OkOWOm]DLne>FIaFGa`OQ_P?>qaGI|Capablanca mem|O'Kelly de Galway, Alberic|1963|B48|1/2-1/2|B +DTnfHPo_?HxgEUwn;Lm]@OvxCKld>@uvaPFLPVHVnYGDY>N>_VDG[m|?|Birjanis|1951|A91|0-1|B +DTxgHPl\?Hsd;Lph@Owp>@vxCKm]T]g]n^\kumkZd\S\m]Zk]mkeonPX_f:;ml;klkeknmkeqi>GmdGNjZevg_vpfmX_h_OWd]\dmtdl]eIY|URS-ch37|Smyslov, Vassily|1969|A38|1-0|B +DTl\CKsd@^VO`e]T]m_`ovoGOn]OV]LCL_V=aofaQfeKSel:@vx:=ul?>tmRLxyENogNjlj=Ert^gwgMNjN>NdZO^ZT^mTN|Jurmala|Dizdar, Goran|1983|C16e|1/2-1/2|W +DTldFVm]V]d]EUxg;Lnf@OwnT]g]?Msd>@vx?>]gBJkcMDtb<`rt=Eue:=wuD;esEDph;BqiBfi`DhxyhiyxO`uw>V|Gori|Chikovani, Iuri|1968|D42|1-0|W +DTn^HPxg?Hld@OmeEUsm;Lwn>@vx:;wv=DnwFVjbCSk[U^m^O^e^T[b[BRtb?=ut<`wnDKtfR[fK;Kb[K;vu=uruH?[?;?qi`gngS[|New York m rapid|Dzindzichashvili, Roman|1991|A54|1/2-1/2|W +FVphEUwpDTme;Lsd@kcFOrs=Etk:>qi`Qm\V^gVLV\VEDe]OV]VQGnoGVo_NEsuELwoDFkVFVpw?Ow\@?jZV_h_OPxq?FomBJZR>?ld?O\@O?@\?tkT\kbUTuZ>ZbZQYRJCJZRTMRJPX|Hoogovens|Christiansen, Larry M|1982.01|A42|1-0|W +EUxg@OnfDTl\HP\UOUm]?Hf^UD]U>@sdFNUMD>^V;LwSOvx=KunBJSLKLwuOUd^CSXFU_nfHkF?:?rskH^THQTE_ipiQfEVL^of^fxpfnphIYu]PXsx@HMEYah`HQE=2?=VGQPG=NV]M|Tallinn|Uusi, Gunnar|1981|E01|0-1|B +EUxgDTnf;LwSBJSLCLmeGOf^FVvx<`wv@Fqi`Nl\U]gaHXaW=Ep`FPugIYsb:BxwY`i`EEm_?MqgMVgVE>VgpyjZ|Bled|Matanovic, Aleksandar|1961|E24|1-0|W +EUxg@Oph<`wp;El\DL\ULUvxFNme?Msd>@tm:@gVEUk[RKm]U^tf;EV\DLfXKDwn?>umE?Xa?NruCS\fN]m]=]u]DVdSLSaOVOnSO]S>]dvnSJ>NyuHPfUdVU[VMl\@?qiIYuUM[b[NJnfJZUSBRf^R[\TZjTL?F^UjmUTmlTUlmUT|Tallinn|Veingold, Aleksandr|1985|C82|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb<`nfGWuc=EcC:;CJV^e^W^gmLVJB;KB:>G:R?[b[U[og^gpgA>rb`gmgVgvoKORYG?f^E]tfgmohm^hpOPYP]ksmIPbcklw\^mfT>F|URS-ch23|Tolush, Alexander V|1956|B97|1-0|W +EUxgDTnf;LwSFNvx?Mm]@Ol\>@]TMTsm=MkcU]SL]fm^foxyML^OHOc[T[tQ?>uc[?gVOVch@AhVA@VX@AXV|Bled|Geller, Efim P|1961|E55|1/2-1/2|B +FVldEUm];L]VLVxgVgng?Twe=avx@FtfTMphaYwv>@smmc:=fTMTcTCKTJDTg_YPnSWESE=EuZ>=k[U][T]drtE]ZlFUlnIYnSP`TL]mLDUDJDdlv>=>S>@IDU`gUOIP|Alekhine mem|Simagin, Vladimir|1963|B15|1-0|W +DTxg;LphFVmeEUwp?FvxGWl\@O\UOUsd@kc:>tfHXfT?GTMNUn^W^e^U^rvGEMT^UoO@HOWV^T]HIWV>?]T?gvfgGfvIPvwPYwGEGVFGFTFY`FT`gxwBJT?QY?FX`FT^fTMU^MT^sjbsjc[j\wvfnTMgpMVpqvoqiVdYaha`hoxiabZa`ZR`gdv\U|WchT U26|Persitz, Raaphi|1957|E79|1-0|W +EUxgDTl\U]ph;LwpFVvx?MnfIQf]V]wvEag=@gmGWYuX`k[L[pC:;Cp[euZE=vuNEZJ@Nmce[JR;KcTMTRT[lsblrT]A>]r=@]TMTsmBR\UNUkc<`SLCLulOEtk:@jbBRtXrsRZstWE\TKTm\IQXmENgVNUpUOUluFXVLDLugXm\m>vtv:=vnLEqaGOnvUKgn=;n^EG^_KE_D;>v>G>m^>FxpFN^TNUT^OWDMUCMN|URS-ch39|Tukmakov, Vladimir B|1971|A75|0-1|B +@OmeEUxgDTtX;LphFNwp?Fvx>@l\IQ\UNUXOFOsd@kcCRtkT]f]EMug=Eru?=wv:;_eO>]UNVgn>Do_V_d^GW^OHOkO=>nF>FvFEFOFRCh_;>FaCTeTKTuv@Gv>G>xw>EwnD>jbBRbZEDavDKvdKJngJKghKJhaIQahJKhpKJpgJKdv>HvaKDaFH>F?>O?QO`QH`qgpq`phDEHdE@tk=FsmMbkbFbag:=wtV^gv^evebFmgETeTFTnkTF\T?>c[OEtuEVgVFVu]CKklKSjZBJqi=EZSJSrJ>NljEFJLNLj:@H:LFBphVWLUWi]uIYTLBFLD|Sochi|Meduna, Eduard|1986|A46|0-1|B +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn>@vxBRsdGWdS@vxFW]VLVulEMsdxo>VwxVvxv@?QfLEf]A@vfH>`XOXaX>HovEW]HGHXW?=|Moscow4|Narodizki, E.|1991|B23|0-1|B +FVl\@OsdEU\UOUnf;Lul@k[UKwnGWme=Ovx:>tkOQwuHX[SX`SL`gpgCLxy@Gg_V_ngQiln?@gYGFngigYg|La Habana olm fin-A|Ciocaltea, Victor|1966|B82|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBRtkEMme;LdZKB[SLFl\FPktIQrsOEgvETZTBTn`DLvlMUtf=FSLCL^ULU\UTblb<`u`FbqabMphQY`YMUYWRZW^>=s[Zb^U=U[cbjwrGWxwP?wn?NcK@GKCGOCKOGKCGOCK|Naestved|Chandler, Murray G.|1985|C88o|1/2-1/2|B +EUm]DTldT]d];Ln^U^]ULVuZVEsd@OxnHPnh?Hh^O^Z^>@w\EK\c|New York|Dzindzichashvili, Roman|1990|D10k|0-1|B +@OphFVwpEUme;Lxg?Fvx>@sdU]ds?>n^]ftfVmXoht_`oyxoi|Moscú, Copa Equipos URSS|Petrosian, Tigran|1974|B08|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUtk;E\ULUrtU]ulD;gmE?ZT>FTcFDls?Nphkt>DslD:ljZEF[F>FZRKTwtT[rZUgpg[dRJCKxwDTSL;DZjKSnfS[f][cjnFnwn=>g^cktsOWnfW^e^>;fe;c]Ucbo_breld]^VrJVNDMh`MU|Zuerich|Larsen, Bent|1959|B77|1-0|W +EUxgDTnf;Lm]@Own<`qi`YvxFNgVYnun=Do_O^wg:@]B^Tk[T^tkL\BK?OKC@sbk[ZcscETcSV^gaWNus^eneTeSCLVagVgpgeVgpV\m_DTwv]elf\f_fNUpU=UsS:=fm@?bZFX|Memorial T.Petrosian|Hodgson, Julian M.|1986|A43y|1/2-1/2|W +EUxgDTme;Lt_HPn^@Osm?HldOY_XIQXa?uZ=E^UEUZ_UewpeM_MFMm^:=ruHVpiCKxvA@gVMVu=L=^O@HvV=NOUHxo_xsi`sk_WNXqaXIWOkoVWQYWYIOUOoOYA?HA:BR:;Oo;KojKJRZaYZbYQH@`XjpXYbjJ:@I:Bpod\oWY`WwBjIQjJGO|URS-ch32|Borisenko, Georgy K|1964|A53|1/2-1/2|B +EUxgDTl\U]nf;Lf]T]meFVph@Owp<`jbBRqi`WtX?Fvx>@wv=Dul?>smIQXOFO\TOFrtRZm\FT\VLVvV>VgVDVlTVOTSOPSC:>C[POpwQY[Z>;k[Yah`OPZB;=BF=MwpPQtDWeD<@IFGMOG@IP@>PIp^e^>^QP^]OM]\PX\^|URS-ch26|Geller, Efim P|1959|A71|0-1|B +EUxgDTl\U]ph;Lwp@OvxFVme@tX?>Zl=Dsm:=rsCKXOHO\TKTm^L;st;JlmOW^XGOgVOXpU@HVGEAGA=Av>A>Y>QYtvHQ\JFo_AP?jUghUThgT?qaBRaYRZYQZbIHbjHdGOd<>G@k[RKwn?>vxDLmeIQdZKDl\EUul;EtmE?wv?NnwU^e^OIru=OmfIXgXQX\TN]ltX`ZkCSTKBKk\LT[TKT\mOFtk;kj;stsELstL^tTDMf]V]jU^UTU|URS-ch23|Kholmov, Ratmir D|1956|C97|1/2-1/2|W +@OxgHPph?Hwp>@vxEUl\DLkcO^m]BRtkRZgm^msmLTutT]\U<`nf]fofHktkZckc;EcC`nwt:;CD;kDdk;m^=KjZnJZRKSd]?@ogrsCKmfMbutL[fmbtstBRndIQmf[LvxL]wvNvtv@?jZ=MLSJSdSMExpDTpgEFvVHPldOEVUEOU=F>=>?>e]OEqi>Fg^FNSDNMDUMN^eGOUDNMDSMNe^WHSDNMDSMN^gHWoxNFg^FNxqE;SDNMDU;EUfMN]UNMfWPW^WKS\SMUqhEKd\U\hvKZvR\SRvZkWOkevmeoONo^mfS\_W\efQenWO^ONOngOX|URS-BRD|Mohrlok, Dieter|1960|C62|0-1|B +FVl\@OnfEU\UOUjb;Lul?MsdUFxg>@wnFPk[lcNcRcK\d^gaha\k^MDMtlkZytZKlDW_DCKUf^_gpgQOgpU_pw>^t@vx<`ul`WltT]gv:xpJRcmRZm\=eveD\of>SwuZbeobjfb\nb:H?uynkpgS\:RFNR:@HgpkVpgVdgpdb|Riga Interzonal|Ljubojevic, Ljubomir|1979|E15|1-0|W +@OxgHPph?Hwp>@vxDTmeEUsm;Ln^FVldIQwvZRK\m\DERJCKlZNUtfUpxpEUogGWruPXqi@Afo>?\fUEh`W`Z`EGf\=UvnLFohFP`^?=\fUEfW=>WHGHe]P_h_X_pyT]u]HhnphiyxE]d]iNpPNP^P>@P@A@]V@GxqGNqiNVi`KSk[V]`_]\_VQYVW\[WNYa|Prague radio sim|Nowak, Erwin|1960|E69|1-0|W +EUxgDTnfHPl\U]f]T]k[?HmeBJjZ;Luc@Own>@vxFVsm?>tbOG>VGOU^OPVNPGNKGHKkHOksONsxNOxyaPyqONqyNOyIONICPaCKNGKMGH^VagVWHGMEG>EeX`WOgqONqgNOgqe]`h]mq`ON`fmEfWEIW]NO>=IHhp|Candidats sf1|Larsen, Bent|1965|A60|1/2-1/2|B +DTnf@Oxg;Lm]EUwS<`qi`gugFNl\BJ\UNUSLCL]T?Tsd>@vx=FkcTMtkFVwu?>rt:jbV^e^O^tm?MpgA?vwLVgpV\mt<;lvWipiEiu`^o|URS-ch sf|Giorgadze, Tamaz|1956|E87|1-0|W +FVn^@OxgO^me^OgVEUph?Me]>@wp?>t_;LunL]neMV_V>VvwDTsmruCKde^Vld]NqaOWemU]uvVvwvIQd]WUpxU]ml>=ls]ese=exwemvsN]wv]gvwHXaXQXwpX`k[T\stKSjb\dtwdl|Framingham CC sim|Gibbons, John|1988.03.08|C42p|1-0|W +@Om]HPxg?Ht_DTnfT]f]=K_tEMwn;Lsb>@vxMUldruFV]VLVgV>Vng@gVEUk[RKm]U^tf=FwnDLvxKDum?=o_;ExyEKfoKUoaU_m_=]ahFNru]uwuOUdULUl\U]_^GOn`OW^]DVhVW`]=@G=DNFuwG>DRCKRU|Moscow|Keres, Paul|1967|C83|0-1|W +EUxg@Oph;EwpFVvx?MmeIQsdDLn^U^d^O^e^=FunMTkcHXjbGOc[TKl\E?\TKDgm@fWGInY:=tfPFWFIFYQFIfX=uruNcQI@IuEIPXOPOED?=pg|Porz|Troeger, Paul|1981|A48|0-1|B +FVldEUm];L]VLVxgVgpg?Tul=anf@Fsb@tmWPc[aO[`BJSbFLg_PW`hL[yx[eweWevteWmv:=blDThpOPpPIPk[GO[TKTl]T]u]@Gog?Avh=vo>@ld;LjbFVk[V^gvT[b[f]CKe^U^sb==rjO`fU@sm=Dn^EMgvCKo_<`vgDEuv:@n^EMqiTYgqYuwupwL]xp@?og>DdjDNld]Lj[LVwnNTrtHQvoV\f\S\tsEZu]Tc]UBR[jcmsr|Titograd|Popovic, Petar|1984|A16|1-0|W +DTl\@Oxg;LsdEU\UOUnfHPw\UK\S?Hm]T]g]>@]L=uduCLSL:;jZK\LS\RrbBJtmJSmRS[be@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?PphBRl\U]\T<`qi`Nrs=EiaO`gq`qxq>?qx@AwpR[b[GW^WNWunW`n^`W^nW`n^?Osr:?vwPahaO_^vV^e^`irbipxp]eog_`poDhofh_foE=wy_hofhvyv=avu`pfeao|Tilburg|Spassky, Boris V|1980|C95|1-0|W +FVl\@OsdEU\UOUphDTxg;LdU=Ume?Fwp@jbGWk[W_fm_hqhT\mfFOe\V^gXOrp^r]XN]ftuEGN_GF^U@AofFfxpLVZlV`uwf_w_`f|Bled|Parma, B.|1961|B36|1-0|W +FVl\@OmeEU\UOUxg;Lnf@wn@Ak[BJtk=Om\:>vxW_f^UFruFP\MDMe]N`]VMVlT`gpgOaxyaiwxPaue?OnwiNbZOPxPNP[SagegP^TbJSZSL[qi^vbrv^ru[lue^ZkV|Leipzig olm prel|Durao, Joaquim|1960|B82|0-1|B +FVl\@OnfEU\UOUjb?Mme>@xgDTwn;LvxruMDe^W^kOHOXi>=vwUNxpNWi_BJwvCSpyLVmsVevwD_h_Wiog?@|Hoogovens|Sunye Neto, Jaime|1982|B42|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEMsm;EtkE?m\KDwv?PnwCS\mMUbZE>k]BJusU_l\S\w\>Ssc=E\SES]T:=c\S\|Niksic|Timman, Jan H.|1983|C94f|1/2-1/2|W +FVl\@OsdEU\UOUxg;Lme?[tm>@phL]wp?>dU[mgm<`Ud=Evx:=mcCKwv]NutDTdUN?n^`Ncm?Pm\IYtXE@vxn\O`^VE?mn`fnfIQVNQX_WH]u]T]NG@GWPG@fX]dXQFVwGDGPG@Gkd>FQY?P\eV^e^=@phFVYI@H^PGOIQHPQ?OX?_|Sochi|Filip, Miroslav|1973|A21|0-1|B +EUxg@Ol\FNphDLwp?Mvx=Dm]>@sd;E\TMFt_D=k[O^ulGWrsHX_fX`gvFXfX=Xsk?OveOQe_NV]VEVog`gng^hqhXhltQadnhHtvVP_PHkPakjn_j\v>|?|Denskevich|1953|A48d|0-1|B +FVl\@OmeDLxgEMphHPwp?Hvx>@sd;Etm?>rtBRjbE?k[R[b[IQ[S?Ntr:rurV^e^O^rt^mtm=Rd^Rmgm>=SLCLmcMU\ULU^TNT|Sochi|Geller, Efim P|1982|A04|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQgmEUmcfngfecsPagC:;ZTemrj;CTC=]xy]UjmUmwxO`qi`oyqQYstagqhgxtmo^hq^mqxm\bZ@?C=\V[S?F=CFEZR|URS-ch24|Antoshin, Vladimir S|1957|C92|1/2-1/2|W +FVl\;Lme@FxgHPsd?HphEMwpIQgm>@vx<`dU=Em^GW^dW_UFEFdUFEh_L]og`N_VMVUdPXd^CKxy?Gtf:?umNW^hWNh^NW^h|Riga|Petrosian, Arshak B|1981|B25|1/2-1/2|W +EUm]DT]TFVn^@O^U?TwS;Esd>@ugV^ghOYhXEOtfIQXVTMV]O`SnMV]m`fmfVdkd=UruURn\RDu]CS\UY_U^?>vw<|Candidats playoff-4pl|Timman, Jan H|1985|D20|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdsEUsmOYmcU^e^=unu;EtkY_cmEOgVKDV\O^m^>^\fDVkV^VugVFru=>:>[R>:us:RsCRbxwPVC;@Ig^HPphbZ^pV\wn\fnfZbfmNW;KLTpUIHKCHOCGOVUcbrogryGFVMFnWEc\PXmfMVnmEW\eWefeVUedULmoLMg_X_h_yv_WMFd\vV\SFOl\OGSLGFWOFGo_VYqaYVLMVYMEYVELVYLM|Candidats final|Spassky, Boris V|1965|C95|0-1|W +DTxg;Lnf@OwS=Dl\BJSZFNm]LRkc:;c[T[\TCKTK;Kvx@tkC:rtDCmgEMV\R\t\C;Zc:U\t?@me^ele]auZT]tf?=wv@f]T]smOEwvBRjbETmcTJtm=KcRLRk[RL[S@wn?>k[RKmeDLvxIQdZKDl\EUul;EZdBJ\ULU^UEKgmKUdUOUm^fogEGe]:=]UDVrtL>mf_fg_V_u]_Xng>EvfXf]fGOfm=>tv>xyOaUMW_|URS-ch36|Vasiukov, Evgeni|1968|C99|0-1|W +FVl\@OmeEUxg;L\UOUjbGWul?Mph>@wpUOtX=>XO?Osm@ArtY\aYagaHXagX`gaL]wvDLnf]Ne]V^m\NXvuM?pwEN\ROGw\N\|Keres Memorial|Ehlvest, Jaan|1983.02|B93g|1/2-1/2|B +FVn^@OxgEUgV?Mm]O^we>@vxDTe^U^sdT]u]=DdSMVSDV]t_HX_X]VD:;LXQ?>o_^grv@l\U]sb?>blNtbTbcb;>xwO`bkDTkSEFqi`owoNKSRFfowKkRTWegx>NpgNOwpenvnknxnfgpxgoxyonT]Oo]=@I=Uoqyxno|Reykjavik, Copa del Mundo|Speelman, J.|1988|A43|1-0|W +EUxgDTnf@Om];LwST]f]<`qi`Yl\FNvx?Fp`YPgV:@SLCL\TO^og^hwoFasdGWtfW`i`h^g^aofoU^Z\=Orw@AxpOXofXFVPIPwyA@d^<>^MFOyi>;kc;[\nNVjbONb[V]n\N\c\|Kislovodsk|Lutikov, Anatoly S|1966|D38|0-1|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWsm=Oul>@sdOEqaEK\n;LaYPYyY<`YyFVgV`nulIQVLCLdn:@ul@AjbBRsd@tm=>dUNUjUOUph@AiaLT]TMTn_U_h_:=aYIQunTFmdFOdO?OruOMuM=MnlMLlm>]ulkurknwv>YvnYnrVn`xqQYVrYaryJRywai|Riga-ch|Koblencs, Aleksandrs|1954|C17|1-0|W +FVl\@OnfEU\UOUxg;LmeHPwn?Hjb>@ulBRsd@k[TBtkB;rt=MkOHO\ULVtRJ>VYuVRkcDVceOW^WVOu`H?`^?H^_E=_`HG`Y|URS-ch46|Beliavsky, Alexander G|1978|D63|0-1|B +FVl\@OsdEU\UOUxg;Lme<`nf=Ejb>VgU_uZ_ewe=edne=nhLVZ>VevnY>g]ekhWHPWh?Hys=]md>Snv]usuHd|?|Kliavin, J|1958|B67|1-0|W +EUphFVme;Lwp@FsdIQn^tfL]d]V]fmELv>A>rv>vgvUpvpCSpvLNvgW_muX`gmQYm^Yaha_g^hHQqiQfuvNVxq`ivwf_wi<;i`_h`hVWhXWEqhEGaYDL|Sochi|Semkov, Semko|1982|B06|0-1|B +DTn^;LmeHPtfCKe]?H]UL;sdEMumBJjZ=Dwn;Eo_@Oxi>@vxn\O`^VE?mn`fnfIQVNQX_WH]u]T]NG@GWPG@fX]dXQFVwGDGPG@Gkd>FQY?P\eV^e^=@phFVYI@H^PGOIQHPQ?OX?_XY_a|Sochi, Memorial Chigorin|Filip, Miroslav|1973|A21|0-1|B +@OxgDTnfHPm]?H]T=RsmRTl\TKweEMrsBRkc;JjbOEvx>@tkHkskJTelTZksZduvdsmsETsdlZ:ZdZ]gxo=mogKLI^NUXULU^UmUZK\d|Wch-blitz|Vaganian, Rafael A|1988|A13|1-0|W +@OxgDTl\;LsdHPm]T]g]?H]l=RtmRVlfFNphEU\UNUwp@mdN`lf=FumU]d]L]m]?>]VF?Te>V_VHQf\`N\MO`|URS-ch44|Romanishin, Oleg M|1976|A34|1-0|B +DTl\@OphEUwpU]xg;LmeFVvx@wvENuc=EdUNU\UL]f]V]ag:=gVEDjZO>ZR>Mcl=iaFOk[T[lZHPZ[@HaYMWv^PYrvWMLBDB[M>=Mb=U^>UTpC<>v>KSC^Ya>:BDJBah:@H@B:2@H^g|EU-chT|Velimirovic, Dragoljub|1977|E90|1-0|W +DTnfHPm]?Hxg@Own>@vxEUldBRjZ;Lkc=KsbO^bS?=gmT]d]FVm^V]^X]erjenuntkHkjkW`qi`gngU]f]L]S]K]kl]^g^>^lD^[wuCSuE:?ZS[SDBScBRc[|URS-chTJ Coop|Kortschnoj, Viktor|1954|E06|1/2-1/2|B +FVl\@OsdEU\UOUxg;Lme?TtmTKphGOdU=Uwp<`vx>\S^fof>fSnfhnphap^a`mo`Yom_gtwG@woYG^l@IluI^mEG_ECBCuE_DEiLVomgoiwV`|URS-ch37|Stein, Leonid|1969|B57|1/2-1/2|W +DTphFVwpEUl\@O\UOUsdEf\A>nf]L\V;VpL<[T@wnCKdU=Ume@wnEUvx;LgV@wnV^e^W^m^`gpgLVg_;KJRELtmV\n\L\^d?=yxFORZ\edUeUm[DT[RKkvwUewpefxwO]ZLkowofopiofipfnpi=>LU@Arj>f|Keres mem|Szekely, Peter|1983|B97|1-0|W +FVl\@OmeEU\UOUxg;LphHPsdUFtX?Hwp>@vxIQXF=FucL]g]V]d^DLwt?>cbFbkbGW^M>nrsnFtLCLpLo_DlpiONCUNMV\MDSCD=Ug>FC;=D;:HO:BD=BFOFJB|Tbilisi sim m|Bronstein, David I|1982|B70|0-1|B +FVl\@OsdEU\UOUphDTwp@me=EuZBJpLCLtfGWog:;ZlT\e\N\wuE>fo\NdZW_ZTFToT?OuM_hqh>YruYiM=@GxoiqofqQfoOgogQOgf;=u=O=lI=XfoNjIejUeJXWovWsvoslTb|URS-ch25|Suetin, Alexey S|1958|B39|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWwn=Oul>uxpUnu>fxwIYqi`hyxYaw_UV_afvxvVvugDT[TKTaQ@ga:;o_p^ESkcBRumRZrvZcjcSJXQJCm_KD^pVEp^EOWPGPQH@H^POU_XIQXtUdP^d^e^?wvwC^yxT\t_DB|Sochi|Andersson, Ulf|1973|A16|1/2-1/2|B +@OxgDTl\;LnfHPm]T]f]EUsd?Hwn>@vx<`\UOUqi`Nwv=KdZKDtXIQXm:=rtU_nwH]v^_ipiDhxy]otd=]unNUZTGWwpU^T^]^nwoKgXhMX^W^w\@Imv^fdeMV|Moscow|Stean, Michael|1975|D34|1-0|W +FVl\@OmeEU\UOUxg;Lsd<`nf=Ejb>ru>Nn_M_f_X_lZ<;uv?>ogNQv^_qxoQNwsqMZSCKoxN^d^M]xw>=^T=USL]\wx\TLTUTsv;CvfKSfFTdFHdbxoS[onCKHIDTp`T\IA[c`XbjnfKTAHB>YI@Y`@A`iA@ih|URS-ch sf|Lein, Anatoly|1955|B68|1-0|B +EUnfHPl\@OuZ;E\UOUsdUdmdDLxg?Hf^>@t_FV_X=DZlETXfTNjZIQph?=w\CKlt@IqaDFaYPXtlI@vwN?wp<`\n`Ngq?Iq`F?ru=uyu:=ZR=ulu?;uZKSZ[BJfT;<`fI?TM?EfWNW^WH?M?i`>E`WEDguLT[T;LugL]W`DEgUE>TLS[UG|Tallinn|Zilberstein, Valery I|1979|A40|0-1|B +EUm]DTld@Oxg;LnfFNsm=DweU=>VDVgV?MV\R\m\MDkcCS\kBJf^DVrsYPwvVdvnA>ogGWtX=U^U>nkenjeTd]xyW_st]fUMPWtufTMEWEutENc[N\[Ttf=EyxHXfo>n_XnlgWlkqaM[jb[drtEeW?@uZ:=ZaF>p`V^gXUOmdK]X^O^f]L]d]=]e^]^vx^nrt>Vk[?>tuDT[TVTahnjwv>vuvHPvf@HfgjrxqrugGHGhgGNguTMuMNMqhMVhgPXgfCSiaXao_VUfgJR`XS[|URS-ch sf|Yukhtman, Jacob|1956|B94|1-0|W +EUxgDTnf;Ll\U]f]T]me@OphHPwp?Hvx>@jbBRsmOEwvETmcTNgX=KrsIQXN@sd?>tXDTVgT]XO=Ou]O]g]MVvt;LnSV]u]L]S>]l>G@Gtl@meEUsm;Ln^FVldIQuc?>wvU]m\:;jZ;ts|Belgrade URS-World|Najdorf, Miguel|1970|E69|1/2-1/2|B +FVldEUm]V]d]?MxgIQqi@vx=FwvO^elGWd^W^gqFavn;JjbJDlmDNmv?gvwgWtmNXmvXgqg^gnlgpxpa^|?|Leonov|1949|B13e|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLtXIQXaEUaO=O^UOPvwPMUL;Ld^MFl\?xhaq|La Habana olm prel|Olivera, Alfredo|1966|C90|1-0|W +FVl\@OsdEU\UOUxg;Lme?Tnf>@wnwv>vrvMEZ[K][c@AgX]oxwovXGA@G=@?=N?FNTELcfFMf]MD]HDKTEKRHVR[Vv[bvRbkETLMR[kj[cjrcdrsTeMKdtsjtljbldKcdTbZTBZSBC|Lugansk, Cto URSS Equipos|Arulaid, Alexander|1955|B88|0-1|B +FVl\@OnfEU\UOUsd;Ljb?FxnGWdU=Uk[>@ul@AndUGwn@k[CKul<`wv=E[SLR^U`gpgFUtkDLSLRLsm:@wn?>k[RKvxDLmeIQdZKDl\EUgm;E\ULUZdEKbZDMrs=Ftb^p^|Amsterdam Interzonal|Reshevsky, Samuel Herman|1964|C96|1/2-1/2|W +DTnf;Lxg@OkcFVtk?Ml\>@sdV^gXMVutEMX^O^d^GW^dW_ph<`h_V_wn=an`a`dn_VkVLVtd?ovo`goxgnrw:?|?|Van der Wiel, John|1982|A17|1-0|W +FVl\@Onf;LjbEU\UOUul?Msd@d^IQw\LR\jDTme:<^M=MtmRLvx?=wtCKgvUOjNMNkcNWmdL[d[T[lk@I>Gd^GWI@WN@AN>AI>^l^vu^l|Buenos Aires Najdorf|Panno, Oscar|1991|B48|1-0|W +EUxgDTnf;LwS<`qi`Yl\U]k[]fofT[m]FNvx@OuZYgwg=Ejb[bsd?F]UNUgOFO\U>@ULCLSLEerbOdLSesbd:g^>?kb?@^U@HUVH@bkIYVA@GloGFAVKNkbFEom|Tallinn|Spassky, Boris V|1973|E30|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUul;EtmE?\ULUrt?NZdU]dSD;bZBJSbCSph@k]:@rt<`qi`Yd\O^p`YP\U^TtTMTgVP^vx:=wuTMV\Fa\M=Mc[aFkb?=[]IYbM=Mog^Uf^ME]BFVnwUNuENEjZVdxoEN`YdmwnN\BfmjSK\nfnjZnmZSm=@IiaSkohkVh`VN`_Ni_fiw=Dwxfexue\un\TngDCgdTMd]MFGWCLW^KC]VFEVWLNWSEDSTD=TR=ERSNLSWEDW_LM_GDLG\MT\NLDNGDKGOKBOrB;rO;:OJTBJLBRIA:BLERVEZBKZ[KD|Milan|Ljubojevic, Ljubomir|1975|D47|0-1|W +FVl\@FxgEMsd;Em]DL]VMVph=DwpBRvxETdZFWn^W]gVDVZK:Jt_VNK@CFLtSc@Avt@wnEUvxFV]SU\n\BJSM=Ff^@vxDT]T=DjbDTk[TDtk<`sm;Ert`gmgEKkVDLg]LEl\K\n\U\t\:<\@jbRTl\EUk[TMtkc]N<]LCLkVDCu]OYVHYHf^HN]fNDfQGO^VDNne?Grv>?vfOWgaGHo_JRwsR[b[CBfh@m^U^ghPOh_OFwnBJS]L[d[F[vuDT_^T]neHP^][Fun?=]ZFXZ_XT_\TM\]MLe^L>]\Sk[R[bkGW^s[d|Candidats sf1|Larsen, Bent|1965|B04|1-0|W +FVphEUwp@Ome?Txg;Lvx=FldV^e^U^g]<`qi`EtfLVsmTKm^O^p^V\^C\fofFfxq:=wgfVge>@CpDT]LELpLKDuvIYruYan^=eueVOLUDhehOVqpVhvhahph?;kc@?h_?F^V;=d\BR|LAT-ch|Balinsh|1954|B08|1-0|W +@OxgDTkcEUnfHPtk?Hl\U]f]O`ulT]qi`Qme;LjbBRph>@wpFVvxGWsmQGc[R[b[L[lc:rwr[Jgv=Dkb?=pUH?vg?bcb@Hrv=>g]DTbZ>F]g@xg@xg?>vxIQkcBRtk=vnO`mg=ek]:>^VGOVOL]g]`fpof`ov>n]nHXqi`Vvo@GrwGOn]OP|URS-ch42|Alburt, Lev O|1974|A43|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wnRdmd;LtXIQXa=FaOFOueEMvtLFtsneKLwxU^e^NU^ULUgfCK`XQYtnUmf^>NxwmU^fU\fgNMn_\wgwMuwu=usjV_qouxjcx`oq@Id\IPcdPWde`he]W`|Prague radio sim|Hudec, Jan|1960|C85|1-0|W +DTxg;Lm]T]g]@O]LCLphHPwp?Hvx>@l\=Rsm:;n^EMjbO`rs`Vul@ul@AmeGWsm;EwnEOvx=Fm\V^e^W^gm<`m^`n^O?OlnMqxqOQqxU_n`Fa`a_nxqQa|Berlín, Simultáneas|Amateur|1974|B42|1-0|W +@OxgDTph;Lm]T]g]HP]LCLwp?Hvx>@smEUld=DuZ?=mcBRwvIQd\O^t_FV_fGWrtU]fm^mcmV^\T@kc<`qi`WtbBRwvIQunFP\TMDsm=EnwWNm\GOgmOW\KDKTK?OrtRZc[NjtT:>iaP?[SL=mg=GgVGVvV>VTVOKwnjGVFESFG@GnFGPF?SepUW_?>|Skopje ol (Men) prel|Beyen, Roland|1972|A65|0-1|B +@OxgDTnf;Lm]EUld<`]TFVk[BRuc`gpg?Fjb>@tkU]d]V][SRZcl]fSLOUyx=RvuHPk]?=utCLw\fnsdFXtkU[l^=>]V:;xX>V^V[ekleVXVR=V^;klk=mksnv2^vmvskvmksmd|Zuerich|Keller, Dieter|1959|D44|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxEUtX;E^ULUdZKDZTE?l\CKTc?Ectm\>DND;DZRA=RKBKyuEunuKS\bDKunCJru=uluKRumPXblJFUD=TM>SUD|Buenos Aires Najdorf|Amura, Claudia Noemi|1991|A41|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQqiEUwv;EnwE?tm?PdZKDZTCKTc=o_]eno\d_VDVt_VN_tJ\ofFavxemtm=ef_ah_X\cmveuvhdlh_NK_flt2|URS-ch36|Zaitsev, Igor A|1968|C93|1-0|W +@OxgDTnf;Lm]EUwST]f]<`qi`Yp`YPgVOEVLCLSL:@C<=@wnEUvxL]f]@]TFTtmTKrtLTjb?=un=>neEDhW:=wvU_v>=>m_D_tv>vgv_VvgVkeMkSgVOVMVSsxqKDVDsWD=G>=>W?>?@?qhHXhg?Fg^FNbZIYZRBJ|Hoogovens|Dvorietzky, Mark I|1976|A28|1/2-1/2|W +EUxgDTnf@Om]HPwS@ld=DsmEWkc;EtkFVd\V]f]?>rtDR\UOUm\RJ]THk\kJju]E?n\jR\UWNk\|St del Esterol m 5'|Quinteros, Miguel A|1987|E08/01|0-1|B +FVl\DLm]V]u]EUnf@Oxg@sd:@vxOUd\UDsm:;jbCKm^twN?gaT[k[@In^]fmf?ERKBKe]FNagH?[c;Fu=A=gaFNp`CKjZHXaWIWwW^OqiBRkcOEl^GOWwEVtl=A^WNFlmQY`YAYmnVGwuGMW`YAf^A=nfMGuUGV`W=MW`M=`WVLW`L]`u=Au`A=`u=Mfo]LunL[^VMNUmNVngOWgCW_ogVfg`FO|?|Balashov, Yuri S|1974|B52h|1-0|W +FVl\@OmeEUxgU\gV\eVe;Lsdk[BJqaP^ru>=xyHXog^PhvmvuvXayq=]vV<_oT[rsHXjb[RixENxgX`gaL]o_A>woNjswRKk[KJaW]n[SJbonbkmvkd_m>nvndVWfjUw_UgnoVSf`g`_`Seme=e`@?dScmwumgSD:;pgV_ypKEe]_XqaXY>FDlpgEO]MO`FI`QM=ldg_di_ViaVOY`OPW_IQaQPQ_g=ugoQP`gPWgnusow2swnwW^wn^]nm]\ml\SlcSRCK|LAT-ch|Skvia, P.|1965|B41|1/2-1/2|B +FVldEUm];L]VLVt_VP_h?Txg@Osm>@nfO`qi`QweQWeWucT\c[KDhD=DkcWeZR:<[S>=c\BJSkU\rZ=UZ[<;vrUTkbPFg]FU[k;ntePtj>=j[UO]l=fU>DUK<=bZednm=>m]DS]\T\K\>EqhENZ[GOh_dl_hlniaIY[snjs[jrh_ryphyth`HP`YPY\ftr[\rR\TS]|URS-ch41|Averkin, Orest N|1973|B18|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtfEUfKBKqi;E^ULUdSE?l\?Pwv:>u]>^]mU\mEOESM^]MW]mWF@?FLCLqgmkZRKR[R\drt_Uw\dlxqU[RJks|Asztalos mem|Forintos, Gyozo V|1963|C92|1-0|W +FVmeEUxg;Lph@Owp?Fvx>@tX@vxDTmeEUsm=Dn^?=wv;LldU^e^IQunfm:S`^S>NE>Yh`Ya^PHAVG|Vilnius, Cuartos Final Cto URSS|Klasup, Karlis|1955|E60|0-1|B +FVl\@OmeEU\UOUxg;Ljb<`nf=Oqi`Nf^UKwn?FtfOPp`GOsmPGul>@vw:=wp@Ak[BJrt=EtsHPlkKZklZKlk?=yuKZklZKmcOWcTW`i`FT[TKyaL]g]V]fXG`X=;syFLaQ;?o_LFmvFL_WNW^WGUngUWv^W^g^?>QIEI^U|LAT-ch|Kliavinsh, Janis|1955|B95|0-1|B +FVldEUm];L]VLVxgVgpg?Tt_bdU]dRWTRT>vtvBTvVYhVThnxylZpi<;TWntWGtcm^LTiN]e^demN`ZLyx=@qiQY|Las Palmas|Larsen, Bent|1977|B16|1-0|W +FVldEUm];L]VLVt_VP_h@OsmIYqi?MhM=Mxg@wn?>vxP_wv_pxpO^vyMQyqLTmw:=ruWEZcELpx>NgvNPvp=Mog^hwhPhxoYacbCKbBU]d]T]u]M]f]QMBbM]bf]OqyLEyuEif>@I>^I@p_iW^>@Iu=IQ=UhX>=aiUMiqMOHO=OWP_P|URS-chT|Keres, Paul|1959|B19|0-1|W +FVl\@OsdEU\UOUxg;Lme<`nf=Ejb>@gVEUk[RKm]U^tf;EV\DL]UKf\fEKUL=Du]?=dSDF]TFT[TKZSD:;DJ;:JD:;rsZTDJTJwJO>LC>DC<2;svn=@kcV^tkENrtTMqi:@uc?=m]T]f]cg>Fp`Y`i`WNU]<>]^NFguFvuv<`vVLg\T`NjZNUxwULwvgcvmc[mt[ctmc[mt[bV;@H;VHQo_QI_WbgWPGPkuLZVFI@F=@G=DG@D=@G=DGND;MNGM_GHf`>N_DH?D_?>_;>E`VEF;DFOVePXtmNUDKOWmdLSekX`KQUTdcTUcbUNQYW_YaSnao_X|URS-ch44|Grigorian, Karen Ashotovich|1976|E32|1-0|B +FVl\@OsdEU\UOUxg;Lme?Ttm>@phIQdU=UwpGWmdhiOPwo]E\tEFtlW_igFfgf>fltPWtxX`xtfiop_gngigtwgwpwWXwxXWxwWVwvVUvu|URS-chTJ Coop|Suetin, Alexey S|1954|B57|1/2-1/2|B +@OxgDTmeEUphHPwp?Hvx>@tX;Lum?>wv=rsCKmeYRvnFVsSRbScbMagV]d]L]g]M]eg@ul=Dwv?=n^:@sb?>bSV^jb[?e^]envW^kc^fof?Ttk>fxyfvrv@vxEMme:;rsKDk[<`ZLDLf^T[s[CSqi`gugS\[\LEtXO>dUFNU[;SXmECgnMU\l>Mm_NV_fU^fT?=TM=Me^H?[UMLbZSslLswnwCLwr?Mrj@Hp`M;jk;MZRLTkKTKRKH?xw?>wn>EneELe\MTogToU[LK[eoh\[h_[\JReTKLTePXeT_fTef]etRZtjZbj[LK[UKRU[RZ[jIQ|Moscow|Lengyel, Levente|1971|A17|1-0|W +EUxgDTph;LwpFVme?FvxGWl\@O\UOUsdFjbBRrtNcuvCKgmcUpU=Um\A;\fUEfWFNWfL]t\EBfl]l\lRZl\NUvt;?o_?>n^UNxo>?of?=qaNMtuMN_VNVe]VNum=<]TKTmUBR\lRSf_@^UNUwv=Dsm:=un?>m^IQpiCSkcT\c\O^e^U\nkLRtf\egmR\m\S\iw=;km>=we\ersBRs;D;mu;DumD\ogRZxp=;vuZbpi\Nh`NOmo;kumFTg_V_o_Tf|URS-ch42|Dvorietzky, Mark I|1974|E94|1-0|W +FVn^@Osd?[o_;LxgV_dUO^w\>@vx^OldOU\U[Mm]LFU^FPgVMV]VEMVM=MuMDM^PIPt_MUru@]cENul=MwuMVtf?=lnN\ng=uguVDcT:=ulKETE=ElZ\NrtDCZbEebBCBfBemtsHd|Bugojno|Timman, Jan H|1980|E20|1/2-1/2|W +@OxgDTphHPwp?Hvx>@l\EUme;LsdU\e\@ts?=\cXYjZ:@sdU]dnO>ldMo_GWpiV_m_MSvlL=iWNW^W?WtnKNjb=Lh`WGnhHPunNnhn:@gaWNsmIQXOFOagRZul=Dws:BsvOFvnBRrvN`qi`Yk[ZcmcRbh`V^n^YP^FLFg]DE]SPeldbcdcFPvue\|Moscow Interzonal|Garcia Gonzales, Guillermo|1982|A75|1/2-1/2|B +FVn^@Osd?[xg=Fjb[Rwn>@k[RKvxBR[SEMme;EtXFNdZKBl\ETZdIQXmNFrsBKgvTNdZK]vlwoQY]VFViaOW^V|Candidats sf1|Kortschnoj, Viktor|1968|C86|1/2-1/2|W +@OxgDTnfHPm]?Hwn>@vxEU]T=DjbBRsdDTu];EwuFN]aNVtmCKk[TL[RKRnSLDrtETmvIQuUPXa\OUdUDMtu@xg?>vxBRjb[?kcIQgv;JvlJTtk<`og`YrsDLc[R[b[TZm^CS^O=O\TZkskHXusYPpiO=kj=UjrQYsk?QipUNr:>:wr:rlrX`rl`gpgGWkrV^r:@H:CNGCL^gLgGjl]jrxpr]TL]M|URS-chT|Gurgenidze, Bukhuti|1975|A43|1-0|B +FVl\@OmeEU\UOUxg;Ljb<`nfGWtm=Osd>@wn?>k[RKmeDLvxIQgmEUngBRdZKDmcU^e^;El\R[b[=F\TOIgnEOog=piDMTMONfXNiyxihxyhorxYhxhah\foq|Moscú, Copa Equipos URSS|Geller, Efim P|1964|C92|1-0|W +@Om]DTnfEUwn;Lxg<`qi`gngFNvx:@kc=FtkNV]VFVphVNgp?=ulCSjZS[d\MVkVLVrtU]tvVLf]L]leNWeW]Wmg@?vVW]g]=]wv]eVF<>F>O>vVecVTcsxqskTRkoRBolBC>MC[M\[;?F;@wn?>k[RKvxDLmeIQdZKDl\EUtkCS\SLSZT;Ee]V]^UET[T=UnS:;S>;kwv]eut<`vFkltfO>F>@Iru`gpglnfeUeuen>eE>@tm:=k[V^e^F^[SLV\KYgZ^g^KU=Uog^ebZ?=mdUTrtenvnVetl=M|World Cup|Ehlvest, Jaan|1989|B86|1/2-1/2|B +FVn^@OxgEUgV?Mm]O^we>@vxDTe^U^sdT]u]=DdSMVSDV]t_HX_X]VD:;LXQ?>o_^grv@]TMTsm=MjbBR\UNUkcCBEN]KUeBRecK]X`R:>EZRcb:BE>qhbj]V>=VO=@sm]fofNWf^W`td`gmgEVgVLVrtCKe]T]d]?=]K:;KTFNpiNKTK;KwWGOWoQYiw@Iwp|Tel Aviv|Davies, Nigel R.|1990|B03s|1/2-1/2|B +FVnfEUm];LwSV^kc=XSw@OumBRsd@qaXWphF[wiO`_U:=vw[dUdLVi`V`tb?>wxCSbTS[duESmv>VT[R[]VDTl\`VvwVgxpSLukWOkZ=mrumjZTIYurgahaOgpxg`xq`aqxa`xq`aqxaXxqXVqpVXpqXV|URS-ch45|Petrosian, Tigran V|1977|C16|1/2-1/2|W +FVl\@Osd;LphEU\UOUwp@vxTKmeIQtm?>wv=MdUNUmd:=ruMNkcL]g]V]dkUpxp=UZ\NEqi>N\lKRvyNLlsENjbNnutLPiaUWk]ngpqW_]f_ahaPp|Bundesliga|Seibold, M.|1991|B35|1-0|W +FVl\@OmeEU\UOUxg;Ljb?TnfTKk[>@wnGWvxV^e^W^gm=Om^OVn\jmKDqiCSmlDKxyIY^_OP_^PO^_OP|Moscow|Bronstein, David I|1971|B87|1/2-1/2|B +@OxgDTl\;LsdFNnfEUm]T]f]?F\UNUgV>@wSLV]VU]VOFOd^=RumRS^OHOm]jZSJrt:=]\=<|World Cup|Timman, Jan H|1988|D32|1-0|W +@OphFVwpEUmeDLxg?Mvx>@sd;EwvETn^U^d^O^e^=DunCSga?>tfBRruTZft:agGOumDGd\S\c\IQqaGYscbBxqN`ce@IlcY>cu`Ne=:=m=>GulGD=mDGpwBbmebrwiNiqiGBlnToaYoTgqBGn`G\e=|Hoogovens|Langeweg, Kick|1976|B07|0-1|B +@OxgDTnfHPm]CKwn?Hvx@tkFNsm=FjZ;LgVT]f]EMVLCLl\FCngMUun?=wv:@wt:PI>NtxpgseNfeWf_We_fePfNQYBFPeNfeWf_Wigniwngwpgnxr_mpwngrbFfwygnbrf>IPqaPG>frtfeywngtvefwyg_yi_giyg_vumdutdbGPbePQf>HP>@OW@>tDefDG>AQHfVGO_Xyto_|URS-ch25|Spassky, Boris V|1958|E26|0-1|B +FVphEUwpDTme;LxgGOvx<`l\U]qi`Nnf=Ef]T]ia@FsmF@o_OW^oV^e^N\wvgvUpnpEUpnIYvg>FgXF>ut=EnmE=egUgXg=UgvL=ve=Nc[R[b[T?t\@GmlUSqp>=pgSU\LUSkt=:tm?FgnF?L<:GvN:=gXOXpU=UuUK]NFGFtXF>rv?FvF|WchT U26|Szukszta, Janusz|1956|E86|0-1|B +DTl\@OphEU\UOUwpUDsdHPxg?Hvx;Lme>@tmCKjb@ulV^e^U^g]?>sbBJb\KBwu=Fk[EV\VFVt_VYd\=MTBT[TipxpYT]cTLu=<=ru=>nfIYqaO`\T>VumLDldCKTLVNc]NP]W@ImEDLdLPLEGIPG?LljZlo|It|Karner, Hillar|1973|B06j|1-0|W +EUsdDTm];Ln^T]dUFNU_NV_YHPYh=KjbIYqa<`wn`nun?Qk[BRtQ@Q[SKTneLBrsCKxgQ`vx:@bZ@vxO^g]WPph=DwuMVtm?>mvDKk[:=jZBJrjV]u]=]\]K]f]^MogGOxoPGjkCSksSZsrGcnJ>:JeZbvdcUofbjrt:bfmUgdrbctlgUlkcb[SU\SLbemlefk;f>|Sevilla Open|Oll, Lembit|1992|C10i|1-0|B +DTn^;LsdHPph?HwpFNme@FxgEMvx>@rs:;jbCSdnBRe]T]g]S[b[R[sr=DtfLVfX;KkcIQXmV`qi`Ol\[dndNV]n@tmFawp?Ovx:?dZOQZKBKrt@Ag_V_JS_gpgW_tLQPxyEiLPahPh_h|Dubna|Platonov, Igor V|1973|B97|1-0|W +FVl\@OsdEU\UOUphDTxg;LdU=Ume?Fwp@jbGWk[W_fm_hqhT\mfFOe\V^gXOrp^r]XN]ftuEGN_GF^U@AofFfxpLVZlV`uwf_|Alekhine Memorial|Parma, Bruno|1961|B36|1-0|W +FVl\@OmeEU\UOUxgGOnf?[sm@jb[FulBRkc=>tk>Pwu@Axy:=rtPQm\NGtsGYuvFM\MDMl\UDyxYG\aQagaLFvtDNag=n`SZKSLbZHP[MD:K:L:`N:CMTB@sm=Em^O^v^NipiEitQHQuY@I^`LFrv:>vFMFYWIAWVGOVYi`Y`?@`EAHaWH?WQ@XqaXVE`F=`@?F@GFMGC|URS Cup rapid|Vladimirov, Evgeny|1988|E90|0-1|B +FVn^@OxgO^me^OgVEUe]?Mwn>@t_DT]TMTvx?>sd;LVeTMngU]_M=MdSM=e_HX_nX`gLCLSbLTnh:>hWLOWhEV`iVerw>viWOWhWvnWankbSeVSM]ewuCLaW|?|Veingold, Aleksandr|1981|C42s|1-0|W +@OxgDTnfHPm]EUwn?Hvx>@]T=DjbDTk[TDtkl\U\XNM]H@Hwu:<\c@jb[Frs?>gvVmRWipy=>og^fg_VYyCiwvwEiwofoxoiqCpYiuxqhowO`x]iypy`q|Bled/Zagreb/Belgrado Candidatos|Benko, Pal C|1959|A43|1-0|W +FVl\@OmeEU\UOUxg;Lnf?Fwn>@vxGWsddUNUk[:=tkFOulV^e^W^gmOklkLVru=MkdMPdD>NDTCKT]Vgng^gphPXxyUcutNiwxXUmcU]c]?OtLOL]LiN[SNjxwj\ws\e|Stockholm playoff|Andersson, Ulf|1976|B85|1-0|W +FVl\@OmeEU\UDLxgV^e^O^sd^dkd?Tnf>@UL=OLD;Jg]JDwnDUucUKvxOPngIYtbTbcbYabFaiphK\gU\MFV<`rt:>V_M^og^Of^`Ed\>F\TCKTLEN_MOU^UPXUNXfxyFN|?|Neuronov|1970|B53c|0-1|B +FVl\@OmeEU\UOUxg;Lnf?Fsd@vxGWf^W^e^U_t_?_u=:=ph_GdUNiUDi`g]`n]n=mndFTDNGowoToxyL]N]o]dU]krsCKUF@GF@d\HkckBR\U=Um\UX[SL[jb[U\MUfofXftsgout:=w\CKkO`NOdfdtdKTMC=]CRPXyw]_\NGNSKX`KC?;dT@HT<;CRC`h@vxEUldCKk[T\sm@ZdVM>P\UP>MD>SDKSwUNovKLbZLKZRKLvoLUovNEvoBJ|?|Shuravlev|1977|A34|1-0|W +@Oo_CKmeEUxgHPph?Hwp>@vxh`>MxyFNtf=Ff]H]g]NV_VFVvo:>o_TE_V>Vk[DT[TKT]gVFgmU]d^M^m^GW`WPW^hCpypEKn^W^w?|URS-ch58|Sakaev, Konstantin|1991|A04|1/2-1/2|W +FVnfEUm];LwSV^l\BJSLCLxn=Xvx@Osd?Mo_^gwg<`go`nonXYph>@\TMFtm?>uwF=rvO^d^>^mR=OxpY`RD:>wg`Npw|Subotica Interzonal|Short, Nigel D|1987|C18|1/2-1/2|W +DTnf;LxgEUm]<`smFNldT]f]?Mwn=Dvx@Owv>@mwBJwhO^gX`nun^XtX:>XmGWhwW_neDGd\_gphGY\UYiwfNUewiYflYPrt>vwv?>mfIYvwPWqiM;xy>Nkc;MyxLFxyW^fXFWtv^lvNWhohMhwxlWN>@Ixwgo>fWXfgXPgfYafnPXwuI@uw@GwuHPuwGHwuX_yphqno_hpwhiopq_unHQn`i`p`_hwpQYpiJR|Taxco Interzonal|Saeed, Saeed Ahmed|1985|D36|1-0|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tfDLwnG?vF?>F>@G>;CSTKBKbZ|Candidats Tournament|Kortschnoj, Viktor|1962|C83|0-1|W +EUmeFVxg;Lph@OwpIQvx@^C:;CgDTtb;Snf]VgnSKbkVWf^WPn\?;kdFO\NKNdOPOlTN^wv^vsvOkc[HPTM;[v>@I|Tbilisi|Novikov, Igor A.|1988|B08e|1/2-1/2|B +DTph;LwpHPxg?HvxEMme:;n^FVsd@Fga>@o_V_h_GWdnMU^VU]l\]dkdFUagIQd\UFe]T]n]=RucPX]LFL_XLVgVHVpU@IXPIPxyCScf|URS-ch39|Nikolaevsky, Yuri V|1971|A26|0-1|B +FVn^@OxgO^me^OgVEUe]?Mwn>@sd?>t_DTdSM?vxBJSdT]u];LVLCLngNdZO^l\HX_h?H]uU\g^N^ugWPZTX`gb^nt\=U\`IY`Z:>qiH?k[nv|Jurmala|Garcia Gonzales, Guillermo|1983|C42|1-0|W +FVl\@OnfEU\UOUjb;Lul@me?>wu:=rt`Wd^F?^OHOf^WPqi?QtsL]g]V]ktQHp`>Nt_NLlm@AstLdtd]dmdDLdt=@xqH?tfENuxNjiajbaYb[YPGPe]?H]U@>UMH?ME>=xu?TfeTKus[T_fKDqpTFsuCSo_PX_XLTeUDKXOFOfXOkumkd^VAHXOHPU^PG^IGNmM|Munich, Olimpiada|Reissmann, Paul|1958|B43|0-1|B +DTn^;Lxg@OsdHPwS?Hvx>@^VO`SLELwv`Qd^CK^h=UqiT\kcQWc\U\me\dtmdThWfn_Wn^PXcuLPp`Y`i`W_^_X_ugGWVOPOxpOrgL>GLUG>`X>?UW?HWNH?pgrZg`Zuogux`Yx]NQ?@QK]MKCMNYa@HC;Nva`vh`WhiW^iI^UIeUTebTLbgLEg^;kHPkKPX\T_gTL^WEFgoLDow2KfXPfhWX|DSV-Turnier|Liebert, Heinz|1974|A29|1-0|W +EUxg@OnfDTl\FNm]T]f]?Fsd>@weU\e\BJvxCS\evwGObZ@?ZS\keTET]T@tsFUbTU_f_NWsrV`T]?=SM=M]M`oM;:;w\oyuy;=ph=mjb@?qiIYrjWEiaCS\cE`ytBRbZSZcZmetdedkd?FjbFMZc`NclMTleNEbcESesSEseEWeJW`cZTKJ\`N\eNEZbESesKTbcGWcbT\bkS>slRZ|Sochi|Hodgson, Julian M|1986|B13|1-0|W +FVl\@OsdEU\UOUxg;Lme?Tnf>@jbE]>G]^VMwmSWm\Wo\MGO^>O]no]oxyA@>?o?v>|URS-ch23|Khasin, Abram|1956|B88|0-1|B +FVnfEMm];Exg@OkcDLtk=RgmV]f]?Fwe>@vx?>m\RDsmOUwvEOm^^flMUv^U^lf:>d\DRulLT]TOklkRTru|Moscow|Byrne, Robert E|1975|C00|1/2-1/2|W +FVmeEUxg;LphGWwp@OvxXiEWbSMVtfBJSd>=wu=uruA=u=F=ogVd\d^gngOUdmUfmf=uxoulfnL[nlWliX@wn?>k[RKvxDLmeIQdsEUsm;EtkKDwvE?nw?PphCKwpU]mc=FldLTd]T]g]V]^VPVp:<`og`Nc]>:]NFNkVDVe]|Hamburgo, Match Alemania-URSS|Unzicker, Wolfgang|1960|C95|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUgmU^e^;EogOImc=OZTE?rj?Pwo>=jm=mum|URS-chT|Grushevsky, Alexander V|1963|C96|1-0|W +FVldEUm];Lph@OwpIQ]VLVsm?TxgVgmg>@vx?>t_O^_V<`V]TM]fDLgm^Owv>fof=Ff^MTxyU^ulTovw^fmgFTlZ:>Z]TYwoO^ga^oyx`nrvoepgng]eg`vfYTapTKxw>=e^`ife=e|EU-chT Kapfenberg|Kolarov, Atanas S|1970|B15|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQgmEUmc;E^ULUe]KDtfV^umEKcR<`dS`nmn=;qi>f_goxwPWqYIPYQPHyp>NQaNPpqP`|Candidats Tournament|Olafsson, Fridrik|1959|C92|1-0|W +FVl\@OnfEU\UOUjb;Lul?Fk[BJtkGWsd@ndUEwnE>meW_vx_gng?gpg>Yln=Mg_N`og`i_VMPxyipnpPpypLVd^VP^hYUpyPah^UYumagmpYipH@?woFa^XaXHX|Leningrad Interzonal|Huebner, Robert|1973|B43|0-1|W +FVl\@OmeEU\UOUxg;Ljb?TnfTKk[GOwn@[R]Sdk:RtmRJunEUwtNEm[?GbZSM^TKTtTUNTDELDGMGklJ:lTIYZR@HrtNjnw:@sdDLn^EU\ULU^VO^m]^dkd;LxnLRvxCKwvFNqa@vxUMtfL]rtDLwvk[N`g]V]f_ME[SLTRDED_D:NpCNMC<`@vx;En^U^e^ETunCSwuS[tf@ULCLrt:@wn?>k[RKmeDLvxIQdZKDl\EUul;E\ULUZdEKbZ=aWX^v^PWZd\N`iDdmdW^uME?iWNW|October Revolution 60|Kuzmin, Gennadi P|1977|C99|1-0|W +DTph;Ll\@OwpFNxgEUvx?F\UNUm]>@sdUMPG`XQXaXjkXPG?fUklM=lL=:LPh_PN:BKSB:?G:BGPBCPIUdNO_fOWC;>L;KWgfm|Parnu|Keres, Paul|1971|D94|1/2-1/2|B +FVld;Lm]EU]VLVsm@OxgVPnf?Md\>@\UOUw\UOvx=FkcVhahqhYgyx>vwvAIbT=mvfgLTBmjBTIPT]GOxwLUc[PW]TW`wvjrvorjovCST]jJvoHXfFU\F^`i^fJM]dMufvuUvfOWovipdV\cVOUuvnuMOFcunvMEfNu`FMW_|URS-ch32|Vasiukov, Evgeni|1964|B17|1-0|W +FVl\DLxgV^g]EU\ULUme@Osd?T]cT[tm;Lnf<`wnLVe^Vevw`nunU^jb[Fc]=Dru>@d^ek^OFOutDEm[O]f]kZ[?:?nVZktDEZphk\VUCSwpZlDFBJyvHPF>@H>?H?U=?Hv>IY=FleF?HO?A|Tallinn|Gulko, Boris F|1977|B22|0-1|B +EUphDTwp;LmeFVsmEuZEN\TFOZjNFtbAjU;DU^>=^U=>wsD=U^OFbF=F^I:DIHDNHAF?AO?FOAF?AV?TVTNTstTNn^]fof>FxoN=LD=Nh`@vx?>jbBJk[T]f]=Mng@wvkcLVgVDVmgVY^VO^e^U^gXYnvn>=t_=eX^?=^M|Hoogovens|Van der Wiel, John TH|1988|D45|1/2-1/2|W +EUxg@Om]DTnfHPwS@sm=Kld?@xgQN>=NM=>`@>GMN|La Habana, Olimpiada|Kristiansen, Erling|1966|B42|0-1|B +FVnfEUm];LwS?Ml\V]u]@nfT[jb[Rum<`vt@Awn`gngU]f]RdkdFU_X=EmeUKd\IQqaKZVNEN]UNVULVktmZTeUTcmvCLUecTeP:>vw>NPYklwxA@Xt?WY`NOxqQYu=@I`]OPtXWg]Tg_qi_aialpTWpyahyxh_xt_^tXWXPX=EX`^W`\ED\dWXdTXaBRDEIQEMHPMeRZe]PXahTdhodb]MQHMLYaopbcLJZbpoHIopX`JZckpxbj|Riga-ch|Klasup, Karlis|1952|A82|1-0|W +@OxgDTnf;LkcFVm]T]f]V^gxEUwn?Mtf=Dqi@[SLRc[]fkH@H[dGOdf=Dm^:>uMIYweCKf]KT^T>=T^=M]MDM^M?=\TRCMC=eSKBKTKeUyuUSuM`WtmYamfSkCTaiKCiqMuksus|Niksic|Nikolic, Predrag|1983|D44m|1/2-1/2|B +@Om]EUxgDT]TFNph?Twp>@vx;LgmIQmcTKsdBJn^U]dZKBldNVd]L]c]B]tm<`pg]kZk`gug=mke:@jbBJZuEvuNUqiCKh`WPfd=N]UNPxylop^GWsxokxPYP^ekmeJckUMW_f_ks2[sP^yx^sME@?|It|Bronstein, David I|1967|B01z|1-0|W +FVldEUm];L]VLVt_VP_h?Tnf@Osm>@wn=Fxg\M>NYaGOMW]WeWNLVOLOWET\tv|URS-ch39|Shamkovich, Leonid|1971|B18|0-1|W +EUm]DTnf;Ll\T]f]@Osd@tf:@[SLFvxFPjZ=Fsb:;ulW_\T<`mg;=rtOUbs@AZR_hqhP_lm?OSKBKTKDLRJCJKC_pxp`gngFCmnONn^UO^WNFsm=?m^CDtTOEW`ET^TDMT^MN`aF>wyIQ|Wch-blitz|Chernin, Alexander|1988|B09|1-0|W +@Ol\FVmeEU\UOUxg;Lsd?Tnf@k[=MumN`tkGWZKBK[SLRkVMFmkW_f^DTSL`gLCRCpgUOe]OEw\@Avx:R\UCTkdEV]VTEVNRTdkFXxyXYwxYgxpEONF?UCF>L>@HypHOqi|Gori|Bokuchava, Alexander|1968|B88|0-1|W +@OxgHPmeEUph?Hwp>@vxDTtX;Lut?>wv=KsdU]dZKRkcOEXmRDldCSZTETd]TJ]UHrtrL[vtD=gVGOjb[Ur]?LJ=FE>=EF=>FE|Amsterdam Interzonal|Portisch, Lajos|1964|E62|1/2-1/2|B +FVldEUm];L]VLVsm?TxgV`nf=FmcTKjZBRqi`Od\<\TKTcR@QRcHXZRX`i`Q`RJCKeS=@JB@wn?>k[RKvxIQtkEMmeDLdZKDl\;EwvE?nw?Pe]V]u]<`gm=Fqi`E]ePVelOYvf:=uc_PphVEcdGOTNEVN=F=gVPVo_VGfe=Fd]GM^VMSVOHO]ODKxq|Tbilisi|Conquest, Stuart C.|1988|C88i|0-1|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLm]V]g]O^d^>^ldEUne^>uYHPYQ@smIQjbBRkcFGtkGYm\W_c[R[b[L[lm:rwrN\h_[ene\U_VO`VMUgqigpmdYGdHGHkH@Hxp`OMD?|Dnepropetrovsk, Copa de la URSS|Gufeld, Eduard E|1970|B09|1-0|W +EUxgDTph;LwpFVme?FvxGWl\@O\UOUsd=tfCKgm\NmsL[sd=DdUNU^U[lrulfof|Portoroz Interzonal|Petrosian, Tigran V|1958|E79|1/2-1/2|W +@OxgHPph?Hwp>@vxEUl\DTsdU]dZ=Mjb;LnfFVf]T]wv<`qi`gpgOEmeBRtmETZTMTuc?@m[J[jb[LqiLVwnCKvx@wnL]u]@wvOEsb@AblBRrsGWjbRZtmFOl[V^e^W^v^ET^_TN_WLFWYHPYVOVgVFW[UAHun?>qa:JsvWFmQHQV`QHnVHG`QG?VO|Moscú, Cto URSS Equipos|Ufimtsev, Anatoly|1967|A78|0-1|B +EUxgDTnf@Okc;LwSFNtk?Mvx>@m]rt:=YOPaOE=ETR?:vnDL|Hoogovens|Farago, Ivan|1988|C18|1/2-1/2|W +FVldEUm]V]d]DTxg;Lnf@OwnT]f]?[sm>@vx?>mcO^tf=Fjb[Mwv<`cm:=mwFOrtMDueDKtu`WeSKRwmBJScIQvw^mgmL]f]O]mg]KcKRKwvWlutlZne@?xw>vgv?FkcZEen=UV[SJS>DS[DSbknekde\VW|?|Chistiakov, Alexander|1967|B14l|1-0|W +FVldEUm];E]VEVt_VP_h?Tnf@FxgIYqiFWhq>@weWfofTfulPaywDTqhaPsmT\ePGPg]?>vt=Xhof]o]FZRFEuv`pRTphvFhewWeW]HCKTfEFfFWGFG@GHQ:>tuGOmw>^QXOVwqVWumU]d]^]mdW^qwKSwm^Ud[BJms]`sdULjZ`pZSJSdupqkc\c[cLTudqpXFTLFOphO=h`=F`\FX\Tdn|Bugojno|Vukic, Milan|1978|B18|1/2-1/2|W +FVn^@Osd?[jb[RmeDLxgEUgmBJwnCSvx>@ngGI:JIA>FQWFGqaRZW]Zb]cJZogbjAIGPICZ[crkexq[srlstaYPYCSYPSKPGKCG>C;>E;cev|URS-ch26|Averbakh, Yuri L|1959|C74|1-0|W +DTld@Om]EUxgFNt_T]d]=KucKcjc;Lnf?[gmO^weHX_DGWe^W^sd@yx@GvnBJqa?@aX@XhoXxrxIYxy@tk;LwnEU\UOUkH@Hul?=rtH@jb<`vx:@ldO`qiW_i`_fof<`un:=mw=Mwq`NyuN\nvMuru?=u=F=jb\egmT\qgCSpiLRiEBJEekMTkeT\fm\ceVcbVg|URS-ch sf|Kotkov, Yuri M|1956|E73|1/2-1/2|W +FVl\@Ome;LxgEU\UOUph@rt?=ZTMTfTFGkc=Eul:=gvGYo_V_h_OWldEGtlGOpgOPlpPpvpYipfKEgpiYTbEObkW^e^L]dD]nxynhyxhn|Sukhumi|Gufeld, Eduard|1972|B76|1/2-1/2|W +EUxgDTl\@O\UOUnf;LwSHPvx?Hm]T]g]@tfLT]cT\cTELunDSdSLSjZS>n\HkrskHwu=ZutZLXF?>FM>=^VuU>EUeE>qaEOGYaGF|Berlin op|Varasdy, Imre|1986|E20|0-1|B +FVl\@OmeEU\UOUxg;Lph?Twp>@vx@vxBJum@k[FP[SLFjZ:;ZR@smBRmgRZrs=KxyS[tfKJgX:;h`COWGOWO>Vyp@H|EU-chT Kapfenberg|Plachetka, Jan|1970|A15|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb<`nfGWul?Msm=FwnUOqi`Ym\>@gVFMwvtmGOV\MqxyNV]Wq_\fDEn`QY`Y_XiaU_Y`_pfpXmvuED`P@?PYDGYnm_n`_myxJRpfHPWhOW`nmfofW_uwGUruUTu=>=xqTF|Tallinn|Nei, Iivo|1977|A28|1-0|B +FVl\@OnfEU\UOUjb;Lul@f^IQweLFvxFPtf=Fgm:=wuP_ewN`og`@vx@tf:@tf`gng=MsdL]g`?=rtDLphKExy]NtlEOlmO`u`MDo_FT_WTfWNfmNGDGwG@GdZCK`umQuYG@YV=eVN@AypempiQfNL:?LdfQk[|EU-chT|Schmid, Lothar|1961|B92|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxIQmeDLgmEUmcU^d^O^e^=aue;EtfEOfKBKcmKSwu<`og`Nef>=l\OYnwY_phaXxo_iwiXfofNi\SLSutiNtT=ETS:=mwEefoecSC=ebZckoxegrvgowfoqZRkjvrqpxypqyxqp|Portoroz Interzonal|Fischer, Robert James|1958|C92|1/2-1/2|B +EUxgDTph;LwpFVme?Fvx@On^@^UNUwv=Dsm:=un?>m^IQpiCSkcT\c\O^e^U\nkLRtf\egmR\m\S\iw=;km>=we\ersBRs;D;mu;DumD\ogRZxp=;vuZbpi\Nh`NOmo;kumFTg_V_o_Tf_fkmfmOgiaHXaYgi|Leningrado, Cto URSS|Dvoretzky, Mark|1974|E94|1-0|W +FVn^@Osd?[jb[Rxg>@meDLwnEUk[RKtXIQXO=O^UOPphK]umtfGOpwCKsb>Dxp=EgmA=mcvxGgyq>?x`a=qp=D`a?GaQGOQOgOuUT\UYD_|Tallinn|Nei, Iivo|1973|E92|0-1|B +EUxgDTnf;LwSFNl\@F\UNUm]T\gV@vxLRd^[m^mEUul\dmgBCIY_U@IU[>NMENMCSVgpgWS|Brussels blitz|Kasparov, Gary|1987|E42|1-0|B +EUxgDTnf;LwSFNvx?Ml\@Om]>@]TMTsmBR\UNUkc<`SLCLulOEtk:@kcFO_WNMtfCKgnMFwo=Mqa?=nwL[om=Ejb[eulF=ruevmMvlME=:fol]o]V]w\KS\U:;xpIYEG@IGC;VCS]eueVkpwO]wv]dedkdvndhSThaTLa_neYaUGaiGPIQPGQXLPXaPHiqHIaX|Leipzig olm fin-A|Ghitescu, Theodor|1960|B36|1-0|W +FVl\@OnfEU\UOUxg;Lme?Fwn>@vxGWsddUNUf^W^e^>PnuUNtf:=xyN`gx`NxgN`gx`N|URS-ch47|Kasparov, Gary|1979|B85|1/2-1/2|W +FVl\@OmeEU\UOUxg;LphGWsdUdkdV^gm^enewv>nvn@xn@qi`WmwIQneO^wfWPd\L[ewU\f\^oxoMhox[lvflrfd?yvLVeV>VuU=>UV>VjbHPtmIYgUVFvwE>UpMVpi>EdUF>iE=_]=MmnMLneLK]^FO^_OHkcPX_\KM\]MN]UHPf^X`bZNOenOLneCKemLOmn|Amsterdam Interzonal|Rossetto, Hector|1964|C43|1/2-1/2|W +EUmeFVph;LwpIQxg@Ovx?Fsd>@n^U^e^@phEMwpFVvxOYn^DTsd;LmeGW^WUf`ivuY_h_V_kH_fof@Hw?>?unipxpENm^MU^h?>rvIYl\LVqiYahwNWf^WXpyU]vu>?wqXhnp?ophahq`V`i`HOyxOXuvX`^V`gVNopxwpqwxqAvwgnwGneGEelNFA>EC]e|Hamburgo, Match Alemania-URSS|Teschner, Rudolf|1960|A05|1-0|W +@OphFVwpEUme;Lxg<`qi`NgXNWsdU]n^]ftf?FX^WN^XN@XgF[wv?>fXvrv=em^@HvsegopWfpxHP^mghxofWsKhem^egoxWh^oQYB;hnxpn_pxghxw`nwvn\KOPOo^OP^h\jvojUhwPW|Sochi schev|Gulko, Boris F|1970|B08|1-0|W +EUxgDTl\U]phHPwp?Hvx@Osb>@me;LblBRrsFVtXIQXO=Onf?>gmT]>FOFd]Fnmg<>tv`fpxngofg^vu^guegn]dQYdmngmog^e]^sxp>^on|Porz|Reefschlaeger, Helmut|1981|E64|0-1|B +EUxgDTl\U]nf;Lf]T]meFVphGOwp<`vx=Ewv@FjbBRsmF=suES\SJK^dFTdZKSZTST_MTSpwSKM[Wlw\KL\U=@n^EMtXIQX_;Lum@IqiFV_fV]g]?>]LCLweMU^UOUdULUldDTvxU]d]@vx^UNUm\OEwv:=qaIQpiF?iWEOgmUNWN>Nm^DEtfCK^ONOruEift=]nwiwxw]U\fUEf`ONo_NM`VLVvVMeueEeVfeufvuvwvT\_WHPWOQYvn?Mt_MTng@?g^?>^U>EjZToU\ELk[BJ[SJSZSLE\Uovd\v[_V[bV]EDU^b[^_[m]fm[_X[?f]DCX_CD]VDE_^?b^]bT]UT[V_[b_fED\TKTSKDCUMT\ME\dE>dl>GbTfXTMG@MhOGhaG?2|Taxco Interzonal|Pinter, Jozsef|1985|E94|0-1|B +@OphHPwp?Hn^FVsd>@meEMxn;LvxOYtfL]f]V]dUDLU_Y_n_o_MU^VGOVOHOumLTrvT\mu@HugO=v>?>wv>vpvIYgn=OvgELqiLMxp\dkcMJh`Y`i`HG`XOHgaJjaPGPnNPINWIAXPjbWiA@iN@ANi|Zuerich|Barcza, Gedeon|1959|A04|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb?Fnf>@sdvx:=ulGWdUNUk[V^e^W^gmLVtkVgxy>YqiYan\?GrugXkVXipiaiyx=M\U|URS-ch44|Geller, Efim P|1976|B85|1/2-1/2|B +FVl\;LsdHPph?Hwp@FmeEMn^>@xnumF@xyEU^VU]meGOVOHOucCKgXOX_XE[MEMndahohDUdUMUslW_h_X_ld_fw\UMkc;?ia?ojZAYyiogiyg_yxYaxPMF]U_OPHFMHBOo|Bled|Pachman, Ludek|1961|B12|1-0|W +FVl\@Onf;LjbHPsd?Hk[EU\UOUtk>@xgV^gx?>ul^_U`nwx^]UD:@ZdVM>P\UP>MD>SDKSwUNovKLbZLKZRKLvoLUovNEvoBJ|Sochi|Zhuravliov, Valerij|1977|A34|1-0|W +FVl\@Ome?[tm[mum>@xgV^e^O^mtDTnf=RsmEMwe^mgmc\>fgU@Ars|Gori|Gurgenidze, Bukhuti|1968|B52|0-1|B +FVl\@OnfEU\UOUjb?Fxg;Lul>@sdvx>PdUNUk[FOtk:>ru@A[SV^gvOke^kb^ULVlD>FDlbMveVenePOwvOVphFDljCKut?@\ULUsd;LtfTKdZO`]LCLf]^fZKfowo`ouZoixy:;K@vx=F\ULUsdg]LVel;Bn`V`lnFEng>VtlVYqa`VgpE`ogVgpgB]g`]fxpO`dUfKlnGOU_`fnf=ufFK=FCYSCSJSkdut_ntlpgIYgflj|URS Spartakiad|Yurtaev, Leonid|1979|B22|1-0|B +FVl\@OsdEU\UOUnf;Ljb?FulGWmebT>NwtQHSKDKRKBKTFHFlZNLZB;DtLDLeSLSBZSTZb|Sukhumi|Honfi, Karoly|1972|B83|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;E\ULUZdEKbZ@meEUsm;Ln^FVldIQuZ?>wv:>gXG@rt>nqinmXgmkgXk[XgUOaXL]gaO^p^W^t<]gag^g<=[sxqMNh`syqhyxha@GjZxvZSJSXSNOSXOXaXvnX_no=eG\egog_gHOg_\w_hOXiaXOh_wn`XON_fnuf^uY|LAT-ch|Zilber, Israel|1958|E69|1-0|B +EUxgDTnf;LwSFNl\@Om]?Mvx>@smBJ\UL]f]JS]TMTmcTKUNv>=>kc\Utk:=uvU^v[^gpg>V[SOUg_V^]n^gk]UdSKdnxw=>]fn_|URS-ch25|Tolush, Alexander V|1958|E53|1-0|W +FVldDTm]V]d]T]xg;Lg]@O]LCLphEUwp?Mvx>@sd?>wv<`tf>fofMTue=Fdu:>rtOExyEVelTKf^IY^UYahaFavwKDl^VP^>@Iqi`iyxipwGaqxoqhoxpixyhq|Bruselas|Karpov, Anatoly|1987|B10|1-0|W +FVn^@Osd?[jb[Rme>@tmEUk[RK^UDLUM=MxgBRdZKDwn<`ZT:Bqi`Yph;ETEME[RDRmRBRgmYnunCSvxEimgO`wvRZnwiwxwGOgm?:|Kislovodsk|Ciocaltea, Victor|1964|C72|1-0|W +EUxgDTphHPwp?Hvx;Lme@Osm>@n^FVldIQuZga@IaW>@WQ@?QG?>i<^OfBOUDTH?Tt>FB;FG@xg=FnfCKwn|URS-ch47|Geller, Efim P|1979|B52|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtkEUwvBRqi;EnwKDrsR[b[DMktEKtm=EutEDduM?l\U]\TKZukZktk@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?PphBRl\U]\T<`rs=Em\>?wpOIktR[b[@AvwGOulOW^WEWgvWE[SLS\bIXtX:bXmDRTLCLpLEML^Rmlm?;vlbdl[;@tlbtO]eV]V_V>VngV^jb^\s;UO;K\LKLDLgnO^|Malmo cm-reserve|Andersson, Ulf|1983|E39|1-0|W +FVl\@OsdEU\UOUnf;Lul@k[=Ftk:=d^NWw\UK\SL;SeWPqaIQaYPW^OFOeW;Ert?>vxOFl^DT^CV^[TETCFMFgV=mVLF?k]Tcwu|Candidats Tournament|Geller, Efim P|1962|B48|1/2-1/2|B +DTl\@Oxg;Lm]T]g]EU]LCLphFNwp?Mvx>@sd@wnGWsdUdkdV^e^W^gm^mFn\T@AcC>fCsfesu?=|URS-BRD|Darga, Klaus|1960|B80|1-0|W +DTxgEUph;LwpFVme@Ovx?Fn^gm>ZljDFpgKEjkE;guZusuMJR[;EusJKkjKJjkJKrjBRklR[b[:;[TKslsETmce^=]unrl^L>=_VFOVOHONO=DOAT\ng\e|Wijk aan Zee|Donner, Jan-Hein|1973|A31|1-0|W +EUxgDTnf@Om];LldFNsm?M]TMTk[TFtk>@[SLRwn@vxS\c\U\d^O^m^=UogGW^dUNwu:=f^W^g^F[tkNPum?GrvIQkr[Rrk@AkrG_^VPlml_]VN]mNFRKvfKfxwLp|URS-ch24|Nezhmetdinov, Rashid|1957|C17|1-0|B +@OxgDTkcEUnfHPtk?Hwn;LgV=DVLDLvx>@ngLDm]T]f]@H[?HOUM]VqxVh?FONF?|?|Bellon Lopez, Juan Manuel|1977|E19|1-0|W +EUxgDTl\U]nf;Lf]T]me@OphHPwp?Hvx>@jbBRwvOEsmETmcTcucRZclFVrsGWtX=Dk[ZcscIQXt@Igm:JtkLRc[\TWGsKLUwyGOKkQYh`Oono?oko>OyvO`ogUjtmHQvn`fpqQ_qxjsnvse^OIHO>H?mf]f>Memvfmfgf_fxpfTMCTbCRbFpg?GR\GNg^FO\fYa^gOXf\NU\bXFbSU\SD\eDUV^g`^fU_e^_nPXnxFO|Capablanca mem|Calero, Ivan|1963|A64|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLm]V]g]O^d^>^]gEUne^Fga=MuYHPYQK]t_MNru]HQX;EXhEO_XN`uv`hqhFvwv@WM=MvtGPof:>tsT\c\U]fvBR\TMUTLULm\V^\RLZe^P^vm^yuy>:RcZjst]e|URS-ch30|Mnatsakanian, Eduard A|1962|E13|1-0|W +FVl\@OmeEU\UOUxg;Lsm?Tjb<`uZ=Enf>@qi`Yp`YPgaTfofUfaPGPm^?wywEewgflvo:?g?@?^TeiZ\lrTE?FtXFM\TMNT\|Candidats Tournament|Petrosian, Tigran V|1959|B94|1/2-1/2|W +FVl\@OnfEU\UOUjb;LulHPxg?Hsd>@wnk[PX[SLRe]CgngV^gn=Mog^gwgW_f_M]u]H]xyX_t_>Odu?>_f]fufFVphRClLCMLDM^DG^XGOVOgO>fn\fbOWX^W?AH|URS-ch24|Mikenas, Vladas|1957|B47|1/2-1/2|B +FVl\;Lme@OjbBRph?TwpEMxgIQvx>@sd?>n^L]g]T]dn]Tqi@h`@P`XPOXOAIQHNixoIPtyi`oh`Yh_:l\_X|Moscow 5'|Kholmov, Ratmir D|1971|B50i|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUgm;E\ULUZdE?dUOU^U=Um^U=ng?N^T:;tfCKTNFrtDMZS;@qiCKw\EM>@]TMTsm=Fl\:=rtU\n\T[\nYgmg=uwu?=phIQxp=utuNVn\BJ\nO^ut[btsbkskFTn\CS\wTtkn^dnvtkjZkcZSJSvrV^g]L]f]@IrtcktdkdwSd]S>^fof]^|Framingham CC sim|Leblanc, Michael|1988.03.08|D58g|1-0|W +EUxgDTl\U]ph;LwpFVvx@OmeIQjbBRnf?Mf]T]ul>@sm<`rs?>\TM?k[R[b[CSTKL[lc:;m\OEtbEKb[K\c\`N\J;[s[?[gVNUVLULJL>v|Tbilisi|Lukov, Valentin|1988|A70r|1/2-1/2|B +@Ol\CKm]FNxg@vx?>wv:=^fJRph_ixpiXfdRZcZMUdLOWuyQYyaUMLDWOZcXNDBNTBGOXclMOGOXOa\=UjZPXZROF\[Um[\FMlPmjPYjR\`Rj`Xjo|EU-chT|Csom, Istvan|1973|A13|1/2-1/2|B +@OxgHPphCKwp@wnU]vxOUl\UDut;Lf^FV_VLVgVHVmeDNtv=MphNXktX^ng^dsmvoVHwvMLpx>vov?>vwdnxoHQ|Stockholm|Nielsen|1961|A84|1-0|W +FVl\@OmeEU\UOUsd;Lxg@tfTKdZ=Fut?=ZTN@dUOUcU;LU^?>^eL[es=OweO]eI@Amd]`xgGWqi`pyx>fofMhvupg|?|Nei, Iivo|1958|C02x|1-0|W +FVnfEUm];LwSV^kcBJSLCLtb?Mxn<`umMbsb=MmR@FRTMEnh>@qi`NvtJRbsRZsdZcjcFPhnPayxGWphagxyNGtkHXiaXahaGYn_Y`urEMdZ?;Td;SZT:;_NW_N_@GrBg]d]STBDMD]TDVldVDyr;Cr:CcklcklkDCT[C:[K:HO>NO_MT_;|URS-chTJ Coop|Taimanov, Mark E|1954|C16|0-1|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdsEMsm;EtkE?m\KDwv?PnwCS\mDKbZBJZSLSqiMUl\S\e\U^m^O^v^Nru=?uEW_C^_hogP>vuNO^`?@ktV^g^;Vtf>;EFVd`Y;[FH@HfQA@QHd]xy[kYU@HUXH?XhknuvOw|Tallinn|Smejkal, Jan|1971|C94|1-0|W +FVl\@OnfEU\UOUjb;LulBJsdts?owopokt^tmaFmvFMsk^`woU^e^`^on=EkdENdeNUvhMhqh^`f^UNnpIYefYafg`hphahghCKh_DT]T|URS-ch26|Nezhmetdinov, Rashid|1959|B48|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdsEUsm<`tk;Eqi`YgqYPng=Fq`:=wvU^`OEOe^OYgYFXmg=ugXurkrPYXgGOgmYGrd>=mcGclc=evtefofKfxwftbZ@GwnCSZSLSngGNp`HPdvOW`WPWvdNOdvBJvatXavOPvoXmoTPOT?mt?TONTotmoTQYgn|URS-ch32|Krogius, Nikolai V|1964|C95|1-0|W +@Ol\DTxg;Lm]T]g]FV]S?TtfTfSM>?ofO`uc=F\TCKqi`OsdKTvtHPp`?Hc\:;wpL[\TFNywA?`XOYMGYhuM[JTRN>MOhwGM>=RV?OXOH?V_?@pU|Riga Interzonal|Polugaevsky, Lev|1979|A34|0-1|B +FVn^@Osd?[jb[Rxg>@gVEUk[RKwnO^d^U^tk=XvxGOV`OW`VW_xy?On\@?me_gphXYe^?FuUOQUGYGVGQYGV\cZrypruo_DRm^uUcU;EUCEKCL|URS-ch45|Smyslov, Vassily|1977|C80|0-1|W +FVl\@OsdEU\UOUxg;Lme?Tnf>@jbE]>G]^VMwmXWm\Wo\MGO^>O]no]oxyA@>?o?v>|URS-ch23|Khasin, Abram|1956|B88|0-1|B +FVl\@OsdEU\UOUxg;Lme<`nf=Ewn>tm?Mo_^gngHPqiIYrvA?vt<;mvPXvmO`ph`OgWMhcTX`TNLFWe`iN?>?xy?HwxO`enhMtwFPwW=>WY`OYX|Palma de Mallorca|O'Kelly de Galway, Alberic|1966|B64|0-1|B +EUxgDTph;LwpFVvx@Ome<`qi`WsdU]n^WNdUOU^UNUgVUpwv?FxpLVvV>@ug=DVnFMtm?>rv>nvn:M?jZSZcZGWpg@G>:BJmR?F:;GN;K|Hastings6364|Khasin, Alexander|1963|E90|1/2-1/2|B +DTxgHPld@Om]CKt_@bSJCvxBJSb:um>vtlvnmnonlcOWYHnfcjfgkVDLbZLCZRKSHNgfNTCLV]fhTcIYRJS[]oh@JBLCjs@poKp@KoC:st@povp`cmYamgaitl`plcpn|Portoroz Interzonal|Matanovic, Aleksandar|1958|B94|1-0|B +FVxgV^g]EUme@Oe^O^sm?Tnf=XqaXFm^U^tm>@md?=un;L]LCLphBRjb:;n\D<>ENM>nghPWhgWPghPWhgWXMUXPghPQhpnpipOGpx2G?2xfQYU\?;fTYPTLPG|Candidats sf1|Larsen, Bent|1965|B04|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBRtkEMme;LdZKB[SLFSKDKl\KS\SFPrsdj[Tqi`gpgLVg_VeulHPkce_f_T]tf]rwrKUf]>nrtU[j[=][j]m|Montpellier, Torneo de Candidatos|Korchnoi, Viktor L|1985|B63|1-0|W +DTnf;Ll\@OxgHPkc?Htk>@wnEU\U=Uvx?=sdUWusCKwuWsrs@gVEUwn=FVe[dkdU^ek;Lvx?=m]OUum=Md\UOld^fofO^mlMQw_Qanea_f_\TLRrwCKTKBKwoFOon>nenONku@?ngESufR\f\S\xoNF|Moscow|Pachman, Ludek|1967|C67|1/2-1/2|W +DTxg;LnfEUwSFNl\?Mvx@Om]>@sdBJ\UJSULCLul=FtmNV]VMVgVFVog?=wuX=HQ=>@HdULU^UNW>VHPqaJeyqemrvQYVhPOv>mUhX|Moscú, Cto URSS|Taimanov, Mark E|1957|E56|0-1|B +@OxgHPph?Hwp>@vxDTl\EU\UOUsd;LmeUDrsCKjb@smFPk[GOmcNVwv:>cT>Fph?>uePAvfAGrvGXfnHPxpXGeJ>:jZPXqiIYTCME[SX`i`Y`g_V^SLEWd\GXJRXgRUWU\UFIvyIypyOWnf@Gfg^gUMDMCMGNMS:AyxNUSBAIBSUL|Bakú, Cto URSS|Vladimirov, Boris T|1961|D01|1-0|W +FVl\@OnfEMm]=FsdHPxn?HphIYqiV^wp>@kc;JtbDTumCKrudSOIjb[JtnIXn_J;Sd;EdsEVsm@IxyFEiaXgkVMV_nWimg^gpgiwvwV^gpQHulEWyxWVc[>F[TKTws?K;>F;KLUKMZRMOiXQXaXOMqi|Riga Interzonal|Rodriguez, Ruben|1979|C00|0-1|B +DTl\@Oxg;Lm]T]g]EU\U=U]LULsdFVuZLZdZ?[tm[mvm>@ZdVM>P\UP>MD>SDKSwUNovKLbZLKZRKLvoLUovNEvoBJohESwiU\h_\[_^go|Sochi, Memorial Chigorin|Zhuravliov, Valerij|1977|A34|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQtfEUfK=Ke]V]dZK=^UOUwvCSZTBR[R;Eu]:RTEG[TFTbZIYZRYaRKBK^TKTm^ahqh@f^T]d]U^m^@sbEU^UFUb\KTrtUdumTYxyHQmvQtvtwoCS\fYXflS[l[>fd\]Wkt=]\<]=<\=u\lWapiagl<@HtfXYipux|Moscow op|Sveshnikov, Evgeny|1990|B10|1-0|W +EUphFVwp@Ome?Txg=Fsd;LtXV^XOFOdUOke^T[vw[MgmLRuskbstbZl\>@rsMbtdDLU_?=pgLTmcR\wpZ[dr@m^=Fsd?_unT]dUNUk]V]^dFGdUGUnjCLjULUwn_Ort:;n`;kywOP`g|Sukhumi|Beliavsky, Alexander G|1972|B81|0-1|B +EUo_<`l\U]uc;Ln^FVme?[vo@Oqi`N_VOExg>@wnGOywBRVO=OoxOPtXIQXmNigaPhwg?gngEVcu:?uvVg|Moscow|Antoshin, Vladimir S|1988|A80d|1-0|W +EUxgDTnf;LwSFNvx?Mm]@Ol\>@]TMTsmBJ\UNUSLCLul=Mf^O^m^U^l^MP^PIPtfTfof?>xo:;kcJRwtRZg]ZcjcFMKC@ruENve\jeTNFkcO`ftFTljTdcZL]tm]gpgdgZR`o|Rio Hondo|Quinteros, Miguel A|1987|B08|1-0|W +FVl\@OmeEU\UOUxg;Lsd<`nf=Ejb>@sdU\u=?=S\OEdZEV\n@sdBJtm;EdUOU\UEOUcmRFNxwO`qi`VRdVL]nHdnd>FwnLR|Candidats sf1|Kortschnoj, Viktor|1968|E06|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?PphBRl\U]mc=FcRDR[R:Rkt:tmENvnOEmvEKrsRZnk[cgmZbm\K\e\:@smV^e^W^m^`gng?gpgLVJnEWvuVg^mgmtm;krtUOogFbywWUuvb[tuUcf^OEg_ETwg[mumc[gfBR^V@?npksvn[mnmsk|Sochi, Memorial Chigorin|Ftacnik, Lubomir|1982|B97|1-0|W +FVl\@OmeEU\UOUsdDTxg;Lph?FdU=UwpEgm[lrtlfof:;jZCKtrIYwtYam^ahqhOW^dFXxoAqty;AyqAqZRXfofqpfgpqRKBKrBELBHqQHXKSn^S[duW^g^NU^VQNV_NnufUce]T]fWLUWfULfWLUWf|Herceg Novi blitz|Matulovic, Milan|1970|B36|1/2-1/2|B +EUxg@OnfHPl\DLkc?Htk>@wnU\c\LTvx;LgVLVkVO>VH@Hsd>Ouc=Rm]T]f]FV]VRVng?Z[?@|Bakú, Cto URSS|Zilberstein, Valery I|1972|B06|1-0|W +EUxgDTnf@Ol\U]f]T]me;LphHPwp?Hvx>@wvIQjbBRsm?>gVLVvV=Dun=mQJN`X@Iv^NVXVDV^VIQVFYOFCRZpgOE|URS-ch50|Razuvaev, Yuri S.|1983|A62|1/2-1/2|B +@Ol\DTsd;LphFNmeEUwp?FtXU]dZ@rs:;k[T[b[KSZTS\e\;[s[L[g]E@wn?>k[RKmeDLvxIQdZKDl\EUgm;E\ULUZdE?mcCKngNdcNMbZQYclI@woMLlmEmfm;Mm_V_teL\ok\]kcBR[RKR^VM?ph_hqh]Zc;HPVNGNeVZrxp@H;CHOg_?Fh`|Alekhine mem|Keres, Paul|1963|C96|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;E\ULUwuE?^UOUe]V^gV?Etk^fn\foloEOZTCKTJ@sm@Ak[V^e^W^m^pi>Fru=UuULUwgn]ge]NeU@GypHPpoFDofIQfeNXUEDEiEXgE@me;EwnGWvx@Af^W^e^ETul=OtfaW[UCUuUFfnf>fsuf>rj;BWE>;u]BKUM|It|Miles, Anthony J.|1984|B19s|0-1|W +FVl\@OmeEU\UOUxg;Lsd<`nf=Ejb>@g_GW`pV_m_FOyx=E_XOXpX:>ts>NX_NLut?Onf]S_VSdtdONVWLdkdNfxHEHofHdWX@GXWGHWXHGXW|Hoogovens|Piket, Jeroen|1988|B60k|1/2-1/2|W +@OxgDTnfCKm]FNl\@tXEU\UNUvx[dkd=MgaHPo_O^e^U^_W;Eu`:aQ?@w_N`_`EO`a@HFW|?|Szabados, Eugenio|1957|A06/11|0-1|B +FVl\@Ome?[sd>@tXIQXaDLnfEUuZ;Jjb[FxgU]aOFOd^]fof=KvoOFk[GW\TK=Zc@I^mJDwnDUyvFaphaXgX=XngW_f_V_cu_hoxU_m^_ixpi_px_ixpi_|Kislovodsk|Fuchs, Reinhart|1966|B51|1/2-1/2|B +FVl\@OsdEU\UOUnf;LulHPjb?Hxg>@me?>tmUdkdLRf^DTwnT\vx\ene<`en=Dqi`Nrs:=u=<=q`\nlnR\`f\fnfCKfnDLsSQYog=MxqHQvhMmnwLdSVdbV>@Ig_mehabM^VM]aXeuwg]xqhxvhqQX_Xvxqhuwgn|Belgrade URS-World|Najdorf, Miguel|1970|B80|1-0|W +FVnfEUm];LwSV^xnBJSLCLl\=Xn_?MqaXQ\U@OsdHX_nXaulFvnFNrw:@mvOUo_UdvdNU_W`pwopxyx@xowxwnwaikcULwxMhjZLUxwDLwxiqxphodmoxmtUMtmMFpyFOc[OW]ULU[SJSZRU]RJ]fJBfmB:2mu2:@wnCKvx@smGWk[FOtkBJul=>wn@ArsCKvxPnw:>f^U_xyPY^WYWm^>Nph_iwpL]g]V]ogOVh`W_pi_gipg_^hNQpC_hvnQisxh_kt_O`XOMC^DT[TKTnpT\e\]eljV]xuMV^UVWpmigUgWgmpgu|Bled/Zagreb/Belgrado Candidatos|Smyslov, Vassily V|1959|B84|1-0|W +EUxgDTnf@Om]<`qi`gug;LldFNsm?Mwe>@gnOEvx=Fel:=]TETwuM;mwGWtmLVmvV\kc\bd\U\v[blnlBR[R|Herceg Novi blitz|Petrosian, Tigran V|1970|D43|1/2-1/2|B +@OphEUwpHPl\?H\UOUsdUKme>@xg;LvxIQtmFVrtL]d^=Fg]V]ucBRcS?=mRKUjbCKRm@f]T]jbBRsm@wvMhqh?>ulNV\ULUrt:BvfV^mcBFgqOWfdfgX_pxp@vx=DkcNV]VLVul<`d\U]f]T]g]FTmg?>tX`g]gO`gV`oVgDKc[oixyiowoTorwIQ\TK[woQXgX[alW>FphaQn\:?XGFvyp|New York op|Rohde, Michael A|1990|D45|0-1|B +EUnfDTxg@Om]HPwn?Hvx>@ld=Dkc;EtkFVsmV^gvCKrtue|New York op|Orlov, Georgi|1990|E09|0-1|B +FVl\@OnfEU\UOUsd;Lul@k[UdldBJtk=FdlGWmeNUwnV^e^W^n\U\l\?GgmMV\lFaphaYlT:=o_^gvtgoywVktkYuwu=mumow2TUwOkjOVUc@?ceHPh`VNjrLVe=?H|URS-ch32|Lutikov, Anatoly S|1964|B48|1-0|B +EUxgDTl\U]nf;Lf]T]meFVph@Owp?Fvx>@wvOEsb:;tm?>rsCKk[^v^HPWF@Gpx=NFUOW^VPXVWGH_XNTUO;@t_DEuZ[dkdU\Z\OU_m:;rsEWsc^fofUOnuO^\n;>d\>Nm[?>ngWIulIPl^N^cbQYbRYagYPORV^V|Cannes schev|Renet, Olivier|1989|D36d|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLm]V]g]O^d^>^ldEUne^>uYHPYQ>VQm;E]gVYtkEOrv<`gVKDo_DKwo`W|URS-ch39|Krogius, Nikolai V|1971|C89|1-0|W +FVl\@OmeEU\UOUxg;Lsd<`nf=EdUEUtm>|Hoogovens|Sosonko, Gennadi|1982.01|B63|1-0|W +FVl\@Ome?[tmBRsd>@xg?>phDLwpEU\UOUvx;Jrt<`jb[dkdJTe]`gpgV]d]T^ulGWts=Esc>NbZCSwtS[mv:>leE=ck=Okl^XgpW_lL_gLNONpgXgegUOnf>_Wpvlm[cTbvgmfgVf]Vg]\gm|URS-ch25|Gurgenidze, Bukhuti|1958|B52|0-1|B +DTxg;Ln^@OsdHPdU?HUOHOwS=Dld>@vxEMwv<`qi`gugLVghBJSwT\o_VEm]\eweETelCStmJRruTElc:@kc=Mtk?=rtTBul<`wuMFgXL[kbFfb[fX[F`nln=>FOXOnmU]dUOMUDB;D>Mqxw;_m]:>og_tutIYtuYa]MqMuM>@gVEUk[RKm]U^tf=Fw\c]PXf^HPldXF]g=u|Brussels|Kortschnoj, Viktor|1987|C81|1/2-1/2|W +DTxg;Lnf@Om]FNsmCKld?Fwe>@vx=DwvwhIQXf>O]gTfvf:=fvNVgmEU^UOUlPGPuc@Ic\DFm^U_ru=uvu?=\wCUumULm=F=qiQYogYahn_YwsL^s^=mxwYhnhah^aI@ahmkhVkr|Riga|Bagirov, Vladimir|1981|A17|1/2-1/2|W +FVxgV^g]EUme@Oph?Tld>@wp^eue?>vx<`tX;EwvTKqi`YsmDT]WT\eU>VXOHOWQ@HU\HQ\aE?m^QHh`YPruP^u=:=`XOXahGOp^V^nf?Phg^FvuPVgn=unuFEuZEmZSIYjZX`i`Y`ZR`hxpKfSCHQphfohimeipemk[ofphmud\uxhqV`qi`oiqx`|Hoogovens|Ljubojevic, Ljubomir|1973|B04|1-0|W +CKm]@sdU]dnO>gm>Mo_V_h_GWnh@o_V_pUNUn_UN_NGNw?=?tf?Wun:?rvFXduXfufWOldLVvwOPw?@?e]T]d]PsfwVLnNsk]ULVUMk]xp]^piVeN@wn?>k[RKmeDLvxIQdZKDl\EUZd;E\ULUgmEKbZVu]W]g`GW`iURieRZqiCSxqZ\eb]LwuW_uEVvbMvVEDBRD<@IMeV^@\ULUnf:;]mO`XF=FwnDLn`<`qi`@vxGWul@Atm=>jb>Pk[V^e^W^dUNUgvFMmdPQph:>ruQNumUcltLVdVMVqaNivp?owoVhp_hoxoiq|Hastings7374|Hartston, William R|1973|B85|1-0|W +FVl\@OmeEU\UOUxg;LnfGWjb=OucBJsdUKcl?Mwn@k[:>[SL]f]V]tXOPg]PX]gXQe]JRwv@AbZQOneDTSLELv>?>eSLgS>Oapgaqxwqywnyr>GM[dUrvnevwefK\f_[mUfwol\of_WfgWNg`NMmfMT`WGUWPXV^X`]Ukb>SQX^V`hSwX`|Tbilisi|Zaichik, Gennadi|1988|B82|1-0|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWucUKsm=Fcl>@kcDTtk@jbBRun=>wu:=]TFTtmEF\jNVd^TKmd<`qi`Y^hYPn\@AgaDNhWPWaWFXjsHPWMKfof=MuMXfxqftdV|La Habana olm fin-A|Cobo Arteaga, Eldis|1966|A32|0-1|B +EUxgDTl\U]nf;Lf]T]meFVph@Owp?Fvx>@wvOEsbGOgmL[mcBRunETcTFTbsvrOW^UTU\UGErZEUZBUTBE@?YQHQEIV^IQ^enm>nmenke]?HQJkCxpTS]MCDpiDGiaSko_kqaXqiMPHAPQiQJQAHQPHIPOGHXa|URS-chT|Birbrager, Isaak|1966|A79|0-1|B +FVl\@OnfEU\UOUjb;Lul?Fxg>@wSf^OFme@AtXGOXaMbe]V]d]HXaXOX]UFTlc>^ULELcbTbrb^ng]nm]LCLbB?GBRIQqaX`RTGOxqmUTlLTwvOLv^QYqhAHh_HOogUW_f`gpgWVlpV^g^T\po|URS-ch24|Furman, Semen Abramovich|1957|B43|1/2-1/2|W +@Ol\DTxg;LnfFNsdEUm]BJjbU\w\CS\e@rtS[b[L[XOFOe^:;un[L]UNUdU?>wu;FxyLV^CjZDTk[T\g]W^vxPVmgVg]g^gngHXu]<;wuO^ZRGO[SOWRJCKg^>^]HMFHF^Fu]F^rv;Dog^Vf^DM]UVU^UMTvFTSFB=UB:Ue|Tilburg|Larsen, Bent|1980|B19|1/2-1/2|W +EUxgDTnf;LwSFNvx@Ol\?Fm]>@\UNUsd<`Sn:v><>ZT?MphDFc[O^g^U^]UL=u`GW`W^fk]>?W`fo]oCKT^BRo]MV]KR[KTFDb[V]xp]T[TDVtuIY`PVkumktmo?opotlof|Bled, Match Candidatos 1/4|Portisch, Lajos|1965|E50|0-1|B +FVnfEUm];LwSV^xnBJSLCLl\=XulXpyxpq\U@FsdGWtmqMULMLn_:;rt=YOPaOE=ETR?:vnDLUdQ?yaXaRW|Hoogovens|Farago, Ivan|1988.01|C18u|1/2-1/2|W +FVn^@OmeEUsm?Tld;LwnU^e^O`n`=apha`u`<`mw>@tkLVcm=DucO^\U^mvmNUmvvuDKd\V\w\N\l\Kk|Munich olm prel|Milev, Zdravko|1958|D41|1-0|W +FVldEUm];L]VLVt_VP_h?Tnf@FxgFWweWhqh<`sm>@uZGWvtBJZlCSmcTFen=Mg]`nlnDT]g:;nm;=tsMKmlJRyYRZctKNtnN^YyS[d[^[jb[CumT\srFOndOdld?OdROMyt=;RZMKZlCJrjKclWPFWVJKV]cbjsKR|World Championship 23th|Botvinnik, Mikhail|1960|B18|1-0|W +FVl\@OmeEU\U=Ujb@wuOE^hWIf^E;rtFOhYOXtsIPYhXOkt?>tf>FstFEqiEFhw@AwmL]f]V]uvNEnwE>phOXiaXmlm;LtTGOvt=Mwi>=aYP>gaCKTLMLtL>LaPA@mjFGiNL>^VOVPV=Oo_@?VP?@jUDLU^O=Nc=ExpJR[RKRpgLTPVEE_Wwu`aum^:@I:A|Saint John, Open|Rodríguez, Daniel Mauricio|1988|B53|0-1|B +FVl\@OmeEU\UOUxg;LjbHPn^UKwn?Hvx>@ul<`sm:@wn?>vxOUdU=Ume;L\fUVld^ene]TulVYtmTMo_MTrvvwvYS\VSTmfTMfKLVKDMelt=>_VELt_>NyxNPpheUxoUpofpqh`ql|New York m blitz|Dzindzichashvili, Roman|1991|C55|1-0|B +DTldEUm];LxgFNph@Owp=Kvx@smT]f]NV]VLVd\Ve\Ueom\ou\KMTxyTKwuO^u]?>|Rio Hondo|Gomez Baillo, Jorge H|1987|D95|1-0|W +@OxgHPm]?Hl\>@sdDTn^T]g]EMwn;Etf?>vxBJumCKog?tvUDXIE=I?=?HVDUqaFEv^?T^]EFxqGOV^TDg_OW^gUOgbDT|EU-chT|Karlsson, Lars|1980|A30|1-0|B +FVl\@OmeEU\U=Ujb@wuOE^hWIf^E;rtFOhYOXtsIPYhXOkt?>tf>FstFEqiEFhw@AwmL]f]V]uvNEnwE>phOXiaXmlm;LtTGOvt=Mwi>=aYP>gaCKTLMLtL>LaPA@mjFGiNL>^VOVPV=Oo_@?VP?@jUDLU^O=Nc=ExpJR[RKRpgLTPVEE_Wwu`aum^:|Saint John op-2|Rodriguez, Daniel Mauricio|1988|B53|0-1|B +FVl\@Ome?[tm[mumDTsdEUmXU]dU;EUO=OxgOXgXEOn^]fofIQXgV^e^O^weFu=A=gaFNp`CKjZHXaWIWwW^OqiBRkcOEl^GOWwEVtl=A^WNFlmQY`YAYmnVGwuGMW`YAf^A=nfMGuUGV`W=MW`M=`WVLW`L]`u=Au`A=`u=Mfo]LunL[^VMNUmNVngOWgpW_ogVfg`FO|URS-ch42|Balashov, Yuri S|1974|B52|1-0|W +EUphHPwp?Hl\U]me@Oxg>@k[DT[TOEtbETbT=RsmRTvx;Lrs:;uZgmCKTJ;Zlk?=J[=E[U@HmgFNU[GO[JE=gmHGmcRLcTL;TZ;JpCJTZK<;KU=ECL;kskEML:NU:UGFkSTESCBJCBF=B:=D:BDKBCKRU@Qm@IOWo_RZIPMPCEm_xo_fogZb\TJREMP@MJfmn^W^g^mdTLbjLDjc^URZULZbLCbjD<2@@vxXi>Mg_GWjbV_i_W^m^M^p^uw?Mrv>vwvPVvnCKm_EWU^WOnYHPYiVGi@tm?>xgDLjb[?mXIQXO=OphEMwpHPvx?HrtO=k[?ofO`uc=F\TCKqi`OsdKTvtHPp`?Hc\:;wpL[\TFNywA?`XOYMGYhuM[JTRN>MOhwGM>=RV?OXOH?V_?@pU@?_Q|Riga, Interzonal|Polugaevsky, L.|1979|A34|0-1|B +FVl\@OmeEU\UOUxg;Lph?Twp>@vxIQsdrtTKuZ=Ewv:=jbUOk[NiduOUt\BJpiEi\aiWufKfmfHXaQGO[SJSZS@HSCL]f]V]g]WEQYHP]L=:LFUFCgX`|Reykjavik op|Hansen, Curt|1986|B35|1-0|W +FVl\@OmeEU\UOUxg;Ln^?[tm[mumU_sd>@gVLVm_Vewe=e_me\mn@sdO^tm;J\UJTw\=Kvx@nu?@k[BJsm@xgUFwnCKvxqaQYeVLV]VDLhn=Vn_V>_iI@iXGEtu>vuv<>vt>VTBEFgUVUtLUuxqFVphuyqyVUyxULB;@H;VH@VNLNXNCe_U\_Y\cYO>GaYGYXYcbOUbcYXc\UD\[DJ[RJTS[XWRSTcS\ct|URS-ch26|Vasiukov, Evgeni|1959|B43|0-1|B +DTl\@OxgHPkc?Htk>@phCKwpwu>MgV=>piZutRLVLZLbSM^dlGW]ULEkH@HSDEDip^Ttv?GldDMdfH?o_MOfVTExyEV_VOAVNGOnV?HVDHQDFJ\F[KSNFA>UMON[m|?|Taimanov, Mark E|1983|A30g|0-1|B +EUxgDTnf@Ol\U]f]T]ph;LwpFVme?Fvx>@wvOEsbGOgmETm^@jbBJZuEvuNUqiCKh`WPfd=N]UNPxylop^GWsxokxPYP^ekmeJckUMW_f_ks2[sP^yx^sME@?|Moscow|Bronstein, David I|1967|B01|1-0|W +EUxg@OnfDTl\;L\UOUwSU[m]@LD?=u=:=g]F?o_`W^TJRTE?MDBW^]SM?Sd^LEVL>BRGOVg=;k[;?ru;=usKD[TMTsCD@wn?>k[RKvxDLmeIQgmEUngBRdZKDmcR[b[;El\U\e\=F\TOIgnEOog=piDMTMONfXNiyxihxyhorxYhxhah\foq|URS Spartakiad|Geller, Efim P|1964|C92|1-0|W +DTnf;Lm]EUxgT]f]<`wnFNvx?Msm@Owv>@mw=DtfO^gm`Wm^W^ldLRog^PfoCSne:;ePIPjbR\vnBRnl?@n^FVld?>wvIQkc=ePS\c\=mpimjaWBRWMRZMSZbPsjrslbjlcrscj|Latvia|Skuja, Roberts|1952|E69|1-0|W +EUxgDTnf;LwSFNvx?Mm]@Okc>@tkT]f]O^smGWl\=O\UNUgVOQmgLFrtog^OneW_eP_hm\U\P>\cln?>jcMV]VOYktQPqhX`np`gwgN`uU@Atk`gUgYHgCPeCGefxqfQqxQfxy>=poIQGg=uypfvpiumg:|?|Giorgadze, Tamaz|1981|E52|0-1|B +EUxgDTph;LwpFVmeGWvx@Ol\U]k[T[jb[buZOEtb?bZb=FsmFbrbETws>FsSTEgvBJSsETvlvr;krjkjbjEvxpvu]L@k[RKmeDLwnBR[SRZvxEU^ULUtXxo>NtnNKrs\bsrb\rZKS_t:>n_Sstfskoh\fZRHX_UkphiX`|?|Neistadt|1955|C78f|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;EwvCS\SLSZd@uZ=FjbU]f]T]mgLTg]T]tm?=mR=>ruNVR[FD\TP^nS>NwvDCSw^LZRCE[m<;k[BJw\OU\eUFmXGOXmLSe^OWTLNLbZW^ZSLPxqJSRj@Av^FLutIQtT;CjcEGcGCGo_V_m_GC_mPMiaA@aY]eTWC;WT;C^>@G>fCFfgG>m_em_mLVgWV`qh`Om_Meha>G_VemaiGNVOHOWgFHTLNUgOmpLMUVONVWNOWVONV_NO|Nice olm fin-A|Kinnmark, Ove|1974|D66|1/2-1/2|W +DTn^;Lxg@OsdEMph:;jZBJwpCSZSJSvxFVme?FgaL]dn>@ld]nunHPag?>tXOYXfS[e][dkdT]d]<`]UFXwtXfnf>FgmFDqiDtrt`EfbEStsSnstYOtLnSLdO>bt@HxqIYmgSE|Biel Interzonal|Sanguineti, Raul|1976|A28|1/2-1/2|B +FVphEUwp@Ome?TldTKxg;Evx>@ulV^e^U^g]?>sbBJb\KBwu=Fk[EV\VFVt_VYd\=MTBT[TipxpYT]cTLu=<=ru=>nfIYqaO`\T>VumLDldCKTLVNc]NP]W@ImEDLdLPLEGIPG?LljZ|Tallinn|Karner, Hillar|1973|B07|1-0|W +FVnfEUm];LwSV^l\BJSZCS\UL[ZlGWxi@Ojb[lul?Msd>@tm@wn?>k[RKvxDLm]V]g]O^d^>^ldEUne^>uYHPYQNfNK]xy?WN>E?XQ]Ta=U]Q?T?=]|URS-ch43|Geller, Efim P|1975|C89|1/2-1/2|W +FVxgEMn^@Osd?Fm];Eph>@wpDLjZBRvx?>wvF?kcV]g]=K]WEVtfKDW]HPqi?HumVEruET]SLSdSDLmMTJ^VLMSM>VM<:=>O>CJ>MvuH?f_lLJSLKuUGO_m@GmRKCSnGNUeM^e=?T=>CFn\NM>FMFxp^o\no^ne|?|Todorcevic, Miodrag|1989|C44h|0-1|B +@OxgDTphHPwp?Hvx>@meEUsd;LtXIQXOHOgmFNn^U]dnNVo_OHmgV_h_GWgm@InhwoLFrxFUm^W^p^I@YPUOhYOYPI@G^PGOPYNUYgEGg^?AIWOFWUGU^UHOxPCKU\>?onFEnNO=PHE@wn?>k[RKvxDLmeIQdsEMl\;EsdE?qiMUtmU\e\?N\TKDmf=FulHXn\X`i`O`ru@A\NFNftCKTKDKdZK=ZTNPphBRxpR[b[GWtkW^l^P^T^:jum?m\AI\V?>o_`VkVIP|Moscow|Tukmakov, Vladimir B|1971|C94|1/2-1/2|W +FVl\@OnfEMsdHPphMU\UOUjbUdkd?Hwp>@xn;Lm]LRvx?>rsV^ul=Ud\U\l\R\ndDLd^^[\H?bZ:=ZR|URS-ch42|Vasiukov, Evgeni|1974|B30|1/2-1/2|B +FVl\@OnfEMsdHPxn?Hph>@wp?>f^;LmeOEvxETtfBRumL]rtDLo_?h`X`wx`a^WaoloPWopGP_PIPpP?GK]|URS-ch29|Shamkovich, Leonid|1961|A04|0-1|B +FVl\@OsdEU\UOUxg;Lme<`nf=Ejb>bZQ_TS>^g^E`nw`gyx_f|WchT U26|Malich, Burkhard|1958|B67|1-0|W +DTxg;LnfEUwSFNl\?Mvx@Om]>@sdBJ\UJSULCLul=FtmNV]VMVgVFVog?=wuX=HQ=>@HdULU^UNW>VHPqaJeyqemrvQYVhPOv>|URS-ch24|Taimanov, Mark E|1957|E56|0-1|B +FVl\@OnfEU\UOUjb?Mxn;LsdUKnh>@k[@phW_h_U_yxK]rj]Vf_V_jn_tutwn?ovodfowfmsemkxhDLbZktwptTnuLSZSHPed>VdTVThcAHpgHOg^ONu`NF^]FM`gTDg^DFcgFDgOMFOoFM^UBJSKDtUCtu]dusoOMTOLTSC:JRKC|Candidats Tournament|Fischer, Robert James|1959|B87|0-1|B +DTxg;Lnf@OwS=Dl\HPsd?Hvx>@unEMqiFVmeOYrsGWtmIQdUDGk[nkNNq`GHdbCK`QHQSLQXbBNLiaXaUF@AFLJ\>fnwfgpglfwnf\g`=mngmegnefnu\kulT]dS]Orvk\SB<;vf\flmf\me\M|Tallinn, Semifinal Copa Equipos URSS|Lutikov, Anatoly|1964|C40|1-0|W +FVmeEUxg;LphGWwp@Ovx?Ml\U]sb>@bl=>rs>Yk[W_\TMFlv@wn?>k[RKmeDLvxEUtXN[SNP\L@]T=DjbDTk[TDtk<`sm`gmg;ErtEKkVD@qaL;JSENe]V]dn;Ln_NMSc?GcNLVNMFMwn:>vw]ftfV\_U\fUfM_fl>=l[=mruDT[emunu_MkcGEul@GwpGOyvEFvuFEekMVuEKEk\IYleE?el?PpiP_iq_PqiVD\fP_iqHPfp_nqyn]luOVpfD=fp]SbZS]yx]Lxw=DwnV]nmDRmnRDnmDRmn]dp_L]nf]c_UdkfecmUfktunR=|Las Palmas|Mecking, Henrique|1975|B97|1-0|B +FVl\@OsdEU\UOUph;Lwp@vxTKmeIQtmGWdUNUmd=Mru:=gmUpxpL]nfMUf^W^e^UMm\MN\KNKZ\@Ak[?O\TKT[TOLd[CKutA@wu@GTKDKu]=]tL][LDGO|Palma de Mallorca|Matanovic, Aleksandar|1966|B35|1/2-1/2|B +FVl\@OmeEU\UOUxg;Lsd<`nf=Ewn>jbF?tlENdU=UwtUEnSL=mR?MR[>FSRM[R[NK[ZBJlTEMZ\MLtlLTcTKS\d<;k[=GbZSK[SJSZSGMljMSdrDLj:;DTZ|La Habana olm prel|Walther, Edgar|1966|B64|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBRtkEMme=dRBKRKDKldV\f\U\mlKcltOUh^NW^mcdm\:wnIYkS>VSe_OngVWedOdudWTdUTRUfRbgYHPYgbRgU@Hi`RZU\HQo_Zb`gGWgoQY\GbBG>Bjogjb>GYQG>QYphYQ>EbBESBRSeRbelbdgodblubRunRTaYPXneX_h_QYogYPfWTdg^POWfdbfUON_WNMUfMFe\FOfUOX^VbRWOR:UD:|Capablanca mem|Geller, Efim P|1963|C88|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUul;EZdBJgmU^e^JRmcR[b[:rcrE?rc?NtfN]c]V]wuDqxwqVle=Df]V]e]DqngO`dn`Vnx@wn?>k[RKmeDLvxEUtXU]dZKDldIQXO=Od]V]ZT;ETcE?gvBRphR[b[:n`i`u`:j`WMVWOVOws?NpvHXctjJvlOFtcJZctFbtnbTntS[qi@HxpHOpgOVg`QY`gX`i`NXgnY`lvZbskbdtjdbjtbJtcVMvlXgcmgmnmJbmtMLksLStkbJsyJOyqSZqYCKYWOW^W[clvT[vp[mWOmXpaXOaWOXWMGO|Bugojno|Gligoric, Svetozar|1978|C91|1-0|W +EUxgDTph;LwpFVmeGOvxk[V_[TMTh_IQvoHXaWNW^WFWpiX`i`A@gXLFogQY`Y>?rsOX_XTMwo<;tmFLswWfg?@?o?L=wGDKm[M?G?BR?OKS[M;B|WchT U26|Dittmann, Sieghart|1957|E87|1-0|W +EUxgDTl\U]nf;Lf]T]meFVph@Owp?Fvx>@wvOEsmGOjbBRul=Km^RZrsL=gaETo_V_t_HX^TFTk[ZcscKBpU@Hlp=L_mpoCKgXLVX^V`o_|Moscú, Cto URSS|Tukmakov, V.|1969|A77|0-1|B +FVl\@OmeEU\UOUxg;Ljb<`ph=Ewp>k[T]rsUjtk]kuljbskbelZ<;wre]kjYPpwDLZB]BjB;DwJ=;J\>=[S=]\wLTrtPewe]eBZDKZ_eE_W;@wn?>k[RKmeDLvxIQdZKDl\EUul;EZdBJ\ULU^UEKgmKUdUOUng@gVEUk[RKm]U^tf=Fwn?=vxDT[TKTn\@h`YPd]T]m\:vwk[wp[cOP>=Pl=eltCKpqcb|Bled|Fischer, Robert James|1961|B47|1-0|B +@Om]EUnfDTl\T]f]<`wn`nxnU\uZ;LsdFNZ\?Fvx>@tf:@wvOEsb?>blBRkc=DlbF[bSD=tmETgXF_VLVm[R[XgVgug:jS]Terjevg`veqaeV`_IQ]WF>jm=KxpPW_WKfmo>FaYfXW<@IU^HP=suES\SJK^dFTdZKSZTST_MTSpwSKM[Wlw\KL\U=@meEUtmCKjb|Bundesliga 9091|Maus, Soenke|1991|E61|0-1|B +DTxg;LphFVmeEUwpGOvx<`ld=Ejb?Mk[@Fn^U][TMTqi`igVLVuYHPYiEipi>GwuPXtk:=d]T]k]=]sdBJdn]eueVerueTndIYuMX`ipAsjMEc\EN\N>Njc;E=>F=EF>E=>FQ_FI=eclegqagilkCSIHiqkcqickihHI@VNENnNGNgXL=wvK\sm\VmgVevfT\XN=NfNCSNFBRgveotfo`vl:>F>?>rvS[d[R[fm>vlv[cjc\cve`VetV\tc\m|Candidats Tournament|Benko, Pal C|1962|A20|1/2-1/2|B +FVl\@OnfEMsdHPphMU\UOUjb;Lwp@meIQul=Ek[:=wuGWdUNUpUEUlj?GjU=UrjV^e]LVjlUM[SBJbZJSZSVgxpMKlTH?TU?[tkG?urgvpxvekd[MrB@GdRGNnd?@vx?>^ULUdSRmumE?l\BJSdU]d^O^e^?NgVNTm_=DVeD_e_>^_e^neTqinku]GOru@?p`W=CIYPID=uknbfpofnonu]DLPOKV]>=]T=@dlovT]@XWeXHeWHF]em^|URS-ch36|Liberzon, Vladimir M|1968|C87|1/2-1/2|W +DTxg;LphFVmeEUwpGOn^@Fsm<`ld=EvxU]d\HXjbFPwvIYuZ`imwYaZl?Mk[><[TM;py=@rsP_gmi`yp_pxp`ipxOW^WEWluahwhWIm^iWhwIi^hW`ogV^v^;hskLVg`@?^VhVkp?gtXA?wmgeunebxyVqmsq_yx_fXfbf|URS-ch24|Tolush, Alexander V|1957|E81|1-0|W +EUxgDTnf@Om];LwST]f]<`qi`gug=RsdFNvx?Ftf:@SeR=ruO>dn>MnhHPldFXwvXfgf?>f_>FvnFEia=?aYCSuvBRYPIPnfM>eSECbZ>HSJ<;JC;CfnLF_MH>MT>OTRC;k[?QRD;>ZRO`RJQqxwFWnjNVhWqywnV]WF>FDFypnupgFn`outgdtsoeJBd[jk[Rn>@HB:2R:>:ev:UvekC|Wch-blitz|Nogueiras, Jesus|1988|D38|0-1|B +EUxgDTnf@Om]T]f];LgV=Kld@vx?>wvOEvfE?uYHPY`FOmgOHrvGO_ML]g]KM]NHQfnOW`hMhqh:nvnQHe_H]d]@Gog<\|Kislovodsk|Simagin, Vladimir|1966|D35|1/2-1/2|B +EUxgDTnf;Ll\@Om]T]\U=RtmRUf]<`wnUEmfFNsd?Fvx>@gV`nunE>o_:=ruOUftF[d^GOVL>Lue=k[RKeiHPihOWqa@GaYUOYPIPtkLUwv>Fhf<>fVUMnoGHoaOUxoK=vy>@TCMDaIH?CTDMIQ?GyvF>QI@HIQ=OTNOVNXG@_VMFQaUO]UHIXIO`oh|Latvia Ch|Darsniek|1954|D41b|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQqiEUwv;EnwE?tm?PdZKDl\U]ZTOIph>?wpCKTcGW^W@tm`NrtNUqa@AgqENZuRZo_OW^oUpxpNPaYPOqgV_m_OGYQHPunA@oiFOiXGUnNUNXN?GgXOXNXGF_MFfM_fF_M|St del Esterol|Quinteros, Miguel A.|1987|A65q|1/2-1/2|W +FVl\@OmeEU\UOUxg;Lsd<`nf=Ewn>qaFv_GIQGO|Wch-blitz|Gurevich, Dmitry|1988|B63|0-1|W +FVl\@OnfEU\UOUsd;LulHPjb?Hme>@tm?>wnUdmd=XqaXFk[@tm?=rtENdZTtwtDFneO^mR=>e^U^tuCSRdGO]MFMuMSZMJNjJZjUZB>;BEULEDLUxoIYoh;SqiSCDCUChaCJaYJwYPwpiapidOHOPO@?k[iEaYESYQ?@OF|URS-ch24|Keres, Paul|1957|B14|0-1|B +FVn^@Osd?[phDLjb[RmeEUtm>@wpU^d^O^e^GWmR=Rk[RK^WgXEOunV^n\@Arv^fof>fxyWPvfKfX^fb^MBRMCR[\LbkLT?:CR:>RL[clcPeTtkcwvO^L]cjt_IQ]gjBqaBoyqA@gV>Vv^o_|Moscow4|Mukhametov, Eldar|1991|C76|1/2-1/2|W +@OphFVwpEUme?Fxg;EsdDLvx>@wvCSn^U^d^O^v^=Dtm@meCKvxNjRCjUCMrt>=tlXadnDT[TaZUjMCTKBKm[?GjGZlGCln[F=@CKnewtW_f_V_FOeWOHAHtDHQKC@ACkWRkHQYDFR=FVPXHG|Las Palmas|Fernandez, A.|1975|B46|0-1|B +EUxgDTnf@Om];Lwn<`qi`YvxFNkc=KtkYgngT]f]:=wvBJue?Ml\M;sm>@ru?>jbU\m\KDxw;B]UOUgUNUv>=>eUD_Ug_gpg>=u=L=ktCS\MBTM^TFbZSZcZGW^d@GwnGNne=Gg_F[dj[vtkHPk]NU]KGMenM\nv\KZRK\j[U^[J\RJT^_TN_gNXgpXIpiogRLvoLFIXiaXNFUN]aXohU_]L_YhoXOofPXL]Y_]L_Ufo|URS Cup|Psakhis, Lev|1984|D58b|1/2-1/2|B +FVl\@OnfEU\UOUjb;LulHPxg?Hwn>@vx=FmefTFEbZCKTKL[lD[eneEegVe^wv^UVg=v>G>K]O]g]>Z_;@G;AGFAIUGIAGOAOFO|Palma de Mallorca|Medina Garcia, Antonio Angel|1966|B80|0-1|B +EUxgDTph;LwpFVme?Fvx@On^U]sm<`qi`Yjb>@uvOEgqCSpgYgqgEKvn=ExqENgxT\o_V_h_GW^WNWe\FM\S:>ng>fgLM_w_W_qy?OLCfvmg_gCgOgypgwxnKZiaIYrsZTk[T^|Candidats Tournament|Fischer, Robert James|1959|E93|1-0|W +EUxgDTl\U]ph;LwpFVvx@OmeIQjbBRnf?Mf]V]wv@sm=Em^O^v^NipiEitQHQuY@I^`LFrv:>vFMFYWIAWVGOVYi`Y`?@`EAHaWH?WQ@XqaXVE`F=`@?F@GFMGC>FQGMNG=|Copa URSS|Vladimirov, Evgeny Y|1988|E90|0-1|B +DTxg;Lnf@Om]EUl\T]g]FNwn?Msd>@vxBJkc=DphU\c\?=]LDLrsMDuc:;tbCKo_gC;CcZ>ZdZC;wuO^u=D=suKS\SJSZT^dum;:bkdjmE=Kk]KT]TjdECIYT[dUCSUfSY:rxof`opGW[drbd]be]xeuYaumpgNV_V`Vg_VP_WPaha@IxfmqWXqnf_npXWHPWOp`_X`^OG^vXFvwFOwoGNI@OVowVMwrM_rZ_X@HXOH?OF?>FXZJNV>GX=JZ=XZrV_ru_VuwXQGFQXFEX_wo_XoWV^ENXfWwfQwr^_rZ_hNWaYZbhpPYQ?bc?FW`F=ckpx`i=OkKOVKPxoi`VD`WDhP`ogYah_ai_h`Ph;Pp;hpj|URS-ch32|Kortschnoj, Viktor|1964|D42|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUul;EtmE?wv?NphCS\SLSZTNT[T>Nnw@mcTKumBRjZFP_hKDhD=Dn]LV]SDFc]GWph:Jwn@ut=mgm?=kdL]tkV^wvfovo^fow]nmgWewvn_dV_YruGOkdOVue=edeY_edFbvubjdfjsftsetmesmtse|URS-ch41|Sveshnikov, Evgeny|1973|B40|1/2-1/2|W +EUxgDTnf@OkcHPtk?Hwn>@vx;LgVLVkVOYVHYHmeFVwvHNngNXl\U\e\V^u=?=gnGWsd@wn?>k[RKmeDLvxIQdZKDl\EUul;EZdBJ\ULU^UEKgmKUdUOUng>Fm^wvUFmd:=UgDdvwdL|URS-ch36|Averbakh, Yuri L|1968|C99|1/2-1/2|W +EUm]DTnf;Lwn@Oxg<`qi`YvxFNkc?FtkYgngT]f]=Kwv>@jb:=ueO>smFOldNV]VLVel>DgnDNmgVgngNXvf=>gU>fof?=leKMf^MKxwKcUc=ecUXNUCOdkdedbZ@?ZR?FrsdbsSNDSTFMTLMELTbcCUcswoskogDN|URS-chT|Spassky, Boris V|1975|D58|1/2-1/2|W +EUxg@OnfHPk[?Htk>@l\<`ucBRjb;LgVLVkVR[c[=Eog`W[kDT\UEUf^W^g^U^wnOUVHU_kS@Hsd^pvt:bSk?:dSH@SbpnkcnJyw_etlJburbclc:=rB=EcdGOwre[rREDd\[LB:@GRTDE:jFV\dGNjkEDmeNMT\OWkSPXdmX`mfIYe]L]\D]SDCSDCKMTKQDUfoW_QYT]YXUOXPO^ox_gP`]f`@goxp^m@?ow2?wmwqawmaYm^YQ^O|?|Lautier, Joel|1992|A46m|1-0|W +EUxgDTnf@OkcHPtk?Hwn>@vx;LgV=DVLDLl\?=ngLMsdU\c\Mmuc@xgDTvx;LsdU]dZ=RkcOEgXRDX^CK_W@tk?>rt;Evx:bdU]dRWTRT>vtvBTvVYhVThnxylZpi<;TWntWGtcm^LTiN]e^demN`ZLyx=@|Las Palmas|Larsen, Bent|1977|B16|1-0|W +@Ol\DTxg;LnfFNm]EU]T?Tjb=Fk[TKtk>@sm?=weNV\U=Ue\UMvxvl>ElfUYf\Yqwxqa\VE>srFM|Ch Georgia|Giorgadze, Tamaz|1970|D29|1-0|W +FVn^@Osd?[jb[Rxg>@wnEU^UV^g]OUdU=U]cUXcRXpywuU>VU\^fnefnedqownVndcnl\UlkcZo]ru]UuUIQTL:RLX`JB`hL;hpB:2px2DExf:p@?;LfNED>@vx:>tm@AdSGWnuV^gvMVe^`uruW^md?WS]L]d]VMph>?vpFGcGWGp_?>utKEwuBJt\A@_UDT]HCSUOEOuM@H\TOETUEVMJGWJBH@BE>?E=Vgxp@HUW?Wk[WX|URS-ch37|Vasiukov, Evgeni|1969|B60|0-1|B +DTxg;LnfEUwSBJSLCLl\GOm]T]f]FNt_@FvxHXgXOXuY>E_VA@\UNUY`E>`Y@Psd=ErvE`YI@wnIQXa=KvxL]f]sw>=wu=>xoK=uv=Op`HPfQPWQOMO`XOP]ULEqaGOXO@GaYP`UM>@mu`pofGOYQpqvyqyuyOVya@AdnAIn_VM_iMFiXIAQIFOf_E>aq>PqmPImMOHMEHPkcI@EMPH_W^fMEH?E=?F=e|Riga|Teschner, Rudolf|1959|B22|1/2-1/2|B +FVldEUm]V]d]?MxgIQqi@vx=FwvO^elGWd^W^gqFavn;JjbJDlmDNmv?gvwgWtmNXmvXgqg^gnlgpxpa^og^l|Vilnius, Juvenil Equipos URSS|Leonov, A.|1949|B13|1-0|W +FVl\@OmeEU\UOUxg;Lsd<`tm=ErtUKjb?Fnf>@qi`gugBRguRZwnLRulRctuDTvx:gUEUVhGWsdUEwvXOf^O=dUEGvf=Rxq<=ha=EfhEU^URDe]T\o_D_uwc]lu_hahGUho>^uY^nwx]g|Keres mem|Oll, Lembit|1983|B61|1-0|W +FVl\@OnfEU\UOUjb;Lul?Fk[BJtkGWme>@xgFOsm=Fqi@Af^W^e^L]lTFT[TU_g]V]ph_NmcwpEZcmOFvxFT^V]em^TKxqZlo_K]k]N]^mCSp^DT|Amsterdam Interzonal|Vranesic, Zvonko|1964|B43|1-0|W +EUxg@OphDTwp;LvxFVme?FtXIQXOFOgm@n^U]dUL[UO=Oo_[L_WNEmgHXWPOPwoGOuwLFpiP>ga@HiE>Ewn?@rw:?nYENkcHIaWFWoWNFYi@XWXOXw?F?iE?HEWI@W@wv:=rt]WvVWhoh=MtdHPbZQHuv?=[SLSZSMede=epCeuvuHVueV]e]N]CJ@HxoHOh`Y`ohOWJ@tfL]f]V]dSDTuc@AgXOUSM=Mng:=cCWewvUDruePCBIQX^P^g^=;vnDNBRT\RmN_nv]emdMTum;cdt\dkd_nmnenvncdtm?omdopxpTdnl|Tallinn|Kiik, A.|1985|B82|0-1|B +DTxgHPld@Om]CKt_?Hnf>@wn]ULCulIQf^FV_fOYphC?QMV^yQ`hoxHkrskdg^:>MK?OKOdO^WOVsv|Reykjavik|Olafsson, Fridrik|1964|A12|0-1|B +FVl\@OmeEU\UOUxg;Ljb<`nf=Oqi`Nf^UKwn?FtfOPp`GOsmPGul>@vw:=wp@Ak[BJrt=EtsHPlkKZklZKlk?=yuKZklZKmcOWcTW`i`FT[TKyaL]g]V]fXG`X=;syFLaQ;?o_LFmvFL_WNW^WGUngUWv^W^g^?>QIEI^UIGyA|Riga, Cto Letonia|Kliavin, Janis|1955|B95|0-1|B +DTphFVl\@OsdEU\UOUxg;LdU=Ume?Fwp>@vxugHPqaKSZSESgCNECESE\M>FpUAHM^d[tDESDF[FU\S>xwIQwnGW^mPXaX>Yh`Y`og`YXQHQ\UQXm\F[|URS-chT|Suetin, Alexey S|1967|B36|1/2-1/2|W +FVn^@OxgO^me^OgVEUe]?Mwn>@sd?>tXDTVgT]g];LvxIQXfBJngMD]cLVf_U]c]DK_V>VdnO^ue=Fldg]NVWM>;]gVYruENd\KDwvDMeMN\kc\NM;:;g]NE]lE>uM;Lwv<>M=>=u=?F=]Tt]utuvuFNo_LE|Keres Memorial|Schussler, Harry|1983.02|C42w|1/2-1/2|W +@OphHPwp?HmeEMn^FVsd;Lxn?u=|Tallinn|Barcza, Gedeon|1971|A04|0-1|B +FVldEUm];Lph@OwpIQ]VLVsm?TxgVgmg>@vx?>t_O^_V<`V]TM]fDLgm^Owv>fof=Ff^MTxyU^ulTovw^fmgFTlZ:>Z]TYwoO^ga^oyx`nrvoepgng]eg`vfYTapTKxw>=e^`ife=e^eKke^ip^pkswosjowjp|Kapfenberg, Cto Europa Equipos|Kolarov, Atanas S|1970|B15|1-0|W +EUxgDTnf@Om];LwS<`qi`gugT]f]=Kl\FNsdU\vx?[]U[dkdKSUL:;LCSCgh>@tQOYhaCSQfYOfB;:jZSRBfOUf]GOo_UdavdZvN@AN\?<\c<;cf;>fc>;|Moscow TV|Beliavsky, Alexander G|1987|D38|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb<`nfGWuc=EcC:;CJ`gpg?Fwp>@vx?OsdUKwuW_d^OPxy;?JS@Ae]V]f]KUSwPQk[?WtkWYwxEWrtL=uv=NtLYa^mFMv^WYmwNX^vA@LTXgpgYgxpgpypQPpyMT]TaivuDLkVBJuriebZec[S|URS-ch32|Sakharov, Yury N|1964|B97|1-0|W +DTxg;LnfEUwSFNvx?Mm]@Ol\>@sdBJSZT]f]U\ZLCLtXMFun:;gV=Drtjb[UT^MD\LKLVL;Xt@GLT;chncsphDMTlMbxpbMtmRZlLZbndsKLKUKdjGFpgFEgnKZneELogLSmvHPvmIYmvZKjdSLdjKUvRLSRmMFqiF[|Kislovodsk|Stein, Leonid|1966|E56|1-0|B +EUxgDTnf@Om]HPwn?Hvx>@sm=DldCKkcxpH?\UIYqa?Hf^H?U\>=E=F=DT=FTU?H^VOWU]H?\eWNe\NL\ULT]^?HU\F=^gTFgU=Do_DKc[KD[SDKUL|URS-ch40|Balashov, Yuri S|1972|E09|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBR[SDLmeEUSLCL^UOUdULUe]V]tk<`k];EqiK]g]`n]nEOueIQrs:V]gVFg]|Moscow|Stein, Leonid|1967|C90|1/2-1/2|B +FVldEUm];E]VEVt_VP_hIYqi@OsmYahq?MqM=Mula_?o_?AfnRZMSD;d\ULnmZcjc;CrkAiSMC;M^LEmENE^Xiqkb;Dc[qoVNE>NFDLXNogbkgokdogdmLM[SgomfolNHMEvuEFfelouvFEv>o_>N_]ed]MNMEMH>MVdePXefX`>D|Hoogovens|Chandler, Murray G.|1982|B19o|0-1|W +EUxgDTl\U]nf;Lf]T]meFVph@OwpOEvx?Fwv>@jbBRsmGW\TV^e^ETmcW^gXTep^evuYIQYPFXPI@GIPG@PI@GIP|Sukhumi|Taimanov, Mark E|1972|A69|1/2-1/2|B +DTxg;Ll\@OnfHPm]T]g]?Hsd>@wnEUvxFV]cU]f]V]dSO^ne^MtX=XSM<`en`nun:;ru?=M^XFwv=>nmCK\TFETKBKm_>N^XNvuv;=vu]ectLVXgVgpgESkcHkxpkt_temt\SX\`XO`^Ok^F=eF^eM^Fk]F^]O^fO=f_MUjZU]_VPXVWIQqi]UW^=E^`E=`^U]^W@Hpw]UW^=MwpUe^\MEc[e]\dHPZRKR[REUdfX`RJ`ipq|October Revolution 60|Karpov, Anatoly|1977|D41|1/2-1/2|B +FVl\@OsdEU\UOUucUKxg;Lnf@wnFMvxGWmeKEtkEOruO`qi`Qe]V^gVMV]V=XdUNUuU:=U=?=nJLVkVCJlDQGV]GMia|Sevilla op|Gonzalez, R.|1992|B33|0-1|B +DTxg;Lnf@Ol\HPkc?Htk>@wnEU\U=UsdUWvx?=usWsrs@g]K\vu\Vuc?GqpVL]gLRcSMDg]GFSe|Riga Interzonal|Bouaziz, Slim|1979|E92|1/2-1/2|W +@OxgDTphEUwpHPm]T]g]?H]c>@sdFNn^;LtXU]^V]du=?=VOdkrsH?sk?bksNVcmb[pL[mXmCLmQRrBJohCK`XKMrvMmfd>Nqam]df]mfdm]vnN>df]UhiSEiqEWfbJRqhWEn^UThoRZovEL^n>=voLSohTUn^=:^fSEfdU]df:RfvELvsRSsvSUbf]_vsU=sKL>fV_]KJ=LRT<:BFLUFVZbVvbjvr\dTd=;de;s|?|De la Villa Garcia, Jesus M|1989|D73|1-0|W +FVldEUm]V^d\U\nf;LsdrJMTJLT[LN>:^I:jnv|World Championship 24th|Botvinnik, Mikhail|1961|B12|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQgmEUngBRtkR[b[:rurU]dZKDgn;Jld]dkd=FrbOEwsCSZkDMkuEKmgKZdmLT[TMTbrJDmRTKRKZKufFMe]V]|URS-ch32|Stein, Leonid|1964|C92|1/2-1/2|W +FVl\@Onf;LmeHPsd?Hxg>@wnEU\UOUvxCKtm@vx?>rt:>tvW^gVLTVeT]e_O_d]|Bled|Trifunovic, Petar|1961|B14|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEMsm;EtkE?wv?Pm\KDnwP_e]V]u]<`^VMVgV=]k]`WrtOUVg>vgv_N]kNX\R:;veX^tv^mkV;@HbZdZ>^\bevZd^fdUf^GW^]DF|Capablanca mem|Robatsch, Karl|1963|C94|1-0|W +EUxgDTld;Lm]@Oph@]TFTZ\O^smTowo^oxo=Kow:@vxCKl\wvEMnwBJjZO^d^>^gm^[f^;Erb=Fm\KS\REKZSJSRCFCbc[cucS[t_CFqiHV_VFVwS:BvfBFphV]cjT\jR]TRJ[cSLT]ia]kJKktxpckK=@H=Fks2pgtyg_sxfgxp|URS-ch35|Zhuravliov, Valerij|1967|A14|1-0|W +FVl\@Onf;Lsd?[xn>@nhEU\UOUwnnS>?W]ZdmdLVrvVPxo?Ov>@H>|?|Leonid Stein|1977|B30u|1-0|W +EUxgDTl\U]nf;Lf]T]me@OphFVwp?Fvx>@wvOEsbGWrs@AblBRjbRZtmFOl[V^e^W^v^ET^_TN_WLFWYHPYVOVgVFW[UAHun?>qa:JsvWFmQHQV`|Moscow|Ufimtsev|1967|A78|0-1|B +DTxg;Ll\@OnfFVsd?Fm]V]f]EUwn@tfT]g]L]f]FOngO]u]=]d]?=gC:;ws=]CU;srsIQUNGNxw]msv@Gvnmunvumvnmunvum|Bugojno|Hort, Vlastimil|1980|A34|1/2-1/2|B +FVmeEUph;Lwp@Oxg<`vx=Eld?MtX>^p[duZdrwr<;pLEWL>=>SKW^ZB;=|URS-chT|Kots, Yury Isakovich|1962|B08|1/2-1/2|W +FVldEUm]V^t_DLnf=vxHXhWNW_haQwW?MhMQMWX=DXWA?rw?WwW:?W?M?cuEKuvBRp`DCqa?H`XKEvhE?|Tbilisi|Zaichik, Gennadi|1986|B12|0-1|B +EUxgDTnf;LwSFNvx?Mm]@Ol\>@]TMTsmBJ\UNUSLCLul=Mf^U^m^O^l^MU^ULUtfTMrt<`tL`gLMg`MU`NUR?NG>vwSTUCEvtECtxw>SwoCETME=og=EUTGHgoECTUCGMTSET]E`[SJSRJ`@smIQX_?>ulE?ru?P_fFVwvVYog^g^O`pg`f|Skopje ol (Men) fin-A|Timman, Jan H|1972|B07|1-0|W +DTxg;Lnf@Om]FNl\EUsdBJ]T?Tjb>@k[TBtk=Fwn?=ulU\n\CS\c@wn=FvxU\n\NVsdV^g]TMph@n^=Dwv?=ldCKulFVjb@sm=>M>@?wvE=>OHOpC=;CU;=UC=ECpEFvF?FxwFMwv]lvnl[jb[LneKoh`LVe^ov^WMFpUvok[R[b[Ve[SoKULeVL^KfiaVGWPGM^eMGe^GVPWFG^UGHUCVPaYPVCUfKUCHGCUGFU^VGWPKf^UGVPWVeU^eT^LTNW^fKLUNHULFMLCMTCLT[^UOW`WHWUNWhNGKfGP[TLEh^EL^MLEM\EN\VPWTMNcVEWP|Wch-blitz|Chernin, Alexander|1988|E92|1/2-1/2|B +EUxgDTnf;LwSFNl\@OsdU]dn]fSLCLmf=Dnd?Mun>@f^O`qi`VtfVgngGWvtW_^VMFf_HXphX_h_DVgpVHpLLJlkX_pnAIn^_q>MJKMSIP^nq_c[T[kcK;SM_X\TX=npPIp`=R`_;@cZ@:TLI@Zc:J_\JBMSB:LD:GI>?IY?HYIHPIBPWBGW`XgVRGH`_g]NV]n_WH@RZaYZanhW_|LAT-ch|Klasup, Karlis|1955|E41|0-1|W +EUxg;Lm]<`smGOldFV]VOVn^U^uZ^gZ`gpwp=E`E>Em\?Mtf@OvtEFk[BJjZIQyvA=o_V^\m=>p^FG^g>Nm\:>tmL[_WN^\MDMd[^[usO^me[ZgY|URS-ch40|Alburt, Lev O|1972|D01|0-1|B +FVn^@Osd?[jb[Rme>@tmDLxnEUnh?>wn;EqiE?n`NvwOPYnGW^WPWwv=@xq@XduV^e]NQnwQOqxW_wnCSvw_aufOgxqa_qy_ayqXYqxaXf`Yi`VXapigio_iyxpaq|Tallinn|Keres, Paul|1973|C75|1-0|W +FVn^@Osd?[xg>@gVEUVe[dmdU^e_=uvu;LqiIQuvnh@HwnVPkc:=d\ELumBJjZLEvuQYia|Bundesliga 8990|Smejkal, Jan|1990|C67|1/2-1/2|W +EUxgDTl\U]nfHPf]T]k[BR[SCKph?HmeFVwp@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvE?nw?PphBRl\U]\T<`rs=Em\R[b[OIkt>?wp@AvwGOulOW^W`WgmIXm^X^p^W^e^E`sc:rog`NcbrbtbQYxpYale?:bt:jtmD=ecj:ce=FelFOleO=el=DleP?wtD=tw?Ewt:Ztl=FecZrltrtmtCK\RNcRcKT[TETcRFMhaTetXLTR\MDpwA@wne[XF[JaY@GFXJ;YQHQXQ;LQX|Varese playoff|Portisch, Lajos|1976|C95|1/2-1/2|W +EUxgDTl\U]n^;LmeFVwn?Mvx@FgaGZR:;kcruNVKUDFvFGPFNPGNM=>MEGPbFlb\Tb\K\c\EC\UCEUNEBPWogQYTLX`g`Y`xoWVLDN@uZ?=wvU]d]L]ZE]gpg=Eg`O`og`Om\FMjZO>tf>D\MEMfTMerueguEDNTfCKEUN]xpgOf]V]U]:>vtBR|URS-chT|Borisenko, Georgy K|1967|E94|1/2-1/2|B +DTxg;LphFVmeEUwp?FvxGWl\@O\UOUsd@gmNEZuFOjb@Ars=Fm\:=tmE>k[T[b[V^[SL]e^W^SKBKd^>Lm[FN\mOFnfL^p^F[s[]L^LCLulDU[aUO|Stockholm|Uhlmann, Wolfgang|1961|E79|1/2-1/2|B +@OxgHPk[?Htk>@nfEMm];EwnFVvx=Fl\?>sdDLjZV]f]MUucU\n\EKwvFD]UD_v>O>rv>O\e<`gV:>dn`nph_QUL>VLCV>vn>;ZRKUkOUOnF;?FGQtxptLog|Moscow|Bilek, Istvan|1967|A05|0-1|B +FVl\@OsdEU\UOUph;LwpfKDK[SL]g]Up]LCLSLpLtL>NrtNLZLELtL=L<>NBJpgKSZSJSgfS[>FLDFDCDe]V]f]DKn^KSo_[c]dST|EU-chT|Portisch, Lajos|1961|B77|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>meDLvxIQtmEU^ULUe]V^gV;Em_RDVEN[mESm[SE|URS-chT|Keres, Paul|1962|C87|1/2-1/2|W +FVld;Lm]EU]VLVsm@OxgVPnf?Md\>@\UOUw\UOvx=FkcVhahqhYgyx>vwvAIbT=mvfgLTBmjBTIPT]GOxwLUc[PW]TW`wvjrvorjovCST]jJvoHXfFU\F^`i^fJM]dMufvuUvfOWovipdV\cVOUuvnuMOFcunvMEfNu`FMW_NP_gMTgoToEu|Kiev, Cto URSS|Vasiukov, Evgeni A|1964|B17|1-0|W +EUxg@OphHPwp?Hvx>@l\;L\UOUsdUKmeFVjZBRtXGOXm@d\U\c\FP\TMFsdGWdUCKn_KTiaPaw\@AUFLFvtFPyiIQbkP_f_XF]T:=mdEZuU=U\U?=UcZcjc=eie^ephaPc[BJdeFvtlv[eW[\ls\wsjw\jbAIWE\TbjT\jr\wrj|URS-ch sf|Gurgenidze, Bukhuti|1956|C16|1/2-1/2|B +EUxg@Onf<`qi`Yl\FNkc;Etk?MwnDLvx=Fm]>@gVYPsm:=utPWo_O^m^W^ng^gVgGWjZ=<]NGNulO^jbHXneX`i`Q`e^U^l^=uvnuy^`FE|Amsterdam Interzonal|Benko, Pal C|1964|B17|1-0|W +FVnfEUm];El\@Osd?[]VEVtm<`uZVL\UOUwS>@SLCLZLU_f_?>mf=ejb`ELDESb[ewvm>=mlwr|Moscow|Uhlmann, Wolfgang|1971|C07|1-0|W +@OphEUmeDTwp;LxgFVvx?Fsm>@n^gv=Eo_V_h_GWvgW^m^>O^XN`qi`YuvYgwgFMXN:>_WL=tX=NWN>NvaMVrwEMXOVOa`@AgWCKWYNV|URS-World|Nunn, John D. M.|1984|E94y|1/2-1/2|W +FVl\@Osd?[uc;Lnf>@dU[RcZBJk[CSZcS\w\:;jbOU\ULFxgEMU^DT^I@Icl@wnDT]T=RvxRTtfTRg];L]cR=um@vxDTldCKgVEUm]lsFVfTEo_`ipiEivn=>twT\ru\^noiEueQ?omV_w_^V_gIYxpYahaVYpx?Mmp>^goEien^al]iE]gaineYWewENg]WowoN^]l^\oOMqpq\`xy`uypiqpqulqhlkOVkbV>@H>VH?V;?F;DFOD_ON_`NF`aFEhgbdaZdLZBENgoU]f]Llogldgnd]B:]VnoNW:@jb;Jl\JTnfEUrs@l\[dkd?@sm?>wvF?ld:;^UOUm\GOjZ;eb]cmdIQqac]bRKcdvEDRJcKvR]cJBcRBDRctfc]h`KkfQHQ^O?HOY;?DH?opik;`X]WHB;ci`Wf`hfuh`uf`h|Leipzig olm fin-A|Gligoric, Svetozar|1960|E96|1/2-1/2|B +FVnfEUm];El\@Osd?[]VEVtm>@dU<`ogOU\U`YwnDLm[=avwa[u][MULM]f]VLru?=]UL[n\:<\cYPxnPlu]lcjc=U]U[Uwo@?yu@qi`Ywn:=m^TKp`YPgaKRk[P^e^UdZldnvnRKagENtkBR[SLBbZDLkb?>SL==enjrkrT[rVCSZSBSVkSM^VM^k]=;cs;BRicR:>E:?EN`Xc[]T|URS-ch26|Kortschnoj, Viktor|1959|B94|0-1|W +EUnf@OxgDTwS;Lkc<`tkFNqi`Yp`YPgV=Dme?MSLCLo_U]f]T]k]OUugGOVPIPsmM_m\U[gp_hvmh_]f_f\f[Uf\D_mn_]pg>jZENqyOW[SW_foLSZSNUSKBKysU]sSX^og^dSKV^e^]\g_d^KP>FPJ\UJR^T_WUM`XFNR:HPW_N^_g^Vg`TN:JMU`aU^Jr^g|Zuerich|Dueckstein, Andreas|1959|E13|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLdZKDl\EUulIQtm;E\ULUrtD;vxE?ZdCKwvvtv=Ukt;Mt\UYo_:=vnYWnoMFwnFaow=>nuWPp`><\SPNSZNjZEjmEC<>`XaoxymeCpewpw>vwvovXQHQunvm_W@HypHOnemtbZtb[SbMqiOVpgVUenMFne|Buenos Aires Najdorf|Larsen, Bent|1991|C88e|1/2-1/2|W +FVl\@OnfEU\UOUjb;Lul?Fxg>@wS=MsdUdkdGWm]V^gmMPvxFMo_^gmgLFSe@AtmrvPQ]TMTd]CKgVEFqa?>aYAHbZOMxyMTokH@kO>?OXTMghFHYQHFhf?>wvFfvf>fXf@Gf]MO]_@SLCLsmBRtkO^m^U^g^FOru=DuMR[MO:j^[HO[`@Ayx|Simultáneas Riga|Kholmov, Ratmir D|1948|D44|0-1|B +FVl\@OnfEU\UOUsd;LulHPjb?Hxg>@wnCKmelcNcsc>MogC@vxBJkc=DphCS]LDLtmU\ngOUc\S\dUNUmdulC:wuLTd[TK[d|Palma de Mallorca|Portisch, Lajos|1966|D42|1/2-1/2|B +FVn^@Osd?[w\DLxgEU\c=F^UV^vxLUwv@tXFGXa[RcZ:@\ULUnf:;]mO`XF=FwnDLn`<`qi`@tfNVSLCLvxOEk[GW]VEVghFOruVPdnBRjbR[b[<;fm;CwvW_n_P_m_C[_VOVhV=OVNONvN[kog?ONFOGF>G?>VklurlTrB@AVF?@BDU]FETUEULUDEIQEU@:U]:jiaQY]UHPUEjZphZjxwA@g_jkEFkjFnjbwo@GnfbjogGOfcjJcdJKg^|Tallinn|Novikov, Igor A.|1988|D38o|1/2-1/2|B +FVl\@OnfEU\UOUsd;Ljb?Ful@sbunCKTbU^e^E=\fH?b?@?fU:Lw\NU\ULOueBlm?HUG>OGU@jbBRsmOEwvIQrsETmcTJtmRZctJTulgm=Km^L[b[ZdcTEL^d]dpLKL|Biel Interzonal|Andersson, Ulf|1976|A64|1/2-1/2|W +FVl\;LsdHPph?HwpEMrsGWk[BJjZ@O[SJSZSLFme>@xiIQo_O`um@IvxV_i_H]xyPX_UFUdUDE>OED]UYaO>D;>MipSKaifo;:oh:;\TpUhiULi`|Parnu|Tarve, Udo|1971|B24|0-1|B +FVn^@Osd?[xg>@gVEUwn=FVe[dkdU^ekDTvx;Lk\CKog\f^MvhGWme@AnYHPfUFVYgVhqhLVd\Vgpg|Moscow|Smyslov, Vassily|1971|C67|1/2-1/2|W +EUxgDTnf;LwSFNl\?Mm]@Ovx>@smBJSZ=Fjb?=]TMTk[TBtkU\ZLCLulLTgX@jbBRwvOEsmIQgaEVmgVgaggmRZ^UOFm^:RUMR:tmEWMF>Fk[ZcscW^p^FEvs@I^U:BbZH?cS?MqaIHZREDxpL=piQYSKDEKSEDscMTo_TM|URS-ch36|Osnos, Viatcheslav|1968|A64|0-1|B +FVldEUm]V]d]DTxg;Lnf@OwnT]g]?Tsd>@vx?>ngLVkcBJtk=MrtO`g`<`og`Eum:=dnTBwvB;nhMPg_PetuemumV`mn;Bqi`Onl=@dTFOwn?=vxK@nf@sb[bkbOErs=FnfFbf]be]UL[wve\gVEVvV<`uc\csc:=jbGOVv[UcCRZmR`YRDUDCD?>vtYupL>VLp|URS-ch45|Dorfman, Josif D|1977|A43|1/2-1/2|B +EUxgDTnf@OwS@kcOEtkNVl\V^gvGW\ULUe^W^m^UcvecUe_U^n\?G\^EO^\DLwuLS\jT\rsSLst:=u=F=t\LSkdSW\]=FqiO^drHXp`WT]^|Candidats qf2|Gligoric, Svetozar|1968|E11|0-1|B +EUnf;Em]FNxg?Ml\DLsdGWwn@Ovx>@kc=FulO^tkFOrvHXgmOQphEOm^W^ogQinu^gug@neOYePGPlPYhPhV^ga?OaPFGP_@wu?>lsUKmREBgmF?slKUmgUFRmFLuvJRmfL]f]T]lsHPnf]fof?Te]V]k[R[b[TKf]K]xyN\sl>vtv]ovuBjldjnur@GdfUE>AGHA>HG>AGHA>\dg]HG>AEUpiUYipYUpiUEh`GHA=<=]NH@N=IYihE=fd=;hi;SdOSeiae^qiY`i`@I|Sukhumi|Savon, Vladimir A|1972|B36|1/2-1/2|B +FVl\@OsdEU\UOUxg;Lme<`tm=EdUEUuZ`En^UMrt?Fjb>@mdL]ZuE`d]`gugM]tlFTwn]MvxT]phBRbZ:JnuJKgn?=kcMExpKMn`EFo_V_w_]V_gMege=eune=n\@AloGOowHPwuVM`NFN\N=>NUCKUL>FpgAHuUIYqiH?UePXLCFIC=ELGNLSMFS\=U^UNVgfFTfgV]go]^opT]pq^g\w]VqxghwpV]xy]fpwfTwphoyqTMqyMVp^of^pf]pg]dgudmugmlgnlcnS|Skopje ol (Men) fin-A|Radulov, Ivan|1972|B61|1-0|W +FVl\DLxgV^g]EU\U@OnfLUkc;L]LCLwn?Mtk>@mee^O^d^W^ng=ag^M[vwU^u][?kd:=]Z=eZL>NL\a`qi`Pd]NL\ULlp`emyqPJwxJeqpljrjmjxqewU^jopowoqyowyqwoqyowyq|Bundesliga 9192|Doncevic, Dario|1992|B22|1/2-1/2|B +FVl\@OsdEU\UOUxg;Lme?Fn^UKwn>@vx@AtfGW^WTfRLgmL]f]V]dbOVmw>N^gYX\TNOwhOgpgX_TKEibTIYuv=@vtJRo_Xpqap`ux`EdZYQHPZTMT]TU]_W>Vf]VWvROUpnW_tlGWyu_gRmgek[e]jbW_uw;?mt_gnmUf|WchT U26 prel-A 05th|Kennedy, RC|1958|C18m|1-0|W +EUm]DTnf@Oxg;LldFNsm?MwS>@vxo_U^m^O^_V^TelTEt_E?ru?Pu]:=vu=]u]>=lPGP]=D=nm=>_fCKd\IQk[>?[SL^mu?[ut@If]^ejb[Zxoe\tdZS]f\UqaSsons^d]^g|Candidats Tournament|Seirawan, Yasser|1985|D46b|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUul;EtmE?wvBRru<`mf?N\ULUZTR[TN`Nb[U]fm:jls=:utDMtljbvt:ZnuZSgv>:lkNjsl@IphOEu`EKqaS>xpjN`N>NluKZklZdmd]dldbdtdM[d\NMvl[Tus:;l[;?[lMLl[LKsvKM[UGWogCK\l?:vs:?ljMPsvPGvnIAjkGEnuT]kl?:umW^e^EZmt]TaY:?tuAIlmZ>UD>YDN?ONTKTmlYXlTOPuvQYTlX_voYah`aipyPQowQO`X_XlqOg|URS-ch26|Krogius, Nikolai V|1959|C97|1-0|W +@OxgDTnf;Lm]EUl\T]g]FNsd?MwnBJ\UNUvx>@]g<`kc=Ftk:=wv?>phMTg]T]n`]V`gO^rt^dkdVdtdU]deLVem]fvfVgug=mfF>Fgdm=h`IQxpCSphHPqaFnognNhpPXaXQXdTNPph=MT<@I=gX=Fd^T]ld]VtfOEruIQXgVDumCKwuA=^MDMmMkc:=V]KUd\S\c\U[jb[l]Tlvg_QYxwveT?HPwne_nfNVf^=E|World Championship 24th|Botvinnik, Mikhail|1961|E51|1-0|B +@OxgDTph;Lm]T]g]=RtmRK]cEUwp<`vx:=mXFNjZ?Fqi`YZRKJwvIQXfU]fm>@pwO^h`Fa`YaoxpLVm_V\nf]fugJLw\ovsbvo\SLUS\UW\e=ele^X_XWXpw?=rt=et<@Ig^GW^eXxwnxvngoaefvw|Lublin|Szymczak, Zbigniew|1974|A16|1-0|W +EUm]DTld;LxgFNph@Owp?Fvx>@]TFTtXIQXO=Osm?=n^U]^VOWun]dkdpw@?wJ:;xwLRg]>ZumKSJSR\S\;swn=;\cZEo_BRh`RZc\;k_WNW`WFX^XQXVNE>]gkmgmsknfGNWN>Ljb?FfeLS\SkSmgX`g]SYe^Yq^_qj_VHP]LF>|Match|Drasko, Milan|1985|D94|1-0|W +EUxgDTnf;LwSBJSLCLgVFNo_=aphaimeGOVgNVf^<`un?Myw@FnoiY_VOVgXIQoG>EGY`YXGA?GM?wvwEMtfFPsmP?jbYGwp?ErwGNkc:;mg|World Championship 23th|Botvinnik, Mikhail|1960|E24|1/2-1/2|B +DTxg@Oph;LwpFVmeEUvx?Fn^U]sm<`qi`Yjb>@uvO>m\=DgVLV\VDVo_VDh`YP_WFM^VMVv^:;WPIPtX>O^gOIXmPXrv?>xy>NgUIOUcCSmX|Portoroz Interzonal|Neikirkh, Oleg|1958|E93|1/2-1/2|B +FVxgV^g]EUme@OtX?Fnf>@sdDT]c^eleCKwn;Lvx@meDTph;Lwpul:=gvCSpwUKvgLFwn@AtuNWm^T\e\ELu=<=gmS\ogFUmwUfwf?TktT]rsKUc\Uftf]fxpIQsuf]neWNh`]TlcTF^oLDusDRcCFTC^N@|Bugojno|Kurajica, Bojan|1980|B42|1-0|W +DTxg@OnfHPm]?Hl\>@sdT]f]EUwn;Lvx<`\UOUqi`NtX=RdZ:=rtL]g]U_tTR[X_=]jb[ZuZ]Z_tZ]tf]EnSE=TDBJSnNUk[FNbZHVDtGWfTVMwuM_T?_tut=?o_@HxoHOph?GiaGEZRNV[SJSnSEF_VOVRJCJSJFBJ\BDtvU^\nDlvu^UofljusjbfoW_h_V_s[U^nwIQ[\QY\[bd[ZdcZ\_V\Zcgonghnohgong_nf_`Z[`hfohb[SV_S[bjwnjl[ZlkZ\_V\d^UdTV]TVOofkcfmc[neNW>?OHeWH?WP[amf?HP>HQ>EQXfga_gh_]E<]ehpYa@tk?>wSO^mf^MSLMWfmCLgV=mvm=mlGOVgJelcLTrtT[b[BRtuR[um=Uvu:=ute^mnUec[=;[TeUT\WM|Bugojno|Karpov, Anatoly|1980|D48|1-0|B +FVl\@OmeEU\UOUxg;LphGWsd@ut=Ewu:=gXFXfXLFtfW_fV?WV^WX^C_hqhBRd^XSutKUCBFLBJSKJ\U_^TN\TE_nxq=Et\L]kcKQpiEUqpUYryHXog]Wh`Ya`Wn_phaiyiQih`IQ\DiqWOqj`WjnDBnfB:@G:BG?B:f>:R_eWPeVPQVgQY>^RZ^fY`?GZRGP`hfcOGgV|?|Kliavin, J|1950|B74|1-0|W +EUxg@OnfFNkc?Mtk>@wnDTl\;L\UNUmeU]f^O`smGWm\W^e^MqkbqM\M=MulMPlT@smxyVLne>fwg:>mwfNgoLVelV\ktNvug\ftkflolvrkr>vrkO^ltvtktK=phEiwmHQm^U^gu^fyq=@sdCKtmk[BJZc:=[SJSdS=EjZFUt\L=e]V]S]CJ\tJn]nUOv[DT[d=NgVEBuM>ZVPGPcNO^dHAHMKHIog^mNUBEKC?GCEGEUTmcT\EuxouwohZ\t\|Riga Interzonal|Tarjan, James Edward|1979|B80|0-1|B +@OxgDTnf;Lm]EUl\FNsdT]f]?F\UOUwe>@vxUOtfCKunL[e\wvUdkdFbtuIQXa=DaOHOn`@?`YOVYQ?FQaFE]UE?xpTo^Lo]muGjpyjn|Eersel cm-3pl|Larsen, Bent|1969|D32|1-0|B +EUxgDTl\U]ph;Lwp@Ovx<`qi`YmeFNjbBRuc:Jh`YPgaOEaPIPsm?Mm^M;o_=DtmL=cSRZk[ZcScGOrsPXwgJKclX_m_EVgo>@_h=GswDFlmVEh;?;ia;:wrEVpiKcbZV\ml\RlTFT^TcKow:@neOYePGPlPYhPhV^ga?OaPFGP_@wnGWvx@AulBRkcV^gv^eneW_f^L]lu_g^U=UsdUYePYPu]FO]Tneypg]poduohe\>Vc[?=|Naestved|Ftacnik, Lubomir|1985|B85|1-0|W +FVl\@OsdEU\UOUxg;Lme<`n^U[jb`gpg[JtfJTulTNdn?FvtL]n]N]f]=]qa>@meDTwn;LvxruMDe^W^kOHOXi>=vwUNxpNWi_BJwvCSpyLVmsVevwD_h_Wiog?@|Hoogovens|Sunye Neto, Jaime|1982.01|B42j|1-0|W +EUxgDTph;Lm]@OwpT]g]FV]LCLl\@tkU\kV=RVdF[d[R[umLTc\?=mdN\wt\UogUNf^[Kdf=efoOEsdEVdZK[ZTedtd[druNjojdTjoToxo@n^=>k[@AtkW^e^>YwnYPgaPGvxrvCKqi`NgqHXfgGIg?>?agFPq`IH`fHGvwAIgmMTxqEOm\T]k]V]fUOU^UNWlmGObZ?>UMDM\K]eKU|Leningrad Interzonal|Tukmakov, Vladimir B|1973|B93|0-1|B +FVl\@OmeEU\UOUxg;Ljb<`nfGWuc=EcCUKCJ?Mwn>@qi`gngV^e^LVsmW_f_?_gnMTmg_^gVTovoE]oh]Vho:?ngK\yvV]ow]ewo\kJRe]owketf^fvf]fRU@AUje_jofegnedrudb|Moscú|Zaid, Leonid|1973|B97|1-0|W +FVldEUm];L]VLVsm@OxgVLnf?Md\=F\UOUw\UK\e<`jb>@_M]eneOkrskOqi`gugK=Mb?>wvLVgnFWo_WhnoVPoh>vhvP_vfOXfg=KbTKPsw:>ct_pgp>@ktm]f]=]rs]\wp[dtbS[bkY_ph_ekd[dsu?=aYdlYPGPum=UgfUVfeVXhi\`|Tel Aviv|Soffer, Ram|1990|E11|1-0|W +EUxgDTl\U]ph;Lwp@OvxFVme@tX?>Zl=Dsm:=rsCKXOHO\TKTm^L;st;JlmOW^XGOgVOXpU@HVGEAGA=Av>A>Y>QYtv|Tallinn|Nei, Iivo|1971|E74|0-1|B +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tfDLV\OUd^=F^TKDugBR[R?>weFaphaiewiQwnUfof?WVQPytR=C;IQVMPG\VGoneoWe\=F;?F?MPJZ\cZbckW@rt?=jbBRm^=vV:=tv=Mo_HP\d>=_WPWVWMUWVUVvVFOT^OHdR=]qiIQxq]eVWHkRvkHvae]^O@AaoHPWR]_R:AHO>HIokPWkn_]nf]ep`W_f_N_iaIPbZ_NZReEqhGO:DE]_g]eg_e]_gTEghEV@l\T]g]U\n\=D\c?=un;L]LDLtmpg>EdSlkskVkSBkdg^dRBSELS]LT^eTUo_RK]gKDgXIYXgY`i`NVf^UN_WPW`WNMe\MLgX|Reykjavik|Agdestein, Simen|1987|E06|1/2-1/2|W +DTxg;Lnf@Om]EUwn<`qi`YvxFNkc:@l\F[rtU\c\?>mc=FgVLV]VYnunOEwu@vxCKldn^U^e^X`i`HQ^WQfxy?O`XfXgCOQyxXfwoMmpUmUCU@HUN>=rvfoxoQqogqkNc=eg`IY`iHOvNOWNLem|Brussels|Meulders, Richard|1987|A81|1-0|W +DTn^;Lxg@OsdEMmeHPph?Hwp>@vx:;jZBJdUCSZSJSldS[tXOU^ULVgVHVwv;Ce]T]d]VHr:IQXf=Kum@Ivr@mgDlg]l\kc\vnFNrtH?b?@?]SFtL;LytL[tHQ>OQH<@HQp`[j`X|Moscú, Open|Krasenkova, Ilena|1991|E00|0-1|B +@Om]DTldEUxg;Lnf<`wnFNsm=Djb:=qi`WvxBJkc?Mtk>@d\T]g]L]f]U\c\NV]U?>bZJRmcM[neWVw_CKlkVfe\KT_O@meIQdZKDl\EUulU]tmOI\THXZkGW^WrvFHlc@AmtIOgmHPogX`g`O`n`P`m^W^e^?wvw`^ci^ItQEOiaO@QHAHwGHGaIGOID>NDI@F\MFPM^OWIYW^Yg|URS-ch sf|Ostrauskas, A.|1955|C86|0-1|B +EUxgDTl\U]nf;Lf]T]meFVph?Fwp@Ovx>@wvOEsb?>blBRkc=DlbF[bSD=tmETgXF_VLVm[R[XgVgug:jS]Terjevg`veqaeV`_IQ]WF>jm=KxpPW_WKfmo>FaYfXW<@IU^HP@unm\`n\fnwxwBJbZ>VtmOUf`V>lcUDm_DNcUN_h_=d\T]VeDEruEU|Tel Aviv|Lev, Ronen|1990|D45x|1/2-1/2|B +@Oo_HPxg?Hph>@wpEMme;Ln^FV_VMVvxqi`Oh`QY`XOIgxL]dUNU^U]WToEZl\IXkcZJp^X^e^WMrvDLoa=EmpLU\UEDaOHQxgQ_ga@Iw_V_^VJeagDlVMlpyp>v|Tallinn|Pohla, Harry|1977|A04|1-0|W +FVl\@OmeEU\UOUxg;Ljb?Fn^UKtfGWulHX^WX`gm@d\DT\UOUf^T\m\EZ^U=U\mZcjc:@wn?>k[RKvxDLmeIQdZKDl\EUZd;EucU\e\E?tf?Nru=F\TN_f_V_wvO`n\`VgVDVdnFOueCSTKBK[SLScS<\c:ReUOLph_hqhLlcl@tm?>wvHPqiOYvuEfwy:>ruem|?|Gunsberger|1962|C18l|1-0|W +FVl\@OmeEU\UOUxg;Lnf?FjbGWul>@wnBRvx@AkcFOtk=>wuPkr?>xyV^e^W^g]L]r]O]f]POm^O]^XYPXg>vtvPlg]lP]gUdyxPYvt|Moscow Open|Lukin, Andrei M.|1990|B84|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxBRtkEMme;LdZKB[SLFl\FPktIQtfBfofDLSLCLrs;s;D;^ULU\UNUZd;MdSMKSdKTe]V]m]TbdUOU]UbfxyfnU=@I=RPaRmnwgxHXmlI@l^aPph@H^]H@]=@I=UX`qi`iUgw\xiIHgf\UyxUWxpQYf]PVi_HI]fI@_U@Hf_Wlpi|URS-World|Chandler, Murray G.|1984|C88o|1/2-1/2|B +FVl\@OnfEU\UOUjb;Lul?Fxg>@wnGWmetm>Pph:=qaIQaYPGgaW_d^Ufmf_fofFayaNUlTU^a^Govmop^`=UT\LR\j@Arv?=mtpovwonw?=?jU?w|URS-chT|Hetman|1963|B85|1-0|W +FVl\@OphEUwpU]me;Lxg?[smBRvx>@jZ[Frs?>gvVmRWipy=>og^fg_VYyCiwvwEiwofoxoiqCpYiuxqhowO`x]iy|?|Benko, Pal C|1959|A43|1-0|W +FVl\@OmeEU\UOUxg;Ljb?TnfTKwn>@vxGWk[BJsmtTUjvtfwnwNUe]@A]V>=tdCKTLULVN?ONF|LAT-ch|Kliavinsh, Janis|1958|B87|0-1|B +EUme<`smDTxg;Lqi`Yp`YPgaFNaPIPwp?Mnf@FunPXmgFPtm=Fl\>yxXfxHfNtsM?Hx?Qg_NMktYamvEWvaL[umMLtkO^d^U^]U^fULfmwp[lnd>vxvmv2avlvp^W^|?|Padevsky, Nikola|1963|C16d|1-0|W +EUxgDTl\U]nf;Lf]T]me@OphOEwpETvx@SKDTjkTXkSGWSRFOKCNVR:V^:;?;g_X_h_^e\Remwn|?|Giustolisi, Alberto|1957|A61|0-1|B +DTn^HPsd?Hph;LwpFNme@FxiEU^UNUvx>@tXIQXFLFi_U]d^=DwvZRWEus@Ik[T[s[FL[MDM^M>vrvPX_ULRvFENMCRCFC?=UDBRDNGNCB=|Moscow RUS|Jussupow, Artur|1986|A25|0-1|W +FVn^@Osd?[jb[RmeDLxgEUtm>@wn?>vx;Ek[RK^ULUdSE?l\BJSdIQ\TKDe]?P]VO^rtPVgVDVd^U^md=adV>VuMVXtd<`n`a`dh`nhXQXMFX`phHPFC|Munich olm prel|Enevoldsen, Jens|1958|C87|1/2-1/2|W +@OxgHPk[?HtkBR[SRZjbDLnfEUl\;Ewn>@vxETsdU\n\Te\e=egVeMo_LSdSMKun@b\;Lkc=DtkCKm]bZGOV_NV_fCUZR<\t\U\RKBRSJ\Uru>MfTMWTFWFKC=CuUFUJC:=kc@AC;2=;cU?=U^=upw;Mu`f|Leipzig olm fin-A|Malich, Burkhard|1960|A56|0-1|B +FVl\@FxgEMsd;Em]DL]VMVph=DwpBRvxETdZFWn^W]gVDVZK:Jt_VNK@CFLtSc@Avt@gvO>sm>Mo_GWunV_h_@A^VMGpLCLmgrw=NngAIgiHPwg?@gh@HaWPWiWI@WOEGOQ:;_W;CWO|It|Timman, Jan H|1973|E92n|0-1|B +FVl\@OsdEU\UOUxg;Lme?Fn^UKwn>@vxGWjZBRdS@AtfW_fm<`md`gngFTrtKEe]V]S]T]d]=X]dEVunVgngLVgi?OdVXViE_gtD:@phV^DCIQCc^\cS\nSRnkRWOWEWknqa@=wt=utunuxquZWgZ>gU>FqpFOU:AI:^IAo_O=_W=mpimuipumpgmu^nuUg`AInlIA|LAT-ch|Klovans, Janis|1965|B59|1/2-1/2|B +FVxgV^g];L]LCLm]FuUdktsVNwhA@wn?>k[RKmeDLvxIQdsEUsm;EtkKDl\E?wv?PnwU]phCKmc;s;:;tmLTZTEMTZMbmtbjvnjrulOE\T`Ngm;[ZkRZTLEKnvZbk\bj\kPFvwF@meEUsdU]dZ=Ml\O`jb:;rs@tmEUxgRdmd?>wn;L^UOUdm=OmXOPumIQXaU_vt<`gx`nxnP`n_V_phHXmd_ge]>nqi`^]ULFu]FU|DSV-Turnier|Knaak, Rainer|1974|C79|1-0|W +EUxgDTph;LwpFVme?Fvx@On^U]sm<`qi`Yjb>@uvOEgqCSpgYgqgEKvn=ExqENgxT\o_V_h_GW^WNWe\FM\S:>ng>fgLM_w_W_qy?OLCfvmg_gCgOgyqgwxnKZiaIYrsZTk[T^|Bled/Zagreb/Belgrado Candidatos|Fischer, Robert James|1959|E93|1-0|W +FVl\@OsdEU\UOUphDTwp@tk=EdUNUn^U^gVLVp^VLwv:>ugEmvnmErvL]k]T]gWEW^W]enF|Las Palmas|Hernandez, Roman|1977|B38|0-1|W +EUxgDTldFNm]?Mn^U^]TMFu=F=gXGWw\>Ft_;LsbIQ_MFOqa@FXiHXvtFPaXQXo_^gpgLV\nVGioAyoyGMTMP_nSBJMEJSbS@wn?>k[RKmeDLvxIQgmEUmc=wuMusu=unuQY`XKT[T@IyxiauEaXxwGOECXTCGIQ|Munich olm fin-A|Darga, Klaus|1958|C92|1-0|W +FVl\@Onf;LjbHPk[EU\UOUtk?Hxg>@wSV^kH@HSLCLg]=XvwGWqaXOsdW_dULUulDT[T@]gMDSeBJvx=Mqi?=tmdnLVgVMVn_:=rtD;mR=EuZCSZlEFR[FDlmDtmtHXtu>=u`WH_eVqxwIQ[dHNwnqDvt=>dODMnwU]O]N]`]M]f]>=wn@HtL=]LJ]UJK;BKCB]ng]Og^U]^f]UkcHPjZSZcZURC[QYp`Y`i`OF[\GWogPO\LOG`WRWf^WReVGHL\HOVLRJ^UF?\^OP^NPYN^?HUTJ:ZR:?^f?WTKH?KD?Tf>Wg|Moscow TV|Kasparov, Gary|1987|E41|1/2-1/2|B +@OxgHPm]?Hl\DT]T;JsdJTnfCKwn@g]EUk[FV]SBJ[TJS\UOUdU=UuUCUTK?;f^U^tfHOnSO=wv=KfK;KS\^CvVK[VTCJ\cJ@k[RKtkEMqi;LphBR[SL]wp@wnBJvxOQul:>m\NGe]V]\MDMk]L]f]U_n\MU\jGYgV>V]VYglcgpwvp^ch_ixwW_hdQadT^evn?=jU@AUgaX|14. olm final A|Najdorf, Miguel ARG|1960.11.02|B82|1-0|W +FVl\@OmeEU\UOUxg;Lsd<`nf=Ewn>Eg]K]wuDTnf]VpUNUuUELUm:=rs=mtmA=mvT\xwOWkc\cjc=UwnUSogLUneIYvdHXf^W^g^UNdVNVc[SKsrK[rB[]elV^BC]UqaX`CcUMcbMUbc|Candidats sf1|Kortschnoj, Viktor|1968|B35|1/2-1/2|W +FVl\@Ome?[tm[mum>@sdDLxg?>nfEU\ULUe]V^gV;LVLCLwnO`qi=an`<`dn`EvxBRo_GWrt>;tTa=wtRZnd=Ktl;CxqIQjbKcdncemvCcTdcdvd:;lmeSntHXphSwmp@GdT;CtjCcjdG>TMX`i`W`dZcfZTE=LU=FUVF=VO=DOFDL]ULSbZS\pl\[T^[cld|Portoroz Interzonal|Szabo, Laszlo|1958|B52|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;EtmE?wvCK\ULUZdV^[srvm;M[]uw|Reykjavik|Gligoric, Svetozar|1964|C97|1-0|W +FVn^@Osd?[phDLmeEUtmU^e^=Fwp@vxCSduBRufO`nd`fmfEKdu:=kcT]f]=]uf?=tvRZvRFDfW]ERdHPWQ@Ho_Zc_WN\WOH?lc\wrwDMxyM]dLS[b[][Lt[mtTEMQ`KETD?>`V=:V\|Biel Interzonal|Smyslov, Vassily|1976|C60|0-1|W +EUxgDTph;LwpFVmeGOvx@lbBJxy:;gx;CxnEFutL[m[T[bs[ctk?;smP?qi?Eo_ET_VOVksFEmgIQiaX`g]V]^VMVpCECyqckrjCcwucu|Prague radio sim|Volf, Jaroslav|1960|E87|1-0|W +FVldEUm]V^t_DTnf;L]T?Txn@Fsm>@mcTKumBRjZFP_hKDhD=Dn]LV]SDFc]GWph:Jwn@xg?>tmRdkdEU^UV^e^O^mf^du]=O]OHOw\CS\cVp`CFm\A>xgCS\mF?vwTKp`Y`i`WQyx>=jZSZrZ=ewn:=Z^Paqhemgm=mnmagmegx^\xiogiXhDXgDKBK\[Q`[KGWK;?F;CFOCKOXKCHPk[gVe]W_[S_gCBgoBr`qSKVEKCXO]UOFd\ow2rwqw\TwfU]fW]UE;TLF=UT=D|Moscú, Cto del Mundo|Botvinnik, Mikhail M|1960|B18|1-0|W +@OxgDTphEUwpHPvx?Hme;Lsd>@t_O>n^U]dZFV_X=Ml\DXmL[m[T[jb[cucMLc[LZ[C?@wvEMld<`Sn?=meCSjbMU^U=Ugm`nunLVd\U=\SVevuetrtOktskbm\b[ng:;qa=usu;SaYS;YQBRphRZuU;?geZbUEDLEBLO\bOrxp[bBbr]eg]mbfmMg^FNfeMDed?<^fT\|Moscow-4teams|Kochyev, Alexander|1981|A29|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQqiEUwv;EnwE?tm?PdZKDZTCKTc=cTFTYgCJ^VT\ls\estemtsmestemtsJesre\q`m]rt]mtr=ebZmdvu\jrtjcuwdtwteEgLE]LSD=tW^pwPXwn^UGHX_HEcknuksunUgneg^ensknuaXEH^gutkp>Eg^VN^WtuWlutlWtuWluvle`o_fo`f_`o_fHXpXo`f_NFePF>2P>E>_hvmhi`fXV>Sihmeh_f\Vv\K_VK\VU\RUTRcT[elvfc]fb]L[TlkbfL;T[ktfb;L[c|Moscow|Geller, Efim P|1967|C93|1/2-1/2|W +HPph?Hwp@Ol\DLxg>@vxEUmeU\e\=uwut\UFZRKBmfBfofFWpoWM^TCB\l=;TZ;[kc[clLBCLlcSZTCBgm>;TNSklD;CDLkmLMCkNTklMJB;JLljogmnLK;@wn?>k[RKmeIQvxDLdZKDl\EUgm;E\ULUngE?Zd@jbBRsmIQrsRZk[ZcmcOEwv=DgmCKvFLFp:EVuwFL:LDLc]LEtk@XF=FgXL]wvW_XNFNt\:=smU[\N]Nrt[jtrj[rBN]mg_hqh[ene]gpg?gBC=?vVgoVTIQTDowxp?opiQYDH@?iaoWh`wyahWwHIYa|Alekhine mem|Szabo, Laszlo|1963|E78|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQgmEUngBRtkR[b[:rkrU]dn;Jm\KDldCS\b]drd=MusOU^UV^nh^gwv>vsv@wn?>k[RKmeDLvxIQdZKDl\EUul;E\ULUwuE?e]O^]V?PneVckV>ZT=XrtW`T^U^t<>@wp<`ulUKvxBRkc=Etk:=gvGWdnKUqi`YvgENl\@AndV^e^W^gvLV\^YP^U=UdUFMk]DLU_Nc_PIPo_V\vg\frscbsCfwxw?;|Moscow|Parma, Bruno|1971|B34|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdsEUsm;EtkKDwvE?nw?PphCKwpU]mc=FldLTd]T]g]V]^VPVp:<`og`Nc]>:]NFNkVDVg_|URS-BRD|Unzicker, Wolfgang|1960|C95|0-1|B +FVl\DLxgV^g]EU\U@OsdLUme?T]cT[e^O^tm;Lnf=Xd^U^m[L[um[LmM@tXIQXO=O]TMTsm?=ulCKn^ne>NsrNJe]RZ]U[cU\ckrsZb\cbj|LAT-ch sf|Darznieks, Artur|1953|D94|1-0|W +FVl\@OmeEU\UOUxg;Lsd?Fn^UKwn>@vx@AjZ<`gVLVn`VeZRK\`n\VtfFTumTfmfe[wu=FrtCKo_VEdU[UuUEOUVFMVS:=^VMN_WNFfgO>SU=UgUFXtwXfwoDLULfVRKBKLK|Yerevan|Abramovic, Bosko|1982|B59|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDl\E?wv?PnwU]phCKmc=FbZLT[SBRwp?gx:>|Hastings7374|Gligoric, Svetozar|1973|C95|1/2-1/2|W +FVl\@Onf;LmeHPsd?Hxg>@tmEMwn@k[GWsm?OtkOQrtaP>V]VU]wo]uxpu`py`uyp@HQiIPifu`pwW_fv_gVN`\wx\dvwdfxyfNogNUqiJR[RURghRUwg|Leipzig olm prel|Robatsch, Karl|1960|B86|1/2-1/2|B +FVl\GWnf@Om]V^sdEMxn;Ln_?Fwn>@vx=>kcBJtkF=umLF]UFP_P>Po_bB>ZB><]kHPn]WE]l?Fl[@GBbrB;Ekd=FL;E=;L=EdkFMVd?@dm<:BJ:?LVEFV\WEkVMV\V?=JBESBDF?mjS>jr=UVP@PrAP@AQ|LAT-ch|Mieses|1958|C00|0-1|B +FVl\@OnfEU\UOUjb?MsdUdmd>@f^;EulBRxg=Ow\ETvxTNwvMTtfTfvfN_ph_ixp?=ru=ulu<`uUIYUC:=\U=MCDMU^UV^pw^gDLOXL>@I>GXQG>QKk[R[d[KJ[SJK>^IA^>AI>^IA^eA@UMK=e\@A\D=OME`EDE|Candidats Tournament|Keres, Paul|1959|B42|0-1|B +FVphEUwpDLme@Oxg?Mvx>@sd<`qi`Yga;JaWMDtX=Eh`O`i`Y`WhGWogW_nf`if_IQ_WipxpQXwy?WhWEWyi@Gd^U^g^WPu`JTrwGFwWTNpw:?wv?OiAPGA:DK:;FMldHP;CPWCGW`GOMFOWFMvw`hWOKok[MFOWN_WVFOVWOP|Jurmala|Hoi, Carsten|1985|B07|1-0|W +FVldEUm]V^t_IYqi@FnfFPxn;LsmKC>FCLFBkculZbB:LC:RCKR:ckltkctlckltkj:;KL;:jrtlLK:;KL;:LK:;KB;[bj[ZBKlkrwZ[KRkjw_[;_gjkW_;:RS:;SL;=sd@wn;JsdEOtfgmIYqi`Vm^OHnS>?UM:<^hWEwvESdS?>ME=ESM>NML;gmDCUM|Moscow-4teams|Kochyev, Alexander|1981|E01|0-1|B +EUxgDTnf;LwSFNvx@Fm]BJSnT]f]HPld?HjZ>@sbFWblGOd\LRlbPXtmRLmdLFucb\UdeWLUcdNWv>=>\K:=KU=Urv>Ed\@GxwCSZSESkcX`gaH?vu?T\SJSaWUW]TWTu]IY|URS-ch26|Lutikov, Anatoly S|1959|E46|1/2-1/2|B +FVl\@OmeEU\UOUxg;Lsd<`nf=Ewn>dj[Tqi`gpgLVg_VeulHPkce_f_T]tf]rwrKUf]>nrtU[|Candidats Tournament|Kortschnoj, Viktor|1985|B63|1-0|W +FVn^@OmeEU^UOUph;LwpHPsd@jbBRrs?>wvGW^TNFmg<`^PIP]`PIvFGFsvFGvNKE`aE?gX|Viljandi|Oim, Tonu|1972|C41n|0-1|B +FVphEUwp;LmeGWsd?TN?@np@IldgfN]W_uwFTpof^omIPtlGEwuPOleOVe\TKk[_gjZBJZRKBmegouwB]\c^fd]V^edED|Tallinn|Karner, Hillar|1977|B06|1-0|W +FVxgV^g]EUme?Fe^U^sd@O]S=udu;JtX>@ufX_:=_D=EuEOEyuGWpiHPfpFOdsEKkcKUDMCKp_NG_ULUld>@tmDLxnEUnh;Ewn?>qiE?n`U^e^RdkdFs[GOrsCKbZFExwEusu=uwnLT[\u]\]T]ne@Ge]GN]\HP`XOX\eNV|Hastings6364|Littlewood, John Eric|1963|C75|1-0|W +FVldEUm]V^d\DTsdU\]U@cd:>wuHX_NGNUNENuU>Fru?=UVNVdVFVkV|Riga, Cto Letonia|Azerbayev|1955|B12|0-1|B +FVn^@Osd?[meEUtm[dmd;Lxg=M^UOUwnU_ph_nun>@vt?>gmMUjbNnYWPY`:>o_GW`aL]_V]SmsDTa\U\e\SdsdNVvV>VuUVU\UP>tm@GmeGFefFOdnOVn_T\_NHPqaIQN_>GfoPXaXQX_iVOUMGNixNExgELg]|URS-ch37|Zaitsev, Igor A|1969|C62|1/2-1/2|W +FVl\@Osd?[nf>@xn?>jb[dkdV^nhCKwnfnmfhdVhpme_gef|Moscow|Byrne, Robert E|1971|B30|1-0|W +FVl\@OmeEU\UOUxg;Ljb?Fnf>@wnGWvx@AulBRkcV^gv^eneW_f^L]lu_g^U=UsdUYePYPu]FO]Tneypg]poduohe\>Vc[?=kd=]d]KS|Naestved, Memorial Nimzowitsch|Ftacnik, L.|1985|B85|1-0|W +@OxgDTkcHPtk?Hnf>@wnCKvx@vxEMwv@dUOUcU;LU^?>^eL[es=OweO]eI@Amd]`xgGWqi`pyx>fofMhvupgumgomuoxumxomuowumhvsvwemtel|URSS|Nei, Iivo|1958|C02|1-0|W +EUm]DTldT]d];Lxg@wn:@tm?>xgDLjb[?mXIQXO=Oph>=e]V]u]O]g]EU\ULUwp;Lru@]lCKsd@^VOUsdUDSLELqiIQmeCKtmtu>Pun:=jbPGkcDSldNcbZclZSlenuGPSLe^LD=:ia^lutleVNPWd\X`gqH]xy]omdovtve^q`^pypW`pq`hvh_hqhQYru@IuUIQdmQPmd|Parnu|Etruk, Rein T|1971|A29|1/2-1/2|B +EUxgDTnf;Lm]@Own<`qi`YvxFNgVYnun=Do_O^wg:@]B^Tk[T^tkL\BK?OKC@sm=FSLCLvx<`wvO^mwGWl\:=ueW_g]^oxo_foxfnwfU\e\@A]L=utmF^\^?w|?|Chandler, W.R|1974|B01b|1-0|W +EUxgDTl\@O\UOUnf;LwSU[vxBJSL[Lm]<`qi`gugFNwuT]f]=Ug`IY`_?M_f>fg>Vrtlt|Moscow|Olafsson, Fridrik|1971|A32|1-0|B +FVl\@OnfCKkc@ul?>meEU\UOUe^U[luFOwS>NvxNMuY=Fwu:=S\HPYnOduM=MkdF^og^ld[ln\nT[ruMunuBRf^@?xoCLof?Ff]GOg_IQqaLCunCLphLE]URZU\ZcjcFNneEL\[OWe\NF\ULE[\W^U^FOc[PX\U|National op|Maddex, Bill|1988|B40|0-1|B +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tfDLw\=Mvxld>NfmN^tw@weNWeWPWogBRmlWOldOXdmXTm]|Riga-ch|Gipslis, Aivars|1954|B22|1/2-1/2|B +FVn^@OsdEU^UOUw\UK\c;LmeBRjb?Fxn<`tfRZcjL]qi`NjN]Nvx>@umDLo_V_n_N_w_KUdU=U_]UVld?>f_VWp`WPxqIY`YPYrvFa_hahqhGW]MW_hqYav>:>MP_g|Tallinn|Ivanovic, Bozidar|1979|C45|1-0|B +FVxgV^g]EUme?T]cTKe]@FjZDLt_BRnf>@l\U\w\FU\ULUsd;LvxL[cTKBdSCK_D=OTclZONgmL]ZuNPqaDLaYPXmg]gpg<;wnV^vwMFe^U^k]^Ug_Xp|Tbilisi|Gufeld, Eduard|1969|B82|1-0|W +FVldEUm];L]VLVxgVPqaIYul?FtXFXgX@FnfPVsmESBU\yuEDi_;K_UFUuUA:UTDMTR:;RYHXaXKCXOCBp`Bjo_[cf^\dYUML|LAT-ch sf|Rozenberg, S.|1953|B15|1-0|W +EUm]@OnfDTld;ExgHPd\T]g]U\w\?H\G>GucG>]NETNT=RcdRdsdCKTcGtm:@sb:;b\;[ZlEN\m=Krs[]jbUOkc?=n^O`m\KJtkN\c\]mlcLTkH@Hcd=]wumusuJOum`om]T]dmo`\T]eTLO]|Ch Latvia|Zeids T|1955|D90|1-0|W +EUxgDTnf@Om]HP]T?Hsm>@l\;J\UJTmcTcucOUtmUKru@mw:>whO^ld@Agm`nun^hqhNVmwGW]V>VtfHXnmW_f]L]m]_hwh?_vV_]V>AHd]MhohDKrvK]xqHP>FCSvVIQFNPYqiBRVvS[b[R[vV]uVvu`iq`W|Ch Latvia|Rosenberger|1955|D61|0-1|B +@Om]HPphDT]U?Hwp>@n^EMxn;El\EVul=RtmRJsb<`nxFNo_NU_VO^pg`Wh`WE\U^mlmHVgnJZb\:>kcZJ\V>VvtJbmkb[kmBRm[R[um?>qiVfyqfdtkdhmuCSqo@H|EU-chT|Schmid, Lothar|1961|A09|1/2-1/2|W +@OxgDTphHPwp?Hvx>@me;Lsd:;n^CS^VO>wvEMt_S[dUFN_XGOVO>OUOHOXQOkQ?=?rskdv^NVutlc?OD<>Fxp]cUL>?D=?H=FOGFXH?X=?HLUGO=@HQU^|Bundesliga 9091|Neurohr, Stephan|1991|A16|0-1|W +EUphHPwp?Hl\U]xgDTvx;Lnf]fof@Osd>@kcndBJqiGW^p=fc[fhxqT^\TKTk\MFUMFN[ThdME<=TLNFLD=ED<2Eu@sdrsV^gp:UVGWVT?FTDFMDI:@kc;LtkO^utT]g]L]k]FV]k=Dl\U]wuHQtl@mw:;whCSjZBJvx<`ZSJSkt`EtXO>umGOXa>MhyT\c\S\gv\dmuHXah;:qa:rurIQogDCrj@HaXQXjr?:rtCktu:ryorunuL[|?|Kudriashov, Anatoly|1955|A17|1-0|W +@OxgDTph;Lm]=RtmRK]TKTwpHPvx?Hut>@ldTYqiEMh`<`i`O`m_GWgqPXq`X_`q?OpLOQLUFN|Yerevan|Donchev, Dimitar I|1986|A16|1-0|W +FVldEUm];E]VEVsm?MxgV`qi`fuZ@d\DT\UOUf^T\m\EZ^U=U\mZcjc:@wn=Fqi`Wvx:=tm=UucFEmdWigVEWpiUVdVWVruCKn\VWxpW^og^Ppq?>wxPYue@?g_IQxhHXem>fm=?HhfTf_XYX=uO^|Candidats qf1|Portisch, Lajos|1965|C11|1-0|W +EUxgDTnf@OkcBJtb=Dbk;Ll\FV\UOUw\UKsd<`qi`Y\nYPrt?Fvx:=kbV^gvLVnYDLYPIPo_^gvgVetlKUdULUgvAYunCKveUene=exoYWonWwnw|Jurmala|Petrosian, Arshak B.|1983|E12i|1/2-1/2|B +FVl\DLxgV^g]EU\ULUme@Osd;Le^U^tfOUdU=U]LULjb?FrtLSu]>@]^?>k[BRfTFTtTSZ^]ZbTR:R[RbR]mRrmurOnf>=ut<`wn=W_>vT\yx\TxqTSvrSerZ_XZRXPR:eMqyIY:@PO@>MT>^OX^>Ttyqt_qyYa>@XQ@<_V@sdU]ds?>n^]ftf@dO=OldCKvxwpPeZuHXqi@HgqLVq`V`u`OP`gQYtuX`i`Y`gU=UpUPYUp>A|Wch-blitz|Chernin, Alexander|1988|C10|1-0|W +FVmeEUxg;Lph@Old?Fwp>@vxIQsmV^e^U^g]L]d]V][T]UOUwtU_tT_nxw;ru;Cu]Ckp^W^]^kj^>@I>FIPqaQYwpPOFCONpgHPgpjbCDBRDBRZpibjipZbpgjrgpNOpgON|Jurmala|Gipslis, Aivars|1983|B08q|1/2-1/2|W +FVl\@OmeEU\UOUxg;Lsd<`nf=Ejb>VgU_uZ_ewe=evteEf^?T^WYgpgTom_A?d^o]^h>Gts]ouEGEyuEGueoh_hGWZ`IY`W?WslWgegL]le]ge^gX^WXiWPixPYxghogVo]HPYQVL]O@mgDlg]l\kc\vnFNrtH?b?@?]SFtL;LytL[tHQ>OQH<@HQp`|Moscow4|Krasenkova, Ilena|1991|E11|0-1|B +FVl\@OsdEU\UOUxg;Lme<`nf=Ewn>@wp?>vx<`qi`Wh`W:i`V`o_DMn^]fZ^:=xpMTrsTlphlqhgfnwvqog`ov^Fvx`gxwg`IY|Biel Interzonal|Diaz, Joaquin C|1976|A57|1-0|W +EUxgDTph;LwpFVme?Fl\@OsdU]dS>@gmblF?m^O^e^WNkcCS\SLRo_V_t_ESxyN`pg`gng:@dU=UndUMul<`qi`Yd^MEleEnS>=SnVEdLP>LCEVCJFatdVgng^gJCW_f_M_dg=]hn]\n_\_phaXg_?_wv_?C@rv;:md<`bT`gTMFMwgOWf^U^e^W^g?:?d\@A\^MO^nQ`ldOGvwGBxy`oyxo^xy?onuIQu=AI=eBfeuomug^oyxoixymoguf^usolwg^nghnm|?|Zwaigzne|1952|E27|1-0|W +EUxgDTl\U]nf;Lf]T]me@OphFVwp?Fvx>@wvOEsb?>blBRkc=DgXIQXG@GuYG?pUL=YQFOQI=No_ET_VOVtbVOv^:Jrv@kcOUm^Ud^Tdug];LvuL]tk]LkH@HT^CK^d@wnIQme@IvxGWtmUFk[BJwuPX[SJSdSX`gvFUnwIAf^UFrtFPlT?GmdP_e]_NTUV]S]L]d]H]u]=U]UW^vl@H^XGgpgIAXNHI>AIAN=LT=CT\xw|Palma de Mallorca|Robatsch, Karl|1966|B47|0-1|B +FVl\@Ome?[sdDLxg=FnfEU\ULUe]V^gm>@jb[RmcRKtm;Lrt<`wn`nun:FOHOtL>=sd@?dS=EL@wn?>k[RKmeDLvxIQdZKDl\EUul;EZdU\e\E?tf?Nru=F\TN_f_V_wv<`qi`gngOEdnEVn]CK]LVgpgFNTKDKxq><[SBJ^VJSuMN>VNKDMEGNLF@AFPA@EF>=lkNVvV|Candidats sf1|Kortschnoj, Viktor|1968|C98|0-1|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQgmEUmc;E^ULUdSU]l\]dSdE?ng:;tf?NrtNXfXQXbZ=FZRK=cT=RdUOUgUR[T^>=Uj@vxU^e^IQldjZLRk[Td[RdrtkrZRKBKo_V_kH@Hh_Nc_WZ]ngcugh]VhiE=vgugig>?f`V]g_PXWOHA_W]E`QEWQWAI^V=mp^IPWHPQwgX`gWQIWYI@HWmEWQ@AQ`A@^I|?|Blek, Igor|1952|B07r|0-1|B +EUxgDTl\U]ph;LwpFVme@Ovx?Fn^>@smBJqiO>jb:;gv>Mo_CSkcJRbZSZrZ@gaW^og^PaPIPtf=KdZKSfo?=nfNVrsSJk[CSZTJjovFTwojJ[TV]f]JCh`CEsSL]Ss]Nst:@weFTZS=Kd^L[ts?yvjdsrdnW]\]u]|?|Heuer, W|1972|B13w|0-1|B +FVl\@OmeEU\UOUxg;Ljb?FnfGWul>@smFOwn@AmwHXqiW_f^UFkcTF>FtT:=vxIYe]X`]U`gmgNEULELwtL^TD=EDEFEtTEUT@t_OY_fGWo_YOvx=RsCRZdZO`fmFOqi`Qmf<;wsQG|Malaga|Vera, Reynaldo|1981|D32|1/2-1/2|W +EUnf@Oo_HPxg?Hwn>@vxDTmeCKuvxoGOXmDGwx:=piHQxPQm\m>HrxAIia?Fm\H>\VGjV`jk`Oklgn|LAT-ch|Balinsh|1953|A96|0-1|B +@OxgDTl\;LnfHPkcFVtk=Fsd?Hme>@wn?=jbEU\UOUdU=UulCKvxngEWgcWN|Tbilisi|Foisor, Ovidiu|1986|A17|1-0|W +@OphFVl\EU\UOUxg;LmeTLCLmf`NrtNU^[;:[R=;pwOWgmW_fTIYn^_fTfYam^ahqh>AwpE`k[`npwngwpgnpw|Hoogovens|Ree, Hans|1973|B79|1/2-1/2|B +@OxgDTnf;Lm]EUl\T]g]FNsd?Mwn>@vxL]u]NV]aU\n\vR=@meDLwv?>qiCSjbBRtf:;k[=DumFag=?oKJCdnFGgqN]wG?Gpw]lq`Q?K=@H=X|URS Cup rapid|Veingold, Aleksandr|1988|A05|0-1|W +FVmeEUxg;LphGWwp@Ovx?Msb>@l\U]bl=>jbBRkc>Ynf]fofV^e^W^g]<`umLVlv:=rjDT]SM;md`nw_Vgpg^gjm;_mn_V|Novi Sad|Ilijic, Milan|1974|B09|1-0|W +FVl\@OnfEU\UOUjbDTxg;LwS?MsdUFul>@d^GW^T@ASnCKTcV^g]LVo_^g]gFPc]svP_nSFCvt_PSLCFwxPVLUV`xpFNUN>NtLNQ[SA@f^QP^VMTm]TF]UFTVN?=k]T?pn?FUMFMLM=MNFPNF>2N>n>@G>:MEqiGN:>NG>nG?i`W`gXIQXN?G]HEUbZQYypYaN_UTnmT\HV\^mn^ZnlZblDG>_Ubjpw`hUO>=DE=@gVEUwnU^vx=FV\jb[RnSN`SRLRfX`gpg=EXOHOdU>Nsx@?xpRLrxLFl\FU^UNfpHCS\SEUHIUSk[fbxHbrypSXHXOXIYBR[RrRg_?H_XRTpgHPYATWg^WXqaXYA@PO@@xn;LvxFV^UOUm^CKndUdkdutLRd\V^tkH@gVEMo_^gVg>nwo=>swW_on>nwoMFonFnkVnVgV_hqhC@sdO>vxGWjbBR^WOdU:;UOHOX^@H^hLFhYPYnYCSclS\e\RZwgOWrw;cY`V^g_cflofe`W?W_WFWoWEWwWemWR^fxwmowvopRZpkZBHOBDkq\TMUTLU]DEOVLDqlvulTbZIYZRV^RJ]eEF^_FG_XJBemunTtGEtvngfnEm|Herceg Novi blitz|Fischer, Robert James|1970|B30|0-1|W +FVl\@OnfCKme@xg?>wnEU\UOUvx;Lrt[dmdUdtdL[jb[Ud\DTuc=OgmOQng:=wvCL\tQNclNEk[LZlkT[b[ZSm\EFtsUOgnFNst=<\bSLnwOUb\LC[S<=tr=:rZBRSJ:JZJCJ\VGOVgJCe]>@m];Exg=Fwn?>vxCKbZ@tm?>xgDLjb[dmdEUdV<`e];EVO=Onf`gugO]gn]^\ULUne^VeSEOwn>NSC:;CB;krtU]ngkotf^ogpgV_vx_fxpfmpymn<>N>yxnfxpIQBR>NRvfbvmNPpy]ewxbcxtPJtdJrypcKdtrbt<@Im_KP_`P`g`bZ<=Z^pg^nqanm=EIPEMGOaYPGgfmpf_pm_fGFM]mu]ZFGZBG@BEuvf_vu_femEmumfm@GmfGNf^NG^gGFgf|URS-ch46|Giorgadze, Tamaz|1978|B51|1/2-1/2|B +;Ll\@OsdEU\UOUxg<`nfFNwS=Eqi`gugBJSZ?Fm]>@tm:=rtU[vxCSZcLRd^Rcjc[U^TFTtTDLwt=xq=Ep`<=c[@Atx>?ogEMxpMEiaGOpoEMdc?GopA@cj=:aYIQjRMERjEMTdOW`WNWjG@GdTMNpoG@TVNV]V@GfT:>opHXYPFPVN|Lublin|Sydor, Andrzej|1974|A00|0-1|B +EUxgDTnf@OkcHPwn?Hvx>@tb=DldCKm];Lc[O^gm^msmT\ng?=[SLRf^U^g^@sd;LgvO>o_V_t_GWumW^e^HSLCL^V:;g]NEVMDMd^LTw?;?]gHWruEL^MLgpgW]ld]gxpPXuUgapxagxy?OMWIYUTONypX`W]g]TYAHd]NnphnkYRkCh`CE]UHO`_EMRTOF_VMJTlFElpJZ|Varna olm|Kramer, Haije|1962|A05|0-1|B +@OphEUwpDTme;LxgFVvx?Fn^>@smU]m\=DjZOEpiEKimgGOwoDGYaT\_VQtVNGDrtDRtw\eleMFgXIQXN?>k[R[oOHOaO?Q?@I?FVGiW|Tbilisi|Spiridonov, Nikola|1969|E94|0-1|B +FVn^@Osd?[jb[Rxg>@k[RKtkDLgVEUdZO^ZK=KugGOV\^X\KXgpg?>wnBKmeVR:@Gs[K[b[VS[M_U:ZGNM;U[g_[L;BCKugNMgLMLB;SUZBU=BDLSDC=<;BSJCI<:BKJKIG:AGOKTmnAqngqyOGytGDTMD\MUgnW`og`W\DtynoyA|San Francisco|Wolff, Patrick G.|1991|C78s|1-0|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUgm;E\ULUZdEKbZ^`u=mucHPphmMSUMUcU^ZwvZ]Ug]ev>@Hgn|Amsterdam Interzonal|Gligoric, Svetozar|1964|C96|1/2-1/2|B +EUxg@Ol\U]ph;LwpFVme?[smBRvx>@jb[FulIQkcwvMOh`LFdV|Riga, Copa Equipos URSS|Hermlin, Aarne|1968|A43|0-1|B +EUxgDTnf@Okc;Ltk<`wSFNqi`Yp`YPgV=DSLCLme?MVPIPsmBRjZ:;`XOYmgU]un>@gm]fnfM_fT?=mg=UTd_fyxfTvwT[d\UT\^TlkV[Me]ldrsLTx`T\]UNU^UMVUV\cVDdDgmckm\;[\kDC`[C[wnY_nm_imlioswoiwu[`u=@I=:`Xk\XTldi_:R_UdcTR\RPXRLIPZRPWRJUDJBX`c\`hL]W`\Thp]nGWTLD:LCW_C:_g:;gnB:2nv2:Z`i|Candidats Tournament|Gligoric, Svetozar|1959|E13|1-0|W +FVl\@OnfEU\UOUsd;Lul@k[UdldBJtkGWwn=OvxOQm]V^gVLFn\FUdlDLln:>rvW_f_U_\N>Nn^QaktMV]VNQqi_ipiQPxq?owoaoqyPh^\@?\_o_t_hiypibVN?>_MbeMTempxmUvwUT[T>FwvJRxo|URS-ch39|Tseitlin, Mark D|1971|B48|0-1|B +FVmeEUxg;LphGWwp@Ovx?MsbV^e^U^g]@\MDMt_MU]SLF_D=@]LELSLCLru=Mgn?=uMFMn\T\b\MU\R=;RL;kLBHdBL@?jZkjL=dO=COFZRjkRJkjphjJwtJbtubBusFXCMBJs;?FMSJryprs;CFOpgscSMcfgpfFCSONM@vxFOrt=Eul?=[SJSdSKZmvEGe]V]S]L]f]DLv[ZKneKUeWNWlWU[b[O]|Sukhumi|Liberzon, Vladimir M|1972|B83|1/2-1/2|B +FVl\@OsdEU\UOUxg;Lme<`nf=Ejb>uvOWxwA?nuLUqiUp|EU-chT|Mititelu, Gheorghe|1973|B67|1-0|W +DTxg;LnfEUwSFNvx?Mm]BJ]TMTSe@OsdCSf^@m_L]gx=X_DXFD_FX_DXFD_NV_m:=ruFXmvHPxiXaixaFhn]NxiNXiXQXnd@HenT]dUCU^U]Tl\S[ngGWUM=MuMTMgUV^ph?AypFVkcMT|World Championship 24th|Botvinnik, Mikhail|1961|E51|1-0|B +EUxgDTl\U]nf;Lf]T]meFVph@Owp?Mvx>@sbOEbSMFwvBJSb?>bl=DrsJRkcL[jb[lul:BlnGOgaE?o_FM_WHXpU@AnY>FYQFHQO?EONE?NO?EtXEOXOIYvwMFaPAIOHIHPFDFWOFOwOHOswOPU^PH^W|Kharkov, Juvenil Equipos URSS|Birbrager, Isaak|1953|A70|0-1|B +FVl\@OmeEU\UOUxg;Ljb<`nfGWk[=Otk?Mwn>smLFm\`gngHX\RDL[SMDRC@wn?>vxUdmdBRgmL]d]V]f^RZn`GW^WPW`gDLul=>m\>FphFTlmG\rtCSe\S\mn\dkd]dnN@AgL:=LZTUNU=UtuUmumdmxwHdwnAHnedRZuHOe\RKogKxqiOVjZxoh`oK\eKRefIQulR[fe[Re\RK`WQY\SKoZRmu2luVWSLW_RJYaLC_hJBoBCBhig_ih_W|Luzern ol (Men)|Mestel, A Jonathan|1982|B80|0-1|B +FVn^@Osd?[jb[RmeDLxgEUtm;Ewn>@vx?>wvE?qi?PnwIQdZRDl\U]k[CKZk?wpN`ulOYgqGW^W`WluYO[SLSm[?>p:>:aYPA\SAGug:>rtV^tD^gDE>v[vWEqgESg]SE|Hastings6364|Gligoric, Svetozar|1963|C87|1/2-1/2|W +FVn^@Osd?[jb[dmd>@ogEUtXU^u=?=g^=Mwe;ExgCKvtuvBJ]gVNg]NV]gVNg]|Montreal|Ljubojevic, Ljubomir|1979|C69|1/2-1/2|B +FVxgV^g]EUmeGWe^W^sdDLt_?M_M=Mum@Ovt>@og;E]WMVmXHPp`^gng@Ag_VNWQNftsU]w\]dQG?G\GAHGcIQXaf_qiETyw_VuvPXvVXaVTO^wGHPTW`a|Moscow4|Jung, Karl-Otto|1991|B03|1/2-1/2|W +DTn^;Lxg@OsdEMphHPwp?Hvx>@me:;jZBJdUCSZSJSldS[tX[dkdOU^ULVgVHVum;ce]T]d]VHwv?>r:=KmlE>vFcspwswxw>SwxIQXfKRqaR:l^:<^_S>_M|URS-ch47|Anikaev, Yuri N|1979|A26|0-1|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLm]V]g]O^d^>^ldK]d]EUne^NuYIQYWN^Wg^>gh=OtfvrvBR[R:RvFCSZSLSFCRrwnrsCEskneko_hojed\fhVjpEH@?HCfud[plCE?>EHuo[So`VM`qMTqgHF>=FfgmSLm^fi^T]T=FifFOLMOWfePX|Candidats final|Spassky, Boris V|1965|C89|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsm;EtkKDwvCSnwBRbZSZrZ:;kbR[Z[;:[cDKqi:nmTKphKomoETcfT^f^O^k]V]ojBjs^:=gVjcwecuxoumowGW^L|URS-ch41|Tukmakov, Vladimir B|1973|C95|1/2-1/2|W +@Om]EUxgDTnfHP]T=Rsm?Hjb;LrsRTk[TMtk>@l\U\w\Jn>Mmd^UgvX`nwULweWXdmLUmdKSenBJneXOenOWneWXew`hqiXOwnM\f^U^n\S\d\OW\d^LdmW_ve_^ev^]bZ]\[SJSZS\SmfSTvgLgfgT]gn]\ng\[gn[\nm|World Cup|Andersson, Ulf|1989|E02|1/2-1/2|B +DTn^;Lxg@OsdFNwnBJvxCSme?FwvEMnw@wp=DgXOEqaL]dnFOld]nunEVo_VLnYIQXgS[tmJRgqHPYQRZjb[bkbMU^VOHQXCJq`D=`OHOVOJe_WeWh`W`vw`WpUL]U:|Malta ol (Men)|Hoelzl, Franz|1980|A28|0-1|B +FVxgV^g]EUme@OsdDT]c^fofIYf^U]dUOU^U?Mum<`qi`EmXMFXV>@t_;JVYJ[UM[lvulrMF=FcrT\YVF[V]EZkc?=]^BR_m\cjcZcuv[brcbcp`=>^WRZwpcsvosKnfKkon>VWE:>p^ZbECVSCBbj^LS;L>;>ywkcB]>?pg@FLTVMT]DT]aU]sm=Em^:>aYFLYU>^U^GW^UHXtm?Hg_A;kcX_vtLFyxH?UpMVf_VOpiJRiQ?GQIG?x@|Parnu|Karner, Hillar|1971|C15|0-1|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKvxDLmeIQdZKDl\EUgm;E\ULUZdU]dSD;bZBJSbCSmc=Ktm;Mbl:;xyvxovyrt@Hmc?Nugytcte\ofHPtePWg^W`^CNDeT\UTJUpJDpCRJ|URS-ch32|Suetin, Alexey S|1964|C96|0-1|B +@OxgDTph;Lm]=RtmRK]TKTwpHPvx?Hsd>@mXEUXOHOdUOkrskHgv?=veT\Uf\jl\jRfU=Me[@?utL[U[MK[UKstsFNU_RKsjBRwsKD_e?@\T:BqaRZTLCLstTeZbaYDMYPIPtsH]sc>Enf]Oe[LT[lMupwELf^L^lfut|URS-ch47|Tseshkovsky, Vitaly|1979|A16|1-0|W +FVl\@OnfEU\UOUsd;Lul?Fjb>@xg@vx;EZRBJsm:;ul?>n^FVwvIQk[KSmcU^e^H?tbDTcTET[T=DTLDLb?@?lkLTgm>=mcTFqi;cmFMmwMDia>MwmDFpw@wnCKdU=Ume@n^U^d^O^e^BRjZ?>kcCKtk=eE=Ec[R[d[T]stEMZRKR[R]BtsLTsCMJgXN@n^?>ldF?jZ:;wvU]m\CKvwBJd]T]tmKSZSJS\R=KulFgmCJmcL:MDFDlDGPcTJbTNbeDHPQiW:^HI|Las Palmas|Cabrera, Gabriel|1977|E96|0-1|B +EUxgDTph;LwpFVmeGOvx@gVEUk[RKm]U^tfDLw\;EvxKDo_EK\cKUdUOUcULU_WGOVPIPWP=Mf_M_w_D_uY_QYU@AU^@vx=Ful[S>fSLW_lkCKkmP^mf_fph=?gq^yry?wywnw5qwfnhonw2ow<=|Riga|Koblents, Alexander|1961|B98|1-0|W +FVl\@OmeEU\UOUxg;Lph@nfCKwn@vxBRtfGW^WwxV^e^W^g^>A|URS-ch sf|Soloviev, Vladimir A|1955|E86|1-0|W +FVl\@OmeEU\UOUxg;Ljb<`nfGWuc=EcC:;CJ`gpg?FsdUKtm>@rt@Aqa?Ok[OQaYE>wp;=dn>Ee]V]f]L]n]QNmfE]Jn]UtuULutLEg_KUpUEUyxDLvwFan\UExyaOwpNMtl=>yi>NltIQfTN^\JMmTfmMJBENBTOk|URS-ch36|Sakharov, Yury N|1968|B97|1/2-1/2|W +FVl\@OsdEU\UOUme;LphgxcZpgZLtl=EdOHOlTLgxgNnwpEeTWefyvnkvf>fWIf>IG>@xgdSMFf^W^e^NWtXOPrvFX^WPOgX>vwvOXWeBJSdU_xyL]lm_emeDTqiIYe^]WyxWh^NYaN\CSd^X_\e?>eg>^|Capablanca mem|Wade, Robert Graham|1963|B49|1-0|W +FVl\HPsd?Hph@Fwp>@meDLn^EMxn@vxEUl\DLkcO^m]BRtkRZsm^mgmLTutT]\U<`nf]fofHktkZckc;EcC`nwt:;CD;kDdk;m^=KjZnJZRKSd]?@\UNUsd<`Sn:v><>ZT?MphDFc[O^g^U^]UL=u`GW`W^fk]>?W`fo]oCKT^BRo]MV]KR[KTFDb[V]xp]T[TDVtuIY`PVkumktmo?opotl|Candidats qf1|Portisch, Lajos|1965|E51|0-1|B +FVn^@Osd?[jb[Rxg>@k[RKwnEUmeDLtXIQXaU]dZKDld]dul;Evx?>ru=FZdE?e]V]g]?PahDhohPVqiBRlkR[b[>=]g=uwuOExyVgpgEKyqKZkbCSu]FO]evxV^kOEOtsSJRL;xoCL\TETtTLETU>FohHXqa|Moscow-4teams|Kupreichik, Viktor D.|1981|B47s|1/2-1/2|B +FVnfEUm];LwSV^og@Osd?[tm>@SLCLd^O^g^=apha^xg<`m[`gumgy[?:?vtyguw?>wvIQmd^NdRNMkcg^RBMOBROMvn^PjbMORmOgtkLTldT]d]DTnvT]f]>vmvgevte]td]o|Framingham CC sim|Greenberg, David|1988.03.08|C16a|1-0|W +FVl\@Osd;LphEU\UOUwp@vxTKmeIQtm?>wv=MdUNUmd:=ruMNkcL]g]V]dkUpxp=UZ\NEqi>N\lKRvyNLlsENjbNnutLPiaUWk]ngpqW_|Bundesliga 9091|Seibold, Hubert|1991|B35|1-0|W +FVl\@OsdEU\UOUph;Lwpqg=UwtUSnfFU[miNk[@ZRU]f]@hohK]|Dubna|Mista, Ladislav|1973|B78|1-0|W +@OxgDTkcEUnfHPtk?Hwn;LgV=DVLDLvx>@ngLDm]T]f]@H[?HOUM]VqxVh?FON|Las Palmas|Bellon Lopez, Juan Manuel|1977|E19|1-0|W +EUxgDTme;Lsm@OldFVn^?Fwn>@vx?>jbF?ulIQk[BJ^UOUm^T[b[:;wu=DlkCSgmGW^hL=ms@ItmHPsb?HrtDFuv|Sochi|Yrjola, Jouni|1984|A55|1/2-1/2|B +FVl\@OnfEU\UOUxg;LmeGWjb?Fwn>@vxwv>PsmUOf^O`k[W^e^:=tkL]k]V]n\@A\NPN^VDLl^]ert=Utd?=qi`Qvu|Stockholm playoff|Andersson, Ulf|1976|B84|1/2-1/2|W +EUnfFVm];ExgV^gmGWl\DLsdEOucHP\ULUog?Qg^W^wS>?mw@Fwh?HvxQXtmIYSZ:;c[Yahnaiph<`n_X_w_PX_OHOZcOPrw=Ecl`WmvA?lc?GdS;?SMGO[CEMv[W`w_MLcULtxotl|EU-chT|Portisch, Lajos|1961|C05|1-0|B +FVnfEUm];L]VLVkc=OldyvMThg=Mp`WemweJtsO^gnJLueBRvuRZnlZcjc>=wqLKktGOqgKL|Moscow|Kholmov, Ratmir D|1975|C10|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@gVEUk[RKm]U^tfDLwn;Evx=FVEvuGEgU@?CTE=ME|URS-ch sf|Kortschnoj, Viktor|1955|C83|0-1|W +FVn^@Osd?[jb[RmeDLtmEUph>@wpU^e^<`og`Nxi;EioCSvxRKwvBRmfKfvf=KumETfvS[b[R[r:?:du[clcTcmdc]pwIYxpYaw\N\d\:RvfRT\jTlfbKShaSnjrOY|Hastings6364|Brinck Claussen, Bjorn|1963|C76|1-0|W +FVl\@OnfEU\UOUsd;LjbHPme?Htm>@xg?>wnUdmdBRvxRZgmNwtNLlu=McmLTm^U^tTMTe^BRrRTRuEH?phRTxp@HE>DLnuTF>@wn?>k[RKmeDLdZKDl\EUul;EZdIQvxU\e\E?neOYdn=Otf?NldN_n_Y_f_O_gv@xgEKsdKUdUOUjbCKwnk[TMtkOQktU[b[Cgphg^ne^eleM[tk[MrJQPenIYwrYaJZahZ`hoxwPWkH>Nf^WIHO@?`aI@aANOA@?@^VONng:>VMNvwovrME>=gh@?hDrjogjbg^?FDVFEVUEDUG=EG\D;\@;CqabZ^WZa@pC;ph;ChaEDWNDTNMBRaIC;IETtE=;C=FC;F?;C?HC;HXtTXHTtHFtT|Brussels blitz|Kortschnoj, Viktor|1987|C07|1/2-1/2|W +DTl\@Oxg;LnfHPjbEUk[?HtkT[b[L[uZ[L\U=UsdU=gV>@VLCLwn:;kbOUrtUdmd=Dvx@phEMwpFVvxOYn^DTsd;LmeGW^WUf`ivuY_h_V_kH_fof@Hw?>?unipxpENm^MU^h?>rvIYl\LVqiYahwNWf^WXpyU]vu>?wqXhnp?ophahq`V`i`HOyxOXuvX`^V`gVNopxwpqwxqAvwgnwGneGEelNFA>|URS-BRD|Teschner, Rudolf|1960|A05|1-0|W +FVl\@OnfEU\UOUxg;LmeGWsdEvnNcjcENqaCSgXFXaXJRtfRZc[L=XPIQd\=C\SCMytMStLNELTA;TV:JneJPrZPpfT;>VUELTfSM[SLCSKMg]K]a]ENWNDMvu>N]UMLk[AIUTLKu=BJ=;KB;?QYTWNL?OLdWgID|URS-ch46|Romanishin, Oleg M|1978|D22|1/2-1/2|W +EUxgDTph;Lm]@Owp@VLCLwW=KxyKkWwkdrtd[Z[F[t\LTpUqaGOgem_pg_V`X>FXOVOaYO]ecFOg_DE\U]V_`VMcgOVULE=gGT\GB\dBRV]RU]fLZf^UuIQZl^VlcMDu=D=clV]`g]\jZ\[gn[bnu|URS-chT|Mikenas, Vladas|1962|D92|1/2-1/2|W +EUxgDTl\U]ph;LwpFVvx@FnfFPf]T]me?FjbBRsm>@ul@tm@Avx[UdUOUndUOrtcR`gugX`gWEWwWUfWGfUjbUdkd[ersCKR\>Nxw?QmvA?G?Q?vh?QsuNOwnetnvOL\VLd]UdfvwtnVLnhqhQ?bZBRu]?Mwofc]^Mhonckne@sdWM>N_XL]u]T]M@m]O^vxELgm^msm;ErtFV]TKTc[=D[T?=mg:;ts;susL:s[=;[aETwtT^gX^XaX:LqaD=X=;=bT=;d\U]f]|Bugojno|Bukic, Enver|1978|E15|1/2-1/2|B +DTxgHPnf?Hm]@Own>@vxEUld=Dkc?=tk;LsmCKrtFVd\V]f]U\]TKSc\S[ucuZTZL[>^[U^\|URS-ch39|Stein, Leonid|1971|E08|1-0|B +DTxg;Lnf@OkcFVtk?Ml\>@sdV^gXMVutEMX^O^d^GW^dW_ph<`h_V_wn=an`a`dn_VkVLVtd?ovo`goxgnrw:?w?@?f^Vg|Moscú, Interzonal|Van der Wiel, John T H|1982|A17|1-0|W +EUxgDTnf@Om];Lld<`]TFVk[V^qi`Yp`O`i`Y`sm^gtkHPd\U]uc?Hvt>@[SLRc[BJmsJS\S`Nk]H]u]=Fsd?GpwA=u=:=gmcmsmD;w\N\m\=<\bOW^WFWd\GNxwV^wn;VklBR[R<:fKW]K]V]lm]TbS:RmUT[nfRZS]NGf^[F^eZbembj]lCKUEGOo_IYmdFTqiHPEUOGh`Y`i`jB`XB:dc:>l[>f[eGNclTMldMDUSfgd]gw]^wreVrv^]vu]fNWVEWNEKuvfmv^me^_KU_GUDGDe]DISVNE\TIyVUENUMNWTLyu]TutTKtsKBstBCtsC<|World Championship 24th|Botvinnik, Mikhail|1961|E81|0-1|B +EUxgDTl\@O\UOUnf;LwSHPvx?Hm]T]g]@tfLT]cT\cTELunDSdSLSjZS>n\HkrskHwu=ZutZLXF?>FM>=^VuU>EUeE>qaEOGYaGFaYFI|Berlín oeste, Open|Varasdy, Imre|1986|E20|0-1|B +FVl\@OsdEU\UOUnf;LmewoIYtkM_o_>nm^OVswW^_WVNWONFwnFOe^=>ru>^neOWuwWVSKBKw?@tmUKulFOwuL[lsDTjb[Lk[T\mv=>[SLRe\V^g]N\s[\ndnR\rtO]u]\Vn_HX[c>GcG?G_YVetu:SKBKME>=vojkofIQqaXawx@G`XkcxoQYXPGPuMPWfKckofkKMK=EfgWVgpV]bZ]\ZREHpq\Tqyaiyq|Moscow|Beliavsky, Alexander G|1975|B83|1/2-1/2|W +FVnfEUm];LwSV^umBJSLCLkc=Xo_Xamoa=tb?bsb=MbsLT]TMTom@FxnFWn]>@sd?=dZTM]Wrj`gZRKLxoMFov>;jmLM]VF=wo;SV]g`mjMLomLT[TSsvo`g]U=UmUsyjmyqoxqyxoiq|Reykjavik|Asmundsson, Ingvar|1964|C16|1-0|W +EUmeDTn^U^e^=uvu;Lsb<`og>wnX`vo?FyuIYZRYaeV`hqhahoxLV\VOEV\E;u=F=\MC:RK=Kk[;EnSEO[TKDM>O>rs|Leningrad op|Dukhov, Alexander|1991|A41|0-1|B +EUxgDTnf;LwSFNvx?Mwv@Fm]BJSnT]f]>@l\U\n\CS\cFUsdUdkdLFjZH@>E@`UNlWELqaNcW^LK^:=:`^|LAT-ch|Vilup, Arvid|1958|E47|1/2-1/2|W +FVl\@OsdEU\UOUnf;Lul@ZTNEvxFOme:Re^RSkOMO^USUsmA=f^W^m^OPwtEMT>OkcO^TLHhcbhiaWiYW]YQLD|Alekhine mem|Hort, Vlastimil|1963|B43|1/2-1/2|B +FVl\@OmeEU\UOUxg;Ljb?Tnf>@wnTKk[GWtkW_f^UFsm<`rt`gmg=Mt\L]k]K]vxDLuc@A[SLTbZCKZRFP\ZMOcj:=RKBKZBPawtagngOatl?OBD=?DBIQj\OMljAIqiMPxwPMBZMPZBPMjlMPBJPhoh_h\Na_wv_fvufx|URS-ch37|Platonov, Igor V|1969|B87|1-0|B +EUxgDTnf;LwSFNvx?Mm]@Ol\>@sdBJ]TMTSZ=Mjb?=k[TB\TMFuvB;f^U]ZLCLdZNVZK:BK<=@gaHXldXad]T]ugMTk[TFwvKMgW?>vVMEtkEWVWahqhOEUMFMWUEKUMK\M]\krskZpCZd]`@?C:ds:UsdUc>V`\dSjZSM\LMWLOW]OG?>c\]lGBl[BI|Tour Italia, Milán|Ferrantes, G.|1957|E90|0-1|B +FVnfEUm];ExgV^gmDLl\?Msd@F\ULUog^gmgEOul<`we`Yvx>@f^U^d^O^e^YP^PFPlW=Ktm:>mdP_rvKLdmHPWO>vgv_UOgGOgc@Hvg?>wtLExwM_m_U_c\E`\l><|Rio Hondo|Bronstein, Luis|1987|C06|1-0|W +FVmeEUph;Lwp@Old?TxgV^e^O^vx>@smGWul=Ojb?>nfTKd\?bZIYrbeV\nYaqiWPZR?gwgP^RKBKkcKSpoVgng^l|Mishkolc|Bilek, Istvan|1963|B08|1-0|W +FVnfEUm];El\@Osd?[\UOUtmUdkd[Mul=FxnEOnhV^rs>@wn?>d\DTvxIY]TMVxy<`m[FNwuYan`O`hw:=qi`OwmNWo_VDmg=eg]WPsceulu>=[vCKTKDKva=]^>^W^DR^>@I>G|Moscow|Kortschnoj, Viktor|1971|C07|0-1|W +EUm]DTnf;LldFNxg@Osm?MwSBJSZ>@vx=DunT]f]og`Ev^>=wvHP^NBJZ^Uuqiuv^v<;jbEUv^UT^fL]d]T]f]=]NnCSxo;CofDTnlCLg_LUloT\_W]efnecnuPWoWU^Wo\dkdcbogbjghIYia^UhXU\XY\dYTdcTXjZaYcjYQZaXPJRPXayul|Kislovodsk|Bradvarevic, Aleksandar|1964|B65|1/2-1/2|W +FVldEUm];L]VLVt_VP_h@FxgFWn^WhqhU^uZ@vt:=mcE@vxIQgvwv>F[S:>cjCKs[WY[Z@IZ:>:j:PX:=HOqiYP=XOMUON>?WO?@|URS-ch sf|Hanov|1955|B25|0-1|B +EUm]DTnf@OxgHP]T?Hsm>@l\;J\UJTw\OUmcTc\cU[cG@Guc[Uf^FN^U=Ucf@vxES\lOUnSJSle?=eSU[cm:Jm^F^STJLTYLPgX^VYI@?o_VWrZWTIP|URS Cup rapid|Muratov, Vladimir A|1988|B17|0-1|B +EUxgDTl\U]nf;Lf]T]meHPph?Hwp@Ovx>@jbBRwvOEsmETmcTNgX=KrsIQXN@eWELru:=vw?>aYMDyi=MlsMOgaFVslU]d]T]f]LSWeV]ag]^lDSewxenu=>=D=@I=ROWRd^sxqngpgWXihXYhiYiqisyihyxh_xodeHPeEPX_^on|Riga, Cto Letonia|Putjudrova|1955|B11|1-0|W +@OxgHPmeEUsmDTn^;Lwn?Hvx>@ldFVjb=Dul<`qi`gmgIQtfU]d]T]fm:lc>MbZDKrsLFtT@l\FNsd]H>HrV^MqaH>tu=KaY;@vxCKsd@wn?>k[RKmeDLvxIQdZKDl\EUul;EtmE?\ULUrt?NZdU]dSD;bZBJSbCSph@vxn\K\VO\kOH@HrtGE]gCStTDLTLk\qa\bLT>=gXEMxqIQX^Muwu=u^dumdS|Nice olm prel|Van Riemsdijk, Herman C|1974|B85|1/2-1/2|B +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQqiEUwv;EnwE?tk?PdZKDZTCKTcFfUCU\UMOkt;Md\PXueFDtf=mtQItf>=fm=<\e<;e\MF\ePQewA=w\FMmtGOtb=A\wOW`WX`bt`hojYad\|Tbilisi|Kostro, Jerzy|1969|C93|1/2-1/2|W +FVl\@OnfEU\UOUsdU[meDTxg;Ljb[Jwn?Fvx>@kcwv>G^m?=ul:tkOP[SL]g]V]m\]f\M=Mog`Yp`W`g`Y`yx`nxPMPl\ngvw>?rtgu|?|NN|1973|B99l|1-0|W +DTnf;LwSFVl\L[sdBJSZCS\S@bZ=:ogO`f^@A\UGWucCLUL:LwxW^d^`VqaVg|Hoogovens|Van der Wiel, John TH|1982|A13|1-0|W +FVnfEUm];LwSV^um@Okc@ldFbsbLFxnFWph:qi=FntBRblR[d[<:wnWMvwIYwpYatcOIcTENyqKR[RM\mdNPpyIOdvO`n`W`vu`WqpPpyp:JaYWXpw\fofJOwvXfunfc|It|Karlsson, Lars|1980.06|C16f|1-0|W +DTxg@OnfHPkc?Htk>@wnEUvx;LgV@vxGWme=>dUNUf^W^e^>Pn\U\l\@A\n?GtfP^wv^PruV^gmLVvwFMxyVgqi:>m\GW\MDMn\WYuUYawtPNUVai|Capablanca mem|Perez Perez, Francisco Jose|1963|B48|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEMsm;EtkE?m\KDwv?PnwCS\mDKbZBJl\O`e]V]mcS\c]MUqi`oxoU^w\^gv>=>ugPVgn>FruF[nV[kowEtmENvt:=d^IQmdKZtlZdld=uwuA=u=L=d\DLbZCKk[BJ[SLSZSJR\c=CgmF[m\CT^T[T\kNUkZV^ZdUVc\TFdUFTiaHXaXQXp`VNUdNVdZVM\dMUdcUVZTKTcZT\SKVMZR\dRJdlKCMDJBlt2C;2DE;CEMC[ME[]ED]VDEVHEMHPMDPKDEK]ED]VDEV^tbBKbkKTko^UE>UXo?TU?GUVGDVW>GXOG@f^@IOPIAP>AI`XDT>VToWNI@VU@HUVH@VOofO=@H=FHPFOPY^VfcNFclVN|Munich olm fin-A|Fichtl, Jiri|1958|B96|0-1|B +@OphDTwp;Ln^EUmeHPsm?Hxg>@vx=Dwv?=ldCKunFNmwU^e^BR^V@ucMTnf?>wn`oclTfm\fTk[=U[T@xgGWtmIQvx@wnEMvxCKN_KO_nxyltphndkdQHOP>GPKtwypwrKSrbSTbjpijog_V^TDGP|Tbilisi|Bronstein, David I.|1982|A29|1-0|B +FVn^@Osd?Tw\CS\SDLSnEUxgU^gX=]vxIQXi>@me^ele]auZT]tf?=wvFyuA=meCKumOEdSEVgVLVrtVLtu:@mcRDc]L]l]WEkcMUtbFVb?:?]lU]ogCKl[DT[eTFeoHQneQfxyELo^OYphPXqiL^e^YhyphYwyY_pw]ejZemrjF[yq?=jk[dks=eiaX`qp_pwpe]aYf_un`gngdg^gV^gnBRpo@GsxGOnu]eowOVxpegpogiwpia|Radiosimultanka|Butula, Miroslav|1960|A34|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdZKDl\EUul;EZdU\e\E?wu=Fph?NrsO`nwFOwpN]le=n\Ogi`DKskghxwhiwv=]\ciyvnyt|Riga, Semifinal Copa Equipos URSS|Averbakh, Yuri L|1961|C98|1-0|W +EUxgDTnf;LwSFNvx?Mm]@Okc>@tkT]f]@wnEUvxL]f]U\n\=D\cO`phDE]U`OunEiogFNUMdSO`g`HVME>FSBLUB@vxYag`B:>E:AhaXa\TMT`iA?ia?geVTFa`goENon`WFMVeKSkcZcNcMbcUnfU^S\eobM^CMho`fvCJ\d`OvVW`hq`iq_i`_X|Candidats Tournament|Smyslov, Vassily|1959|B92|1-0|B +DTldFVm]V]d]EUxg;Lnf@OwnT]g]?Msd>@vxBJ]LCLng=Ftm:;kc?>wvIYf^O`^UMqxwqVg`<`ogFavV>Vwx`Emva_voVXxy;>ueYaruXPem_WmeWYUM>Vd^GW^TVUenYXuxPMnJE>J@wn?>k[RKvxDLmeEMgm;EngE?m\K]tk?Ndn]k\kNXnhXgugMUqiBRgfU]fm@\UNUtkBJSLFLulCSkbJRwtL[ldYPf^DCe]?LM>vmwUd|World Cup|Seirawan, Yasser|1988|E32e|1-0|B +FVl\@OsdEU\UOUnf;LulHPjb?Hxg>@me?>tmUdkdLRf^DTwnT\vx\ene<`en=Dqi`Nrs:=u=<=q`\nlnR\`f\fnfCKfnDLsSQYog=MxqHQvhMmnwLdSVdbV>@Ig_mehabM^VM]aXeuwg]xqhxvhqQX_Xvxqhuwgnwv|Belgrado, URSS vs Resto del Mundo|Najdorf, Miguel|1970|B80|1-0|W +FVl\@OnfEU\UOUsd;LjbHPme?Htm>@xg?>wnUdmdBRvxRZgmFvw=U|Malmo cm-reserve|Andersson, Ulf|1983|B80|1/2-1/2|W +FVl\@OmeEU\UOUxg;Ljb?TnfTKk[>@tk?>sm<`m\K][S]k\kL]f]V]vmDLSK=Kk\KTutUdqi`gpg>NmlCSyx|URS-ch40|Mukhin, Mikhail A|1972|B87|1-0|W +FVn^@Osd?[jb[Rxg>@wn?>k[RKmeDLvxIQdsEUsmLTldT\ul\ene<`d\U\e\;Ltk:FwvL]k]K]ruFD\nDdcZ`E[S]oxo=Kow|Stockholm|Unzicker, Wolfgang|1961|C95|1-0|W +@Ol\DTsd;LxgHPph?Hwp>@vxEMjbBJrs:;k[T[b[CS\SJSmeLB>;BL;>DC\bxoH?LB>=BSbSCS=d[QtWNtk[MkHMFHdFTdkNWkdTMdkWXkHMb>EXWE>|Candidats qf1|Portisch, Lajos|1965|A38|1/2-1/2|B +EUxgDTnf@OwS;Em]=RsdFNvx?M]TMTSe>@f^U]dnNVnh?>gaT?aWETtXRKugOEg`KP`aTeleGOXtETwuNYhNJqaTcrsctstHP|URS Team Ch|Giterman, Shlomo|1971|E11b|1-0|W +FVl\@OnfEU\UOUsdU[me@tfTK`i;Lxy=Mrt:=uYGOdULFf]FU^UHPiN@H]KPYKDMJD=?=o_V_t\JS\_Se_O=UOGHPGg|LAT-ch|Kapengut, Albert Z|1965|B44|0-1|B +EUxgDTnf@Ol\U]f]T]ph;LwpFVmeOEvx?Fsb>@blBRun?>kcIQwvETtb<`qi`YnmF?bT?Tjb=OgqOMp^YP^PMPc[T?qgV^e^:=[SLVgV>Vme=>bZV^v^P^lv^Nxp?TrtCKegT[ve[d\TKTeTN\T^\Zg`Zb^O@?O>bt`O?FOUFM@tXuU=U^UV_h_OWUM@HME>=suHOghKShaOPahGOhaBJuUPGaYGHUMHGqaGHMJ=EJKEBKSBjSCH?CDjlD\?GYQlpaYp`\Z`aZBGNQHaYBJNFJOYaOWa`HQFNW?NFQY`h?@sdU]dnO>gm>Mo_V_h_GWxyldN`d]T]ueCSkcBJtmMCwoCTewTNhW`W^W?Wpi>?iW?WjZEUZSJSwpN_m_W_gvUpyp_`pwFOve`XwnLFr:@G:BG>ngXYBCYignFUnmUdmlifc[>=eT|Manila Interzonal|Ivanovic, Bozidar|1990|E98m|1/2-1/2|W +EUxg@OnfFNl\?Mkc;Etk>@wnCKvxG?pU|Wch-blitz|Jussupow, Artur|1988|E14|0-1|B +DTxg;Lnf@Om]FNl\EUsdBJ\UNUwnT\gV=Do_?[ng@tmW^mv^gpgO>f^GWun>MVLDL^ULUnVULVT:@nf?>jb`Wf^U^e^EeZL>=smTovoO`ovef|Amsterdam Interzonal|Tringov, Georgi P|1964|B06|1-0|W +@OxgDTl\;Lm]T]g]FV]LELu=>=sde^CBueKEeUXf^W>FyuEOURBKRVFVkVDLuefTe=TF=;KT;COUWELKCBUdslKQE@vxMUld:Bgn=Fwv?>flJR^ULUe]V^lfFNnSBDutNLSwOYd\U\t\LE\DEDvtDEw\Y_]U_ef`@?\]>=]A?FAOF?`QECUM?>tDCUOF|Vilnius, Cuartos Final Cto URSS|Zvorykina, Kira|1955|C28|0-1|B +FVl\DLm]V]u]EU\ULUsd@Onf;LwS?Mxg>@]uBJSn?>vxMDuZ=Mwu=mt=upoOdvwdmtkmf|?|Arbouche|1989|B22/16|1-0|W +FVl\@OmeEU\UOUxg;Ljb<`sm?TuZ=Enf>ox`gpg=MB:@weWfofTful?>smfxvwxqyqP_ph:>ePGPrwDTgXU]d]T]mg]ewo>@t_L]u]O^]U^dkdHdrs=UpU?>wtdRn^>F_MFE^V@Ht\RKstE=\_=EtdPX_WKDdgDMVMX`WGHQgOQYG?|AUS tele sim|MacLaurin, Normand KB (AUS)|1974|A56b|0-1|B +EUphFVwpDTl\U]me;Lxg?Fvx<`qi`Wnf=Ef]V]xq>VO=DOJD=CLENsC|DSV-Turnier|Moehring, Guenther|1974|E74|0-1|B +FVl\@OsdEU\UOUxg;Lme<`nf=Eqi`gpg>xXL]f]V]d^W^g^KZnuZdsrMKclKLkdLdlkdeXR=Muleglugd^VMKuZ>NkjNiyu?bZEigjmbt|Zuerich|Nievergelt, Erwin|1959|B63|1-0|W +FVldDTm]V]d]T]xg;Lg]@O]LCLphEUwp?Mvx>@sd?>wv<`tf>fofMTue=Fdu:>rtOExyEVelTKf^IY^UYahaFavwKDl^VP^>@Iqi`iyxipwGaqxoqhoxpi|Brussels blitz|Karpov, Anatoly|1987|B10|1-0|W +FVldEUm]V^t_IYqa@FnfFPphP_h_DTd\T]u];L]U=Osd?[xn<`U^>?wi:>^U`nvnO_ruAQUE_\Ee\TeSTFSX[dXFLFkdQJumJbysFPsCP_ng_imE?@EG>?G?@?gpbjpijo|World Championship 24th|Botvinnik, Mikhail|1961|B12|1/2-1/2|W +@OxgDTl\;LnfHPm]T]g]?Hsd>@wnEUvxL]f]l\U\t\>FwtGWph]ktsk]s;F>;C]fofBJCK>FK;F>|URS-ch43|Alburt, Lev O|1975|D41|1/2-1/2|W +FVn^@Osd?[jb[Rxg>@wnRdmdEMgm;EvxETogOYm\Y_t_V_u]=Xru?>wvTE]oCKbZ:>\mIQ|Lvov|Dorfman, Josif D|1984|C85|1/2-1/2|W +DTxg@OphHPwp?Hvx>@ldEUme;LuZIQn^FV^UOUZ\UK\T=ejZ?=TS:;sm@IQf|Leningrad Interzonal|Smejkal, Jan|1973|E62|1/2-1/2|B +FVl\@Oxg;Lsd?[dUV^U[L[g]O`og`Vg_DT]lV\l[T[ucEUc[\Mnf>@wnBR[T@]TMTf^IQ^UNUmcTKwv?>t_>vuv=Evm<>ruEWc]L]d]O^g^W^_f>NxwNLutLtmt@It<^swnskngks@sdU]dnO>gm>Mo_@wvCKnwFVjb?=k[T\ul\ewe\M>VMC|Candidats playoff-4pl|Timman, Jan H|1985|A55|1/2-1/2|B +@OxgDTph;Lm]T]g]HPwp?Hvx>@l\L]u]EMsd@uZUKZbT\kcFVc\V^gvK\bZ\mtm=md^m]Z]L]ru]nxy:;vgnd^dHdgXCKuedHwtIQX^@wpU^e^vxN`qi`YbZBJdsRKmfKDsmDRne=Dld>=c[RKZRKBfBDBh`YPenBDgaE?mc?NnfN_cTOEwu_pxpET[T=uru:=uM=MTMDMaPMPfKP^pqIYKJY`J<@Ii`HPRJ^gqxgd|Leipzig olm prel|Sliwa, Bogdan|1960|C76|1/2-1/2|W +FVldEUm];L]VLVt_VP_h?Tnf@FweIYqiFWeWmcTK]WEWc]W^vxPVusVewueT]c^srsT^hqAQcmDLm^>^kcQNstKTtlCSxwHXqxTKxqGWqx@cm<`m\KOog`Nul:=ru?>jb[TxyNFh^O]g_<`um`WmuDL\VGOVg]fl\WN\dFEwvf_^T?TvNT?dc@AcdEMNM_Me]=>uv>NvfMFfNFNdeA@yx?MphNUxoBRedRZgmCSdf@Gm^MF^TFT]TUjoxjcf]cN]=HX|Prague radio sim|Smatlanek, A|1960|C47j|1-0|W +EUxgDTnf@Om];L]T=RsmFVl\?T\UOUw\UK\eTFvx@m^IQtmRU^dU=wuGWf^W_dUKU^UNUmdL]d]V]g]=>]N_gnVUNVN@AN^HPuvFO^g>Gvn:>n>?>ruAHkc>Fe\G>phFvuv>vxpCKgUv>o_QYqiHIh`Y`i`>=UGOHphKS\U=?GNPX_X?;hp;?U^IA^P|Sevilla op|Eslon, Jaan|1992|D23|0-1|B +EUm]DT]T@OxgFNtX?Tnf=KXOHOsmKkl\A@ph;LwnU\m\kdvwOWgVTbrsLVscdtutbt\VBRnS>FV\@`o_NVwpV_yt_h\K|URS-ch30|Khodos, German|1962|D25|0-1|B +DTxg;Lnf@Om]EUwn<`vxFNsm:@qi`Y\UNUgaYnunU]mc]engLVgC<;CJO^cT^TJBVEag;:B:=:tm:CmdT^d]?@k[W_[SLRf^UFtkFPsme]V]g]PV]WDTph_ho_hpxpOPpyV\m\G\n\R\klPNrv>FWFNFdH\blj@HwxHQjpK=vfb\fiFapHQYHI|Bled/Zagreb/Belgrado Candidatos|Fischer, Robert James|1959|B86|0-1|B +FVnfEUm];LwSV^kc=XSw<`um@OsdBJtk?Mqi`EvtIYxn>yxXfxHfNtsM?Hx?Qg_NMktYamvEWvaL[umMLtkO^d^U^]U^fULfmwp[lLC<;kVlvskQH|Moscú, Memorial Alekhine|Padevsky, N.|1963|C16|1-0|W +EUxgDTnf@Om];Lwn<`smFNqi`Yvx?M]TMTl\>@\UNUmcTKtm=Mc]O^mdYgngKDwv:=xw^dkdDRrsMOucL]f]OLvfCKst=MfV?=d\L@H>=E=^F=@jb<`k[TKrj=Mjm:=tk?>qi`Yp`YPdZKfkOMhxyhigqf_|URS Cup rapid|Sveshnikov, Evgeny|1988|D40|1-0|W +EUxgDTph;LwpFVvx@[SL=e]:DTg`OG>=CS=MGHMPHIPMIHMKHIKPTU_WU]`hS[WO]EP`EG|Alekhine mem|Balcerowski, Witold|1963|E84|1/2-1/2|B +FVl\@OmeEU\UOUxg;Lph@gqFMxy?>wxT\e\LV\UNUvwV\pgYPm\D\tfO^f]^mwumgng>nkc\JxvnjrjJjq`M?vnjJypGO`fJLc[BJnj:=jRCSRjPGia=>ur>NjbLCrjNLjmCEbr|Moscow|Chekhov, Valery A.|1982|E61c|1/2-1/2|W +FVl\@Ojb;Lk[EU\UOUnf?Mul>@tk?>weIQsdUdmd=XxnXpe^fvof^ohewywLFhgGWwu=utuFPu=@I=]^]k]BJbZP?[S?N]oHX_XQXqiIPghPOhgOVoxN]gfW_fe]gxoVWSJCJedW^d[gV[R^goTV\RJ\kZRk\TFghJC\RCD_g|Hastings6364|Franklin, Michael J|1963|B43|1-0|W +FVl\@OmeEU\U=Utm?TsdUNxg>@nf;LwnNFvx@ZR?TM|URS-ch39|Lein, Anatoly|1971|C15|1-0|W +FVl\@OsdEU\UOUxg;Ln^U[meL]g]V]dsDTjb[Lwn?Fvx>@o_GWng=Dsm@AphHPwvgpCKrjBRjlF=tkPX^VX_h_ENm\?@\M>?uY@PxyNclocNogDHghPhqhHhvx?@MWh`Y`@`pL`xyxNWL^W^e^AHxp=DphHGh`GN|Riga Interzonal|Tseshkovsky, Vitaly|1979|B33|1-0|W +HPn^?HxgEMm]@OweDTldT]d]>@vx<`tf;Lsm:@kcFOrs=Etk:>qi`Qm\V^gVLV\VEDe]OV]VQGnoGVo_NEsuELwoDFkVFVpw?Ow\@?jZV_h_OPxq?FomBJZR>?ld?O\@O?@\?tkT\kbUTuZ>ZbZQYRJCJZRTM|Hoogovens|Christiansen, Larry Mark|1982|A42|1-0|W +EUme@OtXDTXOFOph=Kut@e]T]fU[U\U?@wn?>vx;EwvE?qi?PnwIQphRDwp@vx?>ldF?jZ:;^UOUwv<`qi`Wm\GOe]V]v>=>d];=]TUducdnxq>G\m?TcSGFm^W^Sn^enFLFqxFWt_HX_D=@kcTDtkCKwn@m^IQtmRU^dU=wuGWf^W_dUKU^UNUmdL]d]V]g]=>]N_gnVUNVN@AN^HPuvFO^g>Gvn:>n>?>ruAHkc>Fe\G>phFvuv>vxpCKgUv>o_QYqiHIh`Y`i`>=UGOHphKS\U=?GNPX_X?;hp;?U^IANP|Seville Open|Eslon, Jaan|1992|D23h|0-1|B +EUxg@OphHPwp?Hvx>@meDTsd;Ljb<`rs:qaNE^VEZusZLvu=EVNGNnN>GUFEFNgL>@H>FH@_[@?FE|URS-ch24|Bannik, Anatoly|1957|E63|0-1|B +EUxgDTnf;LwS@Okc<`tkFNqi`Yp`YPgV=DSLCLme?MVPIPsmBRjZ:;`XOYmgU]un>@gm]fnfM_fT?=mg=UTd_fyxfTvwT[d\UT\^TlkV[Me]ldrsLTx`T\]UNU^UMVUV\cVDdDgmckm\;[\kDC`[C[wnY_nm_imlioswoiwu[`u=@I=:`Xk\XTldi_:R_UdcTR\RPXRLIPZRPWRJUDJBX`c\`hL]W`\Thp]nGWTLD:LCW_C:_g:;gnB:2nv2:Z`i|?|Gligoric, Svetozar|1959|E13|1-0|W +FVl\@OmeEU\UOUxg;Ljb?Fn^UKwn>@tfGWulBRsm@wv?>ulMhqhNV\ULUrt<`lD`gD=>=mgV^gaPFtD@?h`=@xgBRwnUFvxIQrsPXk[R[b[FP[SLFSKDKe]@vx=Ful=d]VD]UCLUL@FvxDLZR=>tfFUwt?[|Sochi|Garcia Gonzales, Guillermo|1986|B10|1-0|W +FVl\@OmeEU\UOUxg;Ljb<`sm?TuZ=Enf>wnGWm\`gpg<;[SL]\V>Vk]K]Z]EF]kVNe]FavwNfofUfwx=M|?|Johannsson|1960|B94j|1-0|W +@Oo_EMm]HPxg?Hnf>@wn;EvxFV]VMV_VO`f^`VsdDLxyCSuvru:=jbBRbZS[dsVgngETsmTZ^VZkusPXVOX_OF_hF=2>=mcCJwvRZcTJ\gLZbLZhqZc\cTck\su=uvu\fu=@G=xo>?|Tallinn|Oll, Lembit|1985|B64|1/2-1/2|B +EUxgDTl\U]nf;Lf]T]me@OphOEwpETvx@o_W`vg:>noLTjbGOmcFVwvPXgmX_[TELh_CTcTLTm^TL_W@Aqi`Yxq>;vx;cxh?;ktceheL^ehYGtmH?rxG\h`^UoaUGm[?[b[\UaQ;@jZL]ZRNcumKEf]V]dSDTgv=Fo_HPrbcN_WOXmuPW^WEVWNBJvgXfxyV`uvJSvhFNqiIYi`Y`gaGWaW?Gn`@AWfGIyxNfhf]fwvIF`WT\e\S\vfFfbf:RWNRrxqrtfdtsN\skdckl\U|?|Liepin|1950|B59|0-1|B +DTmeEUn^;Lsm@OxgHPph?Hwp>@vxIQldFVuc?>wv:;^UOUgXQXcUX`UT=em^H?^O@ATUeUpU>=tX@kc;LtkO^smT]m^]e^denun=RduFVnvRvwvn>:>uo>nveLVeVHVkbVdrud]|Sevilla op|Jimenez Morales, Francisco|1992|E18|1-0|W +EUxgDTnf@Om];Ll\T]g]FNwn?Tvx>@\UNUsd?>]LCLkcTMtk=Dphtu@?uENFEUVOUSFDDSCO=jZ?FZRFMCKMTK;=F;@FO@?TM?GOVf^MNGgNMgcMLo_V]c;|URS-chT|Grigorian, Levon Ashotovich|1967|D41|0-1|B +FVn^@Osd?[xg>@meEUtm;L^UOUwnCKdU=Um[L[gmmcJCumBRmdRZcmC:vfL]g:=:rvGOo_>N_VNLm\]WVNEUf^KSNF:>dRLT\mTlmgUeRBIYg]l\]W\^vwHPBoPWoW>FWOe]|Bled, Match Candidatos 1/2|Larsen, Bent|1965|C66|1-0|W +FVnfEUm];LwSV^l\BJSLCLxn=XulXpyxpq\U@FUL=vt[ets:;mt?HZbJ\sr\[b[R[ue[dedHdkdIYd\;[tkAQ\T[SkHQPH]YajZPJ|San Francisco|Grefe, John A|1991|C18|1-0|W diff --git a/GenIconos/windows8/add_property-32.png b/GenIconos/windows8/add_property-32.png new file mode 100644 index 0000000..89675e0 Binary files /dev/null and b/GenIconos/windows8/add_property-32.png differ diff --git a/Lucas.py b/Lucas.py index f7f0265..1643791 100644 --- a/Lucas.py +++ b/Lucas.py @@ -14,6 +14,7 @@ + reload(sys) sys.setdefaultencoding("latin-1") sys.path.insert(0, os.curdir) @@ -49,10 +50,6 @@ import Code.Init Code.Init.init() - elif arg == "-sound": - import Code.RunSound - Code.RunSound.run(sys.argv[2]) - elif arg == "-kibitzer": import Code.RunKibitzer Code.RunKibitzer.run(sys.argv[2]) diff --git a/bug.log b/bug.log index 824d3f6..81abe78 100644 --- a/bug.log +++ b/bug.log @@ -1 +1 @@ -Version 10.10 +Version 10.10.2